diff --git a/.gitignore b/.gitignore index db49e70c299..e7a67332996 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ *.bc *.wast *.wast.hpp -*.wasm *.s *.dot *.abi.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 47405e2daa5..55259210105 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required( VERSION 3.5 ) +cmake_minimum_required( VERSION 3.8 ) project( EOSIO ) @@ -15,7 +15,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/libraries/fc/CMakeMod list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") if (UNIX AND APPLE) - list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/llvm@4" "/usr/local/opt/gettext") + list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/llvm@7" "/usr/local/opt/gettext") endif() include( GNUInstallDirs ) @@ -25,13 +25,13 @@ include( InstallDirectoryPermissions ) include( MASSigning ) set( BLOCKCHAIN_NAME "BOS" ) -set( CMAKE_CXX_STANDARD 14 ) +set( CMAKE_CXX_STANDARD 17 ) set( CMAKE_CXX_EXTENSIONS ON ) set( CXX_STANDARD_REQUIRED ON) set(VERSION_MAJOR 3) set(VERSION_MINOR 0) -set(VERSION_PATCH 5) +set(VERSION_PATCH 6) if(VERSION_SUFFIX) set(VERSION_FULL "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_SUFFIX}") @@ -55,11 +55,8 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") add_compile_options(-fdiagnostics-color=always) endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0) - message(FATAL_ERROR "Clang version must be at least 4.0!") - endif() - if ("${CMAKE_GENERATOR}" STREQUAL "Ninja") - add_compile_options(-fcolor-diagnostics) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0) + message(FATAL_ERROR "Clang version must be at least 6.0!") endif() endif() @@ -89,6 +86,11 @@ if ("${OPENSSL_ROOT_DIR}" STREQUAL "") endif() endif() +# WASM runtimes to enable. Each runtime in this list will have: +# * definition EOSIO__RUNTIME_ENABLED defined in public libchain interface +# * ctest entries with --runtime +list(APPEND EOSIO_WASM_RUNTIMES wabt) #always enable wabt; it works everywhere and parts of eosio still assume it's always available + if(UNIX) if(APPLE) set(whole_archive_flag "-force_load") @@ -158,7 +160,7 @@ else( WIN32 ) # Apple AND Linux if( APPLE ) # Apple Specific Options Here - message( STATUS "Configuring EOSIO on OS X" ) + message( STATUS "Configuring EOSIO on macOS" ) set( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS} -Wall -Wno-deprecated-declarations" ) else( APPLE ) # Linux Specific Options Here @@ -201,10 +203,10 @@ if(ENABLE_COVERAGE_TESTING) endif() include(utils) -add_subdirectory( externals ) +#add_subdirectory( externals ) if ("${CORE_SYMBOL_NAME}" STREQUAL "") - set( CORE_SYMBOL_NAME "SYS" ) + set( CORE_SYMBOL_NAME "EOS" ) endif() string(TOUPPER ${CORE_SYMBOL_NAME} CORE_SYMBOL_NAME) @@ -221,9 +223,9 @@ endif() message( STATUS "Using '${EOSIO_ROOT_KEY}' as public key for 'eosio' account" ) -include(wasm) +#include(wasm) add_subdirectory( libraries ) -add_subdirectory( contracts ) +#add_subdirectory( contracts ) add_subdirectory( plugins ) add_subdirectory( programs ) add_subdirectory( scripts ) diff --git a/CMakeModules/CMakeASM-LLVMWARInformation.cmake b/CMakeModules/CMakeASM-LLVMWARInformation.cmake new file mode 100755 index 00000000000..a94bfa5bfb0 --- /dev/null +++ b/CMakeModules/CMakeASM-LLVMWARInformation.cmake @@ -0,0 +1,9 @@ +# These trio of files implement a workaround for LLVM bug 39427 + +set(ASM_DIALECT "-LLVMWAR") +set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS llvmwar) + +set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "g++ -x c++ -O3 --std=c++11 -c -o ") + +include(CMakeASMInformation) +set(ASM_DIALECT) diff --git a/CMakeModules/CMakeDetermineASM-LLVMWARCompiler.cmake b/CMakeModules/CMakeDetermineASM-LLVMWARCompiler.cmake new file mode 100755 index 00000000000..b424ff97858 --- /dev/null +++ b/CMakeModules/CMakeDetermineASM-LLVMWARCompiler.cmake @@ -0,0 +1,6 @@ +# These trio of files implement a workaround for LLVM bug 39427 + +set(ASM_DIALECT "-LLVMWAR") +set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT "g++") +include(CMakeDetermineASMCompiler) +set(ASM_DIALECT) diff --git a/CMakeModules/CMakeTestASM-LLVMWARCompiler.cmake b/CMakeModules/CMakeTestASM-LLVMWARCompiler.cmake new file mode 100755 index 00000000000..de20fb5064f --- /dev/null +++ b/CMakeModules/CMakeTestASM-LLVMWARCompiler.cmake @@ -0,0 +1,5 @@ +# These trio of files implement a workaround for LLVM bug 39427 + +set(ASM_DIALECT "-LLVMWAR") +include(CMakeTestASMCompiler) +set(ASM_DIALECT) diff --git a/CMakeModules/wasm.cmake b/CMakeModules/wasm.cmake deleted file mode 100644 index a8475728e49..00000000000 --- a/CMakeModules/wasm.cmake +++ /dev/null @@ -1,212 +0,0 @@ -find_package(Wasm) - -if(WASM_FOUND) - message(STATUS "Using WASM clang => " ${WASM_CLANG}) - message(STATUS "Using WASM llc => " ${WASM_LLC}) - message(STATUS "Using WASM llvm-link => " ${WASM_LLVM_LINK}) -else() - message( FATAL_ERROR "No WASM compiler cound be found (make sure WASM_ROOT is set)" ) - return() -endif() -macro(compile_wast) - #read arguments include ones that we don't since arguments get forwared "as is" and we don't want to threat unknown argument names as values - cmake_parse_arguments(ARG "NOWARNINGS" "TARGET;DESTINATION_FOLDER" "SOURCE_FILES;INCLUDE_FOLDERS;SYSTEM_INCLUDE_FOLDERS;LIBRARIES" ${ARGN}) - set(target ${ARG_TARGET}) - - # NOTE: Setting SOURCE_FILE and looping over it to avoid cmake issue with compilation ${target}.bc's rule colliding with - # linking ${target}.bc's rule - if ("${ARG_SOURCE_FILES}" STREQUAL "") - set(SOURCE_FILES ${target}.cpp) - else() - set(SOURCE_FILES ${ARG_SOURCE_FILES}) - endif() - set(outfiles "") - foreach(srcfile ${SOURCE_FILES}) - - get_filename_component(outfile ${srcfile} NAME) - get_filename_component(extension ${srcfile} EXT) - get_filename_component(infile ${srcfile} ABSOLUTE) - - # -ffreestanding - # Assert that compilation targets a freestanding environment. - # This implies -fno-builtin. A freestanding environment is one in which the standard library may not exist, and program startup may not necessarily be at main. - # The most obvious example is an OS kernel. - - # -nostdlib - # Do not use the standard system startup files or libraries when linking. - # No startup files and only the libraries you specify are passed to the linker, and options specifying linkage of the system libraries, such as -static-libgcc or -shared-libgcc, are ignored. - # The compiler may generate calls to memcmp, memset, memcpy and memmove. - # These entries are usually resolved by entries in libc. These entry points should be supplied through some other mechanism when this option is specified. - - # -fno-threadsafe-statics - # Do not emit the extra code to use the routines specified in the C++ ABI for thread-safe initialization of local statics. - # You can use this option to reduce code size slightly in code that doesn’t need to be thread-safe. - - # -fno-rtti - # Disable generation of information about every class with virtual functions for use by the C++ run-time type identification features (dynamic_cast and typeid). - - # -fno-exceptions - # Disable the generation of extra code needed to propagate exceptions - if ("${extension}" STREQUAL ".c") - set(STDFLAG -D_XOPEN_SOURCE=700) - else() - set(STDFLAG "--std=c++14") - endif() - - set(WASM_COMMAND ${WASM_CLANG} -emit-llvm -O3 ${STDFLAG} --target=wasm32 -ffreestanding - -nostdlib -nostdlibinc -DBOOST_DISABLE_ASSERTS -DBOOST_EXCEPTION_DISABLE -fno-threadsafe-statics -fno-rtti -fno-exceptions - -c ${infile} -o ${outfile}.bc - ) - if (${ARG_NOWARNINGS}) - list(APPEND WASM_COMMAND -Wno-everything) - else() - list(APPEND WASM_COMMAND -Weverything -Wno-c++98-compat -Wno-old-style-cast -Wno-vla -Wno-vla-extension -Wno-c++98-compat-pedantic - -Wno-missing-prototypes -Wno-missing-variable-declarations -Wno-packed -Wno-padded -Wno-c99-extensions -Wno-documentation-unknown-command) - endif() - - foreach(folder ${ARG_INCLUDE_FOLDERS}) - list(APPEND WASM_COMMAND -I ${folder}) - endforeach() - - if ("${ARG_SYSTEM_INCLUDE_FOLDERS}" STREQUAL "") - set (ARG_SYSTEM_INCLUDE_FOLDERS ${DEFAULT_SYSTEM_INCLUDE_FOLDERS}) - endif() - foreach(folder ${ARG_SYSTEM_INCLUDE_FOLDERS}) - list(APPEND WASM_COMMAND -isystem ${folder}) - endforeach() - - add_custom_command(OUTPUT ${outfile}.bc - DEPENDS ${infile} - COMMAND ${WASM_COMMAND} - IMPLICIT_DEPENDS CXX ${infile} - COMMENT "Building LLVM bitcode ${outfile}.bc" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${outfile}.bc) - list(APPEND outfiles ${outfile}.bc) - - endforeach(srcfile) - - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.bc) - -endmacro(compile_wast) - -macro(add_wast_library) - cmake_parse_arguments(ARG "NOWARNINGS" "TARGET;DESTINATION_FOLDER" "SOURCE_FILES;INCLUDE_FOLDERS;SYSTEM_INCLUDE_FOLDERS" ${ARGN}) - set(target ${ARG_TARGET}) - compile_wast(${ARGV}) - - get_filename_component("${ARG_TARGET}_BC_FILENAME" "${ARG_DESTINATION_FOLDER}/${ARG_TARGET}.bc" ABSOLUTE CACHE) - add_custom_target(${target} ALL DEPENDS ${${ARG_TARGET}_BC_FILENAME}) - - add_custom_command(OUTPUT ${${ARG_TARGET}_BC_FILENAME} - DEPENDS ${outfiles} - COMMAND ${WASM_LLVM_LINK} -o ${${ARG_TARGET}_BC_FILENAME} ${outfiles} - COMMENT "Linking LLVM bitcode library ${target}.bc" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - -endmacro(add_wast_library) - -macro(add_wast_executable) - cmake_parse_arguments(ARG "NOWARNINGS" "TARGET;DESTINATION_FOLDER;MAX_MEMORY" "SOURCE_FILES;INCLUDE_FOLDERS;SYSTEM_INCLUDE_FOLDERS;LIBRARIES" ${ARGN}) - set(target ${ARG_TARGET}) - set(DESTINATION_FOLDER ${ARG_DESTINATION_FOLDER}) - - compile_wast(${ARGV}) - - foreach(lib ${ARG_LIBRARIES}) - list(APPEND LIBRARIES ${${lib}_BC_FILENAME}) - endforeach() - add_custom_command(OUTPUT ${target}.bc - DEPENDS ${outfiles} ${ARG_LIBRARIES} ${LIBRARIES} - COMMAND ${WASM_LLVM_LINK} -only-needed -o ${target}.bc ${outfiles} ${LIBRARIES} - COMMENT "Linking LLVM bitcode executable ${target}.bc" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.bc) - - add_custom_command(OUTPUT ${target}.s - DEPENDS ${target}.bc - COMMAND ${WASM_LLC} -thread-model=single -asm-verbose=false -o ${target}.s ${target}.bc - COMMENT "Generating textual assembly ${target}.s" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.s) - - if(ARG_MAX_MEMORY) - set(MAX_MEMORY_PARAM "-m" ${ARG_MAX_MEMORY}) - endif() - - add_custom_command(OUTPUT ${DESTINATION_FOLDER}/${target}.wast - DEPENDS ${target}.s - COMMAND $ -o ${DESTINATION_FOLDER}/${target}.wast -s 10240 ${MAX_MEMORY_PARAM} ${target}.s - COMMENT "Generating WAST ${target}.wast" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.wast) - - add_custom_command(OUTPUT ${DESTINATION_FOLDER}/${target}.wasm - DEPENDS ${target}.wast - COMMAND $ ${DESTINATION_FOLDER}/${target}.wast ${DESTINATION_FOLDER}/${target}.wasm -n - COMMENT "Generating WASM ${target}.wasm" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - VERBATIM - ) - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.wasm) - - STRING (REPLACE "." "_" TARGET_VARIABLE "${target}") - - add_custom_command(OUTPUT ${DESTINATION_FOLDER}/${target}.wast.hpp - DEPENDS ${DESTINATION_FOLDER}/${target}.wast - COMMAND echo "const char* const ${TARGET_VARIABLE}_wast = R\"=====(" > ${DESTINATION_FOLDER}/${target}.wast.hpp - COMMAND cat ${DESTINATION_FOLDER}/${target}.wast >> ${DESTINATION_FOLDER}/${target}.wast.hpp - COMMAND echo ")=====\";" >> ${DESTINATION_FOLDER}/${target}.wast.hpp - COMMENT "Generating ${target}.wast.hpp" - VERBATIM - ) - - if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.abi ) - add_custom_command(OUTPUT ${DESTINATION_FOLDER}/${target}.abi.hpp - DEPENDS ${DESTINATION_FOLDER}/${target}.abi - COMMAND echo "const char* const ${TARGET_VARIABLE}_abi = R\"=====(" > ${DESTINATION_FOLDER}/${target}.abi.hpp - COMMAND cat ${DESTINATION_FOLDER}/${target}.abi >> ${DESTINATION_FOLDER}/${target}.abi.hpp - COMMAND echo ")=====\";" >> ${DESTINATION_FOLDER}/${target}.abi.hpp - COMMENT "Generating ${target}.abi.hpp" - VERBATIM - ) - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${target}.abi.hpp) - set(extra_target_dependency ${DESTINATION_FOLDER}/${target}.abi.hpp) - else() - endif() - - add_custom_target(${target} ALL DEPENDS ${DESTINATION_FOLDER}/${target}.wast.hpp ${extra_target_dependency} ${DESTINATION_FOLDER}/${target}.wasm) - - set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${DESTINATION_FOLDER}/${target}.wast.hpp) - - set_property(TARGET ${target} PROPERTY INCLUDE_DIRECTORIES ${ARG_INCLUDE_FOLDERS}) - - set(extra_target_dependency) - - # For CLion code insight - foreach(folder ${ARG_INCLUDE_FOLDERS}) - include_directories(${folder}) - endforeach() - include_directories(${Boost_INCLUDE_DIR}) - - if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${target}.hpp) - set(HEADER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${target}.hpp) - endif() - file(GLOB HEADER_FILES ${ARG_INCLUDE_FOLDERS}/*.hpp ${SYSTEM_INCLUDE_FOLDERS}/*.hpp) - add_executable(${target}.tmp EXCLUDE_FROM_ALL ${SOURCE_FILES} ${HEADER_FILE} ${HEADER_FILES}) - - add_test(NAME "validate_${target}_abi" - COMMAND ${CMAKE_BINARY_DIR}/scripts/abi_is_json.py ${ABI_FILES}) - -endmacro(add_wast_executable) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 5bf987b7c5f..e04324406d8 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -1,6 +1,6 @@ FROM boscore/builder:v2.0.4 as builder ARG branch=master -ARG symbol=SYS +ARG symbol=EOS ENV OPENSSL_ROOT_DIR /usr/include/openssl @@ -13,13 +13,13 @@ RUN git clone -b $branch https://github.com/boscore/bos.git --recursive \ FROM ubuntu:18.04 -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl ca-certificates && rm -rf /var/lib/apt/lists/* +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl ca-certificates iproute2 && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/lib/* /usr/local/lib/ COPY --from=builder /tmp/build/bin /opt/eosio/bin COPY --from=builder /bos/Docker/config.ini / -COPY --from=builder /etc/eosio-version /etc +COPY --from=builder /etc/boscore-version /etc COPY --from=builder /bos/Docker/nodeosd.sh /opt/eosio/bin/nodeosd.sh ENV EOSIO_ROOT=/opt/eosio RUN chmod +x /opt/eosio/bin/nodeosd.sh ENV LD_LIBRARY_PATH /usr/local/lib -ENV PATH /opt/eosio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV PATH /opt/eosio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ No newline at end of file diff --git a/Docker/README.md b/Docker/README.md index 2f23146cb33..a193fc44a19 100644 --- a/Docker/README.md +++ b/Docker/README.md @@ -20,10 +20,10 @@ cd bos/Docker docker build . -t boscore/bos -s BOS ``` -The above will build off the most recent commit to the master branch by default. If you would like to target a specific branch/tag, you may use a build argument. For example, if you wished to generate a docker image based off of the v3.0.5 tag, you could do the following: +The above will build off the most recent commit to the master branch by default. If you would like to target a specific branch/tag, you may use a build argument. For example, if you wished to generate a docker image based off of the v3.0.6 tag, you could do the following: ```bash -docker build -t boscore/bos:v3.0.5 --build-arg branch=v3.0.5 . +docker build -t boscore/bos:v3.0.6 --build-arg branch=v3.0.6 . ``` diff --git a/Docker/builder/Dockerfile b/Docker/builder/Dockerfile index ba356ea5eb1..efe9290b851 100644 --- a/Docker/builder/Dockerfile +++ b/Docker/builder/Dockerfile @@ -13,11 +13,11 @@ RUN echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic main" >> /etc/ap && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y git-core automake autoconf libtool build-essential pkg-config libtool \ mpi-default-dev libicu-dev python-dev python3-dev libbz2-dev zlib1g-dev libssl-dev libgmp-dev \ - clang-4.0 lldb-4.0 lld-4.0 llvm-4.0-dev libclang-4.0-dev ninja-build libusb-1.0-0-dev curl libcurl4-gnutls-dev \ + clang-7 lld-4.0 llvm-7-dev libclang-4.0-dev ninja-build libusb-1.0-0-dev curl libcurl4-gnutls-dev \ && rm -rf /var/lib/apt/lists/* -RUN update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-4.0/bin/clang 400 \ - && update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-4.0/bin/clang++ 400 +RUN update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-7/bin/clang 700 \ + && update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-7/bin/clang++ 700 RUN wget https://cmake.org/files/v3.9/cmake-3.9.6-Linux-x86_64.sh \ && bash cmake-3.9.6-Linux-x86_64.sh --prefix=/usr/local --exclude-subdir --skip-license \ @@ -29,7 +29,7 @@ ENV CXX clang++ RUN wget https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.bz2 -O - | tar -xj \ && cd boost_1_71_0 \ && ./bootstrap.sh --prefix=/usr/local \ - && echo 'using clang : 4.0 : clang++-4.0 ;' >> project-config.jam \ + && echo 'using clang : 7 : clang++-7 ;' >> project-config.jam \ && ./b2 -d0 -j$(nproc) --with-thread --with-date_time --with-system --with-filesystem --with-program_options \ --with-serialization --with-chrono --with-test --with-context --with-locale --with-coroutine --with-iostreams toolset=clang link=static install \ && cd .. && rm -rf boost_1_71_0 @@ -43,8 +43,8 @@ RUN wget https://github.com/mongodb/mongo-c-driver/releases/download/1.10.2/mong && make install \ && cd ../../ && rm -rf mongo-c-driver-1.10.2 -RUN git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git \ - && git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/clang.git llvm/tools/clang \ +RUN git clone --depth 1 --single-branch --branch release_70 https://github.com/llvm-mirror/llvm.git \ + && git clone --depth 1 --single-branch --branch release_70 https://github.com/llvm-mirror/clang.git llvm/tools/clang \ && cd llvm \ && cmake -H. -Bbuild -GNinja -DCMAKE_INSTALL_PREFIX=/opt/wasm -DLLVM_TARGETS_TO_BUILD= -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release \ && cmake --build build --target install \ diff --git a/README.md b/README.md index c8f6380148b..c576a181fa0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# BOSCore - Using technology to create a trusted business ecosystem +# BOSCore - Blockchain financial center building a trusted business ecosystem. -## BOSCore Version: v3.0.5 +## BOSCore Version: v3.0.6 ### Basic EOSIO Version: v1.6.6 (support REX, part 2.0.x) # Background diff --git a/README_CN.md b/README_CN.md index ce47f8b538d..6dcb8c63cfb 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,6 +1,6 @@ -# BOSCore - 用技术打造可信商业生态 +# BOSCore - 区块链自由港,构建可信商业生态。 -## BOSCore Version: v3.0.5 +## BOSCore Version: v3.0.6 ### Basic EOSIO Version: v1.6.6 (support REX, part 2.0.x) # 背景 diff --git a/contracts/CMakeLists.txt b/contracts/CMakeLists.txt deleted file mode 100644 index 443330c886a..00000000000 --- a/contracts/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -# will be implictly used for any compilation unit if not overrided by SYSTEM_INCLUDE_FOLDERS parameter -# these directories go as -isystem to avoid warnings from code of third-party libraries -set(DEFAULT_SYSTEM_INCLUDE_FOLDERS ${CMAKE_SOURCE_DIR}/contracts/libc++/upstream/include ${CMAKE_SOURCE_DIR}/contracts/musl/upstream/include ${Boost_INCLUDE_DIR}) - -set(STANDARD_INCLUDE_FOLDERS ${CMAKE_SOURCE_DIR}/contracts ${CMAKE_BINARY_DIR}/contracts ${CMAKE_SOURCE_DIR}/externals/magic_get/include) - -add_subdirectory(eosiolib) -add_subdirectory(musl) -add_subdirectory(libc++) -add_subdirectory(eosio.token) -add_subdirectory(eosio.msig) -add_subdirectory(eosio.sudo) -add_subdirectory(multi_index_test) -add_subdirectory(snapshot_test) -add_subdirectory(eosio.system) -add_subdirectory(identity) -add_subdirectory(stltest) -add_subdirectory(test.inline) - -add_subdirectory(hello) -add_subdirectory(asserter) -add_subdirectory(proxy) -add_subdirectory(test_api) -add_subdirectory(test_api_mem) -add_subdirectory(test_api_db) -add_subdirectory(test_api_multi_index) -add_subdirectory(test_ram_limit) -add_subdirectory(eosio.bios) -add_subdirectory(noop) -add_subdirectory(tic_tac_toe) -add_subdirectory(payloadless) -add_subdirectory(integration_test) - - -file(GLOB SKELETONS RELATIVE ${CMAKE_SOURCE_DIR}/contracts "skeleton/*") - -# Documented multiple output support is broken, so properly setting up the multiple -# dependencies in the custom target is not possible. (CMake 3.5) -add_custom_command(OUTPUT share/eosio/skeleton/skeleton.cpp - COMMAND ${CMAKE_COMMAND} -E make_directory ../share/eosio/skeleton - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/skeleton ../share/eosio/skeleton - DEPENDS ${SKELETONS} - COMMENT Copying skeleton contract... - VERBATIM) -add_custom_target(copy_skeleton_contract ALL DEPENDS share/eosio/skeleton/skeleton.cpp) diff --git a/contracts/asserter/CMakeLists.txt b/contracts/asserter/CMakeLists.txt deleted file mode 100644 index e73595af1de..00000000000 --- a/contracts/asserter/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET asserter - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc libc++ eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/asserter/asserter.abi b/contracts/asserter/asserter.abi deleted file mode 100644 index b5bc251a5c6..00000000000 --- a/contracts/asserter/asserter.abi +++ /dev/null @@ -1,37 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [], - "structs": [ - { - "name": "assertdef", - "base": "", - "fields": [ - { - "name": "condition", - "type": "int8" - },{ - "name": "message", - "type": "string" - } - ] - }, { - "name": "nothing", - "base": "", - "fields": [] - } - ], - "actions": [ - { - "name": "procassert", - "type": "assertdef", - "ricardian_contract": "" - }, { - "name": "provereset", - "type": "nothing", - "ricardian_contract": "" - } - ], - "tables": [], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/asserter/asserter.cpp b/contracts/asserter/asserter.cpp deleted file mode 100644 index c89db1fc709..00000000000 --- a/contracts/asserter/asserter.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ - -#include /// defines assert_def struct (abi) - -using namespace asserter; - -static int global_variable = 45; - -extern "C" { - /// The apply method implements the dispatch of events to this contract - void apply( uint64_t /* receiver */, uint64_t code, uint64_t action ) { - require_auth(code); - if( code == N(asserter) ) { - if( action == N(procassert) ) { - assertdef def = eosio::unpack_action_data(); - - // maybe assert? - eosio_assert((uint32_t)def.condition, def.message.c_str()); - } else if( action == N(provereset) ) { - eosio_assert(global_variable == 45, "Global Variable Initialized poorly"); - global_variable = 100; - } - } - } -} diff --git a/contracts/asserter/asserter.hpp b/contracts/asserter/asserter.hpp deleted file mode 100644 index 01d4b343e3f..00000000000 --- a/contracts/asserter/asserter.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ - -#include - -namespace asserter { - struct assertdef { - int8_t condition; - std::string message; - - EOSLIB_SERIALIZE( assertdef, (condition)(message) ) - }; -} diff --git a/contracts/eosio.bios/CMakeLists.txt b/contracts/eosio.bios/CMakeLists.txt deleted file mode 100644 index ae5ea158406..00000000000 --- a/contracts/eosio.bios/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET eosio.bios - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/eosio.bios/eosio.bios.cpp b/contracts/eosio.bios/eosio.bios.cpp deleted file mode 100644 index 66d70f0c47e..00000000000 --- a/contracts/eosio.bios/eosio.bios.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include - -EOSIO_ABI( eosio::bios, (setpriv)(setalimits)(setglimits)(setprods)(setparams)(reqauth) ) diff --git a/contracts/eosio.bios/eosio.bios.hpp b/contracts/eosio.bios/eosio.bios.hpp deleted file mode 100644 index 0abca64c90e..00000000000 --- a/contracts/eosio.bios/eosio.bios.hpp +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once -#include -#include - -namespace eosio { - - class bios : public contract { - public: - bios( action_name self ):contract(self){} - - void setpriv( account_name account, uint8_t ispriv ) { - require_auth( _self ); - set_privileged( account, ispriv ); - } - - void setalimits( account_name account, int64_t ram_bytes, int64_t net_weight, int64_t cpu_weight ) { - require_auth( _self ); - set_resource_limits( account, ram_bytes, net_weight, cpu_weight ); - } - - void setglimits( uint64_t ram, uint64_t net, uint64_t cpu ) { - (void)ram; (void)net; (void)cpu; - require_auth( _self ); - } - - void setprods( std::vector schedule ) { - (void)schedule; // schedule argument just forces the deserialization of the action data into vector (necessary check) - require_auth( _self ); - - constexpr size_t max_stack_buffer_size = 512; - size_t size = action_data_size(); - char* buffer = (char*)( max_stack_buffer_size < size ? malloc(size) : alloca(size) ); - read_action_data( buffer, size ); - set_proposed_producers(buffer, size); - } - - void setparams( const eosio::blockchain_parameters& params ) { - require_auth( _self ); - set_blockchain_parameters( params ); - } - - void reqauth( action_name from ) { - require_auth( from ); - } - - private: - }; - -} /// namespace eosio diff --git a/contracts/eosio.msig/CMakeLists.txt b/contracts/eosio.msig/CMakeLists.txt deleted file mode 100644 index afcf7038f1a..00000000000 --- a/contracts/eosio.msig/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 eosio.msig - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/eosio.msig/README.md b/contracts/eosio.msig/README.md deleted file mode 100644 index 6857660782e..00000000000 --- a/contracts/eosio.msig/README.md +++ /dev/null @@ -1,113 +0,0 @@ -eosio.msig --------- - -Actions: -The naming convention is codeaccount::actionname followed by a list of paramters. - -Create a proposal -## eosio.msig::propose proposer proposal_name requested trx - - **proposer** account proposing a transaction - - **proposal_name** name of the proposal (should be unique for proposer) - - **requested** permission levels expected to approve the proposal - - **trx** proposed transaction - - Storage changes are billed to 'proposer' - -Approve a proposal -## eosio.msig::approve proposer proposal_name level - - **proposer** account proposing a transaction - - **proposal_name** name of the proposal - - **level** permission level approving the transaction - - Storage changes are billed to 'proposer' - -Revoke an approval of transaction -## eosio.msig::unapprove proposer proposal_name level - - **proposer** account proposing a transaction - - **proposal_name** name of the proposal - - **level** permission level revoking approval from the transaction - - Storage changes are billed to 'proposer' - -Cancel a proposal -## eosio.msig::cancel proposer proposal_name canceler - - **proposer** account proposing a transaction - - **proposal_name** name of the proposal - - **canceler** account canceling the transaction (only proposer can cancel not expired transaction) - -Execute a proposal -## eosio.msig::exec proposer proposal_name executer - - **proposer** account proposing a transaction - - **proposal_name** name of the proposal - - **executer** account executing the transaction - - -Cleos usage example. - -Prerequisites: - - eosio.token contract installed to eosio.token account, eosio.msig contract installed on eosio.msig account which is a privileged account. - - account 'treasury' is the issuer of EOS token. - - account 'tester' exists. - - keys to accounts 'treasury' and 'tester' imported into local wallet, the wallet is unlocked. - -One user creates a proposal: -```` -$ cleos multisig propose test '[{"actor": "treasury", "permission": "active"}]' '[{"actor": "treasury", "permission": "active"}]' eosio.token issue '{"to": "tester", "quantity": "1000.0000 EOS", "memo": ""}' -p tester -executed transaction: e26f3a3a7cba524a7b15a0b6c77c7daa73d3ba9bf84e83f9c2cdf27fcb183d61 336 bytes 107520 cycles -# eosio.msig <= eosio.msig::propose {"proposer":"tester","proposal_name":"test","requested":[{"actor":"treasury","permission":"active"}]... -```` - -Another user reviews the transaction: -```` -$ cleos multisig review tester test -p treasury -{ - "proposal_name": "test", - "requested_approvals": [{ - "actor": "treasury", - "permission": "active" - } - ], - "provided_approvals": [], - "packed_transaction": "00aee75a0000000000000000000000000100a6823403ea30550000000000a5317601000000fe6a6cd4cd00000000a8ed323219000000005c95b1ca809698000000000004454f530000000000", - "transaction": { - "expiration": "2018-05-01T00:00:00", - "region": 0, - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_kcpu_usage": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio.token", - "name": "issue", - "authorization": [{ - "actor": "treasury", - "permission": "active" - } - ], - "data": { - "to": "tester", - "quantity": "1000.0000 EOS", - "memo": "" - }, - "hex_data": "000000005c95b1ca809698000000000004454f530000000000" - } - ] - } -} -```` - -And then approves it: -```` -$ cleos multisig approve tester test '{"actor": "treasury", "permission": "active"}' -p treasury -executed transaction: 475970a4b0016368d0503d1ce01577376f91f5a5ba63dd4353683bd95101b88d 256 bytes 108544 cycles -# eosio.msig <= eosio.msig::approve {"proposer":"tester","proposal_name":"test","level":{"actor":"treasury","permission":"active"}} -```` - -First user initiates execution: -```` -$ cleos multisig exec tester test -p tester -executed transaction: 64e5eaceb77362694055f572ae35876111e87b637a55250de315b1b55e56d6c2 248 bytes 109568 cycles -# eosio.msig <= eosio.msig::exec {"proposer":"tester","proposal_name":"test","executer":"tester"} -```` diff --git a/contracts/eosio.msig/eosio.msig.abi b/contracts/eosio.msig/eosio.msig.abi deleted file mode 100644 index 9fcf8a957cc..00000000000 --- a/contracts/eosio.msig/eosio.msig.abi +++ /dev/null @@ -1,152 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - },{ - "new_type_name": "permission_name", - "type": "name" - },{ - "new_type_name": "action_name", - "type": "name" - }], - "structs": [{ - "name": "permission_level", - "base": "", - "fields": [ - {"name": "actor", "type": "account_name"}, - {"name": "permission", "type": "permission_name"} - ] - },{ - "name": "action", - "base": "", - "fields": [ - {"name": "account", "type": "account_name"}, - {"name": "name", "type": "action_name"}, - {"name": "authorization", "type": "permission_level[]"}, - {"name": "data", "type": "bytes"} - ] - },{ - "name": "transaction_header", - "base": "", - "fields": [ - {"name": "expiration", "type": "time_point_sec"}, - {"name": "ref_block_num", "type": "uint16"}, - {"name": "ref_block_prefix", "type": "uint32"}, - {"name": "max_net_usage_words", "type": "varuint32"}, - {"name": "max_cpu_usage_ms", "type": "uint8"}, - {"name": "delay_sec", "type": "varuint32"} - ] - },{ - "name": "extension", - "base": "", - "fields": [ - {"name": "type", "type" : "uint16" }, - {"name": "data", "type": "bytes"} - ] - },{ - "name": "transaction", - "base": "transaction_header", - "fields": [ - {"name": "context_free_actions", "type": "action[]"}, - {"name": "actions", "type": "action[]"}, - {"name": "transaction_extensions", "type": "extension[]"} - ] - },{ - "name": "propose", - "base": "", - "fields": [ - {"name":"proposer", "type":"account_name"}, - {"name":"proposal_name", "type":"name"}, - {"name":"requested", "type":"permission_level[]"}, - {"name":"trx", "type":"transaction"} - ] - },{ - "name": "approve", - "base": "", - "fields": [ - {"name":"proposer", "type":"account_name"}, - {"name":"proposal_name", "type":"name"}, - {"name":"level", "type":"permission_level"} - ] - },{ - "name": "unapprove", - "base": "", - "fields": [ - {"name":"proposer", "type":"account_name"}, - {"name":"proposal_name", "type":"name"}, - {"name":"level", "type":"permission_level"} - ] - },{ - "name": "cancel", - "base": "", - "fields": [ - {"name":"proposer", "type":"account_name"}, - {"name":"proposal_name", "type":"name"}, - {"name":"canceler", "type":"account_name"} - ] - },{ - "name": "exec", - "base": "", - "fields": [ - {"name":"proposer", "type":"account_name"}, - {"name":"proposal_name", "type":"name"}, - {"name":"executer", "type":"account_name"} - ] - },{ - "name": "proposal", - "base": "", - "fields": [ - {"name": "proposal_name", "type": "name"}, - {"name": "packed_transaction", "type": "bytes"} - ] - },{ - "name": "approvals_info", - "base": "", - "fields": [ - {"name": "proposal_name", "type": "name"}, - {"name": "requested_approvals", "type": "permission_level[]"}, - {"name": "provided_approvals", "type": "permission_level[]"} - ] - } - ], - "actions": [{ - "name": "propose", - "type": "propose", - "ricardian_contract": "" - },{ - "name": "approve", - "type": "approve", - "ricardian_contract": "" - },{ - "name": "unapprove", - "type": "unapprove", - "ricardian_contract": "" - }, { - "name": "cancel", - "type": "cancel", - "ricardian_contract": "" - }, { - "name": "exec", - "type": "exec", - "ricardian_contract": "" - } - - ], - "tables": [{ - "name": "proposal", - "type": "proposal", - "index_type": "i64", - "key_names" : ["proposal_name"], - "key_types" : ["name"] - },{ - "name": "approvals", - "type": "approvals_info", - "index_type": "i64", - "key_names" : ["proposal_name"], - "key_types" : ["name"] - } - ], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/eosio.msig/eosio.msig.cpp b/contracts/eosio.msig/eosio.msig.cpp deleted file mode 100644 index 9d04a1a9813..00000000000 --- a/contracts/eosio.msig/eosio.msig.cpp +++ /dev/null @@ -1,137 +0,0 @@ -#include -#include -#include - -namespace eosio { - -/* -propose function manually parses input data (instead of taking parsed arguments from dispatcher) -because parsing data in the dispatcher uses too much CPU in case if proposed transaction is big - -If we use dispatcher the function signature should be: - -void multisig::propose( account_name proposer, - name proposal_name, - vector requested, - transaction trx) -*/ - -void multisig::propose() { - constexpr size_t max_stack_buffer_size = 512; - size_t size = action_data_size(); - char* buffer = (char*)( max_stack_buffer_size < size ? malloc(size) : alloca(size) ); - read_action_data( buffer, size ); - - account_name proposer; - name proposal_name; - vector requested; - transaction_header trx_header; - - datastream ds( buffer, size ); - ds >> proposer >> proposal_name >> requested; - - size_t trx_pos = ds.tellp(); - ds >> trx_header; - - require_auth( proposer ); - eosio_assert( trx_header.expiration >= eosio::time_point_sec(now()), "transaction expired" ); - //eosio_assert( trx_header.actions.size() > 0, "transaction must have at least one action" ); - - proposals proptable( _self, proposer ); - eosio_assert( proptable.find( proposal_name ) == proptable.end(), "proposal with the same name exists" ); - - bytes packed_requested = pack(requested); - auto res = ::check_transaction_authorization( buffer+trx_pos, size-trx_pos, - (const char*)0, 0, - packed_requested.data(), packed_requested.size() - ); - eosio_assert( res > 0, "transaction authorization failed" ); - - proptable.emplace( proposer, [&]( auto& prop ) { - prop.proposal_name = proposal_name; - prop.packed_transaction = bytes( buffer+trx_pos, buffer+size ); - }); - - approvals apptable( _self, proposer ); - apptable.emplace( proposer, [&]( auto& a ) { - a.proposal_name = proposal_name; - a.requested_approvals = std::move(requested); - }); -} - -void multisig::approve( account_name proposer, name proposal_name, permission_level level ) { - require_auth( level ); - - approvals apptable( _self, proposer ); - auto& apps = apptable.get( proposal_name, "proposal not found" ); - - auto itr = std::find( apps.requested_approvals.begin(), apps.requested_approvals.end(), level ); - eosio_assert( itr != apps.requested_approvals.end(), "approval is not on the list of requested approvals" ); - - apptable.modify( apps, proposer, [&]( auto& a ) { - a.provided_approvals.push_back( level ); - a.requested_approvals.erase( itr ); - }); -} - -void multisig::unapprove( account_name proposer, name proposal_name, permission_level level ) { - require_auth( level ); - - approvals apptable( _self, proposer ); - auto& apps = apptable.get( proposal_name, "proposal not found" ); - auto itr = std::find( apps.provided_approvals.begin(), apps.provided_approvals.end(), level ); - eosio_assert( itr != apps.provided_approvals.end(), "no approval previously granted" ); - - apptable.modify( apps, proposer, [&]( auto& a ) { - a.requested_approvals.push_back(level); - a.provided_approvals.erase(itr); - }); -} - -void multisig::cancel( account_name proposer, name proposal_name, account_name canceler ) { - require_auth( canceler ); - - proposals proptable( _self, proposer ); - auto& prop = proptable.get( proposal_name, "proposal not found" ); - - if( canceler != proposer ) { - eosio_assert( unpack( prop.packed_transaction ).expiration < eosio::time_point_sec(now()), "cannot cancel until expiration" ); - } - - approvals apptable( _self, proposer ); - auto& apps = apptable.get( proposal_name, "proposal not found" ); - - proptable.erase(prop); - apptable.erase(apps); -} - -void multisig::exec( account_name proposer, name proposal_name, account_name executer ) { - require_auth( executer ); - - proposals proptable( _self, proposer ); - auto& prop = proptable.get( proposal_name, "proposal not found" ); - - approvals apptable( _self, proposer ); - auto& apps = apptable.get( proposal_name, "proposal not found" ); - - transaction_header trx_header; - datastream ds( prop.packed_transaction.data(), prop.packed_transaction.size() ); - ds >> trx_header; - eosio_assert( trx_header.expiration >= eosio::time_point_sec(now()), "transaction expired" ); - - bytes packed_provided_approvals = pack(apps.provided_approvals); - auto res = ::check_transaction_authorization( prop.packed_transaction.data(), prop.packed_transaction.size(), - (const char*)0, 0, - packed_provided_approvals.data(), packed_provided_approvals.size() - ); - eosio_assert( res > 0, "transaction authorization failed" ); - - send_deferred( (uint128_t(proposer) << 64) | proposal_name, executer, prop.packed_transaction.data(), prop.packed_transaction.size() ); - - proptable.erase(prop); - apptable.erase(apps); -} - -} /// namespace eosio - -EOSIO_ABI( eosio::multisig, (propose)(approve)(unapprove)(cancel)(exec) ) diff --git a/contracts/eosio.msig/eosio.msig.hpp b/contracts/eosio.msig/eosio.msig.hpp deleted file mode 100644 index 48ce2e3dca8..00000000000 --- a/contracts/eosio.msig/eosio.msig.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once -#include -#include - -namespace eosio { - - class multisig : public contract { - public: - multisig( account_name self ):contract(self){} - - void propose(); - void approve( account_name proposer, name proposal_name, permission_level level ); - void unapprove( account_name proposer, name proposal_name, permission_level level ); - void cancel( account_name proposer, name proposal_name, account_name canceler ); - void exec( account_name proposer, name proposal_name, account_name executer ); - - private: - struct proposal { - name proposal_name; - vector packed_transaction; - - auto primary_key()const { return proposal_name.value; } - }; - typedef eosio::multi_index proposals; - - struct approvals_info { - name proposal_name; - vector requested_approvals; - vector provided_approvals; - - auto primary_key()const { return proposal_name.value; } - }; - typedef eosio::multi_index approvals; - }; - -} /// namespace eosio diff --git a/contracts/eosio.sudo/CMakeLists.txt b/contracts/eosio.sudo/CMakeLists.txt deleted file mode 100644 index 3760b6e82e2..00000000000 --- a/contracts/eosio.sudo/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 eosio.sudo - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/eosio.sudo/README.md b/contracts/eosio.sudo/README.md deleted file mode 100644 index af1031e0126..00000000000 --- a/contracts/eosio.sudo/README.md +++ /dev/null @@ -1,886 +0,0 @@ -# eosio.sudo - -## 1. Actions: -The naming convention is codeaccount::actionname followed by a list of parameters. - -Execute a transaction while bypassing regular authorization checks (requires authorization of eosio.sudo which needs to be a privileged account). - -### eosio.sudo::exec executer trx - - **executer** account executing the transaction - - **trx** transaction to execute - - Deferred transaction RAM usage is billed to 'executer' - - -## 2. Installing the eosio.sudo contract - -The eosio.sudo contract needs to be installed on a privileged account to function. It is recommended to use the account `eosio.sudo`. - -First, the account `eosio.sudo` needs to be created. Since it has the restricted `eosio.` prefix, only a privileged account can create this account. So this guide will use the `eosio` account to create the `eosio.sudo` account. On typical live blockchain configurations, the `eosio` account can only be controlled by a supermajority of the current active block producers. So, this guide will use the `eosio.msig` contract to help coordinate the approvals of the proposed transaction that creates the `eosio.sudo` account. - -The `eosio.sudo` account also needs to have sufficient RAM to host the contract and sufficient CPU and network bandwidth to deploy the contract. This means that the creator of the account (`eosio`) needs to gift sufficient RAM to the new account and delegate (preferably with transfer) sufficient bandwidth to the new account. To pull this off the `eosio` account needs to have enough of the core system token (the `SYS` token will be used within this guide) in its liquid balance. So prior to continuing with the next steps of this guide, the active block producers of the chain who are coordinating this process need to ensure that a sufficient amount of core system tokens that they are authorized to spend is placed in the liquid balance of the `eosio` account. - -This guide will be using cleos to carry out the process. - -### 2.1 Create the eosio.sudo account - -#### 2.1.1 Generate the transaction to create the eosio.sudo account - -The transaction to create the `eosio.sudo` account will need to be proposed to get the necessary approvals from active block producers before executing it. This transaction needs to first be generated and stored as JSON into a file so that it can be used in the cleos command to propose the transaction to the eosio.msig contract. - -A simple way to generate a transaction to create a new account is to use the `cleos system newaccount`. However, that sub-command currently only accepts a single public key as the owner and active authority of the new account. However, the owner and active authorities of the new account should only be satisfied by the `active` permission of `eosio`. One option is to create the new account with the some newly generated key, and then later update the authorities of the new account using `cleos set account permission`. This guide will take an alternative approach which atomically creates the new account in its proper configuration. - -Three unsigned transactions will be generated using cleos and then the actions within those transactions will be appropriately stitched together into a single transaction which will later be proposed using the eosio.msig contract. - -First, generate a transaction to capture the necessary actions involved in creating a new account: -``` -$ cleos system newaccount -s -j -d --transfer --stake-net "1.000 SYS" --stake-cpu "1.000 SYS" --buy-ram-kbytes 50 eosio eosio.sudo EOS8MMUW11TAdTDxqdSwSqJodefSoZbFhcprndomgLi9MeR2o8MT4 > generated_account_creation_trx.json -726964ms thread-0 main.cpp:429 create_action ] result: {"binargs":"0000000000ea305500004d1a03ea305500c80000"} arg: {"code":"eosio","action":"buyrambytes","args":{"payer":"eosio","receiver":"eosio.sudo","bytes":51200}} -726967ms thread-0 main.cpp:429 create_action ] result: {"binargs":"0000000000ea305500004d1a03ea3055102700000000000004535953000000001027000000000000045359530000000001"} arg: {"code":"eosio","action":"delegatebw","args":{"from":"eosio","receiver":"eosio.sudo","stake_net_quantity":"1.0000 SYS","stake_cpu_quantity":"1.0000 SYS","transfer":true}} -$ cat generated_account_creation_trx.json -{ - "expiration": "2018-06-29T17:11:36", - "ref_block_num": 16349, - "ref_block_prefix": 3248946195, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "newaccount", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea305501000000010003c8162ea04fed738bfd5470527fd1ae7454c2e9ad1acbadec9f9e35bab2f33c660100000001000000010003c8162ea04fed738bfd5470527fd1ae7454c2e9ad1acbadec9f9e35bab2f33c6601000000" - },{ - "account": "eosio", - "name": "buyrambytes", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea305500c80000" - },{ - "account": "eosio", - "name": "delegatebw", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea3055102700000000000004535953000000001027000000000000045359530000000001" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` -Adjust the amount of delegated tokens and the amount of RAM bytes to gift as necessary. -The actual public key used is not important since that data is only encoded into the `eosio::newaccount` action which will be replaced soon anyway. - -Second, create a file (e.g. newaccount_payload.json) with the JSON payload for the real `eosio::newaccount` action. It should look like: -``` -$ cat newaccount_payload.json -{ - "creator": "eosio", - "name": "eosio.sudo", - "owner": { - "threshold": 1, - "keys": [], - "accounts": [{ - "permission": {"actor": "eosio", "permission": "active"}, - "weight": 1 - }], - "waits": [] - }, - "active": { - "threshold": 1, - "keys": [], - "accounts": [{ - "permission": {"actor": "eosio", "permission": "active"}, - "weight": 1 - }], - "waits": [] - } -} -``` - -Third, generate a transaction containing the actual `eosio::newaccount` action that will be used in the final transaction: -``` -$ cleos push action -s -j -d eosio newaccount newaccount_payload.json -p eosio > generated_newaccount_trx.json -$ cat generated_newaccount_trx.json -{ - "expiration": "2018-06-29T17:11:36", - "ref_block_num": 16349, - "ref_block_prefix": 3248946195, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "newaccount", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea30550100000000010000000000ea305500000000a8ed32320100000100000000010000000000ea305500000000a8ed3232010000" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -Fourth, generate a transaction containing the `eosio::setpriv` action which will make the `eosio.sudo` account privileged: -``` -$ cleos push action -s -j -d eosio setpriv '{"account": "eosio.sudo", "is_priv": 1}' -p eosio > generated_setpriv_trx.json -$ cat generated_setpriv_trx.json -{ - "expiration": "2018-06-29T17:11:36", - "ref_block_num": 16349, - "ref_block_prefix": 3248946195, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "setpriv", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "00004d1a03ea305501" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -Next, the action JSONs of the previously generated transactions will be used to construct a unified transaction which will eventually be proposed with the eosio.msig contract. A good way to get started is to make a copy of the generated_newaccount_trx.json file (call the copied file create_sudo_account_trx.json) and edit the first three fields so it looks something like the following: -``` -$ cat create_sudo_account_trx.json -{ - "expiration": "2018-07-06T12:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "newaccount", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea30550100000000010000000000ea305500000000a8ed32320100000100000000010000000000ea305500000000a8ed3232010000" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -The `ref_block_num` and `ref_block_prefix` values were set to 0. The proposed transaction does not need to have a valid TaPoS reference block because it will be reset anyway when scheduled as a deferred transaction during the `eosio.msig::exec` action. The `expiration` field, which was the only other field that was changed, will also be reset when the proposed transaction is scheduled as a deferred transaction during `eosio.msig::exec`. However, this field actually does matter during the propose-approve-exec lifecycle of the proposed transaction. If the present time passes the time in the `expiration` field of the proposed transaction, it will not be possible to execute the proposed transaction even if all necessary approvals are gathered. Therefore, it is important to set the expiration time to some point well enough in the future to give all necessary approvers enough time to review and approve the proposed transaction, but it is otherwise arbitrary. Generally, for reviewing/validation purposes it is important that all potential approvers of the transaction (i.e. the block producers) choose the exact same `expiration` time so that there is not any discrepancy in bytes of the serialized transaction if it was to later be included in payload data of some other action. - -Then, all but the first action JSON object of generated_account_creation_trx.json should be appended to the `actions` array of create_sudo_account_trx.json, and then the single action JSON object of generated_setpriv_trx.json should be appended to the `actions` array of create_sudo_account_trx.json. The final result is a create_sudo_account_trx.json file that looks like the following: -``` -$ cat create_sudo_account_trx.json -{ - "expiration": "2018-07-06T12:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "newaccount", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea30550100000000010000000000ea305500000000a8ed32320100000100000000010000000000ea305500000000a8ed3232010000" - },{ - "account": "eosio", - "name": "buyrambytes", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea305500c80000" - },{ - "account": "eosio", - "name": "delegatebw", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "0000000000ea305500004d1a03ea3055102700000000000004535953000000001027000000000000045359530000000001" - },{ - "account": "eosio", - "name": "setpriv", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": "00004d1a03ea305501" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -The transaction in create_sudo_account_trx.json is now ready to be proposed. - -It will be useful to have a JSON of the active permissions of each of the active block producers for later when proposing transactions using the eosio.msig contract. - -This guide will assume that there are 21 active block producers on the chain with account names: `blkproducera`, `blkproducerb`, ..., `blkproduceru`. - -In that case, create a file producer_permissions.json with the content shown in the command below: -``` -$ cat producer_permissions.json -[ - {"actor": "blkproducera", "permission": "active"}, - {"actor": "blkproducerb", "permission": "active"}, - {"actor": "blkproducerc", "permission": "active"}, - {"actor": "blkproducerd", "permission": "active"}, - {"actor": "blkproducere", "permission": "active"}, - {"actor": "blkproducerf", "permission": "active"}, - {"actor": "blkproducerg", "permission": "active"}, - {"actor": "blkproducerh", "permission": "active"}, - {"actor": "blkproduceri", "permission": "active"}, - {"actor": "blkproducerj", "permission": "active"}, - {"actor": "blkproducerk", "permission": "active"}, - {"actor": "blkproducerl", "permission": "active"}, - {"actor": "blkproducerm", "permission": "active"}, - {"actor": "blkproducern", "permission": "active"}, - {"actor": "blkproducero", "permission": "active"}, - {"actor": "blkproducerp", "permission": "active"}, - {"actor": "blkproducerq", "permission": "active"}, - {"actor": "blkproducerr", "permission": "active"}, - {"actor": "blkproducers", "permission": "active"}, - {"actor": "blkproducert", "permission": "active"}, - {"actor": "blkproduceru", "permission": "active"} -] -``` - -#### 2.1.2 Propose the transaction to create the eosio.sudo account - -Only one of the potential approvers will need to propose the transaction that was created in the previous sub-section. All the other approvers should still follow the steps in the previous sub-section to generate the same create_sudo_account_trx.json file as all the other approvers. They will need this to compare to the actual proposed transaction prior to approving. - -The approvers are typically going to be the active block producers of the chain, so it makes sense that one of the block producers is elected as the leader to propose the actual transaction. Note that this lead block producer will need to incur the temporary RAM cost of proposing the transaction, but they will get the RAM back when the proposal has executed or has been canceled (which only the proposer can do prior to expiration). - -The guide will assume that `blkproducera` was chosen as the lead block producer to propose the transaction. - -The lead block producer (`blkproducera`) should propose the transaction stored in create_sudo_account_trx.json: -``` -$ cleos multisig propose_trx createsudo producer_permissions.json create_sudo_account_trx.json blkproducera -executed transaction: bf6aaa06b40e2a35491525cb11431efd2b5ac94e4a7a9c693c5bf0cfed942393 744 bytes 772 us -# eosio.msig <= eosio.msig::propose {"proposer":"blkproducera","proposal_name":"createsudo","requested":[{"actor":"blkproducera","permis... -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -#### 2.1.3 Review and approve the transaction to create the eosio.sudo account - -Each of the potential approvers of the proposed transaction (i.e. the active block producers) should first review the proposed transaction to make sure they are not approving anything that they do not agree to. - -The proposed transaction can be reviewed using the `cleos multisig review` command: -``` -$ cleos multisig review blkproducera createsudo > create_sudo_account_trx_to_review.json -$ head -n 30 create_sudo_account_trx_to_review.json -{ - "proposal_name": "createsudo", - "packed_transaction": "c0593f5b00000000000000000000040000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232420000000000ea305500004d1a03ea30550100000000010000000000ea305500000000a8ed32320100000100000000010000000000ea305500000000a8ed32320100000000000000ea305500b0cafe4873bd3e010000000000ea305500000000a8ed3232140000000000ea305500004d1a03ea3055002800000000000000ea305500003f2a1ba6a24a010000000000ea305500000000a8ed3232310000000000ea305500004d1a03ea30551027000000000000045359530000000010270000000000000453595300000000010000000000ea305500000060bb5bb3c2010000000000ea305500000000a8ed32320900004d1a03ea30550100", - "transaction": { - "expiration": "2018-07-06T12:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "newaccount", - "authorization": [{ - "actor": "eosio", - "permission": "active" - } - ], - "data": { - "creator": "eosio", - "name": "eosio.sudo", - "owner": { - "threshold": 1, - "keys": [], - "accounts": [{ - "permission": { - "actor": "eosio", - "permission": "active" - }, -``` - -The approvers should go through the full human-readable transaction output and make sure everything looks fine. But they can also use tools to automatically compare the proposed transaction to the one they generated to make sure there are absolutely no differences: -``` -$ cleos multisig propose_trx -j -s -d createsudo '[]' create_sudo_account_trx.json blkproducera | grep '"data":' | sed 's/^[ \t]*"data":[ \t]*//;s/[",]//g' | cut -c 35- > expected_create_sudo_trx_serialized.hex -$ cat expected_create_sudo_trx_serialized.hex -c0593f5b00000000000000000000040000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232420000000000ea305500004d1a03ea30550100000000010000000000ea305500000000a8ed32320100000100000000010000000000ea305500000000a8ed32320100000000000000ea305500b0cafe4873bd3e010000000000ea305500000000a8ed3232140000000000ea305500004d1a03ea3055002800000000000000ea305500003f2a1ba6a24a010000000000ea305500000000a8ed3232310000000000ea305500004d1a03ea30551027000000000000045359530000000010270000000000000453595300000000010000000000ea305500000060bb5bb3c2010000000000ea305500000000a8ed32320900004d1a03ea30550100 -$ cat create_sudo_account_trx_to_review.json | grep '"packed_transaction":' | sed 's/^[ \t]*"packed_transaction":[ \t]*//;s/[",]//g' > proposed_create_sudo_trx_serialized.hex -$ cat proposed_create_sudo_trx_serialized.hex -c0593f5b00000000000000000000040000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232420000000000ea305500004d1a03ea30550100000000010000000000ea305500000000a8ed32320100000100000000010000000000ea305500000000a8ed32320100000000000000ea305500b0cafe4873bd3e010000000000ea305500000000a8ed3232140000000000ea305500004d1a03ea3055002800000000000000ea305500003f2a1ba6a24a010000000000ea305500000000a8ed3232310000000000ea305500004d1a03ea30551027000000000000045359530000000010270000000000000453595300000000010000000000ea305500000060bb5bb3c2010000000000ea305500000000a8ed32320900004d1a03ea30550100 -$ diff expected_create_sudo_trx_serialized.hex proposed_create_sudo_trx_serialized.hex -``` - -When an approver (e.g. `blkproducerb`) is satisfied with the proposed transaction, they can simply approve it: -``` -$ cleos multisig approve blkproducera createsudo '{"actor": "blkproducerb", "permission": "active"}' -p blkproducerb -executed transaction: 03a907e2a3192aac0cd040c73db8273c9da7696dc7960de22b1a479ae5ee9f23 128 bytes 472 us -# eosio.msig <= eosio.msig::approve {"proposer":"blkproducera","proposal_name":"createsudo","level":{"actor":"blkproducerb","permission"... -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -#### 2.1.4 Execute the transaction to create the eosio.sudo account - -When the necessary approvals are collected (in this example, with 21 block producers, at least 15 of their approvals were required), anyone can push the `eosio.msig::exec` action which executes the approved transaction. It makes a lot of sense for the lead block producer who proposed the transaction to also execute it (this will incur another temporary RAM cost for the deferred transaction that is generated by the eosio.msig contract). - -``` -$ cleos multisig exec blkproducera createsudo blkproducera -executed transaction: 7ecc183b99915cc411f96dde7c35c3fe0df6e732507f272af3a039b706482e5a 160 bytes 850 us -# eosio.msig <= eosio.msig::exec {"proposer":"blkproducera","proposal_name":"createsudo","executer":"blkproducera"} -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -Anyone can now verify that the `eosio.sudo` was created: -``` -$ cleos get account eosio.sudo -privileged: true -permissions: - owner 1: 1 eosio@active, - active 1: 1 eosio@active, -memory: - quota: 49.74 KiB used: 3.33 KiB - -net bandwidth: - staked: 1.0000 SYS (total stake delegated from account to self) - delegated: 0.0000 SYS (total staked delegated to account from others) - used: 0 bytes - available: 2.304 MiB - limit: 2.304 MiB - -cpu bandwidth: - staked: 1.0000 SYS (total stake delegated from account to self) - delegated: 0.0000 SYS (total staked delegated to account from others) - used: 0 us - available: 460.8 ms - limit: 460.8 ms - -producers: - -``` - -### 2.2 Deploy the eosio.sudo contract - -#### 2.2.1 Generate the transaction to deploy the eosio.sudo contract - -The transaction to deploy the contract to the `eosio.sudo` account will need to be proposed to get the necessary approvals from active block producers before executing it. This transaction needs to first be generated and stored as JSON into a file so that it can be used in the cleos command to propose the transaction to the eosio.msig contract. - -The easy way to generate this transaction is using cleos: -``` -$ cleos set contract -s -j -d eosio.sudo contracts/eosio.sudo/ > deploy_sudo_contract_trx.json -Reading WAST/WASM from contracts/eosio.sudo/eosio.sudo.wasm... -Using already assembled WASM... -Publishing contract... -$ cat deploy_sudo_contract_trx.json -{ - "expiration": "2018-06-29T19:55:26", - "ref_block_num": 18544, - "ref_block_prefix": 562790588, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "setcode", - "authorization": [{ - "actor": "eosio.sudo", - "permission": "active" - } - ], - "data": "00004d1a03ea30550000c8180061736d01000000013e0c60017f006000017e60027e7e0060017e006000017f60027f7f017f60027f7f0060037f7f7f017f60057f7e7f7f7f0060000060037e7e7e0060017f017f029d010803656e7610616374696f6e5f646174615f73697a65000403656e760c63757272656e745f74696d65000103656e760c656f73696f5f617373657274000603656e76066d656d637079000703656e7610726561645f616374696f6e5f64617461000503656e760c726571756972655f61757468000303656e760d726571756972655f6175746832000203656e760d73656e645f64656665727265640008030f0e0505050400000a05070b050b000904050170010202050301000107c7010b066d656d6f72790200165f5a6571524b3131636865636b73756d32353653315f0008165f5a6571524b3131636865636b73756d31363053315f0009165f5a6e65524b3131636865636b73756d31363053315f000a036e6f77000b305f5a4e35656f73696f3132726571756972655f6175746845524b4e535f31367065726d697373696f6e5f6c6576656c45000c155f5a4e35656f73696f347375646f34657865634576000d056170706c79000e066d656d636d700010066d616c6c6f630011046672656500140908010041000b02150d0a9a130e0b002000200141201010450b0b002000200141201010450b0d0020002001412010104100470b0a00100142c0843d80a70b0e002000290300200029030810060b9e0102017e027f410028020441206b2202210341002002360204200029030010050240024010002200418104490d002000101121020c010b410020022000410f6a4170716b22023602040b2002200010041a200041074b41101002200341186a2002410810031a2003290318100520032903182101200310013703002003200137030820032003290318200241086a2000410010074100200341206a3602040bfd0403027f047e017f4100410028020441206b220936020442002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b024020072002520d0042002106423b2105413021044200210703400240024002400240024020064204560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b200720015141c00010020b0240024020012000510d0042002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b20072002520d010b20092000370318200242808080808080a0aad700520d00200941003602142009410136021020092009290310370208200941186a200941086a100f1a0b4100200941206a3602040b8c0101047f4100280204220521042001280204210220012802002101024010002203450d00024020034180044d0d00200310112205200310041a200510140c010b410020052003410f6a4170716b22053602042005200310041a0b200020024101756a210302402002410171450d00200328020020016a28020021010b200320011100004100200436020441010b4901037f4100210502402002450d000240034020002d0000220320012d00002204470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200320046b21050b20050b0900418001200010120bcd04010c7f02402001450d00024020002802c041220d0d004110210d200041c0c1006a41103602000b200141086a200141046a41077122026b200120021b210202400240024020002802c441220a200d4f0d002000200a410c6c6a4180c0006a21010240200a0d0020004184c0006a220d2802000d0020014180c000360200200d20003602000b200241046a210a034002402001280208220d200a6a20012802004b0d002001280204200d6a220d200d28020041808080807871200272360200200141086a22012001280200200a6a360200200d200d28020041808080807872360200200d41046a22010d030b2000101322010d000b0b41fcffffff0720026b2104200041c8c1006a210b200041c0c1006a210c20002802c8412203210d03402000200d410c6c6a22014188c0006a28020020014180c0006a22052802004641d0c200100220014184c0006a280200220641046a210d0340200620052802006a2107200d417c6a2208280200220941ffffffff07712101024020094100480d000240200120024f0d000340200d20016a220a20074f0d01200a280200220a4100480d012001200a41ffffffff07716a41046a22012002490d000b0b20082001200220012002491b200941808080807871723602000240200120024d0d00200d20026a200420016a41ffffffff07713602000b200120024f0d040b200d20016a41046a220d2007490d000b41002101200b4100200b28020041016a220d200d200c280200461b220d360200200d2003470d000b0b20010f0b2008200828020041808080807872360200200d0f0b41000b870501087f20002802c44121010240024041002d00a643450d0041002802a84321070c010b3f002107410041013a00a6434100200741107422073602a8430b200721030240024002400240200741ffff036a41107622023f0022084d0d00200220086b40001a4100210820023f00470d0141002802a84321030b41002108410020033602a84320074100480d0020002001410c6c6a210220074180800441808008200741ffff037122084181f8034922061b6a2008200741ffff077120061b6b20076b2107024041002d00a6430d003f002103410041013a00a6434100200341107422033602a8430b20024180c0006a210220074100480d01200321060240200741076a417871220520036a41ffff036a41107622083f0022044d0d00200820046b40001a20083f00470d0241002802a84321060b4100200620056a3602a8432003417f460d0120002001410c6c6a22014184c0006a2802002206200228020022086a2003460d020240200820014188c0006a22052802002201460d00200620016a2206200628020041808080807871417c20016b20086a72360200200520022802003602002006200628020041ffffffff07713602000b200041c4c1006a2202200228020041016a220236020020002002410c6c6a22004184c0006a200336020020004180c0006a220820073602000b20080f0b02402002280200220820002001410c6c6a22034188c0006a22012802002207460d0020034184c0006a28020020076a2203200328020041808080807871417c20076b20086a72360200200120022802003602002003200328020041ffffffff07713602000b2000200041c4c1006a220728020041016a22033602c0412007200336020041000f0b2002200820076a36020020020b7b01037f024002402000450d0041002802c04222024101480d004180c10021032002410c6c4180c1006a21010340200341046a2802002202450d010240200241046a20004b0d00200220032802006a20004b0d030b2003410c6a22032001490d000b0b0f0b2000417c6a2203200328020041ffffffff07713602000b0300000b0bcf01060041040b04b04900000041100b0572656164000041200b086f6e6572726f72000041300b06656f73696f000041c0000b406f6e6572726f7220616374696f6e277320617265206f6e6c792076616c69642066726f6d207468652022656f73696f222073797374656d206163636f756e74000041d0c2000b566d616c6c6f635f66726f6d5f6672656564207761732064657369676e656420746f206f6e6c792062652063616c6c6564206166746572205f686561702077617320636f6d706c6574656c7920616c6c6f636174656400" - },{ - "account": "eosio", - "name": "setabi", - "authorization": [{ - "actor": "eosio.sudo", - "permission": "active" - } - ], - "data": "00004d1a03ea3055df040e656f73696f3a3a6162692f312e30030c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d6506107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506616374696f6e0004076163636f756e740c6163636f756e745f6e616d65046e616d650b616374696f6e5f6e616d650d617574686f72697a6174696f6e127065726d697373696f6e5f6c6576656c5b5d0464617461056279746573127472616e73616374696f6e5f68656164657200060a65787069726174696f6e0e74696d655f706f696e745f7365630d7265665f626c6f636b5f6e756d0675696e743136107265665f626c6f636b5f7072656669780675696e743332136d61785f6e65745f75736167655f776f7264730976617275696e743332106d61785f6370755f75736167655f6d730575696e74380964656c61795f7365630976617275696e74333209657874656e73696f6e000204747970650675696e74313604646174610562797465730b7472616e73616374696f6e127472616e73616374696f6e5f6865616465720314636f6e746578745f667265655f616374696f6e7308616374696f6e5b5d07616374696f6e7308616374696f6e5b5d167472616e73616374696f6e5f657874656e73696f6e730b657874656e73696f6e5b5d046578656300020865786563757465720c6163636f756e745f6e616d65037472780b7472616e73616374696f6e01000000000080545704657865630000000000" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -Once again, as described in sub-section 2.1.1, edit the values of the `ref_block_num` and `ref_block_prefix` fields to be 0 and edit the time of the `expiration` field to some point in the future that provides enough time to approve and execute the proposed transaction. After editing deploy_sudo_contract_trx.json the first few lines of it may look something like the following: -``` -$ head -n 9 deploy_sudo_contract_trx.json -{ - "expiration": "2018-07-06T12:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ -``` - -This guide will assume that there are 21 active block producers on the chain with account names: `blkproducera`, `blkproducerb`, ..., `blkproduceru`. The end of sub-section 2.1.1 displayed what the JSON of the active permissions of each of the active block producers would look like given the assumptions about the active block producer set. That JSON was stored in the file producer_permissions.json; if the approvers (i.e. block producers) have not created that file already, they should create that file now as shown at the end of sub-section 2.1.1. - -#### 2.2.2 Propose the transaction to deploy the eosio.sudo contract - -Only one of the potential approvers will need to propose the transaction that was created in the previous sub-section. All the other approvers should still follow the steps in the previous sub-section to generate the same deploy_sudo_contract_trx.json file as all the other approvers. They will need this to compare to the actual proposed transaction prior to approving. - -The approvers are typically going to be the active block producers of the chain, so it makes sense that one of the block producers is elected as the leader to propose the actual transaction. Note that this lead block producer will need to incur the temporary RAM cost of proposing the transaction, but they will get the RAM back when the proposal has executed or has been canceled (which only the proposer can do prior to expiration). - -This guide will assume that `blkproducera` was chosen as the lead block producer to propose the transaction. - -The lead block producer (`blkproducera`) should propose the transaction stored in deploy_sudo_contract_trx.json: -``` -$ cleos multisig propose_trx deploysudo producer_permissions.json deploy_sudo_contract_trx.json blkproducera -executed transaction: 9e50dd40eba25583a657ee8114986a921d413b917002c8fb2d02e2d670f720a8 4312 bytes 871 us -# eosio.msig <= eosio.msig::propose {"proposer":"blkproducera","proposal_name":"deploysudo","requested":[{"actor":"blkproducera","permis... -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -#### 2.2.3 Review and approve the transaction to deploy the eosio.sudo contract - -Each of the potential approvers of the proposed transaction (i.e. the active block producers) should first review the proposed transaction to make sure they are not approving anything that they do not agree to. - -The proposed transaction can be reviewed using the `cleos multisig review` command: -``` -$ cleos multisig review blkproducera deploysudo > deploy_sudo_contract_trx_to_review.json -$ cat deploy_sudo_contract_trx_to_review.json -{ - "proposal_name": "deploysudo", - "packed_transaction": "c0593f5b00000000000000000000020000000000ea305500000040258ab2c20100004d1a03ea305500000000a8ed3232d41800004d1a03ea30550000c8180061736d01000000013e0c60017f006000017e60027e7e0060017e006000017f60027f7f017f60027f7f0060037f7f7f017f60057f7e7f7f7f0060000060037e7e7e0060017f017f029d010803656e7610616374696f6e5f646174615f73697a65000403656e760c63757272656e745f74696d65000103656e760c656f73696f5f617373657274000603656e76066d656d637079000703656e7610726561645f616374696f6e5f64617461000503656e760c726571756972655f61757468000303656e760d726571756972655f6175746832000203656e760d73656e645f64656665727265640008030f0e0505050400000a05070b050b000904050170010202050301000107c7010b066d656d6f72790200165f5a6571524b3131636865636b73756d32353653315f0008165f5a6571524b3131636865636b73756d31363053315f0009165f5a6e65524b3131636865636b73756d31363053315f000a036e6f77000b305f5a4e35656f73696f3132726571756972655f6175746845524b4e535f31367065726d697373696f6e5f6c6576656c45000c155f5a4e35656f73696f347375646f34657865634576000d056170706c79000e066d656d636d700010066d616c6c6f630011046672656500140908010041000b02150d0a9a130e0b002000200141201010450b0b002000200141201010450b0d0020002001412010104100470b0a00100142c0843d80a70b0e002000290300200029030810060b9e0102017e027f410028020441206b2202210341002002360204200029030010050240024010002200418104490d002000101121020c010b410020022000410f6a4170716b22023602040b2002200010041a200041074b41101002200341186a2002410810031a2003290318100520032903182101200310013703002003200137030820032003290318200241086a2000410010074100200341206a3602040bfd0403027f047e017f4100410028020441206b220936020442002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b024020072002520d0042002106423b2105413021044200210703400240024002400240024020064204560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b200720015141c00010020b0240024020012000510d0042002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b20072002520d010b20092000370318200242808080808080a0aad700520d00200941003602142009410136021020092009290310370208200941186a200941086a100f1a0b4100200941206a3602040b8c0101047f4100280204220521042001280204210220012802002101024010002203450d00024020034180044d0d00200310112205200310041a200510140c010b410020052003410f6a4170716b22053602042005200310041a0b200020024101756a210302402002410171450d00200328020020016a28020021010b200320011100004100200436020441010b4901037f4100210502402002450d000240034020002d0000220320012d00002204470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200320046b21050b20050b0900418001200010120bcd04010c7f02402001450d00024020002802c041220d0d004110210d200041c0c1006a41103602000b200141086a200141046a41077122026b200120021b210202400240024020002802c441220a200d4f0d002000200a410c6c6a4180c0006a21010240200a0d0020004184c0006a220d2802000d0020014180c000360200200d20003602000b200241046a210a034002402001280208220d200a6a20012802004b0d002001280204200d6a220d200d28020041808080807871200272360200200141086a22012001280200200a6a360200200d200d28020041808080807872360200200d41046a22010d030b2000101322010d000b0b41fcffffff0720026b2104200041c8c1006a210b200041c0c1006a210c20002802c8412203210d03402000200d410c6c6a22014188c0006a28020020014180c0006a22052802004641d0c200100220014184c0006a280200220641046a210d0340200620052802006a2107200d417c6a2208280200220941ffffffff07712101024020094100480d000240200120024f0d000340200d20016a220a20074f0d01200a280200220a4100480d012001200a41ffffffff07716a41046a22012002490d000b0b20082001200220012002491b200941808080807871723602000240200120024d0d00200d20026a200420016a41ffffffff07713602000b200120024f0d040b200d20016a41046a220d2007490d000b41002101200b4100200b28020041016a220d200d200c280200461b220d360200200d2003470d000b0b20010f0b2008200828020041808080807872360200200d0f0b41000b870501087f20002802c44121010240024041002d00a643450d0041002802a84321070c010b3f002107410041013a00a6434100200741107422073602a8430b200721030240024002400240200741ffff036a41107622023f0022084d0d00200220086b40001a4100210820023f00470d0141002802a84321030b41002108410020033602a84320074100480d0020002001410c6c6a210220074180800441808008200741ffff037122084181f8034922061b6a2008200741ffff077120061b6b20076b2107024041002d00a6430d003f002103410041013a00a6434100200341107422033602a8430b20024180c0006a210220074100480d01200321060240200741076a417871220520036a41ffff036a41107622083f0022044d0d00200820046b40001a20083f00470d0241002802a84321060b4100200620056a3602a8432003417f460d0120002001410c6c6a22014184c0006a2802002206200228020022086a2003460d020240200820014188c0006a22052802002201460d00200620016a2206200628020041808080807871417c20016b20086a72360200200520022802003602002006200628020041ffffffff07713602000b200041c4c1006a2202200228020041016a220236020020002002410c6c6a22004184c0006a200336020020004180c0006a220820073602000b20080f0b02402002280200220820002001410c6c6a22034188c0006a22012802002207460d0020034184c0006a28020020076a2203200328020041808080807871417c20076b20086a72360200200120022802003602002003200328020041ffffffff07713602000b2000200041c4c1006a220728020041016a22033602c0412007200336020041000f0b2002200820076a36020020020b7b01037f024002402000450d0041002802c04222024101480d004180c10021032002410c6c4180c1006a21010340200341046a2802002202450d010240200241046a20004b0d00200220032802006a20004b0d030b2003410c6a22032001490d000b0b0f0b2000417c6a2203200328020041ffffffff07713602000b0300000b0bcf01060041040b04b04900000041100b0572656164000041200b086f6e6572726f72000041300b06656f73696f000041c0000b406f6e6572726f7220616374696f6e277320617265206f6e6c792076616c69642066726f6d207468652022656f73696f222073797374656d206163636f756e74000041d0c2000b566d616c6c6f635f66726f6d5f6672656564207761732064657369676e656420746f206f6e6c792062652063616c6c6564206166746572205f686561702077617320636f6d706c6574656c7920616c6c6f6361746564000000000000ea305500000000b863b2c20100004d1a03ea305500000000a8ed3232e90400004d1a03ea3055df040e656f73696f3a3a6162692f312e30030c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d6506107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506616374696f6e0004076163636f756e740c6163636f756e745f6e616d65046e616d650b616374696f6e5f6e616d650d617574686f72697a6174696f6e127065726d697373696f6e5f6c6576656c5b5d0464617461056279746573127472616e73616374696f6e5f68656164657200060a65787069726174696f6e0e74696d655f706f696e745f7365630d7265665f626c6f636b5f6e756d0675696e743136107265665f626c6f636b5f7072656669780675696e743332136d61785f6e65745f75736167655f776f7264730976617275696e743332106d61785f6370755f75736167655f6d730575696e74380964656c61795f7365630976617275696e74333209657874656e73696f6e000204747970650675696e74313604646174610562797465730b7472616e73616374696f6e127472616e73616374696f6e5f6865616465720314636f6e746578745f667265655f616374696f6e7308616374696f6e5b5d07616374696f6e7308616374696f6e5b5d167472616e73616374696f6e5f657874656e73696f6e730b657874656e73696f6e5b5d046578656300020865786563757465720c6163636f756e745f6e616d65037472780b7472616e73616374696f6e0100000000008054570465786563000000000000", - "transaction": { - "expiration": "2018-07-06T12:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "setcode", - "authorization": [{ - "actor": "eosio.sudo", - "permission": "active" - } - ], - "data": { - "account": "eosio.sudo", - "vmtype": 0, - "vmversion": 0, - "code": "0061736d01000000013e0c60017f006000017e60027e7e0060017e006000017f60027f7f017f60027f7f0060037f7f7f017f60057f7e7f7f7f0060000060037e7e7e0060017f017f029d010803656e7610616374696f6e5f646174615f73697a65000403656e760c63757272656e745f74696d65000103656e760c656f73696f5f617373657274000603656e76066d656d637079000703656e7610726561645f616374696f6e5f64617461000503656e760c726571756972655f61757468000303656e760d726571756972655f6175746832000203656e760d73656e645f64656665727265640008030f0e0505050400000a05070b050b000904050170010202050301000107c7010b066d656d6f72790200165f5a6571524b3131636865636b73756d32353653315f0008165f5a6571524b3131636865636b73756d31363053315f0009165f5a6e65524b3131636865636b73756d31363053315f000a036e6f77000b305f5a4e35656f73696f3132726571756972655f6175746845524b4e535f31367065726d697373696f6e5f6c6576656c45000c155f5a4e35656f73696f347375646f34657865634576000d056170706c79000e066d656d636d700010066d616c6c6f630011046672656500140908010041000b02150d0a9a130e0b002000200141201010450b0b002000200141201010450b0d0020002001412010104100470b0a00100142c0843d80a70b0e002000290300200029030810060b9e0102017e027f410028020441206b2202210341002002360204200029030010050240024010002200418104490d002000101121020c010b410020022000410f6a4170716b22023602040b2002200010041a200041074b41101002200341186a2002410810031a2003290318100520032903182101200310013703002003200137030820032003290318200241086a2000410010074100200341206a3602040bfd0403027f047e017f4100410028020441206b220936020442002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b024020072002520d0042002106423b2105413021044200210703400240024002400240024020064204560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b200720015141c00010020b0240024020012000510d0042002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b20072002520d010b20092000370318200242808080808080a0aad700520d00200941003602142009410136021020092009290310370208200941186a200941086a100f1a0b4100200941206a3602040b8c0101047f4100280204220521042001280204210220012802002101024010002203450d00024020034180044d0d00200310112205200310041a200510140c010b410020052003410f6a4170716b22053602042005200310041a0b200020024101756a210302402002410171450d00200328020020016a28020021010b200320011100004100200436020441010b4901037f4100210502402002450d000240034020002d0000220320012d00002204470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200320046b21050b20050b0900418001200010120bcd04010c7f02402001450d00024020002802c041220d0d004110210d200041c0c1006a41103602000b200141086a200141046a41077122026b200120021b210202400240024020002802c441220a200d4f0d002000200a410c6c6a4180c0006a21010240200a0d0020004184c0006a220d2802000d0020014180c000360200200d20003602000b200241046a210a034002402001280208220d200a6a20012802004b0d002001280204200d6a220d200d28020041808080807871200272360200200141086a22012001280200200a6a360200200d200d28020041808080807872360200200d41046a22010d030b2000101322010d000b0b41fcffffff0720026b2104200041c8c1006a210b200041c0c1006a210c20002802c8412203210d03402000200d410c6c6a22014188c0006a28020020014180c0006a22052802004641d0c200100220014184c0006a280200220641046a210d0340200620052802006a2107200d417c6a2208280200220941ffffffff07712101024020094100480d000240200120024f0d000340200d20016a220a20074f0d01200a280200220a4100480d012001200a41ffffffff07716a41046a22012002490d000b0b20082001200220012002491b200941808080807871723602000240200120024d0d00200d20026a200420016a41ffffffff07713602000b200120024f0d040b200d20016a41046a220d2007490d000b41002101200b4100200b28020041016a220d200d200c280200461b220d360200200d2003470d000b0b20010f0b2008200828020041808080807872360200200d0f0b41000b870501087f20002802c44121010240024041002d00a643450d0041002802a84321070c010b3f002107410041013a00a6434100200741107422073602a8430b200721030240024002400240200741ffff036a41107622023f0022084d0d00200220086b40001a4100210820023f00470d0141002802a84321030b41002108410020033602a84320074100480d0020002001410c6c6a210220074180800441808008200741ffff037122084181f8034922061b6a2008200741ffff077120061b6b20076b2107024041002d00a6430d003f002103410041013a00a6434100200341107422033602a8430b20024180c0006a210220074100480d01200321060240200741076a417871220520036a41ffff036a41107622083f0022044d0d00200820046b40001a20083f00470d0241002802a84321060b4100200620056a3602a8432003417f460d0120002001410c6c6a22014184c0006a2802002206200228020022086a2003460d020240200820014188c0006a22052802002201460d00200620016a2206200628020041808080807871417c20016b20086a72360200200520022802003602002006200628020041ffffffff07713602000b200041c4c1006a2202200228020041016a220236020020002002410c6c6a22004184c0006a200336020020004180c0006a220820073602000b20080f0b02402002280200220820002001410c6c6a22034188c0006a22012802002207460d0020034184c0006a28020020076a2203200328020041808080807871417c20076b20086a72360200200120022802003602002003200328020041ffffffff07713602000b2000200041c4c1006a220728020041016a22033602c0412007200336020041000f0b2002200820076a36020020020b7b01037f024002402000450d0041002802c04222024101480d004180c10021032002410c6c4180c1006a21010340200341046a2802002202450d010240200241046a20004b0d00200220032802006a20004b0d030b2003410c6a22032001490d000b0b0f0b2000417c6a2203200328020041ffffffff07713602000b0300000b0bcf01060041040b04b04900000041100b0572656164000041200b086f6e6572726f72000041300b06656f73696f000041c0000b406f6e6572726f7220616374696f6e277320617265206f6e6c792076616c69642066726f6d207468652022656f73696f222073797374656d206163636f756e74000041d0c2000b566d616c6c6f635f66726f6d5f6672656564207761732064657369676e656420746f206f6e6c792062652063616c6c6564206166746572205f686561702077617320636f6d706c6574656c7920616c6c6f636174656400" - }, - "hex_data": "00004d1a03ea30550000c8180061736d01000000013e0c60017f006000017e60027e7e0060017e006000017f60027f7f017f60027f7f0060037f7f7f017f60057f7e7f7f7f0060000060037e7e7e0060017f017f029d010803656e7610616374696f6e5f646174615f73697a65000403656e760c63757272656e745f74696d65000103656e760c656f73696f5f617373657274000603656e76066d656d637079000703656e7610726561645f616374696f6e5f64617461000503656e760c726571756972655f61757468000303656e760d726571756972655f6175746832000203656e760d73656e645f64656665727265640008030f0e0505050400000a05070b050b000904050170010202050301000107c7010b066d656d6f72790200165f5a6571524b3131636865636b73756d32353653315f0008165f5a6571524b3131636865636b73756d31363053315f0009165f5a6e65524b3131636865636b73756d31363053315f000a036e6f77000b305f5a4e35656f73696f3132726571756972655f6175746845524b4e535f31367065726d697373696f6e5f6c6576656c45000c155f5a4e35656f73696f347375646f34657865634576000d056170706c79000e066d656d636d700010066d616c6c6f630011046672656500140908010041000b02150d0a9a130e0b002000200141201010450b0b002000200141201010450b0d0020002001412010104100470b0a00100142c0843d80a70b0e002000290300200029030810060b9e0102017e027f410028020441206b2202210341002002360204200029030010050240024010002200418104490d002000101121020c010b410020022000410f6a4170716b22023602040b2002200010041a200041074b41101002200341186a2002410810031a2003290318100520032903182101200310013703002003200137030820032003290318200241086a2000410010074100200341206a3602040bfd0403027f047e017f4100410028020441206b220936020442002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b024020072002520d0042002106423b2105413021044200210703400240024002400240024020064204560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b200720015141c00010020b0240024020012000510d0042002106423b2105412021044200210703400240024002400240024020064206560d0020042c00002203419f7f6a41ff017141194b0d01200341a5016a21030c020b420021082006420b580d020c030b200341d0016a41002003414f6a41ff01714105491b21030b2003ad42388642388721080b2008421f83200542ffffffff0f838621080b200441016a2104200642017c2106200820078421072005427b7c2205427a520d000b20072002520d010b20092000370318200242808080808080a0aad700520d00200941003602142009410136021020092009290310370208200941186a200941086a100f1a0b4100200941206a3602040b8c0101047f4100280204220521042001280204210220012802002101024010002203450d00024020034180044d0d00200310112205200310041a200510140c010b410020052003410f6a4170716b22053602042005200310041a0b200020024101756a210302402002410171450d00200328020020016a28020021010b200320011100004100200436020441010b4901037f4100210502402002450d000240034020002d0000220320012d00002204470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200320046b21050b20050b0900418001200010120bcd04010c7f02402001450d00024020002802c041220d0d004110210d200041c0c1006a41103602000b200141086a200141046a41077122026b200120021b210202400240024020002802c441220a200d4f0d002000200a410c6c6a4180c0006a21010240200a0d0020004184c0006a220d2802000d0020014180c000360200200d20003602000b200241046a210a034002402001280208220d200a6a20012802004b0d002001280204200d6a220d200d28020041808080807871200272360200200141086a22012001280200200a6a360200200d200d28020041808080807872360200200d41046a22010d030b2000101322010d000b0b41fcffffff0720026b2104200041c8c1006a210b200041c0c1006a210c20002802c8412203210d03402000200d410c6c6a22014188c0006a28020020014180c0006a22052802004641d0c200100220014184c0006a280200220641046a210d0340200620052802006a2107200d417c6a2208280200220941ffffffff07712101024020094100480d000240200120024f0d000340200d20016a220a20074f0d01200a280200220a4100480d012001200a41ffffffff07716a41046a22012002490d000b0b20082001200220012002491b200941808080807871723602000240200120024d0d00200d20026a200420016a41ffffffff07713602000b200120024f0d040b200d20016a41046a220d2007490d000b41002101200b4100200b28020041016a220d200d200c280200461b220d360200200d2003470d000b0b20010f0b2008200828020041808080807872360200200d0f0b41000b870501087f20002802c44121010240024041002d00a643450d0041002802a84321070c010b3f002107410041013a00a6434100200741107422073602a8430b200721030240024002400240200741ffff036a41107622023f0022084d0d00200220086b40001a4100210820023f00470d0141002802a84321030b41002108410020033602a84320074100480d0020002001410c6c6a210220074180800441808008200741ffff037122084181f8034922061b6a2008200741ffff077120061b6b20076b2107024041002d00a6430d003f002103410041013a00a6434100200341107422033602a8430b20024180c0006a210220074100480d01200321060240200741076a417871220520036a41ffff036a41107622083f0022044d0d00200820046b40001a20083f00470d0241002802a84321060b4100200620056a3602a8432003417f460d0120002001410c6c6a22014184c0006a2802002206200228020022086a2003460d020240200820014188c0006a22052802002201460d00200620016a2206200628020041808080807871417c20016b20086a72360200200520022802003602002006200628020041ffffffff07713602000b200041c4c1006a2202200228020041016a220236020020002002410c6c6a22004184c0006a200336020020004180c0006a220820073602000b20080f0b02402002280200220820002001410c6c6a22034188c0006a22012802002207460d0020034184c0006a28020020076a2203200328020041808080807871417c20076b20086a72360200200120022802003602002003200328020041ffffffff07713602000b2000200041c4c1006a220728020041016a22033602c0412007200336020041000f0b2002200820076a36020020020b7b01037f024002402000450d0041002802c04222024101480d004180c10021032002410c6c4180c1006a21010340200341046a2802002202450d010240200241046a20004b0d00200220032802006a20004b0d030b2003410c6a22032001490d000b0b0f0b2000417c6a2203200328020041ffffffff07713602000b0300000b0bcf01060041040b04b04900000041100b0572656164000041200b086f6e6572726f72000041300b06656f73696f000041c0000b406f6e6572726f7220616374696f6e277320617265206f6e6c792076616c69642066726f6d207468652022656f73696f222073797374656d206163636f756e74000041d0c2000b566d616c6c6f635f66726f6d5f6672656564207761732064657369676e656420746f206f6e6c792062652063616c6c6564206166746572205f686561702077617320636f6d706c6574656c7920616c6c6f636174656400" - },{ - "account": "eosio", - "name": "setabi", - "authorization": [{ - "actor": "eosio.sudo", - "permission": "active" - } - ], - "data": { - "account": "eosio.sudo", - "abi": "0e656f73696f3a3a6162692f312e30030c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d6506107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506616374696f6e0004076163636f756e740c6163636f756e745f6e616d65046e616d650b616374696f6e5f6e616d650d617574686f72697a6174696f6e127065726d697373696f6e5f6c6576656c5b5d0464617461056279746573127472616e73616374696f6e5f68656164657200060a65787069726174696f6e0e74696d655f706f696e745f7365630d7265665f626c6f636b5f6e756d0675696e743136107265665f626c6f636b5f7072656669780675696e743332136d61785f6e65745f75736167655f776f7264730976617275696e743332106d61785f6370755f75736167655f6d730575696e74380964656c61795f7365630976617275696e74333209657874656e73696f6e000204747970650675696e74313604646174610562797465730b7472616e73616374696f6e127472616e73616374696f6e5f6865616465720314636f6e746578745f667265655f616374696f6e7308616374696f6e5b5d07616374696f6e7308616374696f6e5b5d167472616e73616374696f6e5f657874656e73696f6e730b657874656e73696f6e5b5d046578656300020865786563757465720c6163636f756e745f6e616d65037472780b7472616e73616374696f6e01000000000080545704657865630000000000" - }, - "hex_data": "00004d1a03ea3055df040e656f73696f3a3a6162692f312e30030c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d6506107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506616374696f6e0004076163636f756e740c6163636f756e745f6e616d65046e616d650b616374696f6e5f6e616d650d617574686f72697a6174696f6e127065726d697373696f6e5f6c6576656c5b5d0464617461056279746573127472616e73616374696f6e5f68656164657200060a65787069726174696f6e0e74696d655f706f696e745f7365630d7265665f626c6f636b5f6e756d0675696e743136107265665f626c6f636b5f7072656669780675696e743332136d61785f6e65745f75736167655f776f7264730976617275696e743332106d61785f6370755f75736167655f6d730575696e74380964656c61795f7365630976617275696e74333209657874656e73696f6e000204747970650675696e74313604646174610562797465730b7472616e73616374696f6e127472616e73616374696f6e5f6865616465720314636f6e746578745f667265655f616374696f6e7308616374696f6e5b5d07616374696f6e7308616374696f6e5b5d167472616e73616374696f6e5f657874656e73696f6e730b657874656e73696f6e5b5d046578656300020865786563757465720c6163636f756e745f6e616d65037472780b7472616e73616374696f6e01000000000080545704657865630000000000" - } - ], - "transaction_extensions": [] - } -} -``` - -Each approver should be able to see that the proposed transaction is setting the code and ABI of the `eosio.sudo` contract. But the data is just hex data and therefore not very meaningful to the approver. And considering that `eosio.sudo` at this point should be a privileged contract, it would be very dangerous for block producers to just allow a contract to be deployed to a privileged account without knowing exactly which WebAssembly code they are deploying and also auditing the source code that generated that WebAssembly code to ensure it is safe to deploy. - -This guide assumes that each approver has already audited the source code of the contract to be deployed and has already compiled that code to generate the WebAssembly code that should be byte-for-byte identical to the code that every other approver following the same process should have generated. The guide also assumes that this generated code and its associated ABI were provided in the steps in sub-section 2.2.1 that generated the transaction in the deploy_sudo_contract_trx.json file. It then becomes quite simple to verify that the proposed transaction is identical to the one the potential approver could have proposed with the code and ABI that they already audited: -``` -$ cleos multisig propose_trx -j -s -d deploysudo '[]' deploy_sudo_contract_trx.json blkproducera | grep '"data":' | sed 's/^[ \t]*"data":[ \t]*//;s/[",]//g' | cut -c 35- > expected_deploy_sudo_trx_serialized.hex -$ cat expected_deploy_sudo_trx_serialized.hex | cut -c -50 -c0593f5b00000000000000000000020000000000ea30550000 -$ cat deploy_sudo_account_trx_to_review.json | grep '"packed_transaction":' | sed 's/^[ \t]*"packed_transaction":[ \t]*//;s/[",]//g' > proposed_deploy_sudo_trx_serialized.hex -$ cat proposed_deploy_sudo_trx_serialized.hex | cut -c -50 -c0593f5b00000000000000000000020000000000ea30550000 -$ diff expected_deploy_sudo_trx_serialized.hex proposed_deploy_sudo_trx_serialized.hex -``` - -When an approver (e.g. `blkproducerb`) is satisfied with the proposed transaction, they can simply approve it: -``` -$ cleos multisig approve blkproducera deploysudo '{"actor": "blkproducerb", "permission": "active"}' -p blkproducerb -executed transaction: d1e424e05ee4d96eb079fcd5190dd0bf35eca8c27dd7231b59df8e464881abfd 128 bytes 483 us -# eosio.msig <= eosio.msig::approve {"proposer":"blkproducera","proposal_name":"deploysudo","level":{"actor":"blkproducerb","permission"... -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -#### 2.2.4 Execute the transaction to create the eosio.sudo account - -When the necessary approvals are collected (in this example, with 21 block producers, at least 15 of their approvals were required), anyone can push the `eosio.msig::exec` action which executes the approved transaction. It makes a lot of sense for the lead block producer who proposed the transaction to also execute it (this will incur another temporary RAM cost for the deferred transaction that is generated by the eosio.msig contract). - -``` -$ cleos multisig exec blkproducera deploysudo blkproducera -executed transaction: e8da14c6f1fdc3255b5413adccfd0d89b18f832a4cc18c4324ea2beec6abd483 160 bytes 1877 us -# eosio.msig <= eosio.msig::exec {"proposer":"blkproducera","proposal_name":"deploysudo","executer":"blkproducera"} -``` - -Anyone can now verify that the `eosio.sudo` contract was deployed correctly. - -``` -$ cleos get code -a retrieved-eosio.sudo.abi eosio.sudo -code hash: 1b3456a5eca28bcaca7a2a3360fbb2a72b9772a416c8e11a303bcb26bfe3263c -saving abi to retrieved-eosio.sudo.abi -$ sha256sum contracts/eosio.sudo/eosio.sudo.wasm -1b3456a5eca28bcaca7a2a3360fbb2a72b9772a416c8e11a303bcb26bfe3263c contracts/eosio.sudo/eosio.sudo.wasm -``` - -If the two hashes match then the local WebAssembly code is the one deployed on the blockchain. The retrieved ABI, which was stored in the file retrieved-eosio.sudo.abi, can then be compared to the original ABI of the contract (contracts/eosio.sudo/eosio.sudo.abi) to ensure they are semantically the same. - -## 3. Using the eosio.sudo contract - -### 3.1 Example: Updating owner authority of an arbitrary account - -This example will demonstrate how to use the deployed eosio.sudo contract together with the eosio.msig contract to allow a greater than two-thirds supermajority of block producers of an EOSIO blockchain to change the owner authority of an arbitrary account. The example will use cleos: in particular, the `cleos multisig` command, the `cleos set account permission` sub-command, and the `cleos sudo exec` sub-command. However, the guide also demonstrates what to do if the `cleos sudo exec` sub-command is not available. - -This guide assumes that there are 21 active block producers on the chain with account names: `blkproducera`, `blkproducerb`, ..., `blkproduceru`. Block producer `blkproducera` will act as the lead block producer handling the proposal of the transaction. - -The producer permissions will later come in handy when proposing a transaction that must be approved by a supermajority of the producers. So a file producer_permissions.json containing those permission (see contents below) should be created to be used later in this guide: -``` -$ cat producer_permissions.json -[ - {"actor": "blkproducera", "permission": "active"}, - {"actor": "blkproducerb", "permission": "active"}, - {"actor": "blkproducerc", "permission": "active"}, - {"actor": "blkproducerd", "permission": "active"}, - {"actor": "blkproducere", "permission": "active"}, - {"actor": "blkproducerf", "permission": "active"}, - {"actor": "blkproducerg", "permission": "active"}, - {"actor": "blkproducerh", "permission": "active"}, - {"actor": "blkproduceri", "permission": "active"}, - {"actor": "blkproducerj", "permission": "active"}, - {"actor": "blkproducerk", "permission": "active"}, - {"actor": "blkproducerl", "permission": "active"}, - {"actor": "blkproducerm", "permission": "active"}, - {"actor": "blkproducern", "permission": "active"}, - {"actor": "blkproducero", "permission": "active"}, - {"actor": "blkproducerp", "permission": "active"}, - {"actor": "blkproducerq", "permission": "active"}, - {"actor": "blkproducerr", "permission": "active"}, - {"actor": "blkproducers", "permission": "active"}, - {"actor": "blkproducert", "permission": "active"}, - {"actor": "blkproduceru", "permission": "active"} -] -``` - -#### 3.1.1 Generate the transaction to change the owner permission of an account - -The goal of this example is for the block producers to change the owner permission of the account `alice`. - -The initial status of the `alice` account might be: -``` -permissions: - owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV - active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV -memory: - quota: 49.74 KiB used: 3.365 KiB - -net bandwidth: - staked: 1.0000 SYS (total stake delegated from account to self) - delegated: 0.0000 SYS (total staked delegated to account from others) - used: 0 bytes - available: 2.304 MiB - limit: 2.304 MiB - -cpu bandwidth: - staked: 1.0000 SYS (total stake delegated from account to self) - delegated: 0.0000 SYS (total staked delegated to account from others) - used: 0 us - available: 460.8 ms - limit: 460.8 ms - -producers: -``` - -Assume that none of the block producers know the private key corresponding to the public key `EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV` which, as can be seen above, is initially securing access to the `alice` account. - -The first step is to generate the transaction changing the owner permission of the `alice` account as if `alice` is authorizing the change: -``` -$ cleos set account permission -s -j -d alice owner '{"threshold": 1, "accounts": [{"permission": {"actor": "eosio", "permission": "active"}, "weight": 1}]}' > update_alice_owner_trx.json -``` - -Then modify update_alice_owner_trx.json so that the values for the `ref_block_num` and `ref_block_prefix` fields are both 0 and the value of the `expiration` field is `"1970-01-01T00:00:00"`: -``` -$ cat update_alice_owner_trx.json -{ - "expiration": "1970-01-01T00:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "updateauth", - "authorization": [{ - "actor": "alice", - "permission": "active" - } - ], - "data": "0000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed3232010000" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -The next step is to generate the transaction containing the `eosio.sudo::exec` action. This action will contain the transaction in update_alice_owner_trx.json as part of its action payload data. - -``` -$ cleos sudo exec -s -j -d blkproducera update_alice_owner_trx.json > sudo_update_alice_owner_trx.json -``` - -Once again modify sudo_update_alice_owner_trx.json so that the value for the `ref_block_num` and `ref_block_prefix` fields are both 0. However, instead of changing the value of the expiration field to `"1970-01-01T00:00:00"`, it should be changed to a time that is far enough in the future to allow enough time for the proposed transaction to be approved and executed. -``` -$ cat sudo_update_alice_owner_trx.json -{ - "expiration": "2018-07-06T12:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio.sudo", - "name": "exec", - "authorization": [{ - "actor": "blkproducera", - "permission": "active" - },{ - "actor": "eosio.sudo", - "permission": "active" - } - ], - "data": "60ae423ad15b613c0000000000000000000000000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed323201000000" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -If the `cleos sudo` command is not available, there is an alternative way to generate the above transaction. There is no need to continue reading the remaining of sub-section 3.1.1 if the sudo_update_alice_owner_trx.json file was already generated with content similar to the above using the `cleos sudo exec` sub-command method. - -First the hex encoding of the binary serialization of the transaction in update_alice_owner_trx.json must be obtained. One way of obtaining this data is through the following command: -``` -$ cleos multisig propose_trx -s -j -d nothing '[]' update_alice_owner_trx.json nothing | grep '"data":' | sed 's/^[ \t]*"data":[ \t]*//;s/[",]//g' | cut -c 35- > update_alice_owner_trx_serialized.hex -$ cat update_alice_owner_trx_serialized.hex -0000000000000000000000000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed323201000000 -``` - -Then generate the template for the transaction containing the `eosio.sudo::exec` action: -``` -$ cleos push action -s -j -d eosio.sudo exec '{"executer": "blkproducera", "trx": ""}' > sudo_update_alice_owner_trx.json -$ cat sudo_update_alice_owner_trx.json -{ - "expiration": "2018-06-29T23:34:01", - "ref_block_num": 23708, - "ref_block_prefix": 3605208482, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio.sudo", - "name": "exec", - "authorization": [], - "data": "60ae423ad15b613c" - } - ], - "transaction_extensions": [], - "signatures": [], - "context_free_data": [] -} -``` - -Then modify the transaction in sudo_update_alice_owner_trx.json as follows: - * replace the values of the `ref_block_num` and `ref_block_prefix` fields to 0; - * replace the time of the `expiration` field to the desired expiration time as described above (e.g. `"2018-07-06T12:00:00"`); - * append the hex data from update_alice_owner_trx_serialized.hex to the end of the existing hex data in the `data` field in sudo_update_alice_owner_trx.json. - - -#### 3.1.2 Propose the transaction to change the owner permission of an account - -The lead block producer (`blkproducera`) should propose the transaction stored in sudo_update_alice_owner_trx.json: -``` -$ cleos multisig propose_trx updatealice producer_permissions.json sudo_update_alice_owner_trx.json blkproducera -executed transaction: 10474f52c9e3fc8e729469a577cd2fc9e4330e25b3fd402fc738ddde26605c13 624 bytes 782 us -# eosio.msig <= eosio.msig::propose {"proposer":"blkproducera","proposal_name":"updatealice","requested":[{"actor":"blkproducera","permi... -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -#### 3.1.3 Review and approve the transaction to change the owner permission of an account - -Each of the potential approvers of the proposed transaction (i.e. the active block producers) should first review the proposed transaction to make sure they are not approving anything that they do not agree to. -``` -$ cleos multisig review blkproducera updatealice > sudo_update_alice_owner_trx_to_review.json -$ cat sudo_update_alice_owner_trx_to_review.json -{ - "proposal_name": "updatealice", - "packed_transaction": "c0593f5b000000000000000000000100004d1a03ea305500000000008054570260ae423ad15b613c00000000a8ed323200004d1a03ea305500000000a8ed32326b60ae423ad15b613c0000000000000000000000000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed32320100000000", - "transaction": { - "expiration": "2018-07-06T12:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio.sudo", - "name": "exec", - "authorization": [{ - "actor": "blkproducera", - "permission": "active" - },{ - "actor": "eosio.sudo", - "permission": "active" - } - ], - "data": { - "executer": "blkproducera", - "trx": { - "expiration": "1970-01-01T00:00:00", - "ref_block_num": 0, - "ref_block_prefix": 0, - "max_net_usage_words": 0, - "max_cpu_usage_ms": 0, - "delay_sec": 0, - "context_free_actions": [], - "actions": [{ - "account": "eosio", - "name": "updateauth", - "authorization": [{ - "actor": "alice", - "permission": "active" - } - ], - "data": "0000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed3232010000" - } - ], - "transaction_extensions": [] - } - }, - "hex_data": "60ae423ad15b613c0000000000000000000000000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed323201000000" - } - ], - "transaction_extensions": [] - } -} -``` - -The approvers should go through the human-readable transaction output and make sure everything looks fine. However, due to a current limitation of nodeos/cleos, the JSONification of action payload data does not occur recursively. So while both the `hex_data` and the human-readable JSON `data` of the payload of the `eosio.sudo::exec` action is available in the output of the `cleos multisig review` command, only the hex data is available of the payload of the inner `eosio::updateauth` action. So it is not clear what the `updateauth` will actually do. - -Furthermore, even if this usability issue was fixed in nodeos/cleos, there will still be cases where there is no sensible human-readable version of an action data payload within a transaction. An example of this is the proposed transaction in sub-section 2.2.3 which used the `eosio::setcode` action to set the contract code of the `eosio.sudo` account. The best thing to do in such situations is for the reviewer to compare the proposed transaction to one generated by them through a process they trust. - -Since each block producer generated a transaction in sub-section 3.1.1 (stored in the file sudo_update_alice_owner_trx.json) which should be identical to the transaction proposed by the lead block producer, they can each simply check to see if the two transactions are identical: -``` -$ cleos multisig propose_trx -j -s -d updatealice '[]' sudo_update_alice_owner_trx.json blkproducera | grep '"data":' | sed 's/^[ \t]*"data":[ \t]*//;s/[",]//g' | cut -c 35- > expected_sudo_update_alice_owner_trx_serialized.hex -$ cat expected_sudo_update_alice_owner_trx_serialized.hex -c0593f5b000000000000000000000100004d1a03ea305500000000008054570260ae423ad15b613c00000000a8ed323200004d1a03ea305500000000a8ed32326b60ae423ad15b613c0000000000000000000000000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed32320100000000 -$ cat sudo_update_alice_owner_trx_to_review.json | grep '"packed_transaction":' | sed 's/^[ \t]*"packed_transaction":[ \t]*//;s/[",]//g' > proposed_sudo_update_alice_owner_trx_serialized.hex -$ cat proposed_sudo_update_alice_owner_trx_serialized.hex -c0593f5b000000000000000000000100004d1a03ea305500000000008054570260ae423ad15b613c00000000a8ed323200004d1a03ea305500000000a8ed32326b60ae423ad15b613c0000000000000000000000000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c340000000080ab26a700000000000000000100000000010000000000ea305500000000a8ed32320100000000 -$ diff expected_sudo_update_alice_owner_trx_serialized.hex proposed_sudo_update_alice_owner_trx_serialized.hex -``` - -When an approver (e.g. `blkproducerb`) is satisfied with the proposed transaction, they can simply approve it: -``` -$ cleos multisig approve blkproducera updatealice '{"actor": "blkproducerb", "permission": "active"}' -p blkproducerb -executed transaction: 2bddc7747e0660ba26babf95035225895b134bfb2ede32ba0a2bb6091c7dab56 128 bytes 543 us -# eosio.msig <= eosio.msig::approve {"proposer":"blkproducera","proposal_name":"updatealice","level":{"actor":"blkproducerb","permission... -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -#### 3.1.4 Execute the transaction to change the owner permission of an account - -When the necessary approvals are collected (in this example, with 21 block producers, at least 15 of their approvals were required), anyone can push the `eosio.msig::exec` action which executes the approved transaction. It makes a lot of sense for the lead block producer who proposed the transaction to also execute it (this will incur another temporary RAM cost for the deferred transaction that is generated by the eosio.msig contract). - -``` -$ cleos multisig exec blkproducera updatealice blkproducera -executed transaction: 7127a66ae307fbef6415bf60c3e91a88b79bcb46030da983c683deb2a1a8e0d0 160 bytes 820 us -# eosio.msig <= eosio.msig::exec {"proposer":"blkproducera","proposal_name":"updatealice","executer":"blkproducera"} -warning: transaction executed locally, but may not be confirmed by the network yet -``` - -Anyone can now verify that the owner authority of `alice` was successfully changed: -``` -$ cleos get account alice -permissions: - owner 1: 1 eosio@active, - active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV -memory: - quota: 49.74 KiB used: 3.348 KiB - -net bandwidth: - staked: 1.0000 SYS (total stake delegated from account to self) - delegated: 0.0000 SYS (total staked delegated to account from others) - used: 0 bytes - available: 2.304 MiB - limit: 2.304 MiB - -cpu bandwidth: - staked: 1.0000 SYS (total stake delegated from account to self) - delegated: 0.0000 SYS (total staked delegated to account from others) - used: 413 us - available: 460.4 ms - limit: 460.8 ms - -producers: - -``` diff --git a/contracts/eosio.sudo/eosio.sudo.abi b/contracts/eosio.sudo/eosio.sudo.abi deleted file mode 100644 index 6f74921bc2a..00000000000 --- a/contracts/eosio.sudo/eosio.sudo.abi +++ /dev/null @@ -1,73 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - },{ - "new_type_name": "permission_name", - "type": "name" - },{ - "new_type_name": "action_name", - "type": "name" - }], - "structs": [{ - "name": "permission_level", - "base": "", - "fields": [ - {"name": "actor", "type": "account_name"}, - {"name": "permission", "type": "permission_name"} - ] - },{ - "name": "action", - "base": "", - "fields": [ - {"name": "account", "type": "account_name"}, - {"name": "name", "type": "action_name"}, - {"name": "authorization", "type": "permission_level[]"}, - {"name": "data", "type": "bytes"} - ] - },{ - "name": "transaction_header", - "base": "", - "fields": [ - {"name": "expiration", "type": "time_point_sec"}, - {"name": "ref_block_num", "type": "uint16"}, - {"name": "ref_block_prefix", "type": "uint32"}, - {"name": "max_net_usage_words", "type": "varuint32"}, - {"name": "max_cpu_usage_ms", "type": "uint8"}, - {"name": "delay_sec", "type": "varuint32"} - ] - },{ - "name": "extension", - "base": "", - "fields": [ - {"name": "type", "type" : "uint16" }, - {"name": "data", "type": "bytes"} - ] - },{ - "name": "transaction", - "base": "transaction_header", - "fields": [ - {"name": "context_free_actions", "type": "action[]"}, - {"name": "actions", "type": "action[]"}, - {"name": "transaction_extensions", "type": "extension[]"} - ] - },{ - "name": "exec", - "base": "", - "fields": [ - {"name":"executer", "type":"account_name"}, - {"name":"trx", "type":"transaction"} - ] - } - ], - "actions": [{ - "name": "exec", - "type": "exec", - "ricardian_contract": "" - } - ], - "tables": [], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/eosio.sudo/eosio.sudo.cpp b/contracts/eosio.sudo/eosio.sudo.cpp deleted file mode 100644 index c64ffa756aa..00000000000 --- a/contracts/eosio.sudo/eosio.sudo.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include - -namespace eosio { - -/* -exec function manually parses input data (instead of taking parsed arguments from dispatcher) -because parsing data in the dispatcher uses too much CPU if the included transaction is very big - -If we use dispatcher the function signature should be: - -void sudo::exec( account_name executer, - transaction trx ) -*/ - -void sudo::exec() { - require_auth( _self ); - - constexpr size_t max_stack_buffer_size = 512; - size_t size = action_data_size(); - char* buffer = (char*)( max_stack_buffer_size < size ? malloc(size) : alloca(size) ); - read_action_data( buffer, size ); - - account_name executer; - - datastream ds( buffer, size ); - ds >> executer; - - require_auth( executer ); - - size_t trx_pos = ds.tellp(); - send_deferred( (uint128_t(executer) << 64) | current_time(), executer, buffer+trx_pos, size-trx_pos ); -} - -} /// namespace eosio - -EOSIO_ABI( eosio::sudo, (exec) ) diff --git a/contracts/eosio.sudo/eosio.sudo.hpp b/contracts/eosio.sudo/eosio.sudo.hpp deleted file mode 100644 index a96562121dc..00000000000 --- a/contracts/eosio.sudo/eosio.sudo.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include - -namespace eosio { - - class sudo : public contract { - public: - sudo( account_name self ):contract(self){} - - void exec(); - - }; - -} /// namespace eosio diff --git a/contracts/eosio.system/CMakeLists.txt b/contracts/eosio.system/CMakeLists.txt deleted file mode 100644 index eb4ff749f77..00000000000 --- a/contracts/eosio.system/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET eosio.system - INCLUDE_FOLDERS ${STANDARD_INCLUDE_FOLDERS} - LIBRARIES libc++ libc eosiolib eosio.token - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/eosio.system/README.md b/contracts/eosio.system/README.md deleted file mode 100644 index 9e5c3160069..00000000000 --- a/contracts/eosio.system/README.md +++ /dev/null @@ -1,84 +0,0 @@ -eosio.system ----------- - -This contract enables users to stake tokens, and then configure and vote on producers and worker proposals. - -Users can also proxy their voting influence to other users. - -The state of this contract is read to determine the 21 active block producers. - -Actions: -The naming convention is codeaccount::actionname followed by a list of paramters. - -Indicates that a particular account wishes to become a producer -## eosio.system::cfgproducer account config - - **account** the producer account to update - - updates the configuration settings for a particular producer, these - - Storage changes are billed to 'account' - -## eosio.system::okproducer account producer vote - - **account** the account which is doing the voting - - **producer** the producer which is being voted for (or unvoted for) - - **vote** true if the producer should be voted for, false if not - - Each account has a maximum number of votes it can maintain. Storage changes will be billed to 'account' - -## eosio.system::setproxy account proxy - - **account** the account which is updating it's proxy - - **proxy** the account which will have the power to vote account's stake - - All current votes are removed and a new proxy link is created. The votes for every producer the proxy - has voted for are updated immediately. - - Storage changes will be billed to 'account' - -## eosio.system::unstake account quantity - - **account** - the account which is requesting their balance be unstaked - - **quantity** - the quantity which will be unstaked, unstaked tokens lose voting influence immediately - - - in order to unstake tokens, an account must request them. The user will receive them over - time via weekly withdraws. The length of time will be configured by the median time as set by - the active producers. - - - If this is called while in the process of unstaking, the currently pending unstake is canceled as if - quantity were 0, then it is applied as if a new unstake request was made. - - - all producers this 'from' has voted for will have their votes updated immediately. - - - bandwidth and storage for the deferred transaction will be billed to 'from' - -## eosio.system::withdraw account - - this action can only be triggered by eosio.system via a deferred transaction generated by unstake - - this will generate an inline eosio.token::transfer call from=eosio.system to=account and amount equal to the next withdraw increment - - this will generate another deferred withdraw to continue the process if there are still withdraws to be made - - -## eosio.system::transfer from to amount memo - - decrements balance of from if amount <= balance - - increments balance of to by amount - - memo is ignored - -## eosio.system::stakevote account amount - - the primary currency of eosio is controlled by the token contract which enables users to transfer - balances from one user to another. The receiver is notified on incoming balances and the vote contract - will stake the tokens on receipt. - - - all producers this 'from' has voted for will have their votes updated immediately. - - -## eosio.system::onblock account blocktime blocknum - - this special action is triggered when a block is applied by the given producer and cannot be generated from - any other source. It is used to pay producers and calculate missed blocks of other producers. - - - producer pay is deposited into the producer's stake balance and can be withdrawn over time. - - - if blocknum is the start of a new round this may update the active producer config from the producer votes. - -## eosio.system::freeze producer accounts true|false - - requires permission of the @producers account - - if an account is frozen, all authorizations of that account are rejected and the code for that account will not be run - -## eosio.system::paystandby producer - - every block some amount of tokens is paid - - at most once per day a producer may claim a percentage of the standby pay equal to their totalvotes / allvotes diff --git a/contracts/eosio.system/delegate_bandwidth.cpp b/contracts/eosio.system/delegate_bandwidth.cpp deleted file mode 100644 index a5e9ad14efe..00000000000 --- a/contracts/eosio.system/delegate_bandwidth.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include "eosio.system.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#include - - -#include -#include - -namespace eosiosystem { - using eosio::asset; - using eosio::indexed_by; - using eosio::const_mem_fun; - using eosio::bytes; - using eosio::print; - using eosio::permission_level; - using std::map; - using std::pair; - - static constexpr time refund_delay = 3*24*3600; - static constexpr time refund_expiration_time = 3600; - - struct user_resources { - account_name owner; - asset net_weight; - asset cpu_weight; - int64_t ram_bytes = 0; - - uint64_t primary_key()const { return owner; } - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( user_resources, (owner)(net_weight)(cpu_weight)(ram_bytes) ) - }; - - - /** - * Every user 'from' has a scope/table that uses every receipient 'to' as the primary key. - */ - struct delegated_bandwidth { - account_name from; - account_name to; - asset net_weight; - asset cpu_weight; - - uint64_t primary_key()const { return to; } - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( delegated_bandwidth, (from)(to)(net_weight)(cpu_weight) ) - - }; - - struct refund_request { - account_name owner; - time request_time; - eosio::asset net_amount; - eosio::asset cpu_amount; - - uint64_t primary_key()const { return owner; } - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( refund_request, (owner)(request_time)(net_amount)(cpu_amount) ) - }; - - /** - * These tables are designed to be constructed in the scope of the relevant user, this - * facilitates simpler API for per-user queries - */ - typedef eosio::multi_index< N(userres), user_resources> user_resources_table; - typedef eosio::multi_index< N(delband), delegated_bandwidth> del_bandwidth_table; - typedef eosio::multi_index< N(refunds), refund_request> refunds_table; - - - - /** - * This action will buy an exact amount of ram and bill the payer the current market price. - */ - void system_contract::buyrambytes( account_name payer, account_name receiver, uint32_t bytes ) { - auto itr = _rammarket.find(S(4,RAMCORE)); - auto tmp = *itr; - auto eosout = tmp.convert( asset(bytes,S(0,RAM)), CORE_SYMBOL ); - - buyram( payer, receiver, eosout ); - } - - - /** - * When buying ram the payer irreversiblly transfers quant to system contract and only - * the receiver may reclaim the tokens via the sellram action. The receiver pays for the - * storage of all database records associated with this action. - * - * RAM is a scarce resource whose supply is defined by global properties max_ram_size. RAM is - * priced using the bancor algorithm such that price-per-byte with a constant reserve ratio of 100:1. - */ - void system_contract::buyram( account_name payer, account_name receiver, asset quant ) - { - require_auth( payer ); - eosio_assert( quant.amount > 0, "must purchase a positive amount" ); - - auto fee = quant; - fee.amount = ( fee.amount + 199 ) / 200; /// .5% fee (round up) - // fee.amount cannot be 0 since that is only possible if quant.amount is 0 which is not allowed by the assert above. - // If quant.amount == 1, then fee.amount == 1, - // otherwise if quant.amount > 1, then 0 < fee.amount < quant.amount. - auto quant_after_fee = quant; - quant_after_fee.amount -= fee.amount; - // quant_after_fee.amount should be > 0 if quant.amount > 1. - // If quant.amount == 1, then quant_after_fee.amount == 0 and the next inline transfer will fail causing the buyram action to fail. - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {payer,N(active)}, - { payer, N(eosio.ram), quant_after_fee, std::string("buy ram") } ); - - if( fee.amount > 0 ) { - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {payer,N(active)}, - { payer, N(eosio.ramfee), fee, std::string("ram fee") } ); - } - - int64_t bytes_out; - - const auto& market = _rammarket.get(S(4,RAMCORE), "ram market does not exist"); - _rammarket.modify( market, 0, [&]( auto& es ) { - bytes_out = es.convert( quant_after_fee, S(0,RAM) ).amount; - }); - - eosio_assert( bytes_out > 0, "must reserve a positive amount" ); - - _gstate.total_ram_bytes_reserved += uint64_t(bytes_out); - _gstate.total_ram_stake += quant_after_fee.amount; - - user_resources_table userres( _self, receiver ); - auto res_itr = userres.find( receiver ); - if( res_itr == userres.end() ) { - res_itr = userres.emplace( receiver, [&]( auto& res ) { - res.owner = receiver; - res.ram_bytes = bytes_out; - }); - } else { - userres.modify( res_itr, receiver, [&]( auto& res ) { - res.ram_bytes += bytes_out; - }); - } - set_resource_limits( res_itr->owner, res_itr->ram_bytes, res_itr->net_weight.amount, res_itr->cpu_weight.amount ); - } - - - /** - * The system contract now buys and sells RAM allocations at prevailing market prices. - * This may result in traders buying RAM today in anticipation of potential shortages - * tomorrow. Overall this will result in the market balancing the supply and demand - * for RAM over time. - */ - void system_contract::sellram( account_name account, int64_t bytes ) { - require_auth( account ); - eosio_assert( bytes > 0, "cannot sell negative byte" ); - - user_resources_table userres( _self, account ); - auto res_itr = userres.find( account ); - eosio_assert( res_itr != userres.end(), "no resource row" ); - eosio_assert( res_itr->ram_bytes >= bytes, "insufficient quota" ); - - asset tokens_out; - auto itr = _rammarket.find(S(4,RAMCORE)); - _rammarket.modify( itr, 0, [&]( auto& es ) { - /// the cast to int64_t of bytes is safe because we certify bytes is <= quota which is limited by prior purchases - tokens_out = es.convert( asset(bytes,S(0,RAM)), CORE_SYMBOL); - }); - - eosio_assert( tokens_out.amount > 1, "token amount received from selling ram is too low" ); - - _gstate.total_ram_bytes_reserved -= static_cast(bytes); // bytes > 0 is asserted above - _gstate.total_ram_stake -= tokens_out.amount; - - //// this shouldn't happen, but just in case it does we should prevent it - eosio_assert( _gstate.total_ram_stake >= 0, "error, attempt to unstake more tokens than previously staked" ); - - userres.modify( res_itr, account, [&]( auto& res ) { - res.ram_bytes -= bytes; - }); - set_resource_limits( res_itr->owner, res_itr->ram_bytes, res_itr->net_weight.amount, res_itr->cpu_weight.amount ); - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio.ram),N(active)}, - { N(eosio.ram), account, asset(tokens_out), std::string("sell ram") } ); - - auto fee = ( tokens_out.amount + 199 ) / 200; /// .5% fee (round up) - // since tokens_out.amount was asserted to be at least 2 earlier, fee.amount < tokens_out.amount - - if( fee > 0 ) { - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {account,N(active)}, - { account, N(eosio.ramfee), asset(fee), std::string("sell ram fee") } ); - } - } - - void validate_b1_vesting( int64_t stake ) { - const int64_t base_time = 1527811200; /// 2018-06-01 - const int64_t max_claimable = 100'000'000'0000ll; - const int64_t claimable = int64_t(max_claimable * double(now()-base_time) / (10*seconds_per_year) ); - - eosio_assert( max_claimable - claimable <= stake, "bos can only claim their tokens over 10 years" ); - } - - void system_contract::changebw( account_name from, account_name receiver, - const asset stake_net_delta, const asset stake_cpu_delta, bool transfer ) - { - require_auth( from ); - eosio_assert( stake_net_delta != asset(0) || stake_cpu_delta != asset(0), "should stake non-zero amount" ); - eosio_assert( std::abs( (stake_net_delta + stake_cpu_delta).amount ) - >= std::max( std::abs( stake_net_delta.amount ), std::abs( stake_cpu_delta.amount ) ), - "net and cpu deltas cannot be opposite signs" ); - - account_name source_stake_from = from; - if ( transfer ) { - from = receiver; - } - - // update stake delegated from "from" to "receiver" - { - del_bandwidth_table del_tbl( _self, from); - auto itr = del_tbl.find( receiver ); - if( itr == del_tbl.end() ) { - itr = del_tbl.emplace( from, [&]( auto& dbo ){ - dbo.from = from; - dbo.to = receiver; - dbo.net_weight = stake_net_delta; - dbo.cpu_weight = stake_cpu_delta; - }); - } - else { - del_tbl.modify( itr, 0, [&]( auto& dbo ){ - dbo.net_weight += stake_net_delta; - dbo.cpu_weight += stake_cpu_delta; - }); - } - eosio_assert( asset(0) <= itr->net_weight, "insufficient staked net bandwidth" ); - eosio_assert( asset(0) <= itr->cpu_weight, "insufficient staked cpu bandwidth" ); - if ( itr->net_weight == asset(0) && itr->cpu_weight == asset(0) ) { - del_tbl.erase( itr ); - } - } // itr can be invalid, should go out of scope - - // update totals of "receiver" - { - user_resources_table totals_tbl( _self, receiver ); - auto tot_itr = totals_tbl.find( receiver ); - if( tot_itr == totals_tbl.end() ) { - tot_itr = totals_tbl.emplace( from, [&]( auto& tot ) { - tot.owner = receiver; - tot.net_weight = stake_net_delta; - tot.cpu_weight = stake_cpu_delta; - }); - } else { - totals_tbl.modify( tot_itr, from == receiver ? from : 0, [&]( auto& tot ) { - tot.net_weight += stake_net_delta; - tot.cpu_weight += stake_cpu_delta; - }); - } - eosio_assert( asset(0) <= tot_itr->net_weight, "insufficient staked total net bandwidth" ); - eosio_assert( asset(0) <= tot_itr->cpu_weight, "insufficient staked total cpu bandwidth" ); - - set_resource_limits( receiver, tot_itr->ram_bytes, tot_itr->net_weight.amount, tot_itr->cpu_weight.amount ); - - if ( tot_itr->net_weight == asset(0) && tot_itr->cpu_weight == asset(0) && tot_itr->ram_bytes == 0 ) { - totals_tbl.erase( tot_itr ); - } - } // tot_itr can be invalid, should go out of scope - - // create refund or update from existing refund - if ( N(eosio.stake) != source_stake_from ) { //for eosio both transfer and refund make no sense - refunds_table refunds_tbl( _self, from ); - auto req = refunds_tbl.find( from ); - - //create/update/delete refund - auto net_balance = stake_net_delta; - auto cpu_balance = stake_cpu_delta; - bool need_deferred_trx = false; - - - // net and cpu are same sign by assertions in delegatebw and undelegatebw - // redundant assertion also at start of changebw to protect against misuse of changebw - bool is_undelegating = (net_balance.amount + cpu_balance.amount ) < 0; - bool is_delegating_to_self = (!transfer && from == receiver); - - if( is_delegating_to_self || is_undelegating ) { - if ( req != refunds_tbl.end() ) { //need to update refund - refunds_tbl.modify( req, 0, [&]( refund_request& r ) { - if ( net_balance < asset(0) || cpu_balance < asset(0) ) { - r.request_time = now(); - } - r.net_amount -= net_balance; - if ( r.net_amount < asset(0) ) { - net_balance = -r.net_amount; - r.net_amount = asset(0); - } else { - net_balance = asset(0); - } - r.cpu_amount -= cpu_balance; - if ( r.cpu_amount < asset(0) ){ - cpu_balance = -r.cpu_amount; - r.cpu_amount = asset(0); - } else { - cpu_balance = asset(0); - } - }); - - eosio_assert( asset(0) <= req->net_amount, "negative net refund amount" ); //should never happen - eosio_assert( asset(0) <= req->cpu_amount, "negative cpu refund amount" ); //should never happen - - if ( req->net_amount == asset(0) && req->cpu_amount == asset(0) ) { - refunds_tbl.erase( req ); - need_deferred_trx = false; - } else { - need_deferred_trx = true; - } - - } else if ( net_balance < asset(0) || cpu_balance < asset(0) ) { //need to create refund - refunds_tbl.emplace( from, [&]( refund_request& r ) { - r.owner = from; - if ( net_balance < asset(0) ) { - r.net_amount = -net_balance; - net_balance = asset(0); - } // else r.net_amount = 0 by default constructor - if ( cpu_balance < asset(0) ) { - r.cpu_amount = -cpu_balance; - cpu_balance = asset(0); - } // else r.cpu_amount = 0 by default constructor - r.request_time = now(); - }); - need_deferred_trx = true; - } // else stake increase requested with no existing row in refunds_tbl -> nothing to do with refunds_tbl - } /// end if is_delegating_to_self || is_undelegating - - if ( need_deferred_trx ) { - eosio::transaction out; - out.actions.emplace_back( permission_level{ from, N(active) }, _self, N(refund), from ); - out.delay_sec = refund_delay; - cancel_deferred( from ); // TODO: Remove this line when replacing deferred trxs is fixed - out.send( from, from, true ); - } else { - cancel_deferred( from ); - } - - auto transfer_amount = net_balance + cpu_balance; - if ( asset(0) < transfer_amount ) { - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {source_stake_from, N(active)}, - { source_stake_from, N(eosio.stake), asset(transfer_amount), std::string("stake bandwidth") } ); - } - } - - // update voting power - { - asset total_update = stake_net_delta + stake_cpu_delta; - auto from_voter = _voters.find(from); - if( from_voter == _voters.end() ) { - from_voter = _voters.emplace( from, [&]( auto& v ) { - v.owner = from; - v.staked = total_update.amount; - }); - } else { - _voters.modify( from_voter, 0, [&]( auto& v ) { - v.staked += total_update.amount; - }); - } - eosio_assert( 0 <= from_voter->staked, "stake for voting cannot be negative"); - if( from == N(b1) ) { - validate_b1_vesting( from_voter->staked ); - } - - if( from_voter->producers.size() || from_voter->proxy ) { - update_votes( from, from_voter->proxy, from_voter->producers, false ); - } - } - } - - void system_contract::delegatebw( account_name from, account_name receiver, - asset stake_net_quantity, - asset stake_cpu_quantity, bool transfer ) - { - eosio_assert( stake_cpu_quantity >= asset(0), "must stake a positive amount" ); - eosio_assert( stake_net_quantity >= asset(0), "must stake a positive amount" ); - eosio_assert( stake_net_quantity + stake_cpu_quantity > asset(0), "must stake a positive amount" ); - eosio_assert( !transfer || from != receiver, "cannot use transfer flag if delegating to self" ); - - changebw( from, receiver, stake_net_quantity, stake_cpu_quantity, transfer); - } // delegatebw - - void system_contract::undelegatebw( account_name from, account_name receiver, - asset unstake_net_quantity, asset unstake_cpu_quantity ) - { - eosio_assert( asset() <= unstake_cpu_quantity, "must unstake a positive amount" ); - eosio_assert( asset() <= unstake_net_quantity, "must unstake a positive amount" ); - eosio_assert( asset() < unstake_cpu_quantity + unstake_net_quantity, "must unstake a positive amount" ); - eosio_assert( _gstate.total_activated_stake >= min_activated_stake, - "cannot undelegate bandwidth until the chain is activated (at least 15% of all tokens participate in voting)" ); - - changebw( from, receiver, -unstake_net_quantity, -unstake_cpu_quantity, false); - } // undelegatebw - - - void system_contract::refund( const account_name owner ) { - require_auth( owner ); - - refunds_table refunds_tbl( _self, owner ); - auto req = refunds_tbl.find( owner ); - eosio_assert( req != refunds_tbl.end(), "refund request not found" ); - eosio_assert( req->request_time + refund_delay <= now(), "refund is not available yet" ); - // Until now() becomes NOW, the fact that now() is the timestamp of the previous block could in theory - // allow people to get their tokens earlier than the 3 day delay if the unstake happened immediately after many - // consecutive missed blocks. - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio.stake),N(active)}, - { N(eosio.stake), req->owner, req->net_amount + req->cpu_amount, std::string("unstake") } ); - - refunds_tbl.erase( req ); - } - - -} //namespace eosiosystem diff --git a/contracts/eosio.system/eosio.system.abi b/contracts/eosio.system/eosio.system.abi deleted file mode 100644 index f2f9f394cf9..00000000000 --- a/contracts/eosio.system/eosio.system.abi +++ /dev/null @@ -1,578 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - },{ - "new_type_name": "permission_name", - "type": "name" - },{ - "new_type_name": "action_name", - "type": "name" - },{ - "new_type_name": "transaction_id_type", - "type": "checksum256" - },{ - "new_type_name": "weight_type", - "type": "uint16" - }], - "____comment": "eosio.bios structs: set_account_limits, setpriv, set_global_limits, producer_key, set_producers, require_auth are provided so abi available for deserialization in future.", - "structs": [{ - "name": "permission_level", - "base": "", - "fields": [ - {"name":"actor", "type":"account_name"}, - {"name":"permission", "type":"permission_name"} - ] - },{ - "name": "key_weight", - "base": "", - "fields": [ - {"name":"key", "type":"public_key"}, - {"name":"weight", "type":"weight_type"} - ] - },{ - "name": "bidname", - "base": "", - "fields": [ - {"name":"bidder", "type":"account_name"}, - {"name":"newname", "type":"account_name"}, - {"name":"bid", "type":"asset"} - ] - },{ - "name": "permission_level_weight", - "base": "", - "fields": [ - {"name":"permission", "type":"permission_level"}, - {"name":"weight", "type":"weight_type"} - ] - },{ - "name": "wait_weight", - "base": "", - "fields": [ - {"name":"wait_sec", "type":"uint32"}, - {"name":"weight", "type":"weight_type"} - ] - },{ - "name": "authority", - "base": "", - "fields": [ - {"name":"threshold", "type":"uint32"}, - {"name":"keys", "type":"key_weight[]"}, - {"name":"accounts", "type":"permission_level_weight[]"}, - {"name":"waits", "type":"wait_weight[]"} - ] - },{ - "name": "newaccount", - "base": "", - "fields": [ - {"name":"creator", "type":"account_name"}, - {"name":"name", "type":"account_name"}, - {"name":"owner", "type":"authority"}, - {"name":"active", "type":"authority"} - ] - },{ - "name": "setcode", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"vmtype", "type":"uint8"}, - {"name":"vmversion", "type":"uint8"}, - {"name":"code", "type":"bytes"} - ] - },{ - "name": "setabi", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"abi", "type":"bytes"} - ] - },{ - "name": "updateauth", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"permission", "type":"permission_name"}, - {"name":"parent", "type":"permission_name"}, - {"name":"auth", "type":"authority"} - ] - },{ - "name": "deleteauth", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"permission", "type":"permission_name"} - ] - },{ - "name": "linkauth", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"code", "type":"account_name"}, - {"name":"type", "type":"action_name"}, - {"name":"requirement", "type":"permission_name"} - ] - },{ - "name": "unlinkauth", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"code", "type":"account_name"}, - {"name":"type", "type":"action_name"} - ] - },{ - "name": "canceldelay", - "base": "", - "fields": [ - {"name":"canceling_auth", "type":"permission_level"}, - {"name":"trx_id", "type":"transaction_id_type"} - ] - },{ - "name": "onerror", - "base": "", - "fields": [ - {"name":"sender_id", "type":"uint128"}, - {"name":"sent_trx", "type":"bytes"} - ] - },{ - "name": "buyrambytes", - "base": "", - "fields": [ - {"name":"payer", "type":"account_name"}, - {"name":"receiver", "type":"account_name"}, - {"name":"bytes", "type":"uint32"} - ] - },{ - "name": "sellram", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"bytes", "type":"uint64"} - ] - },{ - "name": "buyram", - "base": "", - "fields": [ - {"name":"payer", "type":"account_name"}, - {"name":"receiver", "type":"account_name"}, - {"name":"quant", "type":"asset"} - ] - },{ - "name": "delegatebw", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"}, - {"name":"receiver", "type":"account_name"}, - {"name":"stake_net_quantity", "type":"asset"}, - {"name":"stake_cpu_quantity", "type":"asset"}, - {"name":"transfer", "type":"bool"} - ] - },{ - "name": "undelegatebw", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"}, - {"name":"receiver", "type":"account_name"}, - {"name":"unstake_net_quantity", "type":"asset"}, - {"name":"unstake_cpu_quantity", "type":"asset"} - ] - },{ - "name": "refund", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"} - ] - },{ - "name": "delegated_bandwidth", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"}, - {"name":"to", "type":"account_name"}, - {"name":"net_weight", "type":"asset"}, - {"name":"cpu_weight", "type":"asset"} - ] - },{ - "name": "user_resources", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"}, - {"name":"net_weight", "type":"asset"}, - {"name":"cpu_weight", "type":"asset"}, - {"name":"ram_bytes", "type":"uint64"} - ] - },{ - "name": "total_resources", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"}, - {"name":"net_weight", "type":"asset"}, - {"name":"cpu_weight", "type":"asset"}, - {"name":"ram_bytes", "type":"uint64"} - ] - },{ - "name": "refund_request", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"}, - {"name":"request_time", "type":"time_point_sec"}, - {"name":"net_amount", "type":"asset"}, - {"name":"cpu_amount", "type":"asset"} - ] - },{ - "name": "blockchain_parameters", - "base": "", - "fields": [ - - {"name":"max_block_net_usage", "type":"uint64"}, - {"name":"target_block_net_usage_pct", "type":"uint32"}, - {"name":"max_transaction_net_usage", "type":"uint32"}, - {"name":"base_per_transaction_net_usage", "type":"uint32"}, - {"name":"net_usage_leeway", "type":"uint32"}, - {"name":"context_free_discount_net_usage_num", "type":"uint32"}, - {"name":"context_free_discount_net_usage_den", "type":"uint32"}, - {"name":"max_block_cpu_usage", "type":"uint32"}, - {"name":"target_block_cpu_usage_pct", "type":"uint32"}, - {"name":"max_transaction_cpu_usage", "type":"uint32"}, - {"name":"min_transaction_cpu_usage", "type":"uint32"}, - {"name":"max_transaction_lifetime", "type":"uint32"}, - {"name":"deferred_trx_expiration_window", "type":"uint32"}, - {"name":"max_transaction_delay", "type":"uint32"}, - {"name":"max_inline_action_size", "type":"uint32"}, - {"name":"max_inline_action_depth", "type":"uint16"}, - {"name":"max_authority_depth", "type":"uint16"} - - ] - },{ - "name": "eosio_global_state", - "base": "blockchain_parameters", - "fields": [ - {"name":"max_ram_size", "type":"uint64"}, - {"name":"total_ram_bytes_reserved", "type":"uint64"}, - {"name":"total_ram_stake", "type":"int64"}, - {"name":"last_producer_schedule_update", "type":"block_timestamp_type"}, - {"name":"last_pervote_bucket_fill", "type":"uint64"}, - {"name":"pervote_bucket", "type":"int64"}, - {"name":"perblock_bucket", "type":"int64"}, - {"name":"total_unpaid_blocks", "type":"uint32"}, - {"name":"total_activated_stake", "type":"int64"}, - {"name":"thresh_activated_stake_time", "type":"uint64"}, - {"name":"last_producer_schedule_size", "type":"uint16"}, - {"name":"total_producer_vote_weight", "type":"float64"}, - {"name":"last_name_close", "type":"block_timestamp_type"} - ] - },{ - "name": "producer_info", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"}, - {"name":"total_votes", "type":"float64"}, - {"name":"producer_key", "type":"public_key"}, - {"name":"is_active", "type":"bool"}, - {"name":"url", "type":"string"}, - {"name":"unpaid_blocks", "type":"uint32"}, - {"name":"last_claim_time", "type":"uint64"}, - {"name":"location", "type":"uint16"} - ] - },{ - "name": "regproducer", - "base": "", - "fields": [ - {"name":"producer", "type":"account_name"}, - {"name":"producer_key", "type":"public_key"}, - {"name":"url", "type":"string"}, - {"name":"location", "type":"uint16"} - ] - },{ - "name": "unregprod", - "base": "", - "fields": [ - {"name":"producer", "type":"account_name"} - ] - },{ - "name": "setram", - "base": "", - "fields": [ - {"name":"max_ram_size", "type":"uint64"} - ] - },{ - "name": "regproxy", - "base": "", - "fields": [ - {"name":"proxy", "type":"account_name"}, - {"name":"isproxy", "type":"bool"} - ] - },{ - "name": "voteproducer", - "base": "", - "fields": [ - {"name":"voter", "type":"account_name"}, - {"name":"proxy", "type":"account_name"}, - {"name":"producers", "type":"account_name[]"} - ] - },{ - "name": "voter_info", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"}, - {"name":"proxy", "type":"account_name"}, - {"name":"producers", "type":"account_name[]"}, - {"name":"staked", "type":"int64"}, - {"name":"last_vote_weight", "type":"float64"}, - {"name":"proxied_vote_weight", "type":"float64"}, - {"name":"is_proxy", "type":"bool"} - ] - },{ - "name": "claimrewards", - "base": "", - "fields": [ - {"name":"owner", "type":"account_name"} - ] - },{ - "name": "setpriv", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"is_priv", "type":"int8"} - ] - },{ - "name": "rmvproducer", - "base": "", - "fields": [ - {"name":"producer", "type":"account_name"} - ] - },{ - "name": "set_account_limits", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"}, - {"name":"ram_bytes", "type":"int64"}, - {"name":"net_weight", "type":"int64"}, - {"name":"cpu_weight", "type":"int64"} - ] - },{ - "name": "set_global_limits", - "base": "", - "fields": [ - {"name":"cpu_usec_per_period", "type":"int64"} - ] - },{ - "name": "producer_key", - "base": "", - "fields": [ - {"name":"producer_name", "type":"account_name"}, - {"name":"block_signing_key", "type":"public_key"} - ] - },{ - "name": "set_producers", - "base": "", - "fields": [ - {"name":"schedule", "type":"producer_key[]"} - ] - },{ - "name": "require_auth", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"} - ] - },{ - "name": "setparams", - "base": "", - "fields": [ - {"name":"params", "type":"blockchain_parameters"} - ] - },{ - "name": "connector", - "base": "", - "fields": [ - {"name":"balance", "type":"asset"}, - {"name":"weight", "type":"float64"} - ] - },{ - "name": "exchange_state", - "base": "", - "fields": [ - {"name":"supply", "type":"asset"}, - {"name":"base", "type":"connector"}, - {"name":"quote", "type":"connector"} - ] - }, { - "name": "namebid_info", - "base": "", - "fields": [ - {"name":"newname", "type":"account_name"}, - {"name":"high_bidder", "type":"account_name"}, - {"name":"high_bid", "type":"int64"}, - {"name":"last_bid_time", "type":"uint64"} - ] - } - ], - "actions": [{ - "name": "newaccount", - "type": "newaccount", - "ricardian_contract": "" - },{ - "name": "setcode", - "type": "setcode", - "ricardian_contract": "" - },{ - "name": "setabi", - "type": "setabi", - "ricardian_contract": "" - },{ - "name": "updateauth", - "type": "updateauth", - "ricardian_contract": "" - },{ - "name": "deleteauth", - "type": "deleteauth", - "ricardian_contract": "" - },{ - "name": "linkauth", - "type": "linkauth", - "ricardian_contract": "" - },{ - "name": "unlinkauth", - "type": "unlinkauth", - "ricardian_contract": "" - },{ - "name": "canceldelay", - "type": "canceldelay", - "ricardian_contract": "" - },{ - "name": "onerror", - "type": "onerror", - "ricardian_contract": "" - },{ - "name": "buyrambytes", - "type": "buyrambytes", - "ricardian_contract": "" - },{ - "name": "buyram", - "type": "buyram", - "ricardian_contract": "" - },{ - "name": "sellram", - "type": "sellram", - "ricardian_contract": "" - },{ - "name": "delegatebw", - "type": "delegatebw", - "ricardian_contract": "" - },{ - "name": "undelegatebw", - "type": "undelegatebw", - "ricardian_contract": "" - },{ - "name": "refund", - "type": "refund", - "ricardian_contract": "" - },{ - "name": "regproducer", - "type": "regproducer", - "ricardian_contract": "" - },{ - "name": "setram", - "type": "setram", - "ricardian_contract": "" - },{ - "name": "bidname", - "type": "bidname", - "ricardian_contract": "" - },{ - "name": "unregprod", - "type": "unregprod", - "ricardian_contract": "" - },{ - "name": "regproxy", - "type": "regproxy", - "ricardian_contract": "" - },{ - "name": "voteproducer", - "type": "voteproducer", - "ricardian_contract": "" - },{ - "name": "claimrewards", - "type": "claimrewards", - "ricardian_contract": "" - },{ - "name": "setpriv", - "type": "setpriv", - "ricardian_contract": "" - },{ - "name": "rmvproducer", - "type": "rmvproducer", - "ricardian_contract": "" - },{ - "name": "setalimits", - "type": "set_account_limits", - "ricardian_contract": "" - },{ - "name": "setglimits", - "type": "set_global_limits", - "ricardian_contract": "" - },{ - "name": "setprods", - "type": "set_producers", - "ricardian_contract": "" - },{ - "name": "reqauth", - "type": "require_auth", - "ricardian_contract": "" - },{ - "name": "setparams", - "type": "setparams", - "ricardian_contract": "" - }], - "tables": [{ - "name": "producers", - "type": "producer_info", - "index_type": "i64", - "key_names" : ["owner"], - "key_types" : ["uint64"] - },{ - "name": "global", - "type": "eosio_global_state", - "index_type": "i64", - "key_names" : [], - "key_types" : [] - },{ - "name": "voters", - "type": "voter_info", - "index_type": "i64", - "key_names" : ["owner"], - "key_types" : ["account_name"] - },{ - "name": "userres", - "type": "user_resources", - "index_type": "i64", - "key_names" : ["owner"], - "key_types" : ["uint64"] - },{ - "name": "delband", - "type": "delegated_bandwidth", - "index_type": "i64", - "key_names" : ["to"], - "key_types" : ["uint64"] - },{ - "name": "rammarket", - "type": "exchange_state", - "index_type": "i64", - "key_names" : ["supply"], - "key_types" : ["uint64"] - },{ - "name": "refunds", - "type": "refund_request", - "index_type": "i64", - "key_names" : ["owner"], - "key_types" : ["uint64"] - },{ - "name": "namebids", - "type": "namebid_info", - "index_type": "i64", - "key_names" : ["newname"], - "key_types" : ["account_name"] - } - ], - "ricardian_clauses": [], - "abi_extensions": [] -} \ No newline at end of file diff --git a/contracts/eosio.system/eosio.system.cpp b/contracts/eosio.system/eosio.system.cpp deleted file mode 100644 index daf40efbb84..00000000000 --- a/contracts/eosio.system/eosio.system.cpp +++ /dev/null @@ -1,198 +0,0 @@ -#include "eosio.system.hpp" -#include - -#include "producer_pay.cpp" -#include "delegate_bandwidth.cpp" -#include "voting.cpp" -#include "exchange_state.cpp" - - -namespace eosiosystem { - - system_contract::system_contract( account_name s ) - :native(s), - _voters(_self,_self), - _producers(_self,_self), - _global(_self,_self), - _rammarket(_self,_self) - { - //print( "construct system\n" ); - _gstate = _global.exists() ? _global.get() : get_default_parameters(); - - auto itr = _rammarket.find(S(4,RAMCORE)); - - if( itr == _rammarket.end() ) { - auto system_token_supply = eosio::token(N(eosio.token)).get_supply(eosio::symbol_type(system_token_symbol).name()).amount; - if( system_token_supply > 0 ) { - itr = _rammarket.emplace( _self, [&]( auto& m ) { - m.supply.amount = 100000000000000ll; - m.supply.symbol = S(4,RAMCORE); - m.base.balance.amount = int64_t(_gstate.free_ram()); - m.base.balance.symbol = S(0,RAM); - m.quote.balance.amount = system_token_supply / 1000; - m.quote.balance.symbol = CORE_SYMBOL; - }); - } - } else { - //print( "ram market already created" ); - } - } - - eosio_global_state system_contract::get_default_parameters() { - eosio_global_state dp; - get_blockchain_parameters(dp); - return dp; - } - - - system_contract::~system_contract() { - //print( "destruct system\n" ); - _global.set( _gstate, _self ); - //eosio_exit(0); - } - - void system_contract::setram( uint64_t max_ram_size ) { - require_auth( _self ); - - eosio_assert( _gstate.max_ram_size < max_ram_size, "ram may only be increased" ); /// decreasing ram might result market maker issues - eosio_assert( max_ram_size < 1024ll*1024*1024*1024*1024, "ram size is unrealistic" ); - eosio_assert( max_ram_size > _gstate.total_ram_bytes_reserved, "attempt to set max below reserved" ); - - auto delta = int64_t(max_ram_size) - int64_t(_gstate.max_ram_size); - auto itr = _rammarket.find(S(4,RAMCORE)); - - /** - * Increase or decrease the amount of ram for sale based upon the change in max - * ram size. - */ - _rammarket.modify( itr, 0, [&]( auto& m ) { - m.base.balance.amount += delta; - }); - - _gstate.max_ram_size = max_ram_size; - _global.set( _gstate, _self ); - } - - void system_contract::setparams( const eosio::blockchain_parameters& params ) { - require_auth( N(eosio) ); - (eosio::blockchain_parameters&)(_gstate) = params; - eosio_assert( 3 <= _gstate.max_authority_depth, "max_authority_depth should be at least 3" ); - set_blockchain_parameters( params ); - } - - void system_contract::setpriv( account_name account, uint8_t ispriv ) { - require_auth( _self ); - set_privileged( account, ispriv ); - } - - void system_contract::rmvproducer( account_name producer ) { - require_auth( _self ); - auto prod = _producers.find( producer ); - eosio_assert( prod != _producers.end(), "producer not found" ); - _producers.modify( prod, 0, [&](auto& p) { - p.deactivate(); - }); - } - - void system_contract::bidname( account_name bidder, account_name newname, asset bid ) { - require_auth( bidder ); - eosio_assert( eosio::name_suffix(newname) == newname, "you can only bid on top-level suffix" ); - eosio_assert( newname != 0, "the empty name is not a valid account name to bid on" ); - eosio_assert( (newname & 0xFull) == 0, "13 character names are not valid account names to bid on" ); - eosio_assert( (newname & 0x1F0ull) == 0, "accounts with 12 character names and no dots can be created without bidding required" ); - eosio_assert( !is_account( newname ), "account already exists" ); - eosio_assert( bid.symbol == asset().symbol, "asset must be system token" ); - eosio_assert( bid.amount > 0, "insufficient bid" ); - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {bidder,N(active)}, - { bidder, N(eosio.names), bid, std::string("bid name ")+(name{newname}).to_string() } ); - - name_bid_table bids(_self,_self); - print( name{bidder}, " bid ", bid, " on ", name{newname}, "\n" ); - auto current = bids.find( newname ); - if( current == bids.end() ) { - bids.emplace( bidder, [&]( auto& b ) { - b.newname = newname; - b.high_bidder = bidder; - b.high_bid = bid.amount; - b.last_bid_time = current_time(); - }); - } else { - eosio_assert( current->high_bid > 0, "this auction has already closed" ); - eosio_assert( bid.amount - current->high_bid > (current->high_bid / 10), "must increase bid by 10%" ); - eosio_assert( current->high_bidder != bidder, "account is already highest bidder" ); - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio.names),N(active)}, - { N(eosio.names), current->high_bidder, asset(current->high_bid), - std::string("refund bid on name ")+(name{newname}).to_string() } ); - - bids.modify( current, bidder, [&]( auto& b ) { - b.high_bidder = bidder; - b.high_bid = bid.amount; - b.last_bid_time = current_time(); - }); - } - } - - /** - * Called after a new account is created. This code enforces resource-limits rules - * for new accounts as well as new account naming conventions. - * - * Account names containing '.' symbols must have a suffix equal to the name of the creator. - * This allows users who buy a premium name (shorter than 12 characters with no dots) to be the only ones - * who can create accounts with the creator's name as a suffix. - * - */ - void native::newaccount( account_name creator, - account_name newact - /* no need to parse authorities - const authority& owner, - const authority& active*/ ) { - - if( creator != _self ) { - auto tmp = newact >> 4; - bool has_dot = false; - - for( uint32_t i = 0; i < 12; ++i ) { - has_dot |= !(tmp & 0x1f); - tmp >>= 5; - } - if( has_dot ) { // or is less than 12 characters - auto suffix = eosio::name_suffix(newact); - if( suffix == newact ) { - name_bid_table bids(_self,_self); - auto current = bids.find( newact ); - eosio_assert( current != bids.end(), "no active bid for name" ); - eosio_assert( current->high_bidder == creator, "only highest bidder can claim" ); - eosio_assert( current->high_bid < 0, "auction for name is not closed yet" ); - bids.erase( current ); - } else { - eosio_assert( creator == suffix, "only suffix may create this account" ); - } - } - } - - user_resources_table userres( _self, newact); - - userres.emplace( newact, [&]( auto& res ) { - res.owner = newact; - }); - - set_resource_limits( newact, 0, 0, 0 ); - } - -} /// eosio.system - - -EOSIO_ABI( eosiosystem::system_contract, - // native.hpp (newaccount definition is actually in eosio.system.cpp) - (newaccount)(updateauth)(deleteauth)(linkauth)(unlinkauth)(canceldelay)(onerror) - // eosio.system.cpp - (setram)(setparams)(setpriv)(rmvproducer)(bidname) - // delegate_bandwidth.cpp - (buyrambytes)(buyram)(sellram)(delegatebw)(undelegatebw)(refund) - // voting.cpp - (regproducer)(unregprod)(voteproducer)(regproxy) - // producer_pay.cpp - (onblock)(claimrewards) -) diff --git a/contracts/eosio.system/eosio.system.hpp b/contracts/eosio.system/eosio.system.hpp deleted file mode 100644 index 2b6d16d3d59..00000000000 --- a/contracts/eosio.system/eosio.system.hpp +++ /dev/null @@ -1,235 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include -#include -#include -#include -#include - -#include - -namespace eosiosystem { - - using eosio::asset; - using eosio::indexed_by; - using eosio::const_mem_fun; - using eosio::block_timestamp; - - struct name_bid { - account_name newname; - account_name high_bidder; - int64_t high_bid = 0; ///< negative high_bid == closed auction waiting to be claimed - uint64_t last_bid_time = 0; - - auto primary_key()const { return newname; } - uint64_t by_high_bid()const { return static_cast(-high_bid); } - }; - - typedef eosio::multi_index< N(namebids), name_bid, - indexed_by > - > name_bid_table; - - - struct eosio_global_state : eosio::blockchain_parameters { - uint64_t free_ram()const { return max_ram_size - total_ram_bytes_reserved; } - - uint64_t max_ram_size = 64ll*1024 * 1024 * 1024; - uint64_t total_ram_bytes_reserved = 0; - int64_t total_ram_stake = 0; - - block_timestamp last_producer_schedule_update; - uint64_t last_pervote_bucket_fill = 0; - int64_t pervote_bucket = 0; - int64_t perblock_bucket = 0; - uint32_t total_unpaid_blocks = 0; /// all blocks which have been produced but not paid - int64_t total_activated_stake = 0; - uint64_t thresh_activated_stake_time = 0; - uint16_t last_producer_schedule_size = 0; - double total_producer_vote_weight = 0; /// the sum of all producer votes - block_timestamp last_name_close; - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE_DERIVED( eosio_global_state, eosio::blockchain_parameters, - (max_ram_size)(total_ram_bytes_reserved)(total_ram_stake) - (last_producer_schedule_update)(last_pervote_bucket_fill) - (pervote_bucket)(perblock_bucket)(total_unpaid_blocks)(total_activated_stake)(thresh_activated_stake_time) - (last_producer_schedule_size)(total_producer_vote_weight)(last_name_close) ) - }; - - struct producer_info { - account_name owner; - double total_votes = 0; - eosio::public_key producer_key; /// a packed public key object - bool is_active = true; - std::string url; - uint32_t unpaid_blocks = 0; - uint64_t last_claim_time = 0; - uint16_t location = 0; - - uint64_t primary_key()const { return owner; } - double by_votes()const { return is_active ? -total_votes : total_votes; } - bool active()const { return is_active; } - void deactivate() { producer_key = public_key(); is_active = false; } - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( producer_info, (owner)(total_votes)(producer_key)(is_active)(url) - (unpaid_blocks)(last_claim_time)(location) ) - }; - - struct voter_info { - account_name owner = 0; /// the voter - account_name proxy = 0; /// the proxy set by the voter, if any - std::vector producers; /// the producers approved by this voter if no proxy set - int64_t staked = 0; - - /** - * Every time a vote is cast we must first "undo" the last vote weight, before casting the - * new vote weight. Vote weight is calculated as: - * - * stated.amount * 2 ^ ( weeks_since_launch/weeks_per_year) - */ - double last_vote_weight = 0; /// the vote weight cast the last time the vote was updated - - /** - * Total vote weight delegated to this voter. - */ - double proxied_vote_weight= 0; /// the total vote weight delegated to this voter as a proxy - bool is_proxy = 0; /// whether the voter is a proxy for others - - - uint32_t reserved1 = 0; - time reserved2 = 0; - eosio::asset reserved3; - - uint64_t primary_key()const { return owner; } - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( voter_info, (owner)(proxy)(producers)(staked)(last_vote_weight)(proxied_vote_weight)(is_proxy)(reserved1)(reserved2)(reserved3) ) - }; - - typedef eosio::multi_index< N(voters), voter_info> voters_table; - - - typedef eosio::multi_index< N(producers), producer_info, - indexed_by > - > producers_table; - - typedef eosio::singleton global_state_singleton; - - // static constexpr uint32_t max_inflation_rate = 5; // 5% annual inflation - static constexpr uint32_t seconds_per_day = 24 * 3600; - static constexpr uint64_t system_token_symbol = CORE_SYMBOL; - - class system_contract : public native { - private: - voters_table _voters; - producers_table _producers; - global_state_singleton _global; - - eosio_global_state _gstate; - rammarket _rammarket; - - public: - system_contract( account_name s ); - ~system_contract(); - - // Actions: - void onblock( block_timestamp timestamp, account_name producer ); - // const block_header& header ); /// only parse first 3 fields of block header - - // functions defined in delegate_bandwidth.cpp - - /** - * Stakes SYS from the balance of 'from' for the benfit of 'receiver'. - * If transfer == true, then 'receiver' can unstake to their account - * Else 'from' can unstake at any time. - */ - void delegatebw( account_name from, account_name receiver, - asset stake_net_quantity, asset stake_cpu_quantity, bool transfer ); - - - /** - * Decreases the total tokens delegated by from to receiver and/or - * frees the memory associated with the delegation if there is nothing - * left to delegate. - * - * This will cause an immediate reduction in net/cpu bandwidth of the - * receiver. - * - * A transaction is scheduled to send the tokens back to 'from' after - * the staking period has passed. If existing transaction is scheduled, it - * will be canceled and a new transaction issued that has the combined - * undelegated amount. - * - * The 'from' account loses voting power as a result of this call and - * all producer tallies are updated. - */ - void undelegatebw( account_name from, account_name receiver, - asset unstake_net_quantity, asset unstake_cpu_quantity ); - - /** - * Increases receiver's ram quota based upon current price and quantity of - * tokens provided. An inline transfer from receiver to system contract of - * tokens will be executed. - */ - void buyram( account_name buyer, account_name receiver, asset tokens ); - void buyrambytes( account_name buyer, account_name receiver, uint32_t bytes ); - - /** - * Reduces quota my bytes and then performs an inline transfer of tokens - * to receiver based upon the average purchase price of the original quota. - */ - void sellram( account_name receiver, int64_t bytes ); - - /** - * This action is called after the delegation-period to claim all pending - * unstaked tokens belonging to owner - */ - void refund( account_name owner ); - - // functions defined in voting.cpp - - void regproducer( const account_name producer, const public_key& producer_key, const std::string& url, uint16_t location ); - - void unregprod( const account_name producer ); - - void setram( uint64_t max_ram_size ); - - void voteproducer( const account_name voter, const account_name proxy, const std::vector& producers ); - - void regproxy( const account_name proxy, bool isproxy ); - - void setparams( const eosio::blockchain_parameters& params ); - - // functions defined in producer_pay.cpp - void claimrewards( const account_name& owner ); - - void setpriv( account_name account, uint8_t ispriv ); - - void rmvproducer( account_name producer ); - - void bidname( account_name bidder, account_name newname, asset bid ); - private: - void update_elected_producers( block_timestamp timestamp ); - - // Implementation details: - - //defind in delegate_bandwidth.cpp - void changebw( account_name from, account_name receiver, - asset stake_net_quantity, asset stake_cpu_quantity, bool transfer ); - - //defined in voting.hpp - static eosio_global_state get_default_parameters(); - - void update_votes( const account_name voter, const account_name proxy, const std::vector& producers, bool voting ); - - // defined in voting.cpp - void propagate_weight_change( const voter_info& voter ); - }; - -} /// eosiosystem diff --git a/contracts/eosio.system/exchange_state.cpp b/contracts/eosio.system/exchange_state.cpp deleted file mode 100644 index 621d3e714b3..00000000000 --- a/contracts/eosio.system/exchange_state.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include - -namespace eosiosystem { - asset exchange_state::convert_to_exchange( connector& c, asset in ) { - - real_type R(supply.amount); - real_type C(c.balance.amount+in.amount); - real_type F(c.weight/1000.0); - real_type T(in.amount); - real_type ONE(1.0); - - real_type E = -R * (ONE - std::pow( ONE + T / C, F) ); - //print( "E: ", E, "\n"); - int64_t issued = int64_t(E); - - supply.amount += issued; - c.balance.amount += in.amount; - - return asset( issued, supply.symbol ); - } - - asset exchange_state::convert_from_exchange( connector& c, asset in ) { - eosio_assert( in.symbol== supply.symbol, "unexpected asset symbol input" ); - - real_type R(supply.amount - in.amount); - real_type C(c.balance.amount); - real_type F(1000.0/c.weight); - real_type E(in.amount); - real_type ONE(1.0); - - - // potentially more accurate: - // The functions std::expm1 and std::log1p are useful for financial calculations, for example, - // when calculating small daily interest rates: (1+x)n - // -1 can be expressed as std::expm1(n * std::log1p(x)). - // real_type T = C * std::expm1( F * std::log1p(E/R) ); - - real_type T = C * (std::pow( ONE + E/R, F) - ONE); - //print( "T: ", T, "\n"); - int64_t out = int64_t(T); - - supply.amount -= in.amount; - c.balance.amount -= out; - - return asset( out, c.balance.symbol ); - } - - asset exchange_state::convert( asset from, symbol_type to ) { - auto sell_symbol = from.symbol; - auto ex_symbol = supply.symbol; - auto base_symbol = base.balance.symbol; - auto quote_symbol = quote.balance.symbol; - - //print( "From: ", from, " TO ", asset( 0,to), "\n" ); - //print( "base: ", base_symbol, "\n" ); - //print( "quote: ", quote_symbol, "\n" ); - //print( "ex: ", supply.symbol, "\n" ); - - if( sell_symbol != ex_symbol ) { - if( sell_symbol == base_symbol ) { - from = convert_to_exchange( base, from ); - } else if( sell_symbol == quote_symbol ) { - from = convert_to_exchange( quote, from ); - } else { - eosio_assert( false, "invalid sell" ); - } - } else { - if( to == base_symbol ) { - from = convert_from_exchange( base, from ); - } else if( to == quote_symbol ) { - from = convert_from_exchange( quote, from ); - } else { - eosio_assert( false, "invalid conversion" ); - } - } - - if( to != from.symbol ) - return convert( from, to ); - - return from; - } - - - -} /// namespace eosiosystem diff --git a/contracts/eosio.system/exchange_state.hpp b/contracts/eosio.system/exchange_state.hpp deleted file mode 100644 index e6434e32b49..00000000000 --- a/contracts/eosio.system/exchange_state.hpp +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once - -#include - -namespace eosiosystem { - using eosio::asset; - using eosio::symbol_type; - - typedef double real_type; - - /** - * Uses Bancor math to create a 50/50 relay between two asset types. The state of the - * bancor exchange is entirely contained within this struct. There are no external - * side effects associated with using this API. - */ - struct exchange_state { - asset supply; - - struct connector { - asset balance; - double weight = .5; - - EOSLIB_SERIALIZE( connector, (balance)(weight) ) - }; - - connector base; - connector quote; - - uint64_t primary_key()const { return supply.symbol; } - - asset convert_to_exchange( connector& c, asset in ); - asset convert_from_exchange( connector& c, asset in ); - asset convert( asset from, symbol_type to ); - - EOSLIB_SERIALIZE( exchange_state, (supply)(base)(quote) ) - }; - - typedef eosio::multi_index rammarket; - -} /// namespace eosiosystem diff --git a/contracts/eosio.system/native.hpp b/contracts/eosio.system/native.hpp deleted file mode 100644 index e2bcb319575..00000000000 --- a/contracts/eosio.system/native.hpp +++ /dev/null @@ -1,112 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace eosiosystem { - using eosio::permission_level; - using eosio::public_key; - - typedef std::vector bytes; - - struct permission_level_weight { - permission_level permission; - weight_type weight; - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( permission_level_weight, (permission)(weight) ) - }; - - struct key_weight { - public_key key; - weight_type weight; - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( key_weight, (key)(weight) ) - }; - - struct authority { - uint32_t threshold; - uint32_t delay_sec; - std::vector keys; - std::vector accounts; - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE( authority, (threshold)(delay_sec)(keys)(accounts) ) - }; - - struct block_header { - uint32_t timestamp; - account_name producer; - uint16_t confirmed = 0; - block_id_type previous; - checksum256 transaction_mroot; - checksum256 action_mroot; - uint32_t schedule_version = 0; - eosio::optional new_producers; - - // explicit serialization macro is not necessary, used here only to improve compilation time - EOSLIB_SERIALIZE(block_header, (timestamp)(producer)(confirmed)(previous)(transaction_mroot)(action_mroot) - (schedule_version)(new_producers)) - }; - - - /* - * Method parameters commented out to prevent generation of code that parses input data. - */ - class native : public eosio::contract { - public: - - using eosio::contract::contract; - - /** - * Called after a new account is created. This code enforces resource-limits rules - * for new accounts as well as new account naming conventions. - * - * 1. accounts cannot contain '.' symbols which forces all acccounts to be 12 - * characters long without '.' until a future account auction process is implemented - * which prevents name squatting. - * - * 2. new accounts must stake a minimal number of tokens (as set in system parameters) - * therefore, this method will execute an inline buyram from receiver for newacnt in - * an amount equal to the current new account creation fee. - */ - void newaccount( account_name creator, - account_name newact - /* no need to parse authorites - const authority& owner, - const authority& active*/ ); - - - void updateauth( /*account_name account, - permission_name permission, - permission_name parent, - const authority& data*/ ) {} - - void deleteauth( /*account_name account, permission_name permission*/ ) {} - - void linkauth( /*account_name account, - account_name code, - action_name type, - permission_name requirement*/ ) {} - - void unlinkauth( /*account_name account, - account_name code, - action_name type*/ ) {} - - void canceldelay( /*permission_level canceling_auth, transaction_id_type trx_id*/ ) {} - - void onerror( /*const bytes&*/ ) {} - - }; -} diff --git a/contracts/eosio.system/producer_pay.cpp b/contracts/eosio.system/producer_pay.cpp deleted file mode 100644 index 1d0af68d432..00000000000 --- a/contracts/eosio.system/producer_pay.cpp +++ /dev/null @@ -1,140 +0,0 @@ -#include "eosio.system.hpp" - -#include - -namespace eosiosystem { - - const int64_t min_pervote_daily_pay = 100'0000; - const int64_t min_activated_stake = 150'000'000'0000; - const double continuous_rate = 0.04879; // 5% annual rate - const double perblock_rate = 0.0025; // 0.25% - const double standby_rate = 0.0075; // 0.75% - const uint32_t blocks_per_year = 52*7*24*2*3600; // half seconds per year - const uint32_t seconds_per_year = 52*7*24*3600; - const uint32_t blocks_per_day = 2 * 24 * 3600; - const uint32_t blocks_per_hour = 2 * 3600; - const uint64_t useconds_per_day = 24 * 3600 * uint64_t(1000000); - const uint64_t useconds_per_year = seconds_per_year*1000000ll; - - - void system_contract::onblock( block_timestamp timestamp, account_name producer ) { - using namespace eosio; - - require_auth(N(eosio)); - - /** until activated stake crosses this threshold no new rewards are paid */ - if( _gstate.total_activated_stake < min_activated_stake ) - return; - - if( _gstate.last_pervote_bucket_fill == 0 ) /// start the presses - _gstate.last_pervote_bucket_fill = current_time(); - - - /** - * At startup the initial producer may not be one that is registered / elected - * and therefore there may be no producer object for them. - */ - auto prod = _producers.find(producer); - if ( prod != _producers.end() ) { - _gstate.total_unpaid_blocks++; - _producers.modify( prod, 0, [&](auto& p ) { - p.unpaid_blocks++; - }); - } - - /// only update block producers once every minute, block_timestamp is in half seconds - if( timestamp.slot - _gstate.last_producer_schedule_update.slot > 120 ) { - update_elected_producers( timestamp ); - - if( (timestamp.slot - _gstate.last_name_close.slot) > blocks_per_day ) { - name_bid_table bids(_self,_self); - auto idx = bids.get_index(); - auto highest = idx.begin(); - if( highest != idx.end() && - highest->high_bid > 0 && - highest->last_bid_time < (current_time() - useconds_per_day) && - _gstate.thresh_activated_stake_time > 0 && - (current_time() - _gstate.thresh_activated_stake_time) > 14 * useconds_per_day ) { - _gstate.last_name_close = timestamp; - idx.modify( highest, 0, [&]( auto& b ){ - b.high_bid = -b.high_bid; - }); - } - } - } - } - - using namespace eosio; - void system_contract::claimrewards( const account_name& owner ) { - require_auth(owner); - - const auto& prod = _producers.get( owner ); - eosio_assert( prod.active(), "producer does not have an active key" ); - - eosio_assert( _gstate.total_activated_stake >= min_activated_stake, - "cannot claim rewards until the chain is activated (at least 15% of all tokens participate in voting)" ); - - auto ct = current_time(); - - eosio_assert( ct - prod.last_claim_time > useconds_per_day, "already claimed rewards within past day" ); - - const asset token_supply = token( N(eosio.token)).get_supply(symbol_type(system_token_symbol).name() ); - const auto usecs_since_last_fill = ct - _gstate.last_pervote_bucket_fill; - - if( usecs_since_last_fill > 0 && _gstate.last_pervote_bucket_fill > 0 ) { - auto new_tokens = static_cast( (continuous_rate * double(token_supply.amount) * double(usecs_since_last_fill)) / double(useconds_per_year) ); - - auto to_producers = new_tokens / 5; - auto to_savings = new_tokens - to_producers; - auto to_per_block_pay = to_producers / 4; - auto to_per_vote_pay = to_producers - to_per_block_pay; - - INLINE_ACTION_SENDER(eosio::token, issue)( N(eosio.token), {{N(eosio),N(active)}}, - {N(eosio), asset(new_tokens), std::string("issue tokens for producer pay and savings")} ); - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio),N(active)}, - { N(eosio), N(eosio.saving), asset(to_savings), "unallocated inflation" } ); - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio),N(active)}, - { N(eosio), N(eosio.bpay), asset(to_per_block_pay), "fund per-block bucket" } ); - - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio),N(active)}, - { N(eosio), N(eosio.vpay), asset(to_per_vote_pay), "fund per-vote bucket" } ); - - _gstate.pervote_bucket += to_per_vote_pay; - _gstate.perblock_bucket += to_per_block_pay; - - _gstate.last_pervote_bucket_fill = ct; - } - - int64_t producer_per_block_pay = 0; - if( _gstate.total_unpaid_blocks > 0 ) { - producer_per_block_pay = (_gstate.perblock_bucket * prod.unpaid_blocks) / _gstate.total_unpaid_blocks; - } - int64_t producer_per_vote_pay = 0; - if( _gstate.total_producer_vote_weight > 0 ) { - producer_per_vote_pay = int64_t((_gstate.pervote_bucket * prod.total_votes ) / _gstate.total_producer_vote_weight); - } - if( producer_per_vote_pay < min_pervote_daily_pay ) { - producer_per_vote_pay = 0; - } - _gstate.pervote_bucket -= producer_per_vote_pay; - _gstate.perblock_bucket -= producer_per_block_pay; - _gstate.total_unpaid_blocks -= prod.unpaid_blocks; - - _producers.modify( prod, 0, [&](auto& p) { - p.last_claim_time = ct; - p.unpaid_blocks = 0; - }); - - if( producer_per_block_pay > 0 ) { - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio.bpay),N(active)}, - { N(eosio.bpay), owner, asset(producer_per_block_pay), std::string("producer block pay") } ); - } - if( producer_per_vote_pay > 0 ) { - INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio.vpay),N(active)}, - { N(eosio.vpay), owner, asset(producer_per_vote_pay), std::string("producer vote pay") } ); - } - } - -} //namespace eosiosystem diff --git a/contracts/eosio.system/voting.cpp b/contracts/eosio.system/voting.cpp deleted file mode 100644 index 8076f79886d..00000000000 --- a/contracts/eosio.system/voting.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include "eosio.system.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -namespace eosiosystem { - using eosio::indexed_by; - using eosio::const_mem_fun; - using eosio::bytes; - using eosio::print; - using eosio::singleton; - using eosio::transaction; - - /** - * This method will create a producer_config and producer_info object for 'producer' - * - * @pre producer is not already registered - * @pre producer to register is an account - * @pre authority of producer to register - * - */ - void system_contract::regproducer( const account_name producer, const eosio::public_key& producer_key, const std::string& url, uint16_t location ) { - eosio_assert( url.size() < 512, "url too long" ); - eosio_assert( producer_key != eosio::public_key(), "public key should not be the default value" ); - require_auth( producer ); - - auto prod = _producers.find( producer ); - - if ( prod != _producers.end() ) { - _producers.modify( prod, producer, [&]( producer_info& info ){ - info.producer_key = producer_key; - info.is_active = true; - info.url = url; - info.location = location; - }); - } else { - _producers.emplace( producer, [&]( producer_info& info ){ - info.owner = producer; - info.total_votes = 0; - info.producer_key = producer_key; - info.is_active = true; - info.url = url; - info.location = location; - }); - } - } - - void system_contract::unregprod( const account_name producer ) { - require_auth( producer ); - - const auto& prod = _producers.get( producer, "producer not found" ); - - _producers.modify( prod, 0, [&]( producer_info& info ){ - info.deactivate(); - }); - } - - void system_contract::update_elected_producers( block_timestamp block_time ) { - _gstate.last_producer_schedule_update = block_time; - - auto idx = _producers.get_index(); - - std::vector< std::pair > top_producers; - top_producers.reserve(21); - - for ( auto it = idx.cbegin(); it != idx.cend() && top_producers.size() < 21 && 0 < it->total_votes && it->active(); ++it ) { - top_producers.emplace_back( std::pair({{it->owner, it->producer_key}, it->location}) ); - } - - if ( top_producers.size() < _gstate.last_producer_schedule_size ) { - return; - } - - /// sort by producer location - struct { - bool operator()(std::pair a, std::pair b) const - { - return a.second ==b.second?a.first producers; - - producers.reserve(top_producers.size()); - for( const auto& item : top_producers ) - producers.push_back(item.first); - - bytes packed_schedule = pack(producers); - - if( set_proposed_producers( packed_schedule.data(), packed_schedule.size() ) >= 0 ) { - _gstate.last_producer_schedule_size = static_cast( top_producers.size() ); - } - } - - double stake2vote( int64_t staked ) { - /// TODO subtract 2080 brings the large numbers closer to this decade - double weight = int64_t( (now() - (block_timestamp::block_timestamp_epoch / 1000)) / (seconds_per_day * 7) ) / double( 52 ); - return double(staked) * std::pow( 2, weight ); - } - /** - * @pre producers must be sorted from lowest to highest and must be registered and active - * @pre if proxy is set then no producers can be voted for - * @pre if proxy is set then proxy account must exist and be registered as a proxy - * @pre every listed producer or proxy must have been previously registered - * @pre voter must authorize this action - * @pre voter must have previously staked some EOS for voting - * @pre voter->staked must be up to date - * - * @post every producer previously voted for will have vote reduced by previous vote weight - * @post every producer newly voted for will have vote increased by new vote amount - * @post prior proxy will proxied_vote_weight decremented by previous vote weight - * @post new proxy will proxied_vote_weight incremented by new vote weight - * - * If voting for a proxy, the producer votes will not change until the proxy updates their own vote. - */ - void system_contract::voteproducer( const account_name voter_name, const account_name proxy, const std::vector& producers ) { - require_auth( voter_name ); - update_votes( voter_name, proxy, producers, true ); - } - - void system_contract::update_votes( const account_name voter_name, const account_name proxy, const std::vector& producers, bool voting ) { - //validate input - if ( proxy ) { - eosio_assert( producers.size() == 0, "cannot vote for producers and proxy at same time" ); - eosio_assert( voter_name != proxy, "cannot proxy to self" ); - require_recipient( proxy ); - } else { - eosio_assert( producers.size() <= 30, "attempt to vote for too many producers" ); - for( size_t i = 1; i < producers.size(); ++i ) { - eosio_assert( producers[i-1] < producers[i], "producer votes must be unique and sorted" ); - } - } - - auto voter = _voters.find(voter_name); - eosio_assert( voter != _voters.end(), "user must stake before they can vote" ); /// staking creates voter object - eosio_assert( !proxy || !voter->is_proxy, "account registered as a proxy is not allowed to use a proxy" ); - - /** - * The first time someone votes we calculate and set last_vote_weight, since they cannot unstake until - * after total_activated_stake hits threshold, we can use last_vote_weight to determine that this is - * their first vote and should consider their stake activated. - */ - if( voter->last_vote_weight <= 0.0 ) { - _gstate.total_activated_stake += voter->staked; - if( _gstate.total_activated_stake >= min_activated_stake && _gstate.thresh_activated_stake_time == 0 ) { - _gstate.thresh_activated_stake_time = current_time(); - } - } - - auto new_vote_weight = stake2vote( voter->staked ); - if( voter->is_proxy ) { - new_vote_weight += voter->proxied_vote_weight; - } - - boost::container::flat_map > producer_deltas; - if ( voter->last_vote_weight > 0 ) { - if( voter->proxy ) { - auto old_proxy = _voters.find( voter->proxy ); - eosio_assert( old_proxy != _voters.end(), "old proxy not found" ); //data corruption - _voters.modify( old_proxy, 0, [&]( auto& vp ) { - vp.proxied_vote_weight -= voter->last_vote_weight; - }); - propagate_weight_change( *old_proxy ); - } else { - for( const auto& p : voter->producers ) { - auto& d = producer_deltas[p]; - d.first -= voter->last_vote_weight; - d.second = false; - } - } - } - - if( proxy ) { - auto new_proxy = _voters.find( proxy ); - eosio_assert( new_proxy != _voters.end(), "invalid proxy specified" ); //if ( !voting ) { data corruption } else { wrong vote } - eosio_assert( !voting || new_proxy->is_proxy, "proxy not found" ); - if ( new_vote_weight >= 0 ) { - _voters.modify( new_proxy, 0, [&]( auto& vp ) { - vp.proxied_vote_weight += new_vote_weight; - }); - propagate_weight_change( *new_proxy ); - } - } else { - if( new_vote_weight >= 0 ) { - for( const auto& p : producers ) { - auto& d = producer_deltas[p]; - d.first += new_vote_weight; - d.second = true; - } - } - } - - for( const auto& pd : producer_deltas ) { - auto pitr = _producers.find( pd.first ); - if( pitr != _producers.end() ) { - eosio_assert( !voting || pitr->active() || !pd.second.second /* not from new set */, "producer is not currently registered" ); - _producers.modify( pitr, 0, [&]( auto& p ) { - p.total_votes += pd.second.first; - if ( p.total_votes < 0 ) { // floating point arithmetics can give small negative numbers - p.total_votes = 0; - } - _gstate.total_producer_vote_weight += pd.second.first; - //eosio_assert( p.total_votes >= 0, "something bad happened" ); - }); - } else { - eosio_assert( !pd.second.second /* not from new set */, "producer is not registered" ); //data corruption - } - } - - _voters.modify( voter, 0, [&]( auto& av ) { - av.last_vote_weight = new_vote_weight; - av.producers = producers; - av.proxy = proxy; - }); - } - - /** - * An account marked as a proxy can vote with the weight of other accounts which - * have selected it as a proxy. Other accounts must refresh their voteproducer to - * update the proxy's weight. - * - * @param isproxy - true if proxy wishes to vote on behalf of others, false otherwise - * @pre proxy must have something staked (existing row in voters table) - * @pre new state must be different than current state - */ - void system_contract::regproxy( const account_name proxy, bool isproxy ) { - require_auth( proxy ); - - auto pitr = _voters.find(proxy); - if ( pitr != _voters.end() ) { - eosio_assert( isproxy != pitr->is_proxy, "action has no effect" ); - eosio_assert( !isproxy || !pitr->proxy, "account that uses a proxy is not allowed to become a proxy" ); - _voters.modify( pitr, 0, [&]( auto& p ) { - p.is_proxy = isproxy; - }); - propagate_weight_change( *pitr ); - } else { - _voters.emplace( proxy, [&]( auto& p ) { - p.owner = proxy; - p.is_proxy = isproxy; - }); - } - } - - void system_contract::propagate_weight_change( const voter_info& voter ) { - eosio_assert( voter.proxy == 0 || !voter.is_proxy, "account registered as a proxy is not allowed to use a proxy" ); - double new_weight = stake2vote( voter.staked ); - if ( voter.is_proxy ) { - new_weight += voter.proxied_vote_weight; - } - - /// don't propagate small changes (1 ~= epsilon) - if ( fabs( new_weight - voter.last_vote_weight ) > 1 ) { - if ( voter.proxy ) { - auto& proxy = _voters.get( voter.proxy, "proxy not found" ); //data corruption - _voters.modify( proxy, 0, [&]( auto& p ) { - p.proxied_vote_weight += new_weight - voter.last_vote_weight; - } - ); - propagate_weight_change( proxy ); - } else { - auto delta = new_weight - voter.last_vote_weight; - for ( auto acnt : voter.producers ) { - auto& pitr = _producers.get( acnt, "producer not found" ); //data corruption - _producers.modify( pitr, 0, [&]( auto& p ) { - p.total_votes += delta; - _gstate.total_producer_vote_weight += delta; - }); - } - } - } - _voters.modify( voter, 0, [&]( auto& v ) { - v.last_vote_weight = new_weight; - } - ); - } - -} /// namespace eosiosystem diff --git a/contracts/eosio.token/CMakeLists.txt b/contracts/eosio.token/CMakeLists.txt deleted file mode 100644 index 00ab99ec249..00000000000 --- a/contracts/eosio.token/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET eosio.token - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/eosio.token/eosio.token.abi b/contracts/eosio.token/eosio.token.abi deleted file mode 100644 index d769deb331b..00000000000 --- a/contracts/eosio.token/eosio.token.abi +++ /dev/null @@ -1,78 +0,0 @@ -{ - "version": "eosio::abi/1.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":"quantity", "type":"asset"}, - {"name":"memo", "type":"string"} - ] - },{ - "name": "create", - "base": "", - "fields": [ - {"name":"issuer", "type":"account_name"}, - {"name":"maximum_supply", "type":"asset"} - ] - },{ - "name": "issue", - "base": "", - "fields": [ - {"name":"to", "type":"account_name"}, - {"name":"quantity", "type":"asset"}, - {"name":"memo", "type":"string"} - ] - },{ - "name": "account", - "base": "", - "fields": [ - {"name":"balance", "type":"asset"} - ] - },{ - "name": "currency_stats", - "base": "", - "fields": [ - {"name":"supply", "type":"asset"}, - {"name":"max_supply", "type":"asset"}, - {"name":"issuer", "type":"account_name"} - ] - } - ], - "actions": [{ - "name": "transfer", - "type": "transfer", - "ricardian_contract": "" - },{ - "name": "issue", - "type": "issue", - "ricardian_contract": "" - }, { - "name": "create", - "type": "create", - "ricardian_contract": "" - } - - ], - "tables": [{ - "name": "accounts", - "type": "account", - "index_type": "i64", - "key_names" : ["currency"], - "key_types" : ["uint64"] - },{ - "name": "stat", - "type": "currency_stats", - "index_type": "i64", - "key_names" : ["currency"], - "key_types" : ["uint64"] - } - ], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/eosio.token/eosio.token.cpp b/contracts/eosio.token/eosio.token.cpp deleted file mode 100644 index 4570b19b5c9..00000000000 --- a/contracts/eosio.token/eosio.token.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ - -#include "eosio.token.hpp" - -namespace eosio { - -void token::create( account_name issuer, - asset maximum_supply ) -{ - require_auth( _self ); - - auto sym = maximum_supply.symbol; - eosio_assert( sym.is_valid(), "invalid symbol name" ); - eosio_assert( maximum_supply.is_valid(), "invalid supply"); - eosio_assert( maximum_supply.amount > 0, "max-supply must be positive"); - - stats statstable( _self, sym.name() ); - auto existing = statstable.find( sym.name() ); - eosio_assert( existing == statstable.end(), "token with symbol already exists" ); - - statstable.emplace( _self, [&]( auto& s ) { - s.supply.symbol = maximum_supply.symbol; - s.max_supply = maximum_supply; - s.issuer = issuer; - }); -} - - -void token::issue( account_name to, asset quantity, string memo ) -{ - auto sym = quantity.symbol; - eosio_assert( sym.is_valid(), "invalid symbol name" ); - eosio_assert( memo.size() <= 256, "memo has more than 256 bytes" ); - - auto sym_name = sym.name(); - stats statstable( _self, sym_name ); - auto existing = statstable.find( sym_name ); - eosio_assert( existing != statstable.end(), "token with symbol does not exist, create token before issue" ); - const auto& st = *existing; - - require_auth( st.issuer ); - eosio_assert( quantity.is_valid(), "invalid quantity" ); - eosio_assert( quantity.amount > 0, "must issue positive quantity" ); - - eosio_assert( quantity.symbol == st.supply.symbol, "symbol precision mismatch" ); - eosio_assert( quantity.amount <= st.max_supply.amount - st.supply.amount, "quantity exceeds available supply"); - - statstable.modify( st, 0, [&]( auto& s ) { - s.supply += quantity; - }); - - add_balance( st.issuer, quantity, st.issuer ); - - if( to != st.issuer ) { - SEND_INLINE_ACTION( *this, transfer, {st.issuer,N(active)}, {st.issuer, to, quantity, memo} ); - } -} - -void token::transfer( account_name from, - account_name to, - asset quantity, - string memo ) -{ - eosio_assert( from != to, "cannot transfer to self" ); - require_auth( from ); - eosio_assert( is_account( to ), "to account does not exist"); - auto sym = quantity.symbol.name(); - stats statstable( _self, sym ); - const auto& st = statstable.get( sym ); - - require_recipient( from ); - require_recipient( to ); - - eosio_assert( quantity.is_valid(), "invalid quantity" ); - eosio_assert( quantity.amount > 0, "must transfer positive quantity" ); - eosio_assert( quantity.symbol == st.supply.symbol, "symbol precision mismatch" ); - eosio_assert( memo.size() <= 256, "memo has more than 256 bytes" ); - - - sub_balance( from, quantity ); - add_balance( to, quantity, from ); -} - -void token::sub_balance( account_name owner, asset value ) { - accounts from_acnts( _self, owner ); - - const auto& from = from_acnts.get( value.symbol.name(), "no balance object found" ); - eosio_assert( from.balance.amount >= value.amount, "overdrawn balance" ); - - - if( from.balance.amount == value.amount ) { - from_acnts.erase( from ); - } else { - from_acnts.modify( from, owner, [&]( auto& a ) { - a.balance -= value; - }); - } -} - -void token::add_balance( account_name owner, asset value, account_name ram_payer ) -{ - accounts to_acnts( _self, owner ); - auto to = to_acnts.find( value.symbol.name() ); - if( to == to_acnts.end() ) { - to_acnts.emplace( ram_payer, [&]( auto& a ){ - a.balance = value; - }); - } else { - to_acnts.modify( to, 0, [&]( auto& a ) { - a.balance += value; - }); - } -} - -} /// namespace eosio - -EOSIO_ABI( eosio::token, (create)(issue)(transfer) ) diff --git a/contracts/eosio.token/eosio.token.hpp b/contracts/eosio.token/eosio.token.hpp deleted file mode 100644 index 48312c9edb4..00000000000 --- a/contracts/eosio.token/eosio.token.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include - -#include - -namespace eosiosystem { - class system_contract; -} - -namespace eosio { - - using std::string; - - class token : public contract { - public: - token( account_name self ):contract(self){} - - void create( account_name issuer, - asset maximum_supply); - - void issue( account_name to, asset quantity, string memo ); - - void transfer( account_name from, - account_name to, - asset quantity, - string memo ); - - - inline asset get_supply( symbol_name sym )const; - - inline asset get_balance( account_name owner, symbol_name sym )const; - - private: - struct account { - asset balance; - - uint64_t primary_key()const { return balance.symbol.name(); } - }; - - struct currency_stats { - asset supply; - asset max_supply; - account_name issuer; - - uint64_t primary_key()const { return supply.symbol.name(); } - }; - - typedef eosio::multi_index accounts; - typedef eosio::multi_index stats; - - void sub_balance( account_name owner, asset value ); - void add_balance( account_name owner, asset value, account_name ram_payer ); - - public: - struct transfer_args { - account_name from; - account_name to; - asset quantity; - string memo; - }; - }; - - asset token::get_supply( symbol_name sym )const - { - stats statstable( _self, sym ); - const auto& st = statstable.get( sym ); - return st.supply; - } - - asset token::get_balance( account_name owner, symbol_name sym )const - { - accounts accountstable( _self, owner ); - const auto& ac = accountstable.get( sym ); - return ac.balance; - } - -} /// namespace eosio diff --git a/contracts/eosiolib/CMakeLists.txt b/contracts/eosiolib/CMakeLists.txt deleted file mode 100644 index f7dc3b0c5a0..00000000000 --- a/contracts/eosiolib/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/core_symbol.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/core_symbol.hpp) - -add_wast_library(TARGET eosiolib - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" ${CMAKE_SOURCE_DIR}/externals/magic_get/include - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/eosiolib/action.h b/contracts/eosiolib/action.h deleted file mode 100644 index f8deba837b8..00000000000 --- a/contracts/eosiolib/action.h +++ /dev/null @@ -1,170 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include - -extern "C" { - /** - * @defgroup actionapi Action API - * @ingroup contractdev - * @brief Defines API for for querying action and sending action - * - */ - - /** - * @defgroup actioncapi Action C API - * @ingroup actionapi - * @brief Defines API for querying action and sending action - * - * - * A EOS.IO action has the following abstract structure: - * - * ``` - * struct action { - * scope_name scope; // the contract defining the primary code to execute for code/type - * action_name name; // the action to be taken - * permission_level[] authorization; // the accounts and permission levels provided - * bytes data; // opaque data processed by code - * }; - * ``` - * - * This API enables your contract to inspect the fields on the current action and act accordingly. - * - * Example: - * @code - * // Assume this action is used for the following examples: - * // { - * // "code": "eos", - * // "type": "transfer", - * // "authorization": [{ "account": "inita", "permission": "active" }], - * // "data": { - * // "from": "inita", - * // "to": "initb", - * // "amount": 1000 - * // } - * // } - * - * char buffer[128]; - * uint32_t total = read_action(buffer, 5); // buffer contains the content of the action up to 5 bytes - * print(total); // Output: 5 - * - * uint32_t msgsize = action_size(); - * print(msgsize); // Output: size of the above action's data field - * - * require_recipient(N(initc)); // initc account will be notified for this action - * - * require_auth(N(inita)); // Do nothing since inita exists in the auth list - * require_auth(N(initb)); // Throws an exception - * - * print(current_time()); // Output: timestamp (in microseconds since 1970) of current block - * - * @endcode - * - * - * @{ - */ - - /** - * Copy up to @ref len bytes of current action data to the specified location - * - * @brief Copy current action data to the specified location - * @param msg - a pointer where up to @ref len bytes of the current action data will be copied - * @param len - len of the current action data to be copied, 0 to report required size - * @return the number of bytes copied to msg, or number of bytes that can be copied if len==0 passed - * @pre `msg` is a valid pointer to a range of memory at least `len` bytes long - * @post `msg` is filled with packed action data - */ - uint32_t read_action_data( void* msg, uint32_t len ); - - /** - * Get the length of the current action's data field. This method is useful for dynamically sized actions - * - * @brief Get the length of current action's data field - * @return the length of the current action's data field - */ - uint32_t action_data_size(); - - /** - * Add the specified account to set of accounts to be notified - * - * @brief Add the specified account to set of accounts to be notified - * @param name - name of the account to be verified - */ - void require_recipient( account_name name ); - - /** - * Verifies that @ref name exists in the set of provided auths on a action. Throws if not found. - * - * @brief Verify specified account exists in the set of provided auths - * @param name - name of the account to be verified - */ - void require_auth( account_name name ); - - /** - * Verifies that @ref name has auth. - * - * @brief Verifies that @ref name has auth. - * @param name - name of the account to be verified - */ - bool has_auth( account_name name ); - - /** - * Verifies that @ref name exists in the set of provided auths on a action. Throws if not found. - * - * @brief Verify specified account exists in the set of provided auths - * @param name - name of the account to be verified - * @param permission - permission level to be verified - */ - void require_auth2( account_name name, permission_name permission ); - - bool is_account( account_name name ); - - /** - * Send an inline action in the context of this action's parent transaction - * - * @param serialized_action - serialized action - * @param size - size of serialized action in bytes - * @pre `serialized_action` is a valid pointer to an array at least `size` bytes long - */ - void send_inline(char *serialized_action, size_t size); - - /** - * Send an inline context free action in the context of this action's parent transaction - * - * @param serialized_action - serialized action - * @param size - size of serialized action in bytes - * @pre `serialized_action` is a valid pointer to an array at least `size` bytes long - */ - void send_context_free_inline(char *serialized_action, size_t size); - - /** - * Verifies that @ref name exists in the set of write locks held on a action. Throws if not found - * @brief Verifies that @ref name exists in the set of write locks held - * @param name - name of the account to be verified - */ - void require_write_lock( account_name name ); - - /** - * Verifies that @ref name exists in the set of read locks held on a action. Throws if not found - * @brief Verifies that @ref name exists in the set of read locks held - * @param name - name of the account to be verified - */ - void require_read_lock( account_name name ); - - /** - * Returns the time in microseconds from 1970 of the publication_time - * @brief Get the publication time - * @return the time in microseconds from 1970 of the publication_time - */ - uint64_t publication_time(); - - /** - * Get the current receiver of the action - * @brief Get the current receiver of the action - * @return the account which specifies the current receiver of the action - */ - account_name current_receiver(); - ///@ } actioncapi -} diff --git a/contracts/eosiolib/action.hpp b/contracts/eosiolib/action.hpp deleted file mode 100644 index d4538c2972e..00000000000 --- a/contracts/eosiolib/action.hpp +++ /dev/null @@ -1,395 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include -#include -#include - -#include -#include -#include -#include - -namespace eosio { - - /** - * @defgroup actioncppapi Action C++ API - * @ingroup actionapi - * @brief Defines type-safe C++ wrapers for querying action and sending action - * - * @note There are some methods from the @ref actioncapi that can be used directly from C++ - * - * @{ - */ - - /** - * - * This method unpacks the current action at type T. - * - * @brief Interpret the action body as type T. - * @return Unpacked action data casted as T. - * - * Example: - * - * @code - * struct dummy_action { - * char a; //1 - * unsigned long long b; //8 - * int c; //4 - * - * EOSLIB_SERIALIZE( dummy_action, (a)(b)(c) ) - * }; - * dummy_action msg = unpack_action_data(); - * @endcode - */ - template - T unpack_action_data() { - constexpr size_t max_stack_buffer_size = 512; - size_t size = action_data_size(); - const bool heap_allocation = max_stack_buffer_size < size; - char* buffer = (char*)( heap_allocation ? malloc(size) : alloca(size) ); - read_action_data( buffer, size ); - auto res = unpack( buffer, size ); - // Free allocated memory - if ( heap_allocation ) { - free(buffer); - } - return res; - } - - using ::require_auth; - using ::require_recipient; - - /** - * All of the listed accounts will be added to the set of accounts to be notified - * - * This helper method enables you to add multiple accounts to accounts to be notified list with a single - * call rather than having to call the similar C API multiple times. - * - * @note action.code is also considered as part of the set of notified accounts - * - * @brief Notify an account for this action - * @param name account to be notified - * @param remaining_accounts accounts to be notified - * - * Example: - * - * @code - * require_recipient(N(Account1), N(Account2), N(Account3)); // throws exception if any of them not in set. - * @endcode - */ - template - void require_recipient( account_name name, accounts... remaining_accounts ){ - require_recipient( name ); - require_recipient( remaining_accounts... ); - } - - /** - * Packed representation of a permission level (Authorization) - * - * @brief Packed representation of a permission level (Authorization) - */ - struct permission_level { - /** - * Construct a new permission level object with actor name and permission name - * - * @brief Construct a new permission level object - * @param a - Name of the account who owns this authorization - * @param p - Name of the permission - */ - permission_level( account_name a, permission_name p ):actor(a),permission(p){} - - /** - * Default Constructor - * - * @brief Construct a new permission level object - */ - permission_level(){} - - /** - * Name of the account who owns this permission - * - * @brief Name of the account who owns this permission - */ - account_name actor; - /** - * Name of the permission - * - * @brief Name of the permission - */ - permission_name permission; - - /** - * Check equality of two permissions - * - * @brief Check equality of two permissions - * @param a - first permission to compare - * @param b - second permission to compare - * @return true if equal - * @return false if unequal - */ - friend bool operator == ( const permission_level& a, const permission_level& b ) { - return std::tie( a.actor, a.permission ) == std::tie( b.actor, b.permission ); - } - - EOSLIB_SERIALIZE( permission_level, (actor)(permission) ) - }; - - /** - * Require the specified authorization for this action. If this action doesn't contain the specified auth, it will fail. - * - * @brief Require the specified authorization for this action - * - * @param level - Authorization to be required - */ - void require_auth(const permission_level& level) { - require_auth2( level.actor, level.permission ); - } - - /** - * This is the packed representation of an action along with - * meta-data about the authorization levels. - * - * @brief Packed representation of an action - */ - struct action { - /** - * Name of the account the action is intended for - * - * @brief Name of the account the action is intended for - */ - account_name account; - - /** - * Name of the action - * - * @brief Name of the action - */ - action_name name; - - /** - * List of permissions that authorize this action - * - * @brief List of permissions that authorize this action - */ - vector authorization; - - /** - * Payload data - * - * @brief Payload data - */ - bytes data; - - /** - * Default Constructor - * - * @brief Construct a new action object - */ - action() = default; - - /** - * Construct a new action object with the given permission and action struct - * - * @brief Construct a new action object with the given permission and action struct - * @tparam Action - Type of action struct - * @param auth - The permission that authorizes this action - * @param value - The action struct that will be serialized via pack into data - */ - template - action( vector&& auth, const Action& value ) { - account = Action::get_account(); - name = Action::get_name(); - authorization = move(auth); - data = pack(value); - } - - /** - * Construct a new action object with the given list of permissions and action struct - * - * @brief Construct a new action object with the given list of permissions and action struct - * @tparam Action - Type of action struct - * @param auth - The list of permissions that authorizes this action - * @param value - The action struct that will be serialized via pack into data - */ - template - action( const permission_level& auth, const Action& value ) - :authorization(1,auth) { - account = Action::get_account(); - name = Action::get_name(); - data = pack(value); - } - - - /** - * Construct a new action object with the given action struct - * - * @brief Construct a new action object with the given action struct - * @tparam Action - Type of action struct - * @param value - The action struct that will be serialized via pack into data - */ - template - action( const Action& value ) { - account = Action::get_account(); - name = Action::get_name(); - data = pack(value); - } - - /** - * Construct a new action object with the given action struct - * - * @brief Construct a new action object with the given permission, action receiver, action name, action struct - * @tparam T - Type of action struct, must be serializable by `pack(...)` - * @param auth - The permissions that authorizes this action - * @param a - The name of the account this action is intended for (action receiver) - * @param n - The name of the action - * @param value - The action struct that will be serialized via pack into data - */ - template - action( const permission_level& auth, account_name a, action_name n, T&& value ) - :account(a), name(n), authorization(1,auth), data(pack(std::forward(value))) {} - - /** - * Construct a new action object with the given action struct - * - * @brief Construct a new action object with the given list of permissions, action receiver, action name, action struct - * @tparam T - Type of action struct, must be serializable by `pack(...)` - * @param auths - The list of permissions that authorize this action - * @param a - The name of the account this action is intended for (action receiver) - * @param n - The name of the action - * @param value - The action struct that will be serialized via pack into data - */ - template - action( vector auths, account_name a, action_name n, T&& value ) - :account(a), name(n), authorization(std::move(auths)), data(pack(std::forward(value))) {} - - EOSLIB_SERIALIZE( action, (account)(name)(authorization)(data) ) - - /** - * Send the action as inline action - * - * @brief Send the action as inline action - */ - void send() const { - auto serialize = pack(*this); - ::send_inline(serialize.data(), serialize.size()); - } - - /** - * Send the action as inline context free action - * - * @brief Send the action as inline context free action - * @pre This action should not contain any authorizations - */ - void send_context_free() const { - eosio_assert( authorization.size() == 0, "context free actions cannot have authorizations"); - auto serialize = pack(*this); - ::send_context_free_inline(serialize.data(), serialize.size()); - } - - /** - * Retrieve the unpacked data as T - * - * @brief Retrieve the unpacked data as T - * @tparam T expected type of data - * @return the action data - */ - template - T data_as() { - eosio_assert( name == T::get_name(), "Invalid name" ); - eosio_assert( account == T::get_account(), "Invalid account" ); - return unpack( &data[0], data.size() ); - } - - }; - - /** - * Base class to derive a new defined action from so it can take advantage of the dispatcher - * - * @brief Base class to derive a new defined action from - * @tparam Account - The account this action is intended for - * @tparam Name - The name of the action - */ - template - struct action_meta { - /** - * Get the account this action is intended for - * - * @brief Get the account this action is intended for - * @return uint64_t The account this action is intended for - */ - static uint64_t get_account() { return Account; } - /** - * Get the name of this action - * - * @brief Get the name of this action - * @return uint64_t Name of the action - */ - static uint64_t get_name() { return Name; } - }; - - ///@} actioncpp api - - template - void dispatch_inline( account_name code, action_name act, - vector perms, - std::tuple args ) { - action( perms, code, act, std::move(args) ).send(); - } - - - template - struct inline_dispatcher; - - - template - struct inline_dispatcher { - static void call(account_name code, const permission_level& perm, std::tuple args) { - dispatch_inline(code, Name, vector(1, perm), std::move(args)); - } - static void call(account_name code, vector perms, std::tuple args) { - dispatch_inline(code, Name, std::move(perms), std::move(args)); - } - }; - - -} // namespace eosio - -#define INLINE_ACTION_SENDER3( CONTRACT_CLASS, FUNCTION_NAME, ACTION_NAME )\ -::eosio::inline_dispatcher::call - -#define INLINE_ACTION_SENDER2( CONTRACT_CLASS, NAME )\ -INLINE_ACTION_SENDER3( CONTRACT_CLASS, NAME, ::eosio::string_to_name(#NAME) ) - -#define INLINE_ACTION_SENDER(...) BOOST_PP_OVERLOAD(INLINE_ACTION_SENDER,__VA_ARGS__)(__VA_ARGS__) - -/** - * @addtogroup actioncppapi - * Additional documentation for group - * @{ - */ - -/** - * Send inline action - * - * @brief Send inline action - * @param CONTRACT - The account this action is intended for - * @param NAME - The name of the action - * @param ... - The member of the action specified as ("action_member1_name", action_member1_value)("action_member2_name", action_member2_value) - */ -#define SEND_INLINE_ACTION( CONTRACT, NAME, ... )\ -INLINE_ACTION_SENDER(std::decay_t, NAME)( (CONTRACT).get_self(),\ -BOOST_PP_TUPLE_ENUM(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__)) ); - -/** - * Extend a new defined action with theaction meta, so it can work with the dispatcher - * - * @brief Extend a new defined action with the action meta - * @param CODE - The account this action is intended for - * @param NAME - The name of the action - */ -#define ACTION( CODE, NAME ) struct NAME : ::eosio::action_meta - - /// @} diff --git a/contracts/eosiolib/asset.hpp b/contracts/eosiolib/asset.hpp deleted file mode 100644 index c3e454384ff..00000000000 --- a/contracts/eosiolib/asset.hpp +++ /dev/null @@ -1,472 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace eosio { - - /** - * @defgroup assetapi Asset API - * @brief Defines API for managing assets - * @ingroup contractdev - */ - - /** - * @defgroup assetcppapi Asset CPP API - * @brief Defines %CPP API for managing assets - * @ingroup assetapi - * @{ - */ - - /** - * \struct Stores information for owner of asset - * - * @brief Stores information for owner of asset - */ - - struct asset { - /** - * The amount of the asset - * - * @brief The amount of the asset - */ - int64_t amount; - - /** - * The symbol name of the asset - * - * @brief The symbol name of the asset - */ - symbol_type symbol; - - /** - * Maximum amount possible for this asset. It's capped to 2^62 - 1 - * - * @brief Maximum amount possible for this asset - */ - static constexpr int64_t max_amount = (1LL << 62) - 1; - - /** - * Construct a new asset given the symbol name and the amount - * - * @brief Construct a new asset object - * @param a - The amount of the asset - * @param s - THe name of the symbol, default to CORE_SYMBOL - */ - explicit asset( int64_t a = 0, symbol_type s = CORE_SYMBOL ) - :amount(a),symbol{s} - { - eosio_assert( is_amount_within_range(), "magnitude of asset amount must be less than 2^62" ); - eosio_assert( symbol.is_valid(), "invalid symbol name" ); - } - - /** - * Check if the amount doesn't exceed the max amount - * - * @brief Check if the amount doesn't exceed the max amount - * @return true - if the amount doesn't exceed the max amount - * @return false - otherwise - */ - bool is_amount_within_range()const { return -max_amount <= amount && amount <= max_amount; } - - /** - * Check if the asset is valid. %A valid asset has its amount <= max_amount and its symbol name valid - * - * @brief Check if the asset is valid - * @return true - if the asset is valid - * @return false - otherwise - */ - bool is_valid()const { return is_amount_within_range() && symbol.is_valid(); } - - /** - * Set the amount of the asset - * - * @brief Set the amount of the asset - * @param a - New amount for the asset - */ - void set_amount( int64_t a ) { - amount = a; - eosio_assert( is_amount_within_range(), "magnitude of asset amount must be less than 2^62" ); - } - - /** - * Unary minus operator - * - * @brief Unary minus operator - * @return asset - New asset with its amount is the negative amount of this asset - */ - asset operator-()const { - asset r = *this; - r.amount = -r.amount; - return r; - } - - /** - * Subtraction assignment operator - * - * @brief Subtraction assignment operator - * @param a - Another asset to subtract this asset with - * @return asset& - Reference to this asset - * @post The amount of this asset is subtracted by the amount of asset a - */ - asset& operator-=( const asset& a ) { - eosio_assert( a.symbol == symbol, "attempt to subtract asset with different symbol" ); - amount -= a.amount; - eosio_assert( -max_amount <= amount, "subtraction underflow" ); - eosio_assert( amount <= max_amount, "subtraction overflow" ); - return *this; - } - - /** - * Addition Assignment operator - * - * @brief Addition Assignment operator - * @param a - Another asset to subtract this asset with - * @return asset& - Reference to this asset - * @post The amount of this asset is added with the amount of asset a - */ - asset& operator+=( const asset& a ) { - eosio_assert( a.symbol == symbol, "attempt to add asset with different symbol" ); - amount += a.amount; - eosio_assert( -max_amount <= amount, "addition underflow" ); - eosio_assert( amount <= max_amount, "addition overflow" ); - return *this; - } - - /** - * Addition operator - * - * @brief Addition operator - * @param a - The first asset to be added - * @param b - The second asset to be added - * @return asset - New asset as the result of addition - */ - inline friend asset operator+( const asset& a, const asset& b ) { - asset result = a; - result += b; - return result; - } - - /** - * Subtraction operator - * - * @brief Subtraction operator - * @param a - The asset to be subtracted - * @param b - The asset used to subtract - * @return asset - New asset as the result of subtraction of a with b - */ - inline friend asset operator-( const asset& a, const asset& b ) { - asset result = a; - result -= b; - return result; - } - - /** - * Multiplication assignment operator. Multiply the amount of this asset with a number and then assign the value to itself. - * - * @brief Multiplication assignment operator, with a number - * @param a - The multiplier for the asset's amount - * @return asset - Reference to this asset - * @post The amount of this asset is multiplied by a - */ - asset& operator*=( int64_t a ) { - int128_t tmp = (int128_t)amount * (int128_t)a; - eosio_assert( tmp <= max_amount, "multiplication overflow" ); - eosio_assert( tmp >= -max_amount, "multiplication underflow" ); - amount = (int64_t)tmp; - return *this; - } - - /** - * Multiplication operator, with a number proceeding - * - * @brief Multiplication operator, with a number proceeding - * @param a - The asset to be multiplied - * @param b - The multiplier for the asset's amount - * @return asset - New asset as the result of multiplication - */ - friend asset operator*( const asset& a, int64_t b ) { - asset result = a; - result *= b; - return result; - } - - - /** - * Multiplication operator, with a number preceeding - * - * @brief Multiplication operator, with a number preceeding - * @param a - The multiplier for the asset's amount - * @param b - The asset to be multiplied - * @return asset - New asset as the result of multiplication - */ - friend asset operator*( int64_t b, const asset& a ) { - asset result = a; - result *= b; - return result; - } - - /** - * Division assignment operator. Divide the amount of this asset with a number and then assign the value to itself. - * - * @brief Division assignment operator, with a number - * @param a - The divisor for the asset's amount - * @return asset - Reference to this asset - * @post The amount of this asset is divided by a - */ - asset& operator/=( int64_t a ) { - eosio_assert( a != 0, "divide by zero" ); - eosio_assert( !(amount == std::numeric_limits::min() && a == -1), "signed division overflow" ); - amount /= a; - return *this; - } - - /** - * Division operator, with a number proceeding - * - * @brief Division operator, with a number proceeding - * @param a - The asset to be divided - * @param b - The divisor for the asset's amount - * @return asset - New asset as the result of division - */ - friend asset operator/( const asset& a, int64_t b ) { - asset result = a; - result /= b; - return result; - } - - /** - * Division operator, with another asset - * - * @brief Division operator, with another asset - * @param a - The asset which amount acts as the dividend - * @param b - The asset which amount acts as the divisor - * @return int64_t - the resulted amount after the division - * @pre Both asset must have the same symbol - */ - friend int64_t operator/( const asset& a, const asset& b ) { - eosio_assert( a.symbol == b.symbol, "comparison of assets with different symbols is not allowed" ); - return a.amount / b.amount; - } - - /** - * Equality operator - * - * @brief Equality operator - * @param a - The first asset to be compared - * @param b - The second asset to be compared - * @return true - if both asset has the same amount - * @return false - otherwise - * @pre Both asset must have the same symbol - */ - friend bool operator==( const asset& a, const asset& b ) { - eosio_assert( a.symbol == b.symbol, "comparison of assets with different symbols is not allowed" ); - return a.amount == b.amount; - } - - /** - * Inequality operator - * - * @brief Inequality operator - * @param a - The first asset to be compared - * @param b - The second asset to be compared - * @return true - if both asset doesn't have the same amount - * @return false - otherwise - * @pre Both asset must have the same symbol - */ - friend bool operator!=( const asset& a, const asset& b ) { - return !( a == b); - } - - /** - * Less than operator - * - * @brief Less than operator - * @param a - The first asset to be compared - * @param b - The second asset to be compared - * @return true - if the first asset's amount is less than the second asset amount - * @return false - otherwise - * @pre Both asset must have the same symbol - */ - friend bool operator<( const asset& a, const asset& b ) { - eosio_assert( a.symbol == b.symbol, "comparison of assets with different symbols is not allowed" ); - return a.amount < b.amount; - } - - /** - * Less or equal to operator - * - * @brief Less or equal to operator - * @param a - The first asset to be compared - * @param b - The second asset to be compared - * @return true - if the first asset's amount is less or equal to the second asset amount - * @return false - otherwise - * @pre Both asset must have the same symbol - */ - friend bool operator<=( const asset& a, const asset& b ) { - eosio_assert( a.symbol == b.symbol, "comparison of assets with different symbols is not allowed" ); - return a.amount <= b.amount; - } - - /** - * Greater than operator - * - * @brief Greater than operator - * @param a - The first asset to be compared - * @param b - The second asset to be compared - * @return true - if the first asset's amount is greater than the second asset amount - * @return false - otherwise - * @pre Both asset must have the same symbol - */ - friend bool operator>( const asset& a, const asset& b ) { - eosio_assert( a.symbol == b.symbol, "comparison of assets with different symbols is not allowed" ); - return a.amount > b.amount; - } - - /** - * Greater or equal to operator - * - * @brief Greater or equal to operator - * @param a - The first asset to be compared - * @param b - The second asset to be compared - * @return true - if the first asset's amount is greater or equal to the second asset amount - * @return false - otherwise - * @pre Both asset must have the same symbol - */ - friend bool operator>=( const asset& a, const asset& b ) { - eosio_assert( a.symbol == b.symbol, "comparison of assets with different symbols is not allowed" ); - return a.amount >= b.amount; - } - - /** - * %Print the asset - * - * @brief %Print the asset - */ - void print()const { - int64_t p = (int64_t)symbol.precision(); - int64_t p10 = 1; - while( p > 0 ) { - p10 *= 10; --p; - } - p = (int64_t)symbol.precision(); - - char fraction[p+1]; - fraction[p] = '\0'; - auto change = amount % p10; - - for( int64_t i = p -1; i >= 0; --i ) { - fraction[i] = (change % 10) + '0'; - change /= 10; - } - printi( amount / p10 ); - prints("."); - prints_l( fraction, uint32_t(p) ); - prints(" "); - symbol.print(false); - } - - EOSLIB_SERIALIZE( asset, (amount)(symbol) ) - }; - - /** - * \struct Extended asset which stores the information of the owner of the asset - * - * @brief Extended asset which stores the information of the owner of the asset - */ - struct extended_asset : public asset { - /** - * The owner of the asset - * - * @brief The owner of the asset - */ - account_name contract; - - /** - * Get the extended symbol of the asset - * - * @brief Get the extended symbol of the asset - * @return extended_symbol - The extended symbol of the asset - */ - extended_symbol get_extended_symbol()const { return extended_symbol( symbol, contract ); } - - /** - * Default constructor - * - * @brief Construct a new extended asset object - */ - extended_asset() = default; - - /** - * Construct a new extended asset given the amount and extended symbol - * - * @brief Construct a new extended asset object - */ - extended_asset( int64_t v, extended_symbol s ):asset(v,s),contract(s.contract){} - /** - * Construct a new extended asset given the asset and owner name - * - * @brief Construct a new extended asset object - */ - extended_asset( asset a, account_name c ):asset(a),contract(c){} - - /** - * %Print the extended asset - * - * @brief %Print the extended asset - */ - void print()const { - asset::print(); - prints("@"); - printn(contract); - } - - /** - * Unary minus operator - * - * @brief Unary minus operator - * @return extended_asset - New extended asset with its amount is the negative amount of this extended asset - */ - extended_asset operator-()const { - asset r = this->asset::operator-(); - return {r, contract}; - } - - /** - * Subtraction operator. This subtracts the amount of the extended asset. - * - * @brief Subtraction operator - * @param a - The extended asset to be subtracted - * @param b - The extended asset used to subtract - * @return extended_asset - New extended asset as the result of subtraction - * @pre The owner of both extended asset need to be the same - */ - friend extended_asset operator - ( const extended_asset& a, const extended_asset& b ) { - eosio_assert( a.contract == b.contract, "type mismatch" ); - asset r = static_cast(a) - static_cast(b); - return {r, a.contract}; - } - - /** - * Addition operator. This adds the amount of the extended asset. - * - * @brief Addition operator - * @param a - The extended asset to be added - * @param b - The extended asset to be added - * @return extended_asset - New extended asset as the result of addition - * @pre The owner of both extended asset need to be the same - */ - friend extended_asset operator + ( const extended_asset& a, const extended_asset& b ) { - eosio_assert( a.contract == b.contract, "type mismatch" ); - asset r = static_cast(a) + static_cast(b); - return {r, a.contract}; - } - - EOSLIB_SERIALIZE( extended_asset, (amount)(symbol)(contract) ) - }; - -/// @} asset type -} /// namespace eosio diff --git a/contracts/eosiolib/chain.h b/contracts/eosiolib/chain.h deleted file mode 100644 index ec4f219b4b9..00000000000 --- a/contracts/eosiolib/chain.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include - -/** - * @defgroup chainapi Chain API - * @brief Defines API for querying internal chain state - * @ingroup contractdev - */ - -/** - * @defgroup chaincapi Chain C API - * @brief Defines %C API for querying internal chain state - * @ingroup chainapi - * @{ - */ - -extern "C" { - /** - * Gets the set of active producers. - * @brief Gets the set of active producers. - * - * @param producers - Pointer to a buffer of account names - * @param datalen - Byte length of buffer, when passed 0 will return the size required to store full output. - * - * @return uint32_t - Number of bytes actually populated - * @pre `producers` is a pointer to a range of memory at least `datalen` bytes long - * @post the passed in `producers` pointer gets the array of active producers. - * - * Example: - * - * @code - * account_name producers[21]; - * uint32_t bytes_populated = get_active_producers(producers, sizeof(account_name)*21); - * @endcode - */ - - uint32_t get_active_producers( account_name* producers, uint32_t datalen ); - - ///@ } chaincapi -} diff --git a/contracts/eosiolib/compiler_builtins.h b/contracts/eosiolib/compiler_builtins.h deleted file mode 100644 index c2dc09bb356..00000000000 --- a/contracts/eosiolib/compiler_builtins.h +++ /dev/null @@ -1,423 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include - -extern "C" { - /** - * @defgroup compilerbuiltinsapi Compiler Builtins API - * @ingroup mathapi - * @brief Declares int128 helper builtins generated by the toolchain. - * - * @{ - */ - - /** - * Multiply two 128 bit integers split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Multiply two 128 unsigned bit integers (which are represented as two 64 bit unsigned integers. - * @param res It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `res` is replaced with the result of multiplication - * Example: - * @code - * __int128 res = 0; - * __int128 a = 100; - * __int128 b = 100; - * __multi3(res, a, (a >> 64), b, (b >> 64)); - * printi128(&res); // Output: 10000 - * @endcode - */ - void __multi3(__int128& res, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb); - - /** - * Divide two 128 bit integers split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Divide two 128 bit integers (which are represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `res` is replaced with the result of division - * Example: - * @code - * __int128 res = 0; - * __int128 a = 100; - * __int128 b = 100; - * __divti3(res, a, (a >> 64), b, (b >> 64)); - * printi128(&res); // Output: 1 - * @endcode - */ - void __divti3(__int128& res, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb); - - /** - * Divide two 128 bit unsigned integers split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Divide two 128 unsigned bit integers (which are represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * Example: - * @code - * unsigned __int128 res = 0; - * unsigned __int128 a = 100; - * unsigned __int128 b = 100; - * __udivti3(res, a, (a >> 64), b, (b >> 64)); - * printi128(&res); // Output: 1 - * @endcode - */ - void __udivti3(unsigned __int128& res, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb); - - /** - * Perform modular arithmetic on two 128 bit integers split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Perform modular arithmetic on two 128 bit integers (which are represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `res` is replaced with the result of modulus - * Example: - * @code - * __int128 res = 0; - * __int128 a = 100; - * __int128 b = 3; - * __modti3(res, a, (a >> 64), b, (b >> 64)); - * printi128(&res); // Output: 1 - * @endcode - */ - void __modti3(__int128& res, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb); - - /** - * Perform modular arithmetic on two 128 unsigned bit integers split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Perform modular arithmetic on two 128 unsigned bit integers (which are represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `res` is replaced with the result of modulus - * Example: - * @code - * unsigned __int128 res = 0; - * unsigned __int128 a = 100; - * unsigned __int128 b = 3; - * __umodti3(res, a, (a >> 64), b, (b >> 64)); - * printi128(&res); // Output: 1 - * @endcode - */ - void __umodti3(unsigned __int128& res, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb); - -/** - * Perform logical shift left on a 128 bit integer split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Perform logical shift left on a 128 bit integer (which is represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param lo Low 64 bits of the 128 bit factor. - * @param hi High 64 bits of the 128 bit factor. - * @param shift Number of bits to shift. - * @post `res` is replaced with the result of the operation - * Example: - * @code - * __int128 res = 0; - * __int128 a = 8; - * __lshlti3(res, a, (a >> 64), 1); - * printi128(&res); // Output: 16 - * @endcode - */ - void __lshlti3(__int128& res, uint64_t lo, uint64_t hi, uint32_t shift); - - /** - * Perform logical shift right on a 128 bit integer split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Perform logical shift right on a 128 bit integer (which is represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param lo Low 64 bits of the 128 bit factor. - * @param hi High 64 bits of the 128 bit factor. - * @param shift Number of bits to shift. - * @post `res` is replaced with the result of the operation - * Example: - * @code - * __int128 res = 0; - * __int128 a = 8; - * __lshrti3(res, a, (a >> 64), 1); - * printi128(&res); // Output: 4 - * @endcode - */ - void __lshrti3(__int128& res, uint64_t lo, uint64_t hi, uint32_t shift); - -/** - * Perform arithmetic shift left on a 128 bit integer split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Perform arithmetic shift left on a 128 bit integer (which is represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param lo Low 64 bits of the 128 bit factor. - * @param hi High 64 bits of the 128 bit factor. - * @param shift Number of bits to shift. - * @post `res` is replaced with the result of the operation - * Example: - * @code - * __int128 res = 0; - * __int128 a = 8; - * __ashlti3(res, a, (a >> 64), 1); - * printi128(&res); // Output: 16 - * @endcode - */ - void __ashlti3(__int128& res, uint64_t lo, uint64_t hi, uint32_t shift); - - /** - * Perform arithmetic shift right on a 128 bit integer split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Perform arithmetic shift right on a 128 bit integer (which is represented as two 64 bit unsigned integers) - * @param res It will be replaced with the result product. - * @param lo Low 64 bits of the 128 bit factor. - * @param hi High 64 bits of the 128 bit factor. - * @param shift Number of bits to shift. - * @post `res` is replaced with the result of the operation - * Example: - * @code - * __int128 res = 0; - * __int128 a = -8; - * __ashrti3(res, a, (a >> 64), 1); - * printi128(&res); // Output: -4 - * @endcode - */ - void __ashrti3(__int128& res, uint64_t lo, uint64_t hi, uint32_t shift); - - /** - * Add two long doubles split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Add two long doubles (which are represented as two 64 bit unsigned integers) - * @param ret It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `ret` is replaced with the result of the operation - */ - void __addtf3( long double& ret, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Subtract two long doubles split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Subtract two long doubles (which are represented as two 64 bit unsigned integers) - * @param ret It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `ret` is replaced with the result of the operation - */ - void __subtf3( long double& ret, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Multiply two long doubles split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Multiply two long doubles (which are represented as two 64 bit unsigned integers) - * @param ret It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `ret` is replaced with the result of the operation - */ - void __multf3( long double& ret, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Divide two long doubles split as two 64 bit unsigned integers and assign the value to the first parameter. - * @brief Divide two long doubles (which are represented as two 64 bit unsigned integers) - * @param ret It will be replaced with the result product. - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @post `ret` is replaced with the result of the operation - */ - void __divtf3( long double& ret, uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Check equality between two doubles split as two 64 bit unsigned integers - * @brief Check equality between two doubles (which are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if a greater than b - * @return 0 if a equal to b - * @return -1 if a less than b - * @return 1 if either a or b is NaN - */ - int __eqtf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Check inequality between two doubles split as two 64 bit unsigned integers - * @brief Check inequality between two doubles (which are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if a greater than b - * @return 0 if a equal to b - * @return -1 if a less than b - * @return1 if either a or b is NaN - */ - int __netf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - - /** - * Check if the first double is greater or equal to the second double, the doubles are split as two 64 bit unsigned integers - * @brief Check if the first double is greater or equal to the second double, (the doubles are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if a greater than b - * @return 0 if a equal to b - * @return -1 if a less than b - * @return -1 if either a or b is NaN - */ - int __getf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Check if the first double is greater than the second double, the doubles are split as two 64 bit unsigned integers - * @brief Check if the first double is greater than the second double, (the doubles are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if a greater than b - * @return 0 if a equal to b - * @return -1 if a less than b - * @return 0 if either a or b is NaN - */ - int __gttf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Check if the first double is less or equal to the second double, the doubles are split as two 64 bit unsigned integers - * @brief Check if the first double is less or equal to the second double, (the doubles are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if a greater than b - * @return 0 if a equal to b - * @return -1 if a less than b - * @return 1 if either a or b is NaN - */ - int __letf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Check if the first double is less than the second double, the doubles are split as two 64 bit unsigned integers - * @brief Check if the first double is less than the second double, (the doubles are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if a greater than b - * @return 0 if a equal to b - * @return -1 if a less than b - * @return 0 if either a or b is NaN - */ - int __lttf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Compare two doubles which are split as two 64 bit unsigned integers - * @brief Compare two doubles (the doubles are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if a greater than b - * @return 0 if a equal to b - * @return -1 if a less than b - * @return 1 if either a or b is NaN - */ - int __cmptf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Check if either of the doubles is NaN, the doubles are split as two 64 bit unsigned integers - * @brief Check if either of the doubles is NaN, (the doubles are represented as two 64 bit unsigned integers) - * @param la Low 64 bits of the first 128 bit factor. - * @param ha High 64 bits of the first 128 bit factor. - * @param lb Low 64 bits of the second 128 bit factor. - * @param hb High 64 bits of the second 128 bit factor. - * @return 1 if either a or b is NaN - * @return 0 if either a or b is not NaN - */ - int __unordtf2( uint64_t la, uint64_t ha, uint64_t lb, uint64_t hb ); - - /** - * Extend float to long double - * @brief Extend float to long double - * @param ret It will be replaced with the result product. - * @param f Input float to be extended - * @post `ret` is replaced with the extended float - */ - void __extendsftf2( long double& ret, float f ); - - /** - * Extend double to long double - * @brief Extend float to long double - * @param ret It will be replaced with the result product. - * @param f Input float to be extended - * @post `ret` is replaced with the extended float - */ - void __extenddftf2( long double& ret, double f ); - - /** - * Convert long double (which are split as two 64 bit unsigned integers) into 64 bit integer - * @brief Convert long double (which are split as two 64 bit unsigned integers) into 64 bit integer - * @param l Low 64 bits of the first 128 bit factor. - * @param h High 64 bits of the first 128 bit factor. - * @return the converted 64 bit integer. - */ - int64_t __fixtfdi( uint64_t l, uint64_t h ); - - /** - * Convert long double (which are split as two 64 bit unsigned integers) into 32 bit integer - * @brief Convert long double (which are split as two 64 bit unsigned integers) into 32 bit integer - * @param l Low 64 bits of the first 128 bit factor. - * @param h High 64 bits of the first 128 bit factor. - * @return the converted 32 bit integer. - */ - int32_t __fixtfsi( uint64_t l, uint64_t h ); - - /** - * Convert long double (which are split as two 64 bit unsigned integers) into 64 bit unsigned integer - * @brief Convert long double (which are split as two 64 bit unsigned integers) into 64 bit unsigned integer - * @param l Low 64 bits of the first 128 bit factor. - * @param h High 64 bits of the first 128 bit factor. - * @return the converted 64 bit unsigned integer. - */ - uint64_t __fixunstfdi( uint64_t l, uint64_t h ); - - /** - * Convert long double (which are split as two 64 bit unsigned integers) into 32 bit unsigned integer - * @brief Convert long double (which are split as two 64 bit unsigned integers) into 32 bit unsigned integer - * @param l Low 64 bits of the first 128 bit factor. - * @param h High 64 bits of the first 128 bit factor. - * @return the converted 32 bit unsigned integer. - */ - uint32_t __fixunstfsi( uint64_t l, uint64_t h ); - - /** - * Truncate long double (which are split as two 64 bit unsigned integers) into double - * @brief Convert long double (which are split as two 64 bit unsigned integers) into double - * @param l Low 64 bits of the first 128 bit factor. - * @param h High 64 bits of the first 128 bit factor. - * @return the converted double - */ - double __trunctfdf2( uint64_t l, uint64_t h ); - - /** - * Truncate long double (which are split as two 64 bit unsigned integers) into float - * @brief Convert long double (which are split as two 64 bit unsigned integers) into float - * @param l Low 64 bits of the first 128 bit factor. - * @param h High 64 bits of the first 128 bit factor. - * @return the converted float - */ - float __trunctfsf2( uint64_t l, uint64_t h ); - - void __break_point(); - -/// @} -} // extern "C" diff --git a/contracts/eosiolib/contract.hpp b/contracts/eosiolib/contract.hpp deleted file mode 100644 index 307731bd726..00000000000 --- a/contracts/eosiolib/contract.hpp +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once - -namespace eosio { - -/** - * @defgroup contracttype Contract Type - * @ingroup types - * @brief Defines contract type which is %base class for every EOSIO contract - * - * @{ - * - */ - -/** - * @brief %Base class for EOSIO contract. - * @details %Base class for EOSIO contract. %A new contract should derive from this class, so it can make use of EOSIO_ABI macro. - */ -class contract { - public: - /** - * Construct a new contract given the contract name - * - * @brief Construct a new contract object. - * @param n - The name of this contract - */ - contract( account_name n ):_self(n){} - - /** - * - * Get this contract name - * - * @brief Get this contract name. - * @return account_name - The name of this contract - */ - inline account_name get_self()const { return _self; } - - protected: - /** - * The name of this contract - * - * @brief The name of this contract. - */ - account_name _self; -}; - -/// @} contracttype -} /// namespace eosio diff --git a/contracts/eosiolib/contracts.dox b/contracts/eosiolib/contracts.dox deleted file mode 100644 index 3bc851b6c56..00000000000 --- a/contracts/eosiolib/contracts.dox +++ /dev/null @@ -1,65 +0,0 @@ -/** - @defgroup contractdev Smart Contract API Reference - @brief Introduction to writing contracts for EOS.IO - - @section background Background - - EOS.IO contracts (aka applications) are deployed to a blockchain as pre-compiled Web Assembly (aka WASM). WASM is compiled - from C/C++ using LLVM and clang, which means that you will require knowledge of C/C++ in order to develop your blockchain - applications. While it is possible to develop in C, we strongly recommend that all developers use the EOS.IO C++ API which - provides much stronger type safety and is generally easier to read. - - @section programstructure Application Structure - - EOS.IO applications are designed around event (aka action) handlers that respond to user actions. For example, - a user might transfer tokens to another user. This event can be processed and potentially rejected by the sender, - the receiver, and the currency application itself. - - As an application developer you get to decide what actions users can take and which handlers may or must be called - in response to those events. - - - @subsection programentry Entry Points - - EOS.IO applications have a `apply` which is like `main` in traditional applications: - - ``` - extern "C" { - void init(); - void apply( uint64_t code, uint64_t action ); - } - ``` - - `apply` is given the arguments `code` and `action` which uniquely identify every event in - the system. For example, `code` could be a *currency* contract and `action` could be *transfer*. This event (code,action) - may be passed to several contracts including the `sender` and `receiver`. It is up to your application to figure - out what to do in response to such an event. - - `init` is another entry point that is called once immediately after loading the code. It is where you should perform - one-time initialization of state. - - -### Example Apply Entry Handler - - Generally speaking, you should use your entry handler to dispatch events to functions that implement the majority - of your logic and optionally reject events that your contract is unable or unwilling to accept. - - ``` - extern "C" { - void apply( uint64_t code, uint64_t action ) { - if( code == N(currency) ) { - if( action == N(transfer) ) - currency::apply_currency_transfer( current_action< currency::transfer >() ); - } else { - eosio_assert( false, "rejecting unexpected event" ); - } - } - } - ``` - - @note When defining your entry points it is required that they are placed in an `extern "C"` code block so that - c++ name mangling does not get applied to the function. - - - -*/ diff --git a/contracts/eosiolib/core_symbol.hpp.in b/contracts/eosiolib/core_symbol.hpp.in deleted file mode 100644 index 3262d2aad10..00000000000 --- a/contracts/eosiolib/core_symbol.hpp.in +++ /dev/null @@ -1,7 +0,0 @@ -/** @file - * @copyright defined in eos/LICENSE - * - * \warning This file is machine generated. DO NOT EDIT. See core_symbol.hpp.in for changes. - */ - -#define CORE_SYMBOL S(4,${CORE_SYMBOL_NAME}) \ No newline at end of file diff --git a/contracts/eosiolib/crypto.h b/contracts/eosiolib/crypto.h deleted file mode 100644 index 0133762c43b..00000000000 --- a/contracts/eosiolib/crypto.h +++ /dev/null @@ -1,240 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include -extern "C" { - -/** - * @defgroup cryptoapi Chain API - * @brief Defines API for calculating and checking hash - * @ingroup contractdev - */ - -/** - * @defgroup cryptocapi Chain C API - * @brief Defines %C API for calculating and checking hash - * @ingroup chainapi - * @{ - */ - -/** - * Tests if the sha256 hash generated from data matches the provided checksum. - * This method is optimized to a NO-OP when in fast evaluation mode. - * @brief Tests if the sha256 hash generated from data matches the provided checksum. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - `checksum256*` hash to compare to - * - * @pre **assert256 hash** of `data` equals provided `hash` parameter. - * @post Executes next statement. If was not `true`, hard return. - * - * Example: -* - * @code - * checksum hash; - * char data; - * uint32_t length; - * assert_sha256( data, length, hash ) - * //If the sha256 hash generated from data does not equal provided hash, anything below will never fire. - * eosio::print("sha256 hash generated from data equals provided hash"); - * @endcode - */ -void assert_sha256( const char* data, uint32_t length, const checksum256* hash ); - -/** - * Tests if the sha1 hash generated from data matches the provided checksum. - * This method is optimized to a NO-OP when in fast evaluation mode. - * @brief Tests if the sha1 hash generated from data matches the provided checksum. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - `checksum160*` hash to compare to - * - * @pre **sha1 hash** of `data` equals provided `hash` parameter. - * @post Executes next statement. If was not `true`, hard return. - * - * Example: -* - * @code - * checksum hash; - * char data; - * uint32_t length; - * assert_sha1( data, length, hash ) - * //If the sha1 hash generated from data does not equal provided hash, anything below will never fire. - * eosio::print("sha1 hash generated from data equals provided hash"); - * @endcode - */ -void assert_sha1( const char* data, uint32_t length, const checksum160* hash ); - -/** - * Tests if the sha512 hash generated from data matches the provided checksum. - * This method is optimized to a NO-OP when in fast evaluation mode. - * @brief Tests if the sha512 hash generated from data matches the provided checksum. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - `checksum512*` hash to compare to - * - * @pre **assert512 hash** of `data` equals provided `hash` parameter. - * @post Executes next statement. If was not `true`, hard return. - * - * Example: -* - * @code - * checksum hash; - * char data; - * uint32_t length; - * assert_sha512( data, length, hash ) - * //If the sha512 hash generated from data does not equal provided hash, anything below will never fire. - * eosio::print("sha512 hash generated from data equals provided hash"); - * @endcode - */ -void assert_sha512( const char* data, uint32_t length, const checksum512* hash ); - -/** - * Tests if the ripemod160 hash generated from data matches the provided checksum. - * @brief Tests if the ripemod160 hash generated from data matches the provided checksum. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - `checksum160*` hash to compare to - * - * @pre **assert160 hash** of `data` equals provided `hash` parameter. - * @post Executes next statement. If was not `true`, hard return. - * - * Example: -* - * @code - * checksum hash; - * char data; - * uint32_t length; - * assert_ripemod160( data, length, hash ) - * //If the ripemod160 hash generated from data does not equal provided hash, anything below will never fire. - * eosio::print("ripemod160 hash generated from data equals provided hash"); - * @endcode - */ -void assert_ripemd160( const char* data, uint32_t length, const checksum160* hash ); - -/** - * Hashes `data` using `sha256` and stores result in memory pointed to by hash. - * @brief Hashes `data` using `sha256` and stores result in memory pointed to by hash. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - Hash pointer - * - * Example: -* - * @code - * checksum calc_hash; - * sha256( data, length, &calc_hash ); - * eos_assert( calc_hash == hash, "invalid hash" ); - * @endcode - */ -void sha256( const char* data, uint32_t length, checksum256* hash ); - -/** - * Hashes `data` using `sha1` and stores result in memory pointed to by hash. - * @brief Hashes `data` using `sha1` and stores result in memory pointed to by hash. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - Hash pointer - * - * Example: -* - * @code - * checksum calc_hash; - * sha1( data, length, &calc_hash ); - * eos_assert( calc_hash == hash, "invalid hash" ); - * @endcode - */ -void sha1( const char* data, uint32_t length, checksum160* hash ); - -/** - * Hashes `data` using `sha512` and stores result in memory pointed to by hash. - * @brief Hashes `data` using `sha512` and stores result in memory pointed to by hash. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - Hash pointer - * - * Example: -* - * @code - * checksum calc_hash; - * sha512( data, length, &calc_hash ); - * eos_assert( calc_hash == hash, "invalid hash" ); - * @endcode - */ -void sha512( const char* data, uint32_t length, checksum512* hash ); - -/** - * Hashes `data` using `ripemod160` and stores result in memory pointed to by hash. - * @brief Hashes `data` using `ripemod160` and stores result in memory pointed to by hash. - * - * @param data - Data you want to hash - * @param length - Data length - * @param hash - Hash pointer - * - * Example: -* - * @code - * checksum calc_hash; - * ripemod160( data, length, &calc_hash ); - * eos_assert( calc_hash == hash, "invalid hash" ); - * @endcode - */ -void ripemd160( const char* data, uint32_t length, checksum160* hash ); - -/** - * Calculates the public key used for a given signature and hash used to create a message. - * @brief Calculates the public key used for a given signature and hash used to create a message. - * - * @param digest - Hash used to create a message - * @param sig - Signature - * @param siglen - Signature length - * @param pub - Public key - * @param publen - Public key length - * - * Example: -* - * @code - * @endcode - */ -int recover_key( const checksum256* digest, const char* sig, size_t siglen, char* pub, size_t publen ); - -/** - * Tests a given public key with the generated key from digest and the signature. - * @brief Tests a given public key with the generated key from digest and the signature. - * - * @param digest - What the key will be generated from - * @param sig - Signature - * @param siglen - Signature length - * @param pub - Public key - * @param publen - Public key length - * - * @pre **assert recovery key** of `pub` equals the key generated from the `digest` parameter - * @post Executes next statement. If was not `true`, hard return. - * - * Example: -* - * @code - * checksum digest; - * char sig; - * size_t siglen; - * char pub; - * size_t publen; - * assert_recover_key( digest, sig, siglen, pub, publen ) - * // If the given public key does not match with the generated key from digest and the signature, anything below will never fire. - * eosio::print("pub key matches the pub key generated from digest"); - * @endcode - */ -void assert_recover_key( const checksum256* digest, const char* sig, size_t siglen, const char* pub, size_t publen ); - -/// }@cryptocapi - -} diff --git a/contracts/eosiolib/datastream.hpp b/contracts/eosiolib/datastream.hpp deleted file mode 100644 index 97aed9f4cf7..00000000000 --- a/contracts/eosiolib/datastream.hpp +++ /dev/null @@ -1,1019 +0,0 @@ -/** - * @file datastream.hpp - * @copyright defined in eos/LICENSE - */ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - - -namespace eosio { - -/** - * @defgroup datastream Data Stream - * @brief Defines data stream for reading and writing data in the form of bytes - * @ingroup serialize - * @{ - */ - -/** - * %A data stream for reading and writing data in the form of bytes - * - * @brief %A data stream for reading and writing data in the form of bytes. - * @tparam T - Type of the datastream buffer - */ -template -class datastream { - public: - /** - * Construct a new datastream object given the size of the buffer and start position of the buffer - * - * @brief Construct a new datastream object - * @param start - The start position of the buffer - * @param s - The size of the buffer - */ - datastream( T start, size_t s ) - :_start(start),_pos(start),_end(start+s){} - - /** - * Skips a specified number of bytes from this stream - * - * @brief Skips a specific number of bytes from this stream - * @param s - The number of bytes to skip - */ - inline void skip( size_t s ){ _pos += s; } - - /** - * Reads a specified number of bytes from the stream into a buffer - * - * @brief Reads a specified number of bytes from this stream into a buffer - * @param d - The pointer to the destination buffer - * @param s - the number of bytes to read - * @return true - */ - inline bool read( char* d, size_t s ) { - eosio_assert( size_t(_end - _pos) >= (size_t)s, "read" ); - memcpy( d, _pos, s ); - _pos += s; - return true; - } - - /** - * Writes a specified number of bytes into the stream from a buffer - * - * @brief Writes a specified number of bytes into the stream from a buffer - * @param d - The pointer to the source buffer - * @param s - The number of bytes to write - * @return true - */ - inline bool write( const char* d, size_t s ) { - eosio_assert( _end - _pos >= (int32_t)s, "write" ); - memcpy( (void*)_pos, d, s ); - _pos += s; - return true; - } - - /** - * Writes a byte into the stream - * - * @brief Writes a byte into the stream - * @param c byte to write - * @return true - */ - inline bool put(char c) { - eosio_assert( _pos < _end, "put" ); - *_pos = c; - ++_pos; - return true; - } - - /** - * Reads a byte from the stream - * - * @brief Reads a byte from the stream - * @param c - The reference to destination byte - * @return true - */ - inline bool get( unsigned char& c ) { return get( *(char*)&c ); } - - /** - * Reads a byte from the stream - * - * @brief Reads a byte from the stream - * @param c - The reference to destination byte - * @return true - */ - inline bool get( char& c ) - { - eosio_assert( _pos < _end, "get" ); - c = *_pos; - ++_pos; - return true; - } - - /** - * Retrieves the current position of the stream - * - * @brief Retrieves the current position of the stream - * @return T - The current position of the stream - */ - T pos()const { return _pos; } - inline bool valid()const { return _pos <= _end && _pos >= _start; } - - /** - * Sets the position within the current stream - * - * @brief Sets the position within the current stream - * @param p - The offset relative to the origin - * @return true if p is within the range - * @return false if p is not within the rawnge - */ - inline bool seekp(size_t p) { _pos = _start + p; return _pos <= _end; } - - /** - * Gets the position within the current stream - * - * @brief Gets the position within the current stream - * @return p - The position within the current stream - */ - inline size_t tellp()const { return size_t(_pos - _start); } - - /** - * Returns the number of remaining bytes that can be read/skipped - * - * @brief Returns the number of remaining bytes that can be read/skipped - * @return size_t - The number of remaining bytes - */ - inline size_t remaining()const { return _end - _pos; } - private: - /** - * The start position of the buffer - * - * @brief The start position of the buffer - */ - T _start; - /** - * The current position of the buffer - * - * @brief The current position of the buffer - */ - T _pos; - /** - * The end position of the buffer - * - * @brief The end position of the buffer - */ - T _end; -}; - -/** - * @brief Specialization of datastream used to help determine the final size of a serialized value. - * Specialization of datastream used to help determine the final size of a serialized value - */ -template<> -class datastream { - public: - /** - * Construct a new specialized datastream object given the initial size - * - * @brief Construct a new specialized datastream object - * @param init_size - The initial size - */ - datastream( size_t init_size = 0):_size(init_size){} - - /** - * Increment the size by s. This behaves the same as write( const char* ,size_t s ). - * - * @brief Increase the size by s - * @param s - The amount of size to increase - * @return true - */ - inline bool skip( size_t s ) { _size += s; return true; } - - /** - * Increment the size by s. This behaves the same as skip( size_t s ) - * - * @brief Increase the size by s - * @param s - The amount of size to increase - * @return true - */ - inline bool write( const char* ,size_t s ) { _size += s; return true; } - - /** - * Increment the size by one - * - * @brief Increase the size by one - * @return true - */ - inline bool put(char ) { ++_size; return true; } - - /** - * Check validity. It's always valid - * - * @brief Check validity - * @return true - */ - inline bool valid()const { return true; } - - /** - * Set new size - * - * @brief Set new size - * @param p - The new size - * @return true - */ - inline bool seekp(size_t p) { _size = p; return true; } - - /** - * Get the size - * - * @brief Get the size - * @return size_t - The size - */ - inline size_t tellp()const { return _size; } - - /** - * Always returns 0 - * - * @brief Always returns 0 - * @return size_t - 0 - */ - inline size_t remaining()const { return 0; } - private: - /** - * The size used to determine the final size of a serialized value. - * - * @brief The size used to determine the final size of a serialized value. - */ - size_t _size; -}; - -/** - * Serialize a public_key into a stream - * - * @brief Serialize a public_key - * @param ds - The stream to write - * @param pubkey - The value to serialize - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator<<(datastream& ds, const public_key pubkey) { - ds.write( (const char*)&pubkey, sizeof(pubkey)); - return ds; -} - -/** - * Deserialize a public_key from a stream - * - * @brief Deserialize a public_key - * @param ds - The stream to read - * @param pubkey - The destination for deserialized value - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator>>(datastream& ds, public_key& pubkey) { - ds.read((char*)&pubkey, sizeof(pubkey)); - return ds; -} - -/** - * Serialize a key256 into a stream - * - * @brief Serialize a key256 - * @param ds - The stream to write - * @param d - The value to serialize - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator<<(datastream& ds, const key256& d) { - ds.write( (const char*)d.data(), d.size() ); - return ds; -} - -/** - * Deserialize a key256 from a stream - * - * @brief Deserialize a key256 - * @param ds - The stream to read - * @param d - The destination for deserialized value - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator>>(datastream& ds, key256& d) { - ds.read((char*)d.data(), d.size() ); - return ds; -} - -/** - * Serialize a bool into a stream - * - * @brief Serialize a bool into a stream - * @param ds - The stream to read - * @param d - The value to serialize - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator<<(datastream& ds, const bool& d) { - return ds << uint8_t(d); -} - -/** - * Deserialize a bool from a stream - * - * @brief Deserialize a bool - * @param ds - The stream to read - * @param d - The destination for deserialized value - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator>>(datastream& ds, bool& d) { - uint8_t t; - ds >> t; - d = t; - return ds; -} - -/** - * Serialize a checksum256 into a stream - * - * @brief Serialize a checksum256 - * @param ds - The stream to write - * @param d - The value to serialize - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator<<(datastream& ds, const checksum256& d) { - ds.write( (const char*)&d.hash[0], sizeof(d.hash) ); - return ds; -} - -/** - * Deserialize a checksum256 from a stream - * - * @brief Deserialize a checksum256 - * @param ds - The stream to read - * @param d - The destination for deserialized value - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator>>(datastream& ds, checksum256& d) { - ds.read((char*)&d.hash[0], sizeof(d.hash) ); - return ds; -} - -/** - * Serialize a string into a stream - * - * @brief Serialize a string - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator << ( DataStream& ds, const std::string& v ) { - ds << unsigned_int( v.size() ); - if (v.size()) - ds.write(v.data(), v.size()); - return ds; -} - -/** - * Deserialize a string from a stream - * - * @brief Deserialize a string - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator >> ( DataStream& ds, std::string& v ) { - std::vector tmp; - ds >> tmp; - if( tmp.size() ) - v = std::string(tmp.data(),tmp.data()+tmp.size()); - else - v = std::string(); - return ds; -} - -/** - * Serialize a fixed size array into a stream - * - * @brief Serialize a fixed size array - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam T - Type of the object contained in the array - * @tparam N - Size of the array - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator << ( DataStream& ds, const std::array& v ) { - for( const auto& i : v ) - ds << i; - return ds; -} - - -/** - * Deserialize a fixed size array from a stream - * - * @brief Deserialize a fixed size array - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @tparam T - Type of the object contained in the array - * @tparam N - Size of the array - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator >> ( DataStream& ds, std::array& v ) { - for( auto& i : v ) - ds >> i; - return ds; -} - -namespace _datastream_detail { - /** - * Check if type T is a pointer - * - * @brief Check if type T is a pointer - * @tparam T - The type to be checked - * @return true if T is a pointer - * @return false otherwise - */ - template - constexpr bool is_pointer() { - return std::is_pointer::value || - std::is_null_pointer::value || - std::is_member_pointer::value; - } - - /** - * Check if type T is a primitive type - * - * @brief Check if type T is a primitive type - * @tparam T - The type to be checked - * @return true if T is a primitive type - * @return false otherwise - */ - template - constexpr bool is_primitive() { - return std::is_arithmetic::value || - std::is_enum::value; - } -} - -/** - * Pointer should not be serialized, so this function will always throws an error - * - * @brief Deserialize a a pointer - * @param ds - The stream to read - * @tparam DataStream - Type of datastream - * @tparam T - Type of the pointer - * @return DataStream& - Reference to the datastream - * @post Throw an exception if it is a pointer - */ -template()>* = nullptr> -DataStream& operator >> ( DataStream& ds, T ) { - static_assert(!_datastream_detail::is_pointer(), "Pointers should not be serialized" ); - return ds; -} - -/** - * Serialize a fixed size array of non-primitive and non-pointer type - * - * @brief Serialize a fixed size array of non-primitive and non-pointer type - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam T - Type of the pointer - * @return DataStream& - Reference to the datastream - */ -template() && - !_datastream_detail::is_pointer()>* = nullptr> -DataStream& operator << ( DataStream& ds, const T (&v)[N] ) { - ds << unsigned_int( N ); - for( uint32_t i = 0; i < N; ++i ) - ds << v[i]; - return ds; -} - -/** - * Serialize a fixed size array of non-primitive type - * - * @brief Serialize a fixed size array of non-primitive type - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam T - Type of the pointer - * @return DataStream& - Reference to the datastream - */ -template()>* = nullptr> -DataStream& operator << ( DataStream& ds, const T (&v)[N] ) { - ds << unsigned_int( N ); - ds.write((char*)&v[0], sizeof(v)); - return ds; -} - -/** - * Deserialize a fixed size array of non-primitive and non-pointer type - * - * @brief Deserialize a fixed size array of non-primitive and non-pointer type - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam T - Type of the object contained in the array - * @tparam N - Size of the array - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ -template() && - !_datastream_detail::is_pointer()>* = nullptr> -DataStream& operator >> ( DataStream& ds, T (&v)[N] ) { - unsigned_int s; - ds >> s; - eosio_assert( N == s.value, "T[] size and unpacked size don't match"); - for( uint32_t i = 0; i < N; ++i ) - ds >> v[i]; - return ds; -} - -/** - * Deserialize a fixed size array of non-primitive type - * - * @brief Deserialize a fixed size array of non-primitive type - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam T - Type of the object contained in the array - * @tparam N - Size of the array - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ -template()>* = nullptr> -DataStream& operator >> ( DataStream& ds, T (&v)[N] ) { - unsigned_int s; - ds >> s; - eosio_assert( N == s.value, "T[] size and unpacked size don't match"); - ds.read((char*)&v[0], sizeof(v)); - return ds; -} - -/** - * Serialize a vector of char - * - * @brief Serialize a vector of char - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator << ( DataStream& ds, const vector& v ) { - ds << unsigned_int( v.size() ); - ds.write( v.data(), v.size() ); - return ds; -} - -/** - * Serialize a vector - * - * @brief Serialize a vector - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam T - Type of the object contained in the vector - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator << ( DataStream& ds, const vector& v ) { - ds << unsigned_int( v.size() ); - for( const auto& i : v ) - ds << i; - return ds; -} - -/** - * Deserialize a vector of char - * - * @brief Deserialize a vector of char - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator >> ( DataStream& ds, vector& v ) { - unsigned_int s; - ds >> s; - v.resize( s.value ); - ds.read( v.data(), v.size() ); - return ds; -} - -/** - * Deserialize a vector - * - * @brief Deserialize a vector - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @tparam T - Type of the object contained in the vector - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator >> ( DataStream& ds, vector& v ) { - unsigned_int s; - ds >> s; - v.resize(s.value); - for( auto& i : v ) - ds >> i; - return ds; -} - -template -DataStream& operator << ( DataStream& ds, const std::set& s ) { - ds << unsigned_int( s.size() ); - for( const auto& i : s ) { - ds << i; - } - return ds; -} - -template -DataStream& operator >> ( DataStream& ds, std::set& s ) { - s.clear(); - unsigned_int sz; ds >> sz; - - for( uint32_t i = 0; i < sz.value; ++i ) { - T v; - ds >> v; - s.emplace( std::move(v) ); - } - return ds; -} - -/** - * Serialize a map - * - * @brief Serialize a map - * @param ds - The stream to write - * @param m - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam K - Type of the key contained in the map - * @tparam V - Type of the value contained in the map - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator << ( DataStream& ds, const std::map& m ) { - ds << unsigned_int( m.size() ); - for( const auto& i : m ) { - ds << i.first << i.second; - } - return ds; -} - -/** - * Deserialize a map - * - * @brief Deserialize a map - * @param ds - The stream to read - * @param m - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @tparam K - Type of the key contained in the map - * @tparam V - Type of the value contained in the map - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator >> ( DataStream& ds, std::map& m ) { - m.clear(); - unsigned_int s; ds >> s; - - for (uint32_t i = 0; i < s.value; ++i) { - K k; V v; - ds >> k >> v; - m.emplace( std::move(k), std::move(v) ); - } - return ds; -} - -template -DataStream& operator << ( DataStream& ds, const boost::container::flat_set& s ) { - ds << unsigned_int( s.size() ); - for( const auto& i : s ) { - ds << i; - } - return ds; -} - -template -DataStream& operator >> ( DataStream& ds, boost::container::flat_set& s ) { - s.clear(); - unsigned_int sz; ds >> sz; - - for( uint32_t i = 0; i < sz.value; ++i ) { - T v; - ds >> v; - s.emplace( std::move(v) ); - } - return ds; -} - - -/** - * Serialize a flat map - * - * @brief Serialize a flat map - * @param ds - The stream to write - * @param m - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam K - Type of the key contained in the flat map - * @tparam V - Type of the value contained in the flat map - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator<<( DataStream& ds, const boost::container::flat_map& m ) { - ds << unsigned_int( m.size() ); - for( const auto& i : m ) - ds << i.first << i.second; - return ds; -} - -/** - * Deserialize a flat map - * - * @brief Deserialize a flat map - * @param ds - The stream to read - * @param m - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @tparam K - Type of the key contained in the flat map - * @tparam V - Type of the value contained in the flat map - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator>>( DataStream& ds, boost::container::flat_map& m ) { - m.clear(); - unsigned_int s; ds >> s; - - for( uint32_t i = 0; i < s.value; ++i ) { - K k; V v; - ds >> k >> v; - m.emplace( std::move(k), std::move(v) ); - } - return ds; -} - -/** - * Serialize a tuple - * - * @brief Serialize a tuple - * @param ds - The stream to write - * @param t - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam Args - Type of the objects contained in the tuple - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator<<( DataStream& ds, const std::tuple& t ) { - boost::fusion::for_each( t, [&]( const auto& i ) { - ds << i; - }); - return ds; -} - -/** - * Deserialize a tuple - * - * @brief Deserialize a tuple - * @param ds - The stream to read - * @param t - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @tparam Args - Type of the objects contained in the tuple - * @return DataStream& - Reference to the datastream - */ -template -DataStream& operator>>( DataStream& ds, std::tuple& t ) { - boost::fusion::for_each( t, [&]( auto& i ) { - ds >> i; - }); - return ds; -} - -/** - * Serialize a class - * - * @brief Serialize a class - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam T - Type of class - * @return DataStream& - Reference to the datastream - */ -template::value>* = nullptr> -DataStream& operator<<( DataStream& ds, const T& v ) { - boost::pfr::for_each_field(v, [&](const auto& field) { - ds << field; - }); - return ds; -} - -/** - * Deserialize a class - * - * @brief Deserialize a class - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @tparam T - Type of class - * @return DataStream& - Reference to the datastream - */ -template::value>* = nullptr> -DataStream& operator>>( DataStream& ds, T& v ) { - boost::pfr::for_each_field(v, [&](auto& field) { - ds >> field; - }); - return ds; -} - -/** - * Serialize a primitive type - * - * @brief Serialize a primitive type - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @tparam T - Type of the primitive type - * @return DataStream& - Reference to the datastream - */ -template()>* = nullptr> -DataStream& operator<<( DataStream& ds, const T& v ) { - ds.write( (const char*)&v, sizeof(T) ); - return ds; -} - -/** - * Deserialize a primitive type - * - * @brief Deserialize a primitive type - * @param ds - The stream to read - * @param v - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @tparam T - Type of the primitive type - * @return DataStream& - Reference to the datastream - */ -template()>* = nullptr> -DataStream& operator>>( DataStream& ds, T& v ) { - ds.read( (char*)&v, sizeof(T) ); - return ds; -} - -/** - * Unpack data inside a fixed size buffer as T - * - * @brief Unpack data inside a fixed size buffer as T - * @tparam T - Type of the unpacked data - * @param buffer - Pointer to the buffer - * @param len - Length of the buffer - * @return T - The unpacked data - */ -template -T unpack( const char* buffer, size_t len ) { - T result; - datastream ds(buffer,len); - ds >> result; - return result; -} - -/** - * Unpack data inside a variable size buffer as T - * - * @brief Unpack data inside a variable size buffer as T - * @tparam T - Type of the unpacked data - * @param bytes - Buffer - * @return T - The unpacked data - */ -template -T unpack( const vector& bytes ) { - return unpack( bytes.data(), bytes.size() ); -} - -/** - * Get the size of the packed data - * - * @brief Get the size of the packed data - * @tparam T - Type of the data to be packed - * @param value - Data to be packed - * @return size_t - Size of the packed data - */ -template -size_t pack_size( const T& value ) { - datastream ps; - ps << value; - return ps.tellp(); -} - -/** - * Get packed data - * - * @brief Get packed data - * @tparam T - Type of the data to be packed - * @param value - Data to be packed - * @return bytes - The packed data - */ -template -bytes pack( const T& value ) { - bytes result; - result.resize(pack_size(value)); - - datastream ds( result.data(), result.size() ); - ds << value; - return result; -} - -/** - * Serialize a checksum160 type - * - * @brief Serialize a checksum160 type - * @param ds - The stream to write - * @param cs - The value to serialize - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator<<(datastream& ds, const checksum160& cs) { - ds.write((const char*)&cs.hash[0], sizeof(cs.hash)); - return ds; -} - -/** - * Deserialize a checksum160 type - * - * @brief Deserialize a checksum160 type - * @param ds - The stream to read - * @param cs - The destination for deserialized value - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator>>(datastream& ds, checksum160& cs) { - ds.read((char*)&cs.hash[0], sizeof(cs.hash)); - return ds; -} - -/** - * Serialize a checksum512 type - * - * @brief Serialize a checksum512 type - * @param ds - The stream to write - * @param cs - The value to serialize - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator<<(datastream& ds, const checksum512& cs) { - ds.write((const char*)&cs.hash[0], sizeof(cs.hash)); - return ds; -} - -/** - * Deserialize a checksum512 type - * - * @brief Deserialize a checksum512 type - * @param ds - The stream to read - * @param cs - The destination for deserialized value - * @tparam Stream - Type of datastream buffer - * @return datastream& - Reference to the datastream - */ -template -inline datastream& operator>>(datastream& ds, checksum512& cs) { - ds.read((char*)&cs.hash[0], sizeof(cs.hash)); - return ds; -} -/// @} datastream -} diff --git a/contracts/eosiolib/db.h b/contracts/eosiolib/db.h deleted file mode 100644 index f112ef5bf6d..00000000000 --- a/contracts/eosiolib/db.h +++ /dev/null @@ -1,940 +0,0 @@ -/** - * @file db.h - * @copyright defined in eos/LICENSE - * @brief Defines C API for interfacing with blockchain database - */ -#pragma once - -#include -extern "C" { -/** - * @defgroup database Database API - * @brief Defines APIs that store and retrieve data on the blockchain - * @ingroup contractdev - * - * @defgroup databasecpp Database C++ API - * @brief Defines an interface to EOSIO database - * @ingroup database - * - * @details - * EOSIO organizes data according to the following broad structure: - * - **code** - the account name which has write permission - * - **scope** - an area where the data is stored - * - **table** - a name for the table that is being stored - * - **record** - a row in the table - */ - -/** - * @defgroup databasec Database C API - * @brief Defines %C APIs for interfacing with the database. - * @ingroup database - * - * @details Database C API provides low level interface to EOSIO database. - * - * @section tabletypes Supported Table Types - * Following are the table types supported by the C API: - * 1. Primary Table - * - 64-bit integer key - * 2. Secondary Index Table - * - 64-bit integer key - * - 128-bit integer key - * - 256-bit integer key - * - double key - * - long double key - * @{ - */ - -/** - * - * Store a record in a primary 64-bit integer index table - * - * @brief Store a record in a primary 64-bit integer index table - * @param scope - The scope where the table resides (implied to be within the code of the current receiver) - * @param table - The table name - * @param payer - The account that pays for the storage costs - * @param id - ID of the entry - * @param data - Record to store - * @param len - Size of data - * @pre `data` is a valid pointer to a range of memory at least `len` bytes long - * @pre `*((uint64_t*)data)` stores the primary key - * @return iterator to the newly created table row - * @post a new entry is created in the table - */ -int32_t db_store_i64(account_name scope, table_name table, account_name payer, uint64_t id, const void* data, uint32_t len); - -/** - * - * Update a record in a primary 64-bit integer index table - * - * @brief Update a record in a primary 64-bit integer index table - * @param iterator - Iterator to the table row containing the record to update - * @param payer - The account that pays for the storage costs (use 0 to continue using current payer) - * @param data - New updated record - * @param len - Size of data - * @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 `iterator` points to an existing table row in the table - * @post the record contained in the table row pointed to by `iterator` is replaced with the new updated record - */ -void db_update_i64(int32_t iterator, account_name payer, const void* data, uint32_t len); - -/** - * - * Remove a record from a primary 64-bit integer index table - * - * @brief Remove a record from a primary 64-bit integer index table - * @param iterator - Iterator to the table row to remove - * @pre `iterator` points to an existing table row in the table - * @post the table row pointed to by `iterator` is removed and the associated storage costs are refunded to the payer - * - * Example: - * - * @code - * int32_t itr = db_find_i64(receiver, receiver, table1, N(alice)); - * eosio_assert(itr >= 0, "Alice cannot be removed since she was already not found in the table"); - * db_remove_i64(itr); - * @endcode - */ -void db_remove_i64(int32_t iterator); - -/** - * - * Get a record in a primary 64-bit integer index table - * - * @brief Get a record in a primary 64-bit integer index table - * @param iterator - The iterator to the table row containing the record to retrieve - * @param data - Pointer to the buffer which will be filled with the retrieved record - * @param len - Size of the buffer - * @return size of the data copied into the buffer if `len > 0`, or size of the retrieved record if `len == 0`. - * @pre `iterator` points to an existing table row in the table - * @pre `data` is a valid pointer to a range of memory at least `len` bytes long - * @post `data` will be filled with the retrieved record (truncated to the first `len` bytes if necessary) - * - * Example: - * - * @code - * char value[50]; - * auto len = db_get_i64(itr, value, 0); - * eosio_assert(len <= 50, "buffer to small to store retrieved record"); - * db_get_i64(itr, value, len); - * @endcode - */ -int32_t db_get_i64(int32_t iterator, const void* data, uint32_t len); - -/** - * - * Find the table row following the referenced table row in a primary 64-bit integer index table - * - * @brief Find the table row following the referenced table row in a primary 64-bit integer index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the next table row - * @return iterator to the table row following the referenced table row (or the end iterator of the table if the referenced table row is the last one in the table) - * @pre `iterator` points to an existing table row in the table - * @post `*primary` will be replaced with the primary key of the table row following the referenced table row if it exists, otherwise `*primary` will be left untouched - * - * Example: - * - * @code - * int32_t charlie_itr = db_find_i64(receiver, receiver, table1, N(charlie)); - * // expect nothing after charlie - * uint64_t prim = 0 - * int32_t end_itr = db_next_i64(charlie_itr, &prim); - * eosio_assert(end_itr < -1, "Charlie was not the last entry in the table"); - * @endcode - */ -int32_t db_next_i64(int32_t iterator, uint64_t* primary); - -/** - * - * Find the table row preceding the referenced table row in a primary 64-bit integer index table - * - * @brief Find the table row preceding the referenced table row in a primary 64-bit integer index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the previous table row - * @return iterator to the table row preceding the referenced table row assuming one exists (it will return -1 if the referenced table row is the first one in the table) - * @pre `iterator` points to an existing table row in the table or it is the end iterator of the table - * @post `*primary` will be replaced with the primary key of the table row preceding the referenced table row if it exists, otherwise `*primary` will be left untouched - * - * Example: - * - * @code - * uint64_t prim = 0; - * int32_t itr_prev = db_previous_i64(itr, &prim); - * @endcode - */ -int32_t db_previous_i64(int32_t iterator, uint64_t* primary); - -/** - * - * Find a table row in a primary 64-bit integer index table by primary key - * - * @brief Find a table row in a primary 64-bit integer index table by primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param id - The primary key of the table row to look up - * @return iterator to the table row with a primary key equal to `id` or the end iterator of the table if the table row could not be found - * - * Example: - * - * @code - * int itr = db_find_i64(receiver, receiver, table1, N(charlie)); - * @endcode - */ -int32_t db_find_i64(account_name code, account_name scope, table_name table, uint64_t id); - -/** - * - * Find the table row in a primary 64-bit integer index table that matches the lowerbound condition for a given primary key - * The table row that matches the lowerbound condition is the first table row in the table with the lowest primary key that is >= the given key - * - * @brief Find the table row in a primary 64-bit integer index table that matches the lowerbound condition for a given primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param id - The primary key used to determine the lowerbound - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_lowerbound_i64(account_name code, account_name scope, table_name table, uint64_t id); - -/** - * - * Find the table row in a primary 64-bit integer index table that matches the upperbound condition for a given primary key - * The table row that matches the upperbound condition is the first table row in the table with the lowest primary key that is > the given key - * - * @brief Find the table row in a primary 64-bit integer index table that matches the upperbound condition for a given primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param id - The primary key used to determine the upperbound - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_upperbound_i64(account_name code, account_name scope, table_name table, uint64_t id); - -/** - * - * Get an iterator representing just-past-the-end of the last table row of a primary 64-bit integer index table - * - * @brief Get an iterator representing just-past-the-end of the last table row of a primary 64-bit integer index table - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @return end iterator of the table - */ -int32_t db_end_i64(account_name code, account_name scope, table_name table); - -/** - * - * Store an association of a 64-bit integer secondary key to a primary key in a secondary 64-bit integer index table - * - * @brief Store an association of a 64-bit integer secondary key to a primary key in a secondary 64-bit integer index table - * @param scope - The scope where the table resides (implied to be within the code of the current receiver) - * @param table - The table name - * @param payer - The account that pays for the storage costs - * @param id - The primary key to which to associate the secondary key - * @param secondary - Pointer to the secondary key - * @return iterator to the newly created table row - * @post new secondary key association between primary key `id` and secondary key `*secondary` is created in the secondary 64-bit integer index table - */ -int32_t db_idx64_store(account_name scope, table_name table, account_name payer, uint64_t id, const uint64_t* secondary); - -/** - * - * Update an association for a 64-bit integer secondary key to a primary key in a secondary 64-bit integer index table - * - * @brief Update an association for a 64-bit integer secondary key to a primary key in a secondary 64-bit integer index table - * @param iterator - The iterator to the table row containing the secondary key association to update - * @param payer - The account that pays for the storage costs (use 0 to continue using current payer) - * @param secondary - Pointer to the **new** secondary key that will replace the existing one of the association - * @pre `iterator` points to an existing table row in the table - * @post the secondary key of the table row pointed to by `iterator` is replaced by `*secondary` - */ -void db_idx64_update(int32_t iterator, account_name payer, const uint64_t* secondary); - -/** - * - * Remove a table row from a secondary 64-bit integer index table - * - * @brief Remove a table row from a secondary 64-bit integer index table - * @param iterator - Iterator to the table row to remove - * @pre `iterator` points to an existing table row in the table - * @post the table row pointed to by `iterator` is removed and the associated storage costs are refunded to the payer - */ -void db_idx64_remove(int32_t iterator); - -/** - * - * Find the table row following the referenced table row in a secondary 64-bit integer index table - * - * @brief Find the table row following the referenced table row in a secondary 64-bit integer index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the next table row - * @return iterator to the table row following the referenced table row (or the end iterator of the table if the referenced table row is the last one in the table) - * @pre `iterator` points to an existing table row in the table - * @post `*primary` will be replaced with the primary key of the table row following the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx64_next(int32_t iterator, uint64_t* primary); - -/** - * - * Find the table row preceding the referenced table row in a secondary 64-bit integer index table - * - * @brief Find the table row preceding the referenced table row in a secondary 64-bit integer index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the previous table row - * @return iterator to the table row preceding the referenced table row assuming one exists (it will return -1 if the referenced table row is the first one in the table) - * @pre `iterator` points to an existing table row in the table or it is the end iterator of the table - * @post `*primary` will be replaced with the primary key of the table row preceding the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx64_previous(int32_t iterator, uint64_t* primary); - -/** - * - * Find a table row in a secondary 64-bit integer index table by primary key - * - * @brief Find a table row in a secondary 64-bit integer index table by primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to a `uint64_t` variable which will have its value set to the secondary key of the found table row - * @param primary - The primary key of the table row to look up - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @return iterator to the table row with a primary key equal to `id` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx64_find_primary(account_name code, account_name scope, table_name table, uint64_t* secondary, uint64_t primary); - -/** - * - * Find a table row in a secondary 64-bit integer index table by secondary key - * - * @brief Find a table row in a secondary 64-bit integer index table by secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key used to lookup the table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the first table row with a secondary key equal to `*secondary` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx64_find_secondary(account_name code, account_name scope, table_name table, const uint64_t* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary 64-bit integer index table that matches the lowerbound condition for a given secondary key - * The table row that matches the lowerbound condition is the first table row in the table with the lowest secondary key that is >= the given key - * - * @brief Find the table row in a secondary 64-bit integer index table that matches the lowerbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the lowerbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx64_lowerbound(account_name code, account_name scope, table_name table, uint64_t* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary 64-bit integer index table that matches the upperbound condition for a given secondary key - * The table row that matches the upperbound condition is the first table row in the table with the lowest secondary key that is > the given key - * - * @brief Find the table row in a secondary 64-bit integer index table that matches the upperbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the upperbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx64_upperbound(account_name code, account_name scope, table_name table, uint64_t* secondary, uint64_t* primary); - -/** - * - * Get an end iterator representing just-past-the-end of the last table row of a secondary 64-bit integer index table - * - * @brief Get an end iterator representing just-past-the-end of the last table row of a secondary 64-bit integer index table - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @return end iterator of the table - */ -int32_t db_idx64_end(account_name code, account_name scope, table_name table); - - - -/** - * - * Store an association of a 128-bit integer secondary key to a primary key in a secondary 128-bit integer index table - * - * @brief Store an association of a 128-bit integer secondary key to a primary key in a secondary 128-bit integer index table - * @param scope - The scope where the table resides (implied to be within the code of the current receiver) - * @param table - The table name - * @param payer - The account that pays for the storage costs - * @param id - The primary key to which to associate the secondary key - * @param secondary - Pointer to the secondary key - * @return iterator to the newly created table row - * @post new secondary key association between primary key `id` and secondary key `*secondary` is created in the secondary 128-bit integer index table - */ -int32_t db_idx128_store(account_name scope, table_name table, account_name payer, uint64_t id, const uint128_t* secondary); - -/** - * - * Update an association for a 128-bit integer secondary key to a primary key in a secondary 128-bit integer index table - * - * @brief Update an association for a 128-bit integer secondary key to a primary key in a secondary 128-bit integer index table - * @param iterator - The iterator to the table row containing the secondary key association to update - * @param payer - The account that pays for the storage costs (use 0 to continue using current payer) - * @param secondary - Pointer to the **new** secondary key that will replace the existing one of the association - * @pre `iterator` points to an existing table row in the table - * @post the secondary key of the table row pointed to by `iterator` is replaced by `*secondary` - */ -void db_idx128_update(int32_t iterator, account_name payer, const uint128_t* secondary); - -/** - * - * Remove a table row from a secondary 128-bit integer index table - * - * @brief Remove a table row from a secondary 128-bit integer index table - * @param iterator - Iterator to the table row to remove - * @pre `iterator` points to an existing table row in the table - * @post the table row pointed to by `iterator` is removed and the associated storage costs are refunded to the payer - */ -void db_idx128_remove(int32_t iterator); - -/** - * - * Find the table row following the referenced table row in a secondary 128-bit integer index table - * - * @brief Find the table row following the referenced table row in a secondary 128-bit integer index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the next table row - * @return iterator to the table row following the referenced table row (or the end iterator of the table if the referenced table row is the last one in the table) - * @pre `iterator` points to an existing table row in the table - * @post `*primary` will be replaced with the primary key of the table row following the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx128_next(int32_t iterator, uint64_t* primary); - -/** - * - * Find the table row preceding the referenced table row in a secondary 128-bit integer index table - * - * @brief Find the table row preceding the referenced table row in a secondary 128-bit integer index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the previous table row - * @return iterator to the table row preceding the referenced table row assuming one exists (it will return -1 if the referenced table row is the first one in the table) - * @pre `iterator` points to an existing table row in the table or it is the end iterator of the table - * @post `*primary` will be replaced with the primary key of the table row preceding the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx128_previous(int32_t iterator, uint64_t* primary); - -/** - * - * Find a table row in a secondary 128-bit integer index table by primary key - * - * @brief Find a table row in a secondary 128-bit integer index table by primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to a `uint128_t` variable which will have its value set to the secondary key of the found table row - * @param primary - The primary key of the table row to look up - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @return iterator to the table row with a primary key equal to `id` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx128_find_primary(account_name code, account_name scope, table_name table, uint128_t* secondary, uint64_t primary); - -/** - * - * Find a table row in a secondary 128-bit integer index table by secondary key - * - * @brief Find a table row in a secondary 128-bit integer index table by secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key used to lookup the table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the first table row with a secondary key equal to `*secondary` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx128_find_secondary(account_name code, account_name scope, table_name table, const uint128_t* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary 128-bit integer index table that matches the lowerbound condition for a given secondary key - * The table row that matches the lowerbound condition is the first table row in the table with the lowest secondary key that is >= the given key - * - * @brief Find the table row in a secondary 128-bit integer index table that matches the lowerbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the lowerbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx128_lowerbound(account_name code, account_name scope, table_name table, uint128_t* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary 128-bit integer index table that matches the upperbound condition for a given secondary key - * The table row that matches the upperbound condition is the first table row in the table with the lowest secondary key that is > the given key - * - * @brief Find the table row in a secondary 128-bit integer index table that matches the upperbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the upperbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx128_upperbound(account_name code, account_name scope, table_name table, uint128_t* secondary, uint64_t* primary); - -/** - * - * Get an end iterator representing just-past-the-end of the last table row of a secondary 128-bit integer index table - * - * @brief Get an end iterator representing just-past-the-end of the last table row of a secondary 128-bit integer index table - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @return end iterator of the table - */ -int32_t db_idx128_end(account_name code, account_name scope, table_name table); - -/** - * - * Store an association of a 256-bit secondary key to a primary key in a secondary 256-bit index table - * - * @brief Store an association of a 256-bit secondary key to a primary key in a secondary 256-bit index table - * @param scope - The scope where the table resides (implied to be within the code of the current receiver) - * @param table - The table name - * @param payer - The account that pays for the storage costs - * @param id - The primary key to which to associate the secondary key - * @param data - Pointer to the secondary key data stored as an array of 2 `uint128_t` integers - * @param data_len - Must be set to 2 - * @return iterator to the newly created table row - * @post new secondary key association between primary key `id` and the specified secondary key is created in the secondary 256-bit index table - */ -int32_t db_idx256_store(account_name scope, table_name table, account_name payer, uint64_t id, const uint128_t* data, uint32_t data_len ); - -/** - * - * Update an association for a 256-bit secondary key to a primary key in a secondary 256-bit index table - * - * @brief Update an association for a 256-bit secondary key to a primary key in a secondary 256-bit index table - * @param iterator - The iterator to the table row containing the secondary key association to update - * @param payer - The account that pays for the storage costs (use 0 to continue using current payer) - * @param data - Pointer to the **new** secondary key data (which is stored as an array of 2 `uint128_t` integers) that will replace the existing one of the association - * @param data_len - Must be set to 2 - * @pre `iterator` points to an existing table row in the table - * @post the secondary key of the table row pointed to by `iterator` is replaced by the specified secondary key - */ -void db_idx256_update(int32_t iterator, account_name payer, const uint128_t* data, uint32_t data_len); - -/** - * - * Remove a table row from a secondary 256-bit index table - * - * @brief Remove a table row from a secondary 256-bit index table - * @param iterator - Iterator to the table row to remove - * @pre `iterator` points to an existing table row in the table - * @post the table row pointed to by `iterator` is removed and the associated storage costs are refunded to the payer - */ -void db_idx256_remove(int32_t iterator); - -/** - * - * Find the table row following the referenced table row in a secondary 256-bit index table - * - * @brief Find the table row following the referenced table row in a secondary 256-bit index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the next table row - * @return iterator to the table row following the referenced table row (or the end iterator of the table if the referenced table row is the last one in the table) - * @pre `iterator` points to an existing table row in the table - * @post `*primary` will be replaced with the primary key of the table row following the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx256_next(int32_t iterator, uint64_t* primary); - -/** - * - * Find the table row preceding the referenced table row in a secondary 256-bit index table - * - * @brief Find the table row preceding the referenced table row in a secondary 256-bit index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the previous table row - * @return iterator to the table row preceding the referenced table row assuming one exists (it will return -1 if the referenced table row is the first one in the table) - * @pre `iterator` points to an existing table row in the table or it is the end iterator of the table - * @post `*primary` will be replaced with the primary key of the table row preceding the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx256_previous(int32_t iterator, uint64_t* primary); - -/** - * - * Find a table row in a secondary 256-bit index table by primary key - * - * @brief Find a table row in a secondary 128-bit integer index table by primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param data - Pointer to the an array of 2 `uint128_t` integers which will act as the buffer to hold the retrieved secondary key of the found table row - * @param data_len - Must be set to 2 - * @param primary - The primary key of the table row to look up - * @post If and only if the table row is found, the buffer pointed to by `data` will be filled with the secondary key of the found table row - * @return iterator to the table row with a primary key equal to `id` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx256_find_primary(account_name code, account_name scope, table_name table, uint128_t* data, uint32_t data_len, uint64_t primary); - -/** - * - * Find a table row in a secondary 256-bit index table by secondary key - * - * @brief Find a table row in a secondary 256-bit index table by secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param data - Pointer to the secondary key data (which is stored as an array of 2 `uint128_t` integers) used to lookup the table row - * @param data_len - Must be set to 2 - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the first table row with a secondary key equal to the specified secondary key or the end iterator of the table if the table row could not be found - */ -int32_t db_idx256_find_secondary(account_name code, account_name scope, table_name table, const uint128_t* data, uint32_t data_len, uint64_t* primary); - -/** - * - * Find the table row in a secondary 256-bit index table that matches the lowerbound condition for a given secondary key - * The table row that matches the lowerbound condition is the first table row in the table with the lowest secondary key that is >= the given key (uses lexicographical ordering on the 256-bit keys) - * - * @brief Find the table row in a secondary 256-bit index table that matches the lowerbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param data - Pointer to the secondary key data (which is stored as an array of 2 `uint128_t` integers) first used to determine the lowerbound and which is then replaced with the secondary key of the found table row - * @param data_len - Must be set to 2 - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, the buffer pointed to by `data` will be filled with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx256_lowerbound(account_name code, account_name scope, table_name table, uint128_t* data, uint32_t data_len, uint64_t* primary); - -/** - * - * Find the table row in a secondary 256-bit index table that matches the upperbound condition for a given secondary key - * The table row that matches the upperbound condition is the first table row in the table with the lowest secondary key that is > the given key (uses lexicographical ordering on the 256-bit keys) - * - * @brief Find the table row in a secondary 256-bit index table that matches the upperbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param data - Pointer to the secondary key data (which is stored as an array of 2 `uint128_t` integers) first used to determine the upperbound and which is then replaced with the secondary key of the found table row - * @param data_len - Must be set to 2 - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, the buffer pointed to by `data` will be filled with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx256_upperbound(account_name code, account_name scope, table_name table, uint128_t* data, uint32_t data_len, uint64_t* primary); - -/** - * - * Get an end iterator representing just-past-the-end of the last table row of a secondary 256-bit index table - * - * @brief Get an end iterator representing just-past-the-end of the last table row of a secondary 256-bit index table - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @return end iterator of the table - */ -int32_t db_idx256_end(account_name code, account_name scope, table_name table); - -/** - * - * Store an association of a double-precision floating-point secondary key to a primary key in a secondary double-precision floating-point index table - * - * @brief Store an association of a double-precision floating-point secondary key to a primary key in a secondary double-precision floating-point index table - * @param scope - The scope where the table resides (implied to be within the code of the current receiver) - * @param table - The table name - * @param payer - The account that pays for the storage costs - * @param id - The primary key to which to associate the secondary key - * @param secondary - Pointer to the secondary key - * @return iterator to the newly created table row - * @post new secondary key association between primary key `id` and secondary key `*secondary` is created in the secondary double-precision floating-point index table - */ -int32_t db_idx_double_store(account_name scope, table_name table, account_name payer, uint64_t id, const double* secondary); - -/** - * - * Update an association for a double-precision floating-point secondary key to a primary key in a secondary double-precision floating-point index table - * - * @brief Update an association for a double-precision floating-point secondary key to a primary key in a secondary double-precision floating-point index table - * @param iterator - The iterator to the table row containing the secondary key association to update - * @param payer - The account that pays for the storage costs (use 0 to continue using current payer) - * @param secondary - Pointer to the **new** secondary key that will replace the existing one of the association - * @pre `iterator` points to an existing table row in the table - * @post the secondary key of the table row pointed to by `iterator` is replaced by `*secondary` - */ -void db_idx_double_update(int32_t iterator, account_name payer, const double* secondary); - -/** - * - * Remove a table row from a secondary double-precision floating-point index table - * - * @brief Remove a table row from a secondary double-precision floating-point index table - * @param iterator - Iterator to the table row to remove - * @pre `iterator` points to an existing table row in the table - * @post the table row pointed to by `iterator` is removed and the associated storage costs are refunded to the payer - */ -void db_idx_double_remove(int32_t iterator); - -/** - * - * Find the table row following the referenced table row in a secondary double-precision floating-point index table - * - * @brief Find the table row following the referenced table row in a secondary double-precision floating-point index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the next table row - * @return iterator to the table row following the referenced table row (or the end iterator of the table if the referenced table row is the last one in the table) - * @pre `iterator` points to an existing table row in the table - * @post `*primary` will be replaced with the primary key of the table row following the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx_double_next(int32_t iterator, uint64_t* primary); - -/** - * - * Find the table row preceding the referenced table row in a secondary double-precision floating-point index table - * - * @brief Find the table row preceding the referenced table row in a secondary double-precision floating-point index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the previous table row - * @return iterator to the table row preceding the referenced table row assuming one exists (it will return -1 if the referenced table row is the first one in the table) - * @pre `iterator` points to an existing table row in the table or it is the end iterator of the table - * @post `*primary` will be replaced with the primary key of the table row preceding the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx_double_previous(int32_t iterator, uint64_t* primary); - -/** - * - * Find a table row in a secondary double-precision floating-point index table by primary key - * - * @brief Find a table row in a secondary double-precision floating-point index table by primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to a `double` variable which will have its value set to the secondary key of the found table row - * @param primary - The primary key of the table row to look up - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @return iterator to the table row with a primary key equal to `id` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_double_find_primary(account_name code, account_name scope, table_name table, double* secondary, uint64_t primary); - -/** - * - * Find a table row in a secondary double-precision floating-point index table by secondary key - * - * @brief Find a table row in a secondary double-precision floating-point index table by secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key used to lookup the table row - * @param primary - Pointer to a `double` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the first table row with a secondary key equal to `*secondary` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_double_find_secondary(account_name code, account_name scope, table_name table, const double* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary double-precision floating-point index table that matches the lowerbound condition for a given secondary key - * The table row that matches the lowerbound condition is the first table row in the table with the lowest secondary key that is >= the given key - * - * @brief Find the table row in a secondary double-precision floating-point index table that matches the lowerbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the lowerbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_double_lowerbound(account_name code, account_name scope, table_name table, double* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary double-precision floating-point index table that matches the upperbound condition for a given secondary key - * The table row that matches the upperbound condition is the first table row in the table with the lowest secondary key that is > the given key - * - * @brief Find the table row in a secondary double-precision floating-point index table that matches the upperbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the upperbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_double_upperbound(account_name code, account_name scope, table_name table, double* secondary, uint64_t* primary); - -/** - * - * Get an end iterator representing just-past-the-end of the last table row of a secondary double-precision floating-point index table - * - * @brief Get an end iterator representing just-past-the-end of the last table row of a secondary double-precision floating-point index table - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @return end iterator of the table - */ -int32_t db_idx_double_end(account_name code, account_name scope, table_name table); - -/** - * - * Store an association of a quadruple-precision floating-point secondary key to a primary key in a secondary quadruple-precision floating-point index table - * - * @brief Store an association of a quadruple-precision floating-point secondary key to a primary key in a secondary quadruple-precision floating-point index table - * @param scope - The scope where the table resides (implied to be within the code of the current receiver) - * @param table - The table name - * @param payer - The account that pays for the storage costs - * @param id - The primary key to which to associate the secondary key - * @param secondary - Pointer to the secondary key - * @return iterator to the newly created table row - * @post new secondary key association between primary key `id` and secondary key `*secondary` is created in the secondary quadruple-precision floating-point index table - */ -int32_t db_idx_long_double_store(account_name scope, table_name table, account_name payer, uint64_t id, const long double* secondary); - -/** - * - * Update an association for a quadruple-precision floating-point secondary key to a primary key in a secondary quadruple-precision floating-point index table - * - * @brief Update an association for a quadruple-precision floating-point secondary key to a primary key in a secondary quadruple-precision floating-point index table - * @param iterator - The iterator to the table row containing the secondary key association to update - * @param payer - The account that pays for the storage costs (use 0 to continue using current payer) - * @param secondary - Pointer to the **new** secondary key that will replace the existing one of the association - * @pre `iterator` points to an existing table row in the table - * @post the secondary key of the table row pointed to by `iterator` is replaced by `*secondary` - */ -void db_idx_long_double_update(int32_t iterator, account_name payer, const long double* secondary); - -/** - * - * Remove a table row from a secondary quadruple-precision floating-point index table - * - * @brief Remove a table row from a secondary quadruple-precision floating-point index table - * @param iterator - Iterator to the table row to remove - * @pre `iterator` points to an existing table row in the table - * @post the table row pointed to by `iterator` is removed and the associated storage costs are refunded to the payer - */ -void db_idx_long_double_remove(int32_t iterator); - -/** - * - * Find the table row following the referenced table row in a secondary quadruple-precision floating-point index table - * - * @brief Find the table row following the referenced table row in a secondary quadruple-precision floating-point index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the next table row - * @return iterator to the table row following the referenced table row (or the end iterator of the table if the referenced table row is the last one in the table) - * @pre `iterator` points to an existing table row in the table - * @post `*primary` will be replaced with the primary key of the table row following the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx_long_double_next(int32_t iterator, uint64_t* primary); - -/** - * - * Find the table row preceding the referenced table row in a secondary quadruple-precision floating-point index table - * - * @brief Find the table row preceding the referenced table row in a secondary quadruple-precision floating-point index table - * @param iterator - The iterator to the referenced table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the previous table row - * @return iterator to the table row preceding the referenced table row assuming one exists (it will return -1 if the referenced table row is the first one in the table) - * @pre `iterator` points to an existing table row in the table or it is the end iterator of the table - * @post `*primary` will be replaced with the primary key of the table row preceding the referenced table row if it exists, otherwise `*primary` will be left untouched - */ -int32_t db_idx_long_double_previous(int32_t iterator, uint64_t* primary); - -/** - * - * Find a table row in a secondary quadruple-precision floating-point index table by primary key - * - * @brief Find a table row in a secondary quadruple-precision floating-point index table by primary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to a `long double` variable which will have its value set to the secondary key of the found table row - * @param primary - The primary key of the table row to look up - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @return iterator to the table row with a primary key equal to `id` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_long_double_find_primary(account_name code, account_name scope, table_name table, long double* secondary, uint64_t primary); - -/** - * - * Find a table row in a secondary quadruple-precision floating-point index table by secondary key - * - * @brief Find a table row in a secondary quadruple-precision floating-point index table by secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key used to lookup the table row - * @param primary - Pointer to a `long double` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the first table row with a secondary key equal to `*secondary` or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_long_double_find_secondary(account_name code, account_name scope, table_name table, const long double* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary quadruple-precision floating-point index table that matches the lowerbound condition for a given secondary key - * The table row that matches the lowerbound condition is the first table row in the table with the lowest secondary key that is >= the given key - * - * @brief Find the table row in a secondary quadruple-precision floating-point index table that matches the lowerbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the lowerbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_long_double_lowerbound(account_name code, account_name scope, table_name table, long double* secondary, uint64_t* primary); - -/** - * - * Find the table row in a secondary quadruple-precision floating-point index table that matches the upperbound condition for a given secondary key - * The table row that matches the upperbound condition is the first table row in the table with the lowest secondary key that is > the given key - * - * @brief Find the table row in a secondary quadruple-precision floating-point index table that matches the upperbound condition for a given secondary key - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @param secondary - Pointer to secondary key first used to determine the upperbound and which is then replaced with the secondary key of the found table row - * @param primary - Pointer to a `uint64_t` variable which will have its value set to the primary key of the found table row - * @post If and only if the table row is found, `*secondary` will be replaced with the secondary key of the found table row - * @post If and only if the table row is found, `*primary` will be replaced with the primary key of the found table row - * @return iterator to the found table row or the end iterator of the table if the table row could not be found - */ -int32_t db_idx_long_double_upperbound(account_name code, account_name scope, table_name table, long double* secondary, uint64_t* primary); - -/** - * - * Get an end iterator representing just-past-the-end of the last table row of a secondary quadruple-precision floating-point index table - * - * @brief Get an end iterator representing just-past-the-end of the last table row of a secondary quadruple-precision floating-point index table - * @param code - The name of the owner of the table - * @param scope - The scope where the table resides - * @param table - The table name - * @return end iterator of the table - */ -int32_t db_idx_long_double_end(account_name code, account_name scope, table_name table); - -///@} databasec -} diff --git a/contracts/eosiolib/dispatcher.hpp b/contracts/eosiolib/dispatcher.hpp deleted file mode 100644 index eadc55bc3e8..00000000000 --- a/contracts/eosiolib/dispatcher.hpp +++ /dev/null @@ -1,155 +0,0 @@ -#pragma once -#include -#include - -#include -#include - -#include -#define N(X) ::eosio::string_to_name(#X) -namespace eosio { - - template - bool dispatch( uint64_t code, uint64_t act ) { - if( code == FirstAction::get_account() && FirstAction::get_name() == act ) { - Contract().on( unpack_action_data() ); - return true; - } - return false; - } - - - /** - * This method will dynamically dispatch an incoming set of actions to - * - * ``` - * static Contract::on( ActionType ) - * ``` - * - * For this to work the Actions must be derived from eosio::contract - * - */ - template - bool dispatch( uint64_t code, uint64_t act ) { - if( code == FirstAction::get_account() && FirstAction::get_name() == act ) { - Contract().on( unpack_action_data() ); - return true; - } - return eosio::dispatch( code, act ); - } - - /** - * @defgroup dispatcher Dispatcher API - * @brief Defines functions to dispatch action to proper action handler inside a contract - * @ingroup contractdev - */ - - /** - * @defgroup dispatchercpp Dispatcher C++ API - * @brief Defines C++ functions to dispatch action to proper action handler inside a contract - * @ingroup dispatcher - * @{ - */ - - /** - * Unpack the received action and execute the correponding action handler - * - * @brief Unpack the received action and execute the correponding action handler - * @tparam T - The contract class that has the correponding action handler, this contract should be derived from eosio::contract - * @tparam Q - The namespace of the action handler function - * @tparam Args - The arguments that the action handler accepts, i.e. members of the action - * @param obj - The contract object that has the correponding action handler - * @param func - The action handler - * @return true - */ - template - bool execute_action( T* obj, void (Q::*func)(Args...) ) { - size_t size = action_data_size(); - - //using malloc/free here potentially is not exception-safe, although WASM doesn't support exceptions - constexpr size_t max_stack_buffer_size = 512; - void* buffer = nullptr; - if( size > 0 ) { - buffer = max_stack_buffer_size < size ? malloc(size) : alloca(size); - read_action_data( buffer, size ); - } - - auto args = unpack...>>( (char*)buffer, size ); - - if ( max_stack_buffer_size < size ) { - free(buffer); - } - - auto f2 = [&]( auto... a ){ - (obj->*func)( a... ); - }; - - boost::mp11::tuple_apply( f2, args ); - return true; - } - /// @} dispatcher - -// Helper macro for EOSIO_API -#define EOSIO_API_CALL( r, OP, elem ) \ - case ::eosio::string_to_name( BOOST_PP_STRINGIZE(elem) ): \ - eosio::execute_action( &thiscontract, &OP::elem ); \ - break; - -// Helper macro for EOSIO_ABI -#define EOSIO_API( TYPE, MEMBERS ) \ - BOOST_PP_SEQ_FOR_EACH( EOSIO_API_CALL, TYPE, MEMBERS ) - -/** - * @addtogroup dispatcher - * @{ - */ - -/** - * Convenient macro to create contract apply handler - * To be able to use this macro, the contract needs to be derived from eosio::contract - * - * @brief Convenient macro to create contract apply handler - * @param TYPE - The class name of the contract - * @param MEMBERS - The sequence of available actions supported by this contract - * - * Example: - * @code - * EOSIO_ABI( eosio::bios, (setpriv)(setalimits)(setglimits)(setprods)(reqauth) ) - * @endcode - */ -#define EOSIO_ABI( TYPE, MEMBERS ) \ -extern "C" { \ - void apply( uint64_t receiver, uint64_t code, uint64_t action ) { \ - auto self = receiver; \ - if( action == N(onerror)) { \ - /* onerror is only valid if it is for the "eosio" code account and authorized by "eosio"'s "active permission */ \ - eosio_assert(code == N(eosio), "onerror action's are only valid from the \"eosio\" system account"); \ - } \ - if( code == self || action == N(onerror) ) { \ - TYPE thiscontract( self ); \ - switch( action ) { \ - EOSIO_API( TYPE, MEMBERS ) \ - } \ - /* does not allow destructor of thiscontract to run: eosio_exit(0); */ \ - } \ - } \ -} \ - /// @} dispatcher - - - /* - template - struct dispatcher { - dispatcher( account_name code ):_contract(code){} - - template - void dispatch( account_name action, FuncPtr ) { - } - - T contract; - }; - - void dispatch( account_name code, account_name action, - */ - -} diff --git a/contracts/eosiolib/eosio.hpp b/contracts/eosiolib/eosio.hpp deleted file mode 100644 index 2126abb3203..00000000000 --- a/contracts/eosiolib/eosio.hpp +++ /dev/null @@ -1,11 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include -#include -#include -#include -#include -#include diff --git a/contracts/eosiolib/eosiolib.cpp b/contracts/eosiolib/eosiolib.cpp deleted file mode 100644 index 35bc7460c70..00000000000 --- a/contracts/eosiolib/eosiolib.cpp +++ /dev/null @@ -1,565 +0,0 @@ -#include "datastream.hpp" -#include "memory.hpp" -#include "privileged.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 { - - void set_blockchain_parameters(const eosio::blockchain_parameters& params) { - char buf[sizeof(eosio::blockchain_parameters)]; - eosio::datastream ds( buf, sizeof(buf) ); - ds << params; - set_blockchain_parameters_packed( buf, ds.tellp() ); - } - - void get_blockchain_parameters(eosio::blockchain_parameters& params) { - char buf[sizeof(eosio::blockchain_parameters)]; - size_t size = get_blockchain_parameters_packed( buf, sizeof(buf) ); - eosio_assert( size <= sizeof(buf), "buffer is too small" ); - eosio::datastream ds( buf, size_t(size) ); - ds >> params; - } - - void set_upgrade_parameters(const eosio::upgrade_parameters& params) { - char buf[sizeof(eosio::upgrade_parameters)]; - eosio::datastream ds( buf, sizeof(buf) ); - ds << params; - set_upgrade_parameters_packed( buf, ds.tellp() ); - } - - using ::memset; - using ::memcpy; - - - - class memory_manager // NOTE: Should never allocate another instance of memory_manager - { - friend void* ::malloc(size_t size); - friend void* ::calloc(size_t count, size_t size); - friend void* ::realloc(void* ptr, size_t size); - friend void ::free(void* ptr); - public: - memory_manager() - // NOTE: it appears that WASM has an issue with initialization lists if the object is globally allocated, - // and seems to just initialize members to 0 - : _heaps_actual_size(0) - , _active_heap(0) - , _active_free_heap(0) - { - } - - private: - class memory; - - memory* next_active_heap() - { - constexpr uint32_t wasm_page_size = 64*1024; - memory* const current_memory = _available_heaps + _active_heap; - - const uint32_t current_memory_size = reinterpret_cast(sbrk(0)); - if(static_cast(current_memory_size) < 0) - return nullptr; - - //grab up to the end of the current WASM memory page provided that it has 1KiB remaining, otherwise - // grow to end of next page - uint32_t heap_adj; - if(current_memory_size % wasm_page_size <= wasm_page_size-1024) - heap_adj = (current_memory_size + wasm_page_size) - (current_memory_size % wasm_page_size) - current_memory_size; - else - heap_adj = (current_memory_size + wasm_page_size*2) - (current_memory_size % (wasm_page_size*2)) - current_memory_size; - char* new_memory_start = reinterpret_cast(sbrk(heap_adj)); - if(reinterpret_cast(new_memory_start) == -1) { - // ensure that any remaining unallocated memory gets cleaned up - current_memory->cleanup_remaining(); - ++_active_heap; - _heaps_actual_size = _active_heap; - return nullptr; - } - - // if we can expand the current memory, keep working with it - if (current_memory->expand_memory(new_memory_start, heap_adj)) - return current_memory; - - // ensure that any remaining unallocated memory gets cleaned up - current_memory->cleanup_remaining(); - - ++_active_heap; - memory* const next = _available_heaps + _active_heap; - next->init(new_memory_start, heap_adj); - - return next; - } - - void* malloc(uint32_t size) - { - if (size == 0) - return nullptr; - - // see Note on ctor - if (_heaps_actual_size == 0) - _heaps_actual_size = _heaps_size; - - adjust_to_mem_block(size); - - // first pass of loop never has to initialize the slot in _available_heap - char* buffer = nullptr; - memory* current = nullptr; - // need to make sure - if (_active_heap < _heaps_actual_size) - { - memory* const start_heap = &_available_heaps[_active_heap]; - // only heap 0 won't be initialized already - if(_active_heap == 0 && !start_heap->is_init()) - { - start_heap->init(_initial_heap, _initial_heap_size); - } - - current = start_heap; - } - - while (current != nullptr) - { - buffer = current->malloc(size); - // done if we have a buffer - if (buffer != nullptr) - break; - - current = next_active_heap(); - } - - if (buffer == nullptr) - { - const uint32_t end_free_heap = _active_free_heap; - - do - { - buffer = _available_heaps[_active_free_heap].malloc_from_freed(size); - - if (buffer != nullptr) - break; - - if (++_active_free_heap == _heaps_actual_size) - _active_free_heap = 0; - - } while (_active_free_heap != end_free_heap); - } - - return buffer; - } - - void* realloc(void* ptr, uint32_t size) - { - if (size == 0) - { - free(ptr); - return nullptr; - } - - adjust_to_mem_block(size); - - char* realloc_ptr = nullptr; - uint32_t orig_ptr_size = 0; - if (ptr != nullptr) - { - char* const char_ptr = static_cast(ptr); - for (memory* realloc_heap = _available_heaps; realloc_heap < _available_heaps + _heaps_actual_size && realloc_heap->is_init(); ++realloc_heap) - { - if (realloc_heap->is_in_heap(char_ptr)) - { - realloc_ptr = realloc_heap->realloc_in_place(char_ptr, size, &orig_ptr_size); - - if (realloc_ptr != nullptr) - return realloc_ptr; - else - break; - } - } - } - - char* new_alloc = static_cast(malloc(size)); - if (new_alloc == nullptr) - return nullptr; - - const uint32_t copy_size = (size < orig_ptr_size) ? size : orig_ptr_size; - if (copy_size > 0) - { - memcpy(new_alloc, ptr, copy_size); - free (ptr); - } - - return new_alloc; - } - - void free(void* ptr) - { - if (ptr == nullptr) - return; - - char* const char_ptr = static_cast(ptr); - for (memory* free_heap = _available_heaps; free_heap < _available_heaps + _heaps_actual_size && free_heap->is_init(); ++free_heap) - { - if (free_heap->is_in_heap(char_ptr)) - { - free_heap->free(char_ptr); - break; - } - } - } - - void adjust_to_mem_block(uint32_t& size) - { - const uint32_t remainder = (size + _size_marker) & _rem_mem_block_mask; - if (remainder > 0) - { - size += _mem_block - remainder; - } - } - - class memory - { - public: - memory() - : _heap_size(0) - , _heap(nullptr) - , _offset(0) - { - } - - void init(char* const mem_heap, uint32_t size) - { - _heap_size = size; - _heap = mem_heap; - } - - uint32_t is_init() const - { - return _heap != nullptr; - } - - uint32_t is_in_heap(const char* const ptr) const - { - const char* const end_of_buffer = _heap + _heap_size; - const char* const first_ptr_of_buffer = _heap + _size_marker; - return ptr >= first_ptr_of_buffer && ptr < end_of_buffer; - } - - uint32_t is_capacity_remaining() const - { - return _offset + _size_marker < _heap_size; - } - - char* malloc(uint32_t size) - { - uint32_t used_up_size = _offset + size + _size_marker; - if (used_up_size > _heap_size) - { - return nullptr; - } - - buffer_ptr new_buff(&_heap[_offset + _size_marker], size, _heap + _heap_size); - _offset += size + _size_marker; - new_buff.mark_alloc(); - return new_buff.ptr(); - } - - char* malloc_from_freed(uint32_t size) - { - eosio_assert(_offset == _heap_size, "malloc_from_freed was designed to only be called after _heap was completely allocated"); - - char* current = _heap + _size_marker; - while (current != nullptr) - { - buffer_ptr current_buffer(current, _heap + _heap_size); - if (!current_buffer.is_alloc()) - { - // done if we have enough contiguous memory - if (current_buffer.merge_contiguous(size)) - { - current_buffer.mark_alloc(); - return current; - } - } - - current = current_buffer.next_ptr(); - } - - // failed to find any free memory - return nullptr; - } - - char* realloc_in_place(char* const ptr, uint32_t size, uint32_t* orig_ptr_size) - { - const char* const end_of_buffer = _heap + _heap_size; - - buffer_ptr orig_buffer(ptr, end_of_buffer); - *orig_ptr_size = orig_buffer.size(); - // is the passed in pointer valid - char* const orig_buffer_end = orig_buffer.end(); - if (orig_buffer_end > end_of_buffer) - { - *orig_ptr_size = 0; - return nullptr; - } - - if (ptr > end_of_buffer - size) - { - // cannot resize in place - return nullptr; - } - - if( *orig_ptr_size > size ) - { - // use a buffer_ptr to allocate the memory to free - char* const new_ptr = ptr + size + _size_marker; - buffer_ptr excess_to_free(new_ptr, *orig_ptr_size - size, _heap + _heap_size); - excess_to_free.mark_free(); - - return ptr; - } - // if ptr was the last allocated buffer, we can expand - else if (orig_buffer_end == &_heap[_offset]) - { - orig_buffer.size(size); - _offset += size - *orig_ptr_size; - - return ptr; - } - if (size == *orig_ptr_size ) - return ptr; - - if (!orig_buffer.merge_contiguous_if_available(size)) - // could not resize in place - return nullptr; - - orig_buffer.mark_alloc(); - return ptr; - } - - void free(char* ptr) - { - buffer_ptr to_free(ptr, _heap + _heap_size); - to_free.mark_free(); - } - - void cleanup_remaining() - { - if (_offset == _heap_size) - return; - - // take the remaining memory and act like it was allocated - const uint32_t size = _heap_size - _offset - _size_marker; - buffer_ptr new_buff(&_heap[_offset + _size_marker], size, _heap + _heap_size); - _offset = _heap_size; - new_buff.mark_free(); - } - - bool expand_memory(char* exp_mem, uint32_t size) - { - if (_heap + _heap_size != exp_mem) - return false; - - _heap_size += size; - - return true; - } - - private: - class buffer_ptr - { - public: - buffer_ptr(void* ptr, const char* const heap_end) - : _ptr(static_cast(ptr)) - , _size(*reinterpret_cast(static_cast(ptr) - _size_marker) & ~_alloc_memory_mask) - , _heap_end(heap_end) - { - } - - buffer_ptr(void* ptr, uint32_t buff_size, const char* const heap_end) - : _ptr(static_cast(ptr)) - , _heap_end(heap_end) - { - size(buff_size); - } - - uint32_t size() const - { - return _size; - } - - char* next_ptr() const - { - char* const next = end() + _size_marker; - if (next >= _heap_end) - return nullptr; - - return next; - } - - void size(uint32_t val) - { - // keep the same state (allocated or free) as was set before - const uint32_t memory_state = *reinterpret_cast(_ptr - _size_marker) & _alloc_memory_mask; - *reinterpret_cast(_ptr - _size_marker) = val | memory_state; - _size = val; - } - - char* end() const - { - return _ptr + _size; - } - - char* ptr() const - { - return _ptr; - } - - void mark_alloc() - { - *reinterpret_cast(_ptr - _size_marker) |= _alloc_memory_mask; - } - - void mark_free() - { - *reinterpret_cast(_ptr - _size_marker) &= ~_alloc_memory_mask; - } - - bool is_alloc() const - { - return *reinterpret_cast(_ptr - _size_marker) & _alloc_memory_mask; - } - - bool merge_contiguous_if_available(uint32_t needed_size) - { - return merge_contiguous(needed_size, true); - } - - bool merge_contiguous(uint32_t needed_size) - { - return merge_contiguous(needed_size, false); - } - private: - bool merge_contiguous(uint32_t needed_size, bool all_or_nothing) - { - // do not bother if there isn't contiguious space to allocate - if( all_or_nothing && uint32_t(_heap_end - _ptr) < needed_size ) - return false; - - uint32_t possible_size = _size; - while (possible_size < needed_size && (_ptr + possible_size < _heap_end)) - { - const uint32_t next_mem_flag_size = *reinterpret_cast(_ptr + possible_size); - // if ALLOCed then done with contiguous free memory - if (next_mem_flag_size & _alloc_memory_mask) - break; - - possible_size += (next_mem_flag_size & ~_alloc_memory_mask) + _size_marker; - } - - if (all_or_nothing && possible_size < needed_size) - return false; - - // combine - const uint32_t new_size = possible_size < needed_size ? possible_size : needed_size; - size(new_size); - - if (possible_size > needed_size) - { - const uint32_t freed_size = possible_size - needed_size - _size_marker; - buffer_ptr freed_remainder(_ptr + needed_size + _size_marker, freed_size, _heap_end); - freed_remainder.mark_free(); - } - - return new_size == needed_size; - } - - char* _ptr; - uint32_t _size; - const char* const _heap_end; - }; - - uint32_t _heap_size; - char* _heap; - uint32_t _offset; - }; - - static const uint32_t _size_marker = sizeof(uint32_t); - // allocate memory in 8 char blocks - static const uint32_t _mem_block = 8; - static const uint32_t _rem_mem_block_mask = _mem_block - 1; - static const uint32_t _initial_heap_size = 8192;//32768; - // if sbrk is not called outside of this file, then this is the max times we can call it - static const uint32_t _heaps_size = 16; - char _initial_heap[_initial_heap_size]; - memory _available_heaps[_heaps_size]; - uint32_t _heaps_actual_size; - uint32_t _active_heap; - uint32_t _active_free_heap; - static const uint32_t _alloc_memory_mask = uint32_t(1) << 31; - }; - - memory_manager memory_heap; - -} /// namespace eosio - -extern "C" { - -void* __dso_handle = 0; - -void* malloc(size_t size) -{ - return eosio::memory_heap.malloc(size); -} - -void* calloc(size_t count, size_t size) -{ - void* ptr = eosio::memory_heap.malloc(count*size); - memset(ptr, 0, count*size); - return ptr; -} - -void* realloc(void* ptr, size_t size) -{ - return eosio::memory_heap.realloc(ptr, size); -} - -void free(void* ptr) -{ - return eosio::memory_heap.free(ptr); -} - -} diff --git a/contracts/eosiolib/fixed_key.hpp b/contracts/eosiolib/fixed_key.hpp deleted file mode 100644 index 4e8cd8241da..00000000000 --- a/contracts/eosiolib/fixed_key.hpp +++ /dev/null @@ -1,291 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include -#include - -#include - -namespace eosio { - - template - class fixed_key; - - template - bool operator==(const fixed_key &c1, const fixed_key &c2); - - template - bool operator!=(const fixed_key &c1, const fixed_key &c2); - - template - bool operator>(const fixed_key &c1, const fixed_key &c2); - - template - bool operator<(const fixed_key &c1, const fixed_key &c2); - - /** - * @defgroup fixed_key Fixed Size Key - * @brief Fixed size key sorted lexicographically for Multi Index Table - * @ingroup types - * @{ - */ - - /** - * Fixed size key sorted lexicographically for Multi Index Table - * - * @brief Fixed size key sorted lexicographically for Multi Index Table - * @tparam Size - Size of the fixed_key object - * @ingroup types - */ - template - class fixed_key { - private: - - template struct bool_pack; - template - using all_true = std::is_same< bool_pack, bool_pack >; - - template - static void set_from_word_sequence(const std::array& arr, fixed_key& key) - { - auto itr = key._data.begin(); - word_t temp_word = 0; - const size_t sub_word_shift = 8 * sizeof(Word); - const size_t num_sub_words = sizeof(word_t) / sizeof(Word); - auto sub_words_left = num_sub_words; - for( auto&& w : arr ) { - if( sub_words_left > 1 ) { - temp_word |= static_cast(w); - temp_word <<= sub_word_shift; - --sub_words_left; - continue; - } - - eosio_assert( sub_words_left == 1, "unexpected error in fixed_key constructor" ); - temp_word |= static_cast(w); - sub_words_left = num_sub_words; - - *itr = temp_word; - temp_word = 0; - ++itr; - } - if( sub_words_left != num_sub_words ) { - if( sub_words_left > 1 ) - temp_word <<= 8 * (sub_words_left-1); - *itr = temp_word; - } - } - - public: - - typedef uint128_t word_t; - - /** - * Get number of words contained in this fixed_key object. A word is defined to be 16 bytes in size - * - * @brief Get number of words contained in this fixed_key object - */ - - static constexpr size_t num_words() { return (Size + sizeof(word_t) - 1) / sizeof(word_t); } - - /** - * Get number of padded bytes contained in this fixed_key object. Padded bytes are the remaining bytes - * inside the fixed_key object after all the words are allocated - * - * @brief Get number of padded bytes contained in this fixed_key object - */ - static constexpr size_t padded_bytes() { return num_words() * sizeof(word_t) - Size; } - - /** - * @brief Default constructor to fixed_key object - * - * @details Default constructor to fixed_key object which initializes all bytes to zero - */ - constexpr fixed_key() : _data() {} - - /** - * @brief Constructor to fixed_key object from std::array of num_words() words - * - * @details Constructor to fixed_key object from std::array of num_words() words - * @param arr data - */ - fixed_key(const std::array& arr) - { - std::copy(arr.begin(), arr.end(), _data.begin()); - } - - /** - * @brief Constructor to fixed_key object from std::array of num_words() words - * - * @details Constructor to fixed_key object from std::array of num_words() words - * @param arr - Source data - */ - template::value && - !std::is_same::value && - sizeof(Word) < sizeof(word_t)>::type > - fixed_key(const std::array& arr) - { - static_assert( sizeof(word_t) == (sizeof(word_t)/sizeof(Word)) * sizeof(Word), - "size of the backing word size is not divisible by the size of the array element" ); - static_assert( sizeof(Word) * NumWords <= Size, "too many words supplied to fixed_key constructor" ); - - set_from_word_sequence(arr, *this); - } - - /** - * @brief Create a new fixed_key object from a sequence of words - * - * @details Create a new fixed_key object from a sequence of words - * @tparam FirstWord - The type of the first word in the sequence - * @tparam Rest - THe type of the remaining words in the sequence - * @param first_word - The first word in the sequence - * @param rest - The remaining words in the sequence - */ - template - static - fixed_key - make_from_word_sequence(typename std::enable_if::value && - !std::is_same::value && - sizeof(FirstWord) <= sizeof(word_t) && - all_true<(std::is_same::value)...>::value, - FirstWord>::type first_word, - Rest... rest) - { - static_assert( sizeof(word_t) == (sizeof(word_t)/sizeof(FirstWord)) * sizeof(FirstWord), - "size of the backing word size is not divisible by the size of the words supplied as arguments" ); - static_assert( sizeof(FirstWord) * (1 + sizeof...(Rest)) <= Size, "too many words supplied to make_from_word_sequence" ); - - fixed_key key; - set_from_word_sequence(std::array{{ first_word, rest... }}, key); - return key; - } - - /** - * Get the contained std::array - * @brief Get the contained std::array - */ - const auto& get_array()const { return _data; } - - /** - * Get the underlying data of the contained std::array - * @brief Get the underlying data of the contained std::array - */ - auto data() { return _data.data(); } - - /** - * Get the underlying data of the contained std::array - * @brief Get the underlying data of the contained std::array - */ - auto data()const { return _data.data(); } - - /** - * Get the size of the contained std::array - * @brief Get the size of the contained std::array - */ - auto size()const { return _data.size(); } - - - /** - * Extract the contained data as an array of bytes - * @brief Extract the contained data as an array of bytes - * @return - the extracted data as array of bytes - */ - std::array extract_as_byte_array()const { - std::array arr; - - const size_t num_sub_words = sizeof(word_t); - - auto arr_itr = arr.begin(); - auto data_itr = _data.begin(); - - for( size_t counter = _data.size(); counter > 0; --counter, ++data_itr ) { - size_t sub_words_left = num_sub_words; - - if( counter == 1 ) { // If last word in _data array... - sub_words_left -= padded_bytes(); - } - auto temp_word = *data_itr; - for( ; sub_words_left > 0; --sub_words_left ) { - *(arr_itr + sub_words_left - 1) = static_cast(temp_word & 0xFF); - temp_word >>= 8; - } - arr_itr += num_sub_words; - } - - return arr; - } - - // Comparison operators - friend bool operator== <>(const fixed_key &c1, const fixed_key &c2); - - friend bool operator!= <>(const fixed_key &c1, const fixed_key &c2); - - friend bool operator> <>(const fixed_key &c1, const fixed_key &c2); - - friend bool operator< <>(const fixed_key &c1, const fixed_key &c2); - - private: - - std::array _data; - }; - - /** - * @brief Compares two fixed_key variables c1 and c2 - * - * @details Lexicographically compares two fixed_key variables c1 and c2 - * @param c1 - First fixed_key object to compare - * @param c2 - Second fixed_key object to compare - * @return if c1 == c2, return true, otherwise false - */ - template - bool operator==(const fixed_key &c1, const fixed_key &c2) { - return c1._data == c2._data; - } - - /** - * @brief Compares two fixed_key variables c1 and c2 - * - * @details Lexicographically compares two fixed_key variables c1 and c2 - * @param c1 - First fixed_key object to compare - * @param c2 - Second fixed_key object to compare - * @return if c1 != c2, return true, otherwise false - */ - template - bool operator!=(const fixed_key &c1, const fixed_key &c2) { - return c1._data != c2._data; - } - - /** - * @brief Compares two fixed_key variables c1 and c2 - * - * @details Lexicographically compares two fixed_key variables c1 and c2 - * @param c1 - First fixed_key object to compare - * @param c2 - Second fixed_key object to compare - * @return if c1 > c2, return true, otherwise false - */ - template - bool operator>(const fixed_key& c1, const fixed_key& c2) { - return c1._data > c2._data; - } - - /** - * @brief Compares two fixed_key variables c1 and c2 - * - * @details Lexicographically compares two fixed_key variables c1 and c2 - * @param c1 - First fixed_key object to compare - * @param c2 - Second fixed_key object to compare - * @return if c1 < c2, return true, otherwise false - */ - template - bool operator<(const fixed_key &c1, const fixed_key &c2) { - return c1._data < c2._data; - } - /// @} fixed_key - - typedef fixed_key<32> key256; -} diff --git a/contracts/eosiolib/fixedpoint.hpp b/contracts/eosiolib/fixedpoint.hpp deleted file mode 100644 index 8c36f5ea54b..00000000000 --- a/contracts/eosiolib/fixedpoint.hpp +++ /dev/null @@ -1,922 +0,0 @@ -#pragma once -#include -#include - -namespace eosio -{ - /** - * @defgroup fixedpoint Fixed Point - * @ingroup mathcppapi - * @brief 32,64,128,256 bits version of fixed point variables - * - * Floating point operations are indeterministic, hence is prevented in smart contract. - * The smart contract developers should use the appropriate Fixed_Point template class - * by passing the number to be represented in integer format and the number of decimals - * required. - * These template classes also support the arithmetic operations and basic comparison operators - * @{ - */ - - // Some forward declarations - template struct fixed_point32; - template struct fixed_point64; - template struct fixed_point128; - - // Will support fixed_point256 in next release -#if 0 - template struct fixed_point256; - /** - * @defgroup Template class for Fixed Point 256 bits representaton - * @ingroup contractdev - * @brief Template param Q is the Q factor i.e. number of decimals - * - */ - template - struct fixed_point256 - { - int128_t val; - fixed_point256(int256_t v=0) : val(v) {} - template fixed_point256(const fixed_point256 &r); - template fixed_point256(const fixed_point128 &r); - template fixed_point256(const fixed_point64 &r); - template fixed_point256(const fixed_point32 &r); - /** - * Get the integer part of the 64 bit fixed number - * @brief To get the integer part of the fixed number - * @return Returns integer part of the fixed number - * - * Example: - * @code - * fixed64<18> a(1234.455667) - * std::cout << a.int_part(); // Output: 1234 - * @endcode - */ - int128_t int_part() const { - return val >> q; - } - - /** - * Get the decimal part of the 64 bit fixed number - * @brief To get the decimal part of the fixed number - * @return Returns decimal part of the fixed number - * - * Example: - * @code - * fixed64<18> a(1234.455667) - * std::cout << a.decimal_part(); // Output: 45567 - * @endcode - */ - uint128_t frac_part() const { - if(!Q) return 0; - return val << (32-Q); - } - - - - template fixed_point256 &operator=(const fixed_point32 &r); - template fixed_point256 &operator=(const fixed_point64 &r); - template fixed_point256 &operator=(const fixed_point128 &r); - template fixed_point256 &operator=(const fixed_point256 &r); - // Comparison functions - template bool operator==(const fixed_point256 &r) { return (val == r.val);} - template bool operator>(const fixed_point256 &r) { return (val > r.val);} - template bool operator<(const fixed_point256 &r) { return (val < r.val);} - }; -#endif - - /** - * The template param Q represents the Q Factor i.e number of decimals - * - * @brief 128 bits representation of Fixed Point class. - * - * Example: - * @code - * fixed_point128<6> a(123232.455667233) - * fixed_point128<0> a(123424) - * fixed_point128<18> c = a*b; - * fixed_point128<24> d = a+b+c; - * fixed_point128<24> e = b/a; - * @endcode - */ - template - struct fixed_point128 - { - static_assert(Q < 128, "Maximum number of decimals supported in fixed_point128 is 128 decimals"); - - /** - * @brief Value of the fixed point represented as int128_t - * - * Value of the fixed point represented as int128_t - */ - int128_t val; - - /** - * Various constructors for fixed_point128. Can create fixed_point128 instance from an int128_t, fixed_point128,64,32 instance - * - * @brief Various constructors for fixed_point128 - * - * Example: - * @code - * fixed_point64<18> a(1234.455667); - * fixed_point128<3> b(a); - * fixed_point32<6> b(13324.32323); - * fixed_point128<5> c(a); - * @endcode - */ - - /** - * Construct a new fixed point128 object from int128_t - * - * @brief Construct a new fixed point128 object - * @param v - int128_t representation of the fixed point value - */ - fixed_point128(int128_t v=0) : val(v) {} - - /** - * Construct a new fixed point128 object from another fixed_point128 - * - * @brief Construct a new fixed point128 object from another fixed_point128 - * @param r - Another fixed_point128 as source - */ - template fixed_point128(const fixed_point128 &r); - - /** - * Construct a new fixed point128 object from another fixed_point64 - * - * @brief Construct a new fixed point128 object from another fixed_point64 - * @param r -fixed_point64 as source - */ - template fixed_point128(const fixed_point64 &r); - - /** - * Construct a new fixed point128 object from another fixed_point32 - * - * @brief Construct a new fixed point128 object from another fixed_point32 - * @param r -fixed_point32 as source - */ - template fixed_point128(const fixed_point32 &r); - - /** - * Get the integer part of the 64 bit fixed number - * - * @brief To get the integer part of the fixed number - * @return Returns integer part of the fixed number - * - * Example: - * @code - * fixed_point64<5> a(1234.455667) - * std::cout << a.int_part(); // Output: 1234 - * @endcode - */ - int128_t int_part() const { - return val >> Q; - } - - /** - * Get the decimal part of the 64 bit fixed number - * - * @brief To get the decimal part of the fixed number - * @return Returns decimal part of the fixed number - * - * Example: - * @code - * fixed_point128<3> a(1234.455667) - * std::cout << a.decimal_part(); // Output: 455 - * @endcode - */ - uint128_t frac_part() const { - if(!Q) return 0; - return uint128_t(val << (32-Q)); - } - - /** - * Prints the fixed point value - * - * @brief Prints the fixed point value - */ - void print() const { - uint128_t ip((uint128_t)int_part()); - uint128_t fp(frac_part()); - printui128(&ip); - prints("."); - printui128(&fp); - } - - // Various assignment operators - /** - * Assignment operator. Assign fixed_point32 to fixed_point128 - * - * @brief Assignment operator - * @tparam qr - Precision of the source - * @param r - Source - * @return fixed_point128& - Reference to this object - */ - template fixed_point128 &operator=(const fixed_point32 &r); - /** - * Assignment operator. Assign fixed_point32 to fixed_point64 - * - * @brief Assignment operator - * @tparam qr - Precision of the source - * @param r - Source - * @return fixed_point128& - Reference to this object - */ - template fixed_point128 &operator=(const fixed_point64 &r); - /** - * Assignment operator. Assign fixed_point32 to fixed_point32 - * - * @brief Assignment operator - * @tparam qr - Precision of the source - * @param r - Source - * @return fixed_point128& - Reference to this object - */ - template fixed_point128 &operator=(const fixed_point128 &r); - - // Comparison functions - /** - * Equality operator - * - * @brief Equality operator - * @tparam qr - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator==(const fixed_point128 &r) { return (val == r.val);} - - /** - * Greater than operator - * - * @brief Greater than operator - * @tparam qr - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator>(const fixed_point128 &r) { return (val > r.val);} - - /** - * Less than operator - * - * @brief Less than operator - * @tparam qr - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator<(const fixed_point128 &r) { return (val < r.val);} - }; - - - /** - * @brief 64 bits representation of Fixed Point class. - * - * Example: - * @code - * fixed_point64<6> a(123232.455667233) - * fixed_point64<0> a(123424) - * fixed_point64<18> c = a*b; - * fixed_point64<24> d = a+b+c; - * fixed_point64<24> e = b/a; - * @endcode - */ - template - struct fixed_point64 - { - static_assert(Q < 128, "Maximum number of decimals supported in fixed_point64 is 128 decimals"); - - /** - * @brief Value of the fixed point represented as int64_t - * - * Value of the fixed point represented as int64_t - */ - int64_t val; - - /** - * Construct a new fixed point64 object from int64_t - * - * @brief Construct a new fixed point64 object - * @param v - int64_t representation of the fixed point value - */ - fixed_point64(int64_t v=0) : val(v) {} - - /** - * Construct a new fixed point64 object from another fixed_point64 - * - * @brief Construct a new fixed point64 object from another fixed_point64 - * @param r - Another fixed_point64 as source - */ - template fixed_point64(const fixed_point64 &r); - - /** - * Construct a new fixed point64 object from another fixed_point32 - * - * @brief Construct a new fixed point64 object from another fixed_point32 - * @param r - fixed_point64 as source - */ - template fixed_point64(const fixed_point32 &r); - - /** - * Get the integer part of the 64 bit fixed number - * @brief To get the integer part of the fixed number - * @return Returns integer part of the fixed number - * - * Example: - * @code - * fixed_point64<18> a(1234.455667) - * std::cout << a.int_part(); // Output: 1234 - * @endcode - */ - int64_t int_part() const { - return val >> Q; - } - - /** - * Get the decimal part of the 64 bit fixed number - * @brief To get the decimal part of the fixed number - * @return Returns decimal part of the fixed number - * - * Example: - * @code - * fixed64<3> a(1234.455667) - * std::cout << a.decimal_part(); // Output: 455 - * @endcode - */ - uint64_t frac_part() const { - if(!Q) return 0; - return uint64_t(val << (32-Q)); - } - - /** - * Prints the fixed point value - * - * @brief Prints the fixed point value - */ - void print() const { - printi(int_part()); - prints("."); - printi128(frac_part()); - } - - // Various assignment operators - /** - * Assignment operator. Assign fixed_point32 to fixed_point64 - * - * @brief Assignment operator - * @tparam QR - Precision of the source - * @param r - Source - * @return fixed_point64& - Reference to this object - */ - template fixed_point64 &operator=(const fixed_point32 &r); - - /** - * Assignment operator. Assign fixed_point64 to fixed_point64 - * - * @brief Assignment operator - * @tparam QR - Precision of the source - * @param r - Source - * @return fixed_point64& - Reference to this object - */ - template fixed_point64 &operator=(const fixed_point64 &r); - - // Arithmetic operations - /** - * Addition operator - * - * @brief Addition operator - * @tparam QR - Precision of the second addend - * @param r - Second addend - * @return - The result of addition - */ - template fixed_point64< (Q>QR)?Q:QR > operator+(const fixed_point64 &r) const; - - /** - * Subtraction operator - * - * @brief Subtraction operator - * @tparam QR - Precision of the minuend - * @param r - Minuend - * @return - The result of subtraction - */ - template fixed_point64< (Q>QR)?Q:QR > operator-(const fixed_point64 &r) const; - - // product and division of two fixed_point64 instances will be fixed_point128 - // The total number of decimals will be the max - /** - * Multiplication operator - * - * @brief Multiplication operator - * @tparam QR - Precision of the multiplier - * @param r - Multiplier - * @return - The result of multiplication - */ - template fixed_point128 operator*(const fixed_point64 &r) const; - - /** - * Division operator - * - * @brief Division operator - * @tparam QR - Precision of the divisor - * @param r - Divisor - * @return - The result of division - */ - template fixed_point128 operator/(const fixed_point64 &r) const; - - // Comparison functions - /** - * Equality operator - * - * @brief Equality operator - * @tparam QR - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator==(const fixed_point64 &r) { return (val == r.val);} - - /** - * Greater than operator - * - * @brief Greater than operator - * @tparam QR - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator>(const fixed_point64 &r) { return (val > r.val);} - - /** - * Less than operator - * - * @brief Less than operator - * @tparam QR - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator<(const fixed_point64 &r) { return (val < r.val);} - }; - - /** - * @brief 32 bits representation of Fixed Point class. - * - * This class is implemented to to replace the floating point variables - * It can resolve floating point undetermenistic related issues - * - * Example: - * @code - * - * fixed_point32<17> b(9.654); - * fixed_point32<18> c = a*b; - * fixed_point32<24> d = a+b+c; - * fixed_point32<24> e = b/a; - * @endcode - * - */ - // fixed_point 32 bit version. The template param 'q' is the scale factor - template - struct fixed_point32 - { - static_assert(Q < 128, "Maximum number of decimals supported in fixed_point32 is 128 decimals"); - - /** - * @brief Value of the fixed point represented as int32_t - * - * Value of the fixed point represented as int32_t - */ - int32_t val; - - /** - * Construct a new fixed point32 object from another fixed_point32 - * - * @brief Construct a new fixed point32 object from another fixed_point32 - * @param r - Another fixed_point32 as source - */ - template fixed_point32(const fixed_point32 &r); - - /** - * Construct a new fixed point32 object from another fixed_point64. It will be truncated. - * - * @brief Construct a new fixed point32 object from another fixed_point64 - * @param r - Another fixed_point32 as source - */ - template fixed_point32(const fixed_point64 &r); - - - /** - * Construct a new fixed point32 object from int32_t - * - * @brief Construct a new fixed point32 object - * @param param - int32_t representation of the fixed point value - */ - fixed_point32(int32_t param=0) : val(param) {} - - // translates given double variable to the int32 based on the scale factor - // fixed_point32(double d=0) : val(d * (1< a(1234.455667) - * std::cout << a.int_part(); // Output: 1234 - * @endcode - */ - int32_t int_part() const { - return val >> Q; - } - uint32_t frac_part() const { - if(!Q) return 0; - return uint32_t(val << (32-Q)); - } - - /** - * Prints the fixed point value - * - * @brief Prints the fixed point value - */ - void print() const { - printi(int_part()); - prints("."); - printi128(frac_part()); - } - - // Various assignment operators - /** - * Assignment operator. Assign fixed_point32 to fixed_point32 - * - * @brief Assignment operator - * @tparam QR - Precision of the source - * @param r - Source - * @return fixed_point32& - Reference to this object - */ - template fixed_point32 &operator=(const fixed_point32 &r); - - /** - * Assignment operator. Assign fixed_point64 to fixed_point32 - * - * @brief Assignment operator - * @tparam QR - Precision of the source - * @param r - Source - * @return fixed_point32& - Reference to this object - */ - template fixed_point32 &operator=(const fixed_point64 &r); - - /** - * Addition operator - * - * @brief Addition operator - * @tparam QR - Precision of the second addend - * @param r - Second addend - * @return - The result of addition - */ - template fixed_point32< (Q>QR)?Q:QR > operator+(const fixed_point32 &r) const; - - /** - * Subtraction operator - * - * @brief Subtraction operator - * @tparam QR - Precision of the minuend - * @param r - Minuend - * @return - The result of subtraction - */ - template fixed_point32< (Q>QR)?Q:QR > operator-(const fixed_point32 &r) const; - - // productd of to fixed_point32 instances will be fixed_point64 - /** - * Multiplication operator - * - * @brief Multiplication operator - * @tparam QR - Precision of the multiplier - * @param r - Multiplier - * @return - The result of multiplication - */ - template fixed_point64 operator*(const fixed_point32 &r) const; - - /** - * Division operator - * - * @brief Division operator - * @tparam QR - Precision of the divisor - * @param r - Divisor - * @return - The result of division - */ - template fixed_point64 operator/(const fixed_point32 &r) const; - - // Comparison functions - /** - * Equality operator - * - * @brief Equality operator - * @tparam QR - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator==(const fixed_point32 &r) { return (val == r.val);} - - /** - * Greater than operator - * - * @brief Greater than operator - * @tparam QR - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator>(const fixed_point32 &r) { return (val > r.val);} - - /** - * Less than operator - * - * @brief Less than operator - * @tparam QR - Precision of the source - * @param r - Source - * @return true - if equal - * @return false - otherwise - */ - template bool operator<(const fixed_point32 &r) { return (val < r.val);} - }; - - - /// @} fixedpoint - - // Helper functions - template - T assignHelper(T rhs_val, uint8_t q, uint8_t qr) - { - T result = (q > qr) ? rhs_val << (q-qr) : rhs_val >> (qr-q); - return result; - } - - -#if 0 - // fixed_point256 methods - template template - fixed_point256::fixed_point256(const fixed_point256 &r) { - val = assignHelper(r.val, q, qr); - } - - template template - fixed_point256::fixed_point256(const fixed_point128 &r) { - val = assignHelper(r.val, q, qr); - } - - template template - fixed_point256::fixed_point256(const fixed_point64 &r) { - val = assignHelper(r.val, q, qr); - } - - template template - fixed_point256::fixed_point256(const fixed_point32 &r) { - val = assignHelper(r.val, q, qr); - } -#endif - - // fixed_point128 methods - template template - fixed_point128::fixed_point128(const fixed_point128 &r) { - val = assignHelper(r.val, Q, QR); - } - - template template - fixed_point128::fixed_point128(const fixed_point64 &r) { - val = assignHelper(r.val, Q, QR); - } - - template template - fixed_point128::fixed_point128(const fixed_point32 &r) { - val = assignHelper(r.val, Q, QR); - } - - - // fixed_point64 methods - template template - fixed_point64::fixed_point64(const fixed_point64 &r) { - val = assignHelper(r.val, Q, QR); - } - - template template - fixed_point64::fixed_point64(const fixed_point32 &r) { - val = assignHelper(r.val, Q, QR); - } - - /** - * @brief Addition between two fixed_point64 variables and the result goes to fixed_point64 - * - * Addition between two fixed_point64 variables - * Number of decimal on result will be max of decimals of lhs and rhs - */ - template template - fixed_point64< (Q>QR)?Q:QR > fixed_point64::operator+(const fixed_point64 &rhs) const - { - // if the scaling factor for both are same, no need to make any intermediate objects except the result - if(Q == QR) - { - return fixed_point64(val + rhs.val); - } - return fixed_point64<(Q>QR)?Q:QR>( - fixed_point64<(Q>QR)?Q:QR>( *this ).val + - fixed_point64<(Q>QR)?Q:QR>( rhs ).val - ); - } - - /** - * @brief Subtraction between two fixed_point64 variables and the result goes to fixed_point64 - * - * Subtraction between two fixed_point64 variables - * Number of decimal on result will be max of decimals of lhs and rhs - */ - template template - fixed_point64< (Q>QR)?Q:QR > fixed_point64::operator-(const fixed_point64 &rhs) const - { - // if the scaling factor for both are same, no need to make any intermediate objects except the result - if(Q == QR) - { - return fixed_point64(val - rhs.val); - } - return fixed_point64<(Q>QR)?Q:QR>( - fixed_point64<(Q>QR)?Q:QR>( *this ).val - - fixed_point64<(Q>QR)?Q:QR>( rhs ).val - ); - } - - /** - * @brief Multiplication operator for fixed_point64. The result goes to fixed_point64 - * - * Multiplication operator for fixed_point64. The result goes to fixed_point128 - * Number of decimal on result will be sum of number of decimals of lhs and rhs - * - * Example: - * @code - * fixed_point128<33> result = fixed_point64<0>(131313) / fixed_point64<0>(2323) - * @endcode - */ - template template - fixed_point128 fixed_point64::operator*(const fixed_point64 &r) const { - return fixed_point128(int128_t(val)*r.val); - } - - /** - * @brief Division of two fixed_point64 result will be stored in fixed_point128 - * - * Division operator for fixed_point64 - * - * Example: - * @code - * fixed_point128<33> result = fixed_point64<0>(131313) / fixed_point64<0>(2323) - * @endcode - */ - template template - fixed_point128 fixed_point64::operator/(const fixed_point64 &r) const { - // std::cout << "Performing division on " << val << ", with " << q << " precision / " << r.val << ", with " << qr << " precision. Result precision " << ((q>qr) ? q:qr) << std::endl; - // Convert val to 128 bit by additionally shifting 64 bit and take the result to 128bit - // Q(X+64-Y) = Q(X+64) / Q(Y) - eosio_assert( !(r.int_part() == 0 && r.frac_part() == 0), "divide by zero" ); - return fixed_point128((int128_t(val)<<64)/r.val); - } - - // fixed_point32 methods - template template - fixed_point32::fixed_point32(const fixed_point32 &r) { - val = assignHelper(r.val, Q, QR); - } - - template template - fixed_point32::fixed_point32(const fixed_point64 &r) { - val = assignHelper(r.val, Q, QR); - } - - template template - fixed_point32 &fixed_point32::operator=(const fixed_point32 &r) { - val = assignHelper(r.val, Q, QR); - } - - template template - fixed_point32 &fixed_point32::operator=(const fixed_point64 &r) { - val = assignHelper(r.val, Q, QR); - } - - /** - * @brief Addition between two fixed_point32 variables and the result goes to fixed_point32 - * - * Addition between two fixed_point32 variables - * Number of decimal on result will be max of decimals of lhs and rhs - * - */ - template template - fixed_point32< (Q>QR)?Q:QR > fixed_point32::operator+(const fixed_point32 &rhs) const - { - // if the scaling factor for both are same, no need to make any intermediate objects except the result - if(Q == QR) - { - return fixed_point32(val + rhs.val); - } - return fixed_point32<(Q>QR)?Q:QR>( - fixed_point32<(Q>QR)?Q:QR>( *this ).val + - fixed_point32<(Q>QR)?Q:QR>( rhs ).val - ); - } - - /** - * @brief Subtraction between two fixed_point32 variables and the result goes to fixed_point32 - * - * Subtraction between two fixed_point32 variables - * Number of decimal on result will be max of decimals of lhs and rhs - * - */ - template template - fixed_point32< (Q>QR)?Q:QR > fixed_point32::operator-(const fixed_point32 &rhs) const - { - // if the scaling factor for both are same, no need to make any intermediate objects except the result - if(Q == QR) - { - return fixed_point32(val - rhs.val); - } - return fixed_point32<(Q>QR)?Q:QR>( - fixed_point32<(Q>QR)?Q:QR>( *this ).val - - fixed_point32<(Q>QR)?Q:QR>( rhs ).val - ); - } - - /** - * @brief Multiplication operator for fixed_point32. The result goes to fixed_point64 - * - * Multiplication operator for fixed_point32. The result goes to fixed_point64 - * Number of decimal on result will be sum of number of decimals of lhs and rhs - * - * Example: - * @code - * fixed_point64<33> result = fixed_point32<0>(131313) / fixed_point32<0>(2323) - * @endcode - */ - template template - fixed_point64 fixed_point32::operator*(const fixed_point32 &r) const { - return fixed_point64(int64_t(val)*r.val); - } - - /** - * @brief Division of two fixed_point32 result will be stored in fixed_point64 - * - * Division operator for fixed_point32 - * - * Example: - * @code - * fixed_point64<33> result = fixed_point32<0>(131313) / fixed_point32<0>(2323) - * @endcode - */ - template template - fixed_point64 fixed_point32::operator/(const fixed_point32 &r) const { - // Convert val into 64 bit and perform the division - // Q(X+32-Y) = Q(X+32) / Q(Y) - eosio_assert( !(r.int_part() == 0 && r.frac_part() == 0), "divide by zero" ); - return fixed_point64((int64_t(val)<<32)/r.val); - } - - /** - * @brief Wrapper function for dividing two unit64 variable and stores result in fixed_point64 - * - * Wrapper function for dividing two unit32 variable and stores result in fixed_point64 - * - * Example: - * @code - * fixed_point64<33> result = fixed_divide(131313, 2323) - * @endcode - */ - template - fixed_point64 fixed_divide(uint32_t lhs, uint32_t rhs) - { - - eosio_assert( rhs != 0, "divide by zero" ); - fixed_point64 result = fixed_point32<0>((int32_t)lhs) / fixed_point32<0>((int32_t)rhs); - return result; - } - - /** - * @brief Wrapper function for dividing two unit64 variable and stores result in fixed_point128 - * Wrapper function for dividing two unit64 variable and stores result in fixed_point128 - * - * Example: - * @code - * fixed_point128<33> result = fixed_divide(131313, 2323) - * @endcode - */ - - template - fixed_point128 fixed_divide(uint64_t lhs, uint64_t rhs) - { - - eosio_assert( rhs != 0, "divide by zero" ); - fixed_point128 result = fixed_point64<0>((int32_t)lhs) / fixed_point64<0>((int32_t)rhs); - return fixed_point128(result); - } - - -}; diff --git a/contracts/eosiolib/mainpage.md b/contracts/eosiolib/mainpage.md deleted file mode 100644 index e9c9d0cd8a6..00000000000 --- a/contracts/eosiolib/mainpage.md +++ /dev/null @@ -1,20 +0,0 @@ -Welcome to the EOS.IO Documentation ------------------------------------ - -@note This documentation is in progress and subject to change due to rapid development. Please report inaccuracies identified to the [EOS.IO Developer Telegram Group](https://t.me/joinchat/EaEnSUPktgfoI-XPfMYtcQ) - -## EOS.IO - - [Additional resources - Github Readme](https://github.com/EOSIO/eos#readme) - -## Smart Contract Developers -- @ref eosiorpc -- @ref contractdev - - @ref chainapi - Define API for querying internal chain state - - @ref database - APIs that store and retreive data on the blockchainEOS.IO organizes data according to the following broad structure - - @ref actionapi - Defines API for querying action properties - - @ref consoleapi - Enables applications to log/print text messages - - @ref systemapi - Define API for interating with system level intrinsics - - @ref transactionapi - Define API for sending transactions and inline messages - - @ref types - Specifies typedefs and aliases - - diff --git a/contracts/eosiolib/memory.h b/contracts/eosiolib/memory.h deleted file mode 100644 index 474e7c7b598..00000000000 --- a/contracts/eosiolib/memory.h +++ /dev/null @@ -1,8 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include diff --git a/contracts/eosiolib/memory.hpp b/contracts/eosiolib/memory.hpp deleted file mode 100644 index f2abbf898d2..00000000000 --- a/contracts/eosiolib/memory.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include - -void* sbrk(size_t num_bytes); - - /** - * @defgroup memoryapi Memory API - * @brief Defines common memory functions - * @ingroup contractdev - */ - - /** - * @defgroup memorycppapi Memory C++ API - * @brief Defines common memory functions - * @ingroup memoryapi - * - * @{ - */ - -extern "C" { - -/** - * Allocate additional memory - * - * @brief Allocate additional memory - * @param size - Number of additional bytes to be allocated - * @return void* - Pointer to start of the new allocated memory - */ -void* malloc(size_t size); - -/** - * Allocate a block of memory for an array of **count** elements, each of them **size** bytes long, and initializes all bits with 0 - * - * @brief Allocate a block of memory for an array of **count** elements, each of them **size** bytes long, and initializes all bits with 0 - * @param count - Number of elements to allocate - * @param size - Size of each element - * @return void* - Pointer to start of the new allocated memory - */ -void* calloc(size_t count, size_t size); - -/** - * Reallocate the given area of memory, which is allocated by malloc(), calloc(), or realloc() previously - * - * @brief Reallocate the given area of memory - * @param ptr - Pointer to the memory area to be reallocated - * @param size - New size of the memory - * @return void* - Pointer to the new reallocated memory - */ -void* realloc(void* ptr, size_t size); - -/** - * - * Deallocates the given area of memory which is previously allocated by malloc(), calloc(), or realloc() - * @brief Deallocates the given area of memory - * - * @param ptr - Pointer to the memory to be deallocated - */ -void free(void* ptr); - -} - -/// @}memorycppapi diff --git a/contracts/eosiolib/multi_index.hpp b/contracts/eosiolib/multi_index.hpp deleted file mode 100644 index cba34f103a0..00000000000 --- a/contracts/eosiolib/multi_index.hpp +++ /dev/null @@ -1,2183 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -namespace eosio { - -using boost::multi_index::const_mem_fun; - -#define WRAP_SECONDARY_SIMPLE_TYPE(IDX, TYPE)\ -template<>\ -struct secondary_index_db_functions {\ - static int32_t db_idx_next( int32_t iterator, uint64_t* primary ) { return db_##IDX##_next( iterator, primary ); }\ - static int32_t db_idx_previous( int32_t iterator, uint64_t* primary ) { return db_##IDX##_previous( iterator, primary ); }\ - static void db_idx_remove( int32_t iterator ) { db_##IDX##_remove( iterator ); }\ - static int32_t db_idx_end( uint64_t code, uint64_t scope, uint64_t table ) { return db_##IDX##_end( code, scope, table ); }\ - static int32_t db_idx_store( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, const TYPE& secondary ) {\ - return db_##IDX##_store( scope, table, payer, id, &secondary );\ - }\ - static void db_idx_update( int32_t iterator, uint64_t payer, const TYPE& secondary ) {\ - db_##IDX##_update( iterator, payer, &secondary );\ - }\ - static int32_t db_idx_find_primary( uint64_t code, uint64_t scope, uint64_t table, uint64_t primary, TYPE& secondary ) {\ - return db_##IDX##_find_primary( code, scope, table, &secondary, primary );\ - }\ - static int32_t db_idx_find_secondary( uint64_t code, uint64_t scope, uint64_t table, const TYPE& secondary, uint64_t& primary ) {\ - return db_##IDX##_find_secondary( code, scope, table, &secondary, &primary );\ - }\ - static int32_t db_idx_lowerbound( uint64_t code, uint64_t scope, uint64_t table, TYPE& secondary, uint64_t& primary ) {\ - return db_##IDX##_lowerbound( code, scope, table, &secondary, &primary );\ - }\ - static int32_t db_idx_upperbound( uint64_t code, uint64_t scope, uint64_t table, TYPE& secondary, uint64_t& primary ) {\ - return db_##IDX##_upperbound( code, scope, table, &secondary, &primary );\ - }\ -}; - -#define WRAP_SECONDARY_ARRAY_TYPE(IDX, TYPE)\ -template<>\ -struct secondary_index_db_functions {\ - static int32_t db_idx_next( int32_t iterator, uint64_t* primary ) { return db_##IDX##_next( iterator, primary ); }\ - static int32_t db_idx_previous( int32_t iterator, uint64_t* primary ) { return db_##IDX##_previous( iterator, primary ); }\ - static void db_idx_remove( int32_t iterator ) { db_##IDX##_remove( iterator ); }\ - static int32_t db_idx_end( uint64_t code, uint64_t scope, uint64_t table ) { return db_##IDX##_end( code, scope, table ); }\ - static int32_t db_idx_store( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, const TYPE& secondary ) {\ - return db_##IDX##_store( scope, table, payer, id, secondary.data(), TYPE::num_words() );\ - }\ - static void db_idx_update( int32_t iterator, uint64_t payer, const TYPE& secondary ) {\ - db_##IDX##_update( iterator, payer, secondary.data(), TYPE::num_words() );\ - }\ - static int32_t db_idx_find_primary( uint64_t code, uint64_t scope, uint64_t table, uint64_t primary, TYPE& secondary ) {\ - return db_##IDX##_find_primary( code, scope, table, secondary.data(), TYPE::num_words(), primary );\ - }\ - static int32_t db_idx_find_secondary( uint64_t code, uint64_t scope, uint64_t table, const TYPE& secondary, uint64_t& primary ) {\ - return db_##IDX##_find_secondary( code, scope, table, secondary.data(), TYPE::num_words(), &primary );\ - }\ - static int32_t db_idx_lowerbound( uint64_t code, uint64_t scope, uint64_t table, TYPE& secondary, uint64_t& primary ) {\ - return db_##IDX##_lowerbound( code, scope, table, secondary.data(), TYPE::num_words(), &primary );\ - }\ - static int32_t db_idx_upperbound( uint64_t code, uint64_t scope, uint64_t table, TYPE& secondary, uint64_t& primary ) {\ - return db_##IDX##_upperbound( code, scope, table, secondary.data(), TYPE::num_words(), &primary );\ - }\ -}; - -#define MAKE_TRAITS_FOR_ARITHMETIC_SECONDARY_KEY(TYPE)\ -template<>\ -struct secondary_key_traits {\ - static constexpr TYPE lowest() { return std::numeric_limits::lowest(); }\ -}; - -namespace _multi_index_detail { - - namespace hana = boost::hana; - - template - struct secondary_index_db_functions; - - template - struct secondary_key_traits; - - WRAP_SECONDARY_SIMPLE_TYPE(idx64, uint64_t) - MAKE_TRAITS_FOR_ARITHMETIC_SECONDARY_KEY(uint64_t) - - WRAP_SECONDARY_SIMPLE_TYPE(idx128, uint128_t) - MAKE_TRAITS_FOR_ARITHMETIC_SECONDARY_KEY(uint128_t) - - WRAP_SECONDARY_SIMPLE_TYPE(idx_double, double) - MAKE_TRAITS_FOR_ARITHMETIC_SECONDARY_KEY(double) - - WRAP_SECONDARY_SIMPLE_TYPE(idx_long_double, long double) - MAKE_TRAITS_FOR_ARITHMETIC_SECONDARY_KEY(long double) - - WRAP_SECONDARY_ARRAY_TYPE(idx256, key256) - template<> - struct secondary_key_traits { - static constexpr key256 lowest() { return key256(); } - }; - -} - -/** - * The indexed_by struct is used to instantiate the indices for the Multi-Index table. In EOSIO, up to 16 secondary indices can be specified. - * @brief The indexed_by struct is used to instantiate the indices for the Multi-Index table. In EOSIO, up to 16 secondary indices can be specified. - * - * @tparam IndexName - is the name of the index. The name must be provided as an EOSIO base32 encoded 64-bit integer and must conform to the EOSIO naming requirements of a maximum of 13 characters, the first twelve from the lowercase characters a-z, digits 0-5, and ".", and if there is a 13th character, it is restricted to lowercase characters a-p and ".". - * @tparam Extractor - is a function call operator that takes a const reference to the table object type and returns either a secondary key type or a reference to a secondary key type. It is recommended to use the `eosio::const_mem_fun` template, which is a type alias to the `boost::multi_index::const_mem_fun`. See the documentation for the Boost `const_mem_fun` key extractor for more details. - * - * Example: - * -* - * @code - * #include - * using namespace eosio; - * class mycontract: eosio::contract { - * struct record { - * uint64_t primary; - * uint128_t secondary; - * uint64_t primary_key() const { return primary; } - * uint64_t get_secondary() const { return secondary; } - * EOSLIB_SERIALIZE( record, (primary)(secondary) ) - * }; - * public: - * mycontract( account_name self ):contract(self){} - * void myaction() { - * auto code = _self; - * auto scope = _self; - * multi_index > > table( code, scope); - * } - * } - * EOSIO_ABI( mycontract, (myaction) ) - * @endcode - */ -template -struct indexed_by { - enum constants { index_name = IndexName }; - typedef Extractor secondary_extractor_type; -}; - -/** - * @defgroup multiindex Multi Index Table - * @brief Defines EOSIO Multi Index Table - * @ingroup databasecpp - * - * - * - * EOSIO Multi-Index API provides a C++ interface to the EOSIO database. It is patterned after Boost Multi Index Container. - * EOSIO Multi-Index table requires exactly a uint64_t primary key. For the table to be able to retrieve the primary key, - * the object stored inside the table is required to have a const member function called primary_key() that returns uint64_t. - * EOSIO Multi-Index table also supports up to 16 secondary indices. The type of the secondary indices could be any of: - * - uint64_t - * - uint128_t - * - uint256_t - * - double - * - long double - * - * @tparam TableName - name of the table - * @tparam T - type of the data stored inside the table - * @tparam Indices - secondary indices for the table, up to 16 indices is supported here - * - * Example: - * - * @code - * #include - * using namespace eosio; - * class mycontract: contract { - * struct record { - * uint64_t primary; - * uint64_t secondary_1; - * uint128_t secondary_2; - * uint256_t secondary_3; - * double secondary_4; - * long double secondary_5; - * uint64_t primary_key() const { return primary; } - * uint64_t get_secondary_1() const { return secondary_1; } - * uint128_t get_secondary_2() const { return secondary_2; } - * uint256_t get_secondary_3() const { return secondary_3; } - * double get_secondary_4() const { return secondary_4; } - * long double get_secondary_5() const { return secondary_5; } - * EOSLIB_SERIALIZE( record, (primary)(secondary_1)(secondary_2)(secondary_3)(secondary_4)(secondary_5) ) - * }; - * public: - * mycontract( account_name self ):contract(self){} - * void myaction() { - * auto code = _self; - * auto scope = _self; - * multi_index >, - * indexed_by< N(bysecondary2), const_mem_fun >, - * indexed_by< N(bysecondary3), const_mem_fun >, - * indexed_by< N(bysecondary4), const_mem_fun >, - * indexed_by< N(bysecondary5), const_mem_fun > - * > table( code, scope); - * } - * } - * EOSIO_ABI( mycontract, (myaction) ) - * @endcode - * @{ - */ - -template -class multi_index -{ - private: - - static_assert( sizeof...(Indices) <= 16, "multi_index only supports a maximum of 16 secondary indices" ); - - constexpr static bool validate_table_name( uint64_t n ) { - // Limit table names to 12 characters so that the last character (4 bits) can be used to distinguish between the secondary indices. - return (n & 0x000000000000000FULL) == 0; - } - - constexpr static size_t max_stack_buffer_size = 512; - - static_assert( validate_table_name(TableName), "multi_index does not support table names with a length greater than 12"); - - uint64_t _code; - uint64_t _scope; - - mutable uint64_t _next_primary_key; - - enum next_primary_key_tags : uint64_t { - no_available_primary_key = static_cast(-2), // Must be the smallest uint64_t value compared to all other tags - unset_next_primary_key = static_cast(-1) - }; - - struct item : public T - { - template - item( const multi_index* idx, Constructor&& c ) - :__idx(idx){ - c(*this); - } - - const multi_index* __idx; - int32_t __primary_itr; - int32_t __iters[sizeof...(Indices)+(sizeof...(Indices)==0)]; - }; - - struct item_ptr - { - item_ptr(std::unique_ptr&& i, uint64_t pk, int32_t pitr) - : _item(std::move(i)), _primary_key(pk), _primary_itr(pitr) {} - - std::unique_ptr _item; - uint64_t _primary_key; - int32_t _primary_itr; - }; - - mutable std::vector _items_vector; - - template - struct index { - public: - typedef Extractor secondary_extractor_type; - typedef typename std::decay::type secondary_key_type; - - constexpr static bool validate_index_name( uint64_t n ) { - return n != 0 && n != N(primary); // Primary is a reserve index name. - } - - static_assert( validate_index_name(IndexName), "invalid index name used in multi_index" ); - - enum constants { - table_name = TableName, - index_name = IndexName, - index_number = Number, - index_table_name = (TableName & 0xFFFFFFFFFFFFFFF0ULL) | (Number & 0x000000000000000FULL) // Assuming no more than 16 secondary indices are allowed - }; - - constexpr static uint64_t name() { return index_table_name; } - constexpr static uint64_t number() { return Number; } - - struct const_iterator : public std::iterator { - public: - friend bool operator == ( const const_iterator& a, const const_iterator& b ) { - return a._item == b._item; - } - friend bool operator != ( const const_iterator& a, const const_iterator& b ) { - return a._item != b._item; - } - - const T& operator*()const { return *static_cast(_item); } - const T* operator->()const { return static_cast(_item); } - - const_iterator operator++(int){ - const_iterator result(*this); - ++(*this); - return result; - } - - const_iterator operator--(int){ - const_iterator result(*this); - --(*this); - return result; - } - - const_iterator& operator++() { - using namespace _multi_index_detail; - - eosio_assert( _item != nullptr, "cannot increment end iterator" ); - - if( _item->__iters[Number] == -1 ) { - secondary_key_type temp_secondary_key; - auto idxitr = secondary_index_db_functions::db_idx_find_primary(_idx->get_code(), _idx->get_scope(), _idx->name(), _item->primary_key(), temp_secondary_key); - auto& mi = const_cast( *_item ); - mi.__iters[Number] = idxitr; - } - - uint64_t next_pk = 0; - auto next_itr = secondary_index_db_functions::db_idx_next( _item->__iters[Number], &next_pk ); - if( next_itr < 0 ) { - _item = nullptr; - return *this; - } - - const T& obj = *_idx->_multidx->find( next_pk ); - auto& mi = const_cast( static_cast(obj) ); - mi.__iters[Number] = next_itr; - _item = &mi; - - return *this; - } - - const_iterator& operator--() { - using namespace _multi_index_detail; - - uint64_t prev_pk = 0; - int32_t prev_itr = -1; - - if( !_item ) { - auto ei = secondary_index_db_functions::db_idx_end(_idx->get_code(), _idx->get_scope(), _idx->name()); - eosio_assert( ei != -1, "cannot decrement end iterator when the index is empty" ); - prev_itr = secondary_index_db_functions::db_idx_previous( ei , &prev_pk ); - eosio_assert( prev_itr >= 0, "cannot decrement end iterator when the index is empty" ); - } else { - if( _item->__iters[Number] == -1 ) { - secondary_key_type temp_secondary_key; - auto idxitr = secondary_index_db_functions::db_idx_find_primary(_idx->get_code(), _idx->get_scope(), _idx->name(), _item->primary_key(), temp_secondary_key); - auto& mi = const_cast( *_item ); - mi.__iters[Number] = idxitr; - } - prev_itr = secondary_index_db_functions::db_idx_previous( _item->__iters[Number], &prev_pk ); - eosio_assert( prev_itr >= 0, "cannot decrement iterator at beginning of index" ); - } - - const T& obj = *_idx->_multidx->find( prev_pk ); - auto& mi = const_cast( static_cast(obj) ); - mi.__iters[Number] = prev_itr; - _item = &mi; - - return *this; - } - - const_iterator():_item(nullptr){} - private: - friend struct index; - const_iterator( const index* idx, const item* i = nullptr ) - : _idx(idx), _item(i) {} - - const index* _idx; - const item* _item; - }; /// struct multi_index::index::const_iterator - - typedef std::reverse_iterator const_reverse_iterator; - - const_iterator cbegin()const { - using namespace _multi_index_detail; - return lower_bound( secondary_key_traits::lowest() ); - } - const_iterator begin()const { return cbegin(); } - - const_iterator cend()const { return const_iterator( this ); } - const_iterator end()const { return cend(); } - - const_reverse_iterator crbegin()const { return std::make_reverse_iterator(cend()); } - const_reverse_iterator rbegin()const { return crbegin(); } - - const_reverse_iterator crend()const { return std::make_reverse_iterator(cbegin()); } - const_reverse_iterator rend()const { return crend(); } - - const_iterator find( secondary_key_type&& secondary )const { - return find( secondary ); - } - - const_iterator find( const secondary_key_type& secondary )const { - auto lb = lower_bound( secondary ); - auto e = cend(); - if( lb == e ) return e; - - if( secondary != secondary_extractor_type()(*lb) ) - return e; - return lb; - } - - const_iterator require_find( secondary_key_type&& secondary, const char* error_msg = "unable to find secondary key" )const { - return require_find( secondary, error_msg ); - } - - const_iterator require_find( const secondary_key_type& secondary, const char* error_msg = "unable to find secondary key" )const { - auto lb = lower_bound( secondary ); - eosio_assert( lb != cend(), error_msg ); - eosio_assert( secondary == secondary_extractor_type()(*lb), error_msg ); - return lb; - } - - const T& get( secondary_key_type&& secondary, const char* error_msg = "unable to find secondary key" )const { - return get( secondary, error_msg ); - } - - // Gets the object with the smallest primary key in the case where the secondary key is not unique. - const T& get( const secondary_key_type& secondary, const char* error_msg = "unable to find secondary key" )const { - auto result = find( secondary ); - eosio_assert( result != cend(), error_msg ); - return *result; - } - - const_iterator lower_bound( secondary_key_type&& secondary )const { - return lower_bound( secondary ); - } - const_iterator lower_bound( const secondary_key_type& secondary )const { - using namespace _multi_index_detail; - - uint64_t primary = 0; - secondary_key_type secondary_copy(secondary); - auto itr = secondary_index_db_functions::db_idx_lowerbound( get_code(), get_scope(), name(), secondary_copy, primary ); - if( itr < 0 ) return cend(); - - const T& obj = *_multidx->find( primary ); - auto& mi = const_cast( static_cast(obj) ); - mi.__iters[Number] = itr; - - return {this, &mi}; - } - - const_iterator upper_bound( secondary_key_type&& secondary )const { - return upper_bound( secondary ); - } - const_iterator upper_bound( const secondary_key_type& secondary )const { - using namespace _multi_index_detail; - - uint64_t primary = 0; - secondary_key_type secondary_copy(secondary); - auto itr = secondary_index_db_functions::db_idx_upperbound( get_code(), get_scope(), name(), secondary_copy, primary ); - if( itr < 0 ) return cend(); - - const T& obj = *_multidx->find( primary ); - auto& mi = const_cast( static_cast(obj) ); - mi.__iters[Number] = itr; - - return {this, &mi}; - } - - const_iterator iterator_to( const T& obj ) { - using namespace _multi_index_detail; - - const auto& objitem = static_cast(obj); - eosio_assert( objitem.__idx == _multidx, "object passed to iterator_to is not in multi_index" ); - - if( objitem.__iters[Number] == -1 ) { - secondary_key_type temp_secondary_key; - auto idxitr = secondary_index_db_functions::db_idx_find_primary(get_code(), get_scope(), name(), objitem.primary_key(), temp_secondary_key); - auto& mi = const_cast( objitem ); - mi.__iters[Number] = idxitr; - } - - return {this, &objitem}; - } - - template - void modify( const_iterator itr, uint64_t payer, Lambda&& updater ) { - eosio_assert( itr != cend(), "cannot pass end iterator to modify" ); - - _multidx->modify( *itr, payer, std::forward(updater) ); - } - - const_iterator erase( const_iterator itr ) { - eosio_assert( itr != cend(), "cannot pass end iterator to erase" ); - - const auto& obj = *itr; - ++itr; - - _multidx->erase(obj); - - return itr; - } - - uint64_t get_code()const { return _multidx->get_code(); } - uint64_t get_scope()const { return _multidx->get_scope(); } - - static auto extract_secondary_key(const T& obj) { return secondary_extractor_type()(obj); } - - private: - friend class multi_index; - - index( typename std::conditional::type midx ) - :_multidx(midx){} - - typename std::conditional::type _multidx; - }; /// struct multi_index::index - - template - struct intc { enum e{ value = I }; operator uint64_t()const{ return I; } }; - - static constexpr auto transform_indices( ) { - using namespace _multi_index_detail; - - typedef decltype( hana::zip_shortest( - hana::make_tuple( intc<0>(), intc<1>(), intc<2>(), intc<3>(), intc<4>(), intc<5>(), - intc<6>(), intc<7>(), intc<8>(), intc<9>(), intc<10>(), intc<11>(), - intc<12>(), intc<13>(), intc<14>(), intc<15>() ), - hana::tuple() ) ) indices_input_type; - - return hana::transform( indices_input_type(), [&]( auto&& idx ){ - typedef typename std::decay(idx))>::type num_type; - typedef typename std::decay(idx))>::type idx_type; - return hana::make_tuple( hana::type_c >, - hana::type_c > ); - - }); - } - - typedef decltype( multi_index::transform_indices() ) indices_type; - - indices_type _indices; - - const item& load_object_by_primary_iterator( int32_t itr )const { - using namespace _multi_index_detail; - - auto itr2 = std::find_if(_items_vector.rbegin(), _items_vector.rend(), [&](const item_ptr& ptr) { - return ptr._primary_itr == itr; - }); - if( itr2 != _items_vector.rend() ) - return *itr2->_item; - - auto size = db_get_i64( itr, nullptr, 0 ); - eosio_assert( size >= 0, "error reading iterator" ); - - //using malloc/free here potentially is not exception-safe, although WASM doesn't support exceptions - void* buffer = max_stack_buffer_size < size_t(size) ? malloc(size_t(size)) : alloca(size_t(size)); - - db_get_i64( itr, buffer, uint32_t(size) ); - - datastream ds( (char*)buffer, uint32_t(size) ); - - if ( max_stack_buffer_size < size_t(size) ) { - free(buffer); - } - - auto itm = std::make_unique( this, [&]( auto& i ) { - T& val = static_cast(i); - ds >> val; - - i.__primary_itr = itr; - hana::for_each( _indices, [&]( auto& idx ) { - typedef typename decltype(+hana::at_c<1>(idx))::type index_type; - - i.__iters[ index_type::number() ] = -1; - }); - }); - - const item* ptr = itm.get(); - auto pk = itm->primary_key(); - auto pitr = itm->__primary_itr; - - _items_vector.emplace_back( std::move(itm), pk, pitr ); - - return *ptr; - } /// load_object_by_primary_iterator - - public: - /** - * Constructs an instance of a Multi-Index table. - * @brief Constructs an instance of a Multi-Index table. - * - * @param code - Account that owns table - * @param scope - Scope identifier within the code hierarchy - * - * @pre code and scope member properties are initialized - * @post each secondary index table initialized - * @post Secondary indices are updated to refer to the newly added object. If the secondary index tables do not exist, they are created. - * @post The payer is charged for the storage usage of the new object and, if the table (and secondary index tables) must be created, for the overhead of the table creation. - * - * Notes - * The `eosio::multi_index` template has template parameters ``, where: - * - `TableName` is the name of the table, maximum 12 characters long, characters in the name from the set of lowercase letters, digits 1 to 5, and the "." (period) character; - * - `T` is the object type (i.e., row definition); - * - `Indices` is a list of up to 16 secondary indices. - * - Each must be a default constructable class or struct - * - Each must have a function call operator that takes a const reference to the table object type and returns either a secondary key type or a reference to a secondary key type - * - It is recommended to use the eosio::const_mem_fun template, which is a type alias to the boost::multi_index::const_mem_fun. See the documentation for the Boost const_mem_fun key extractor for more details. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - multi_index( uint64_t code, uint64_t scope ) - :_code(code),_scope(scope),_next_primary_key(unset_next_primary_key) - {} - - /** - * Returns the `code` member property. - * @brief Returns the `code` member property. - * - * @return Account name of the Code that owns the Primary Table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(N(dan), N(dan)); // code, scope - * eosio_assert(addresses.get_code() == N(dan), "Codes don't match."); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - uint64_t get_code()const { return _code; } - - /** - * Returns the `scope` member property. - * @brief Returns the `scope` member property. - * - * @return Scope id of the Scope within the Code of the Current Receiver under which the desired Primary Table instance can be found. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(N(dan), N(dan)); // code, scope - * eosio_assert(addresses.get_code() == N(dan), "Scopes don't match"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - uint64_t get_scope()const { return _scope; } - - struct const_iterator : public std::iterator { - friend bool operator == ( const const_iterator& a, const const_iterator& b ) { - return a._item == b._item; - } - friend bool operator != ( const const_iterator& a, const const_iterator& b ) { - return a._item != b._item; - } - - const T& operator*()const { return *static_cast(_item); } - const T* operator->()const { return static_cast(_item); } - - const_iterator operator++(int) { - const_iterator result(*this); - ++(*this); - return result; - } - - const_iterator operator--(int) { - const_iterator result(*this); - --(*this); - return result; - } - - const_iterator& operator++() { - eosio_assert( _item != nullptr, "cannot increment end iterator" ); - - uint64_t next_pk; - auto next_itr = db_next_i64( _item->__primary_itr, &next_pk ); - if( next_itr < 0 ) - _item = nullptr; - else - _item = &_multidx->load_object_by_primary_iterator( next_itr ); - return *this; - } - const_iterator& operator--() { - uint64_t prev_pk; - int32_t prev_itr = -1; - - if( !_item ) { - auto ei = db_end_i64(_multidx->get_code(), _multidx->get_scope(), TableName); - eosio_assert( ei != -1, "cannot decrement end iterator when the table is empty" ); - prev_itr = db_previous_i64( ei , &prev_pk ); - eosio_assert( prev_itr >= 0, "cannot decrement end iterator when the table is empty" ); - } else { - prev_itr = db_previous_i64( _item->__primary_itr, &prev_pk ); - eosio_assert( prev_itr >= 0, "cannot decrement iterator at beginning of table" ); - } - - _item = &_multidx->load_object_by_primary_iterator( prev_itr ); - return *this; - } - - private: - const_iterator( const multi_index* mi, const item* i = nullptr ) - :_multidx(mi),_item(i){} - - const multi_index* _multidx; - const item* _item; - friend class multi_index; - }; /// struct multi_index::const_iterator - - typedef std::reverse_iterator const_reverse_iterator; - - /** - * Returns an iterator pointing to the object_type with the lowest primary key value in the Multi-Index table. - * @brief Returns an iterator pointing to the object_type with the lowest primary key value in the Multi-Index table. - * - * @return An iterator pointing to the object_type with the lowest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr == addresses.cbegin(), "Only address is not at front."); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator cbegin()const { - return lower_bound(std::numeric_limits::lowest()); - } - - /** - * Returns an iterator pointing to the object_type with the lowest primary key value in the Multi-Index table. - * @brief Returns an iterator pointing to the object_type with the lowest primary key value in the Multi-Index table. - * - * @return An iterator pointing to the object_type with the lowest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr == addresses.begin(), "Only address is not at front."); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator begin()const { return cbegin(); } - - /** - * Returns an iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * @brief Returns an iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * @return An iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr != addresses.cend(), "Address for account doesn't exist"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator cend()const { return const_iterator( this ); } - - /** - * Returns an iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * @brief Returns an iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * @return An iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr != addresses.end(), "Address for account doesn't exist"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator end()const { return cend(); } - - /** - * Returns a reverse iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * @brief Returns a reverse iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * @return A reverse iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * }); - * auto itr = addresses.crbegin(); - * eosio_assert(itr->account_name == N(dan), "Incorrect Last Record "); - * itr++; - * eosio_assert(itr->account_name == N(brendan), "Incorrect Second Last Record"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_reverse_iterator crbegin()const { return std::make_reverse_iterator(cend()); } - - /** - * Returns a reverse iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * @brief Returns a reverse iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * @return A reverse iterator pointing to the `object_type` with the highest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * }); - * auto itr = addresses.rbegin(); - * eosio_assert(itr->account_name == N(dan), "Incorrect Last Record "); - * itr++; - * eosio_assert(itr->account_name == N(brendan), "Incorrect Second Last Record"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_reverse_iterator rbegin()const { return crbegin(); } - - /** - * Returns an iterator pointing to the `object_type` with the lowest primary key value in the Multi-Index table. - * @brief Returns an iterator pointing to the `object_type` with the lowest primary key value in the Multi-Index table. - * - * @return An iterator pointing to the `object_type` with the lowest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * }); - * auto itr = addresses.crend(); - * itr--; - * eosio_assert(itr->account_name == N(brendan), "Incorrect First Record "); - * itr--; - * eosio_assert(itr->account_name == N(dan), "Incorrect Second Record"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_reverse_iterator crend()const { return std::make_reverse_iterator(cbegin()); } - - /** - * Returns an iterator pointing to the `object_type` with the lowest primary key value in the Multi-Index table. - * @brief Returns an iterator pointing to the `object_type` with the lowest primary key value in the Multi-Index table. - * - * @return An iterator pointing to the `object_type` with the lowest primary key value in the Multi-Index table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * }); - * auto itr = addresses.rend(); - * itr--; - * eosio_assert(itr->account_name == N(brendan), "Incorrect First Record "); - * itr--; - * eosio_assert(itr->account_name == N(dan), "Incorrect Second Record"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_reverse_iterator rend()const { return crend(); } - - /** - * Searches for the `object_type` with the lowest primary key that is greater than or equal to a given primary key. - * @brief Searches for the `object_type` with the lowest primary key that is greater than or equal to a given primary key. - * - * @param primary - Primary key that establishes the target value for the lower bound search. - * - * @return An iterator pointing to the `object_type` that has the lowest primary key that is greater than or equal to `primary`. If an object could not be found, it will return the `end` iterator. If the table does not exist** it will return `-1`. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint32_t zip = 0; - * uint64_t primary_key() const { return account_name; } - * uint64_t by_zip() const { return zip; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state)(zip) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address, indexed_by< N(zip), const_mem_fun > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * address.zip = 93446; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * address.zip = 93445; - * }); - * uint32_t zipnumb = 93445; - * auto zip_index = addresses.get_index(); - * auto itr = zip_index.lower_bound(zipnumb); - * eosio_assert(itr->account_name == N(brendan), "Incorrect First Lower Bound Record "); - * itr++; - * eosio_assert(itr->account_name == N(dan), "Incorrect Second Lower Bound Record"); - * itr++; - * eosio_assert(itr == zip_index.end(), "Incorrect End of Iterator"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator lower_bound( uint64_t primary )const { - auto itr = db_lowerbound_i64( _code, _scope, TableName, primary ); - if( itr < 0 ) return end(); - const auto& obj = load_object_by_primary_iterator( itr ); - return {this, &obj}; - } - - /** - * Searches for the `object_type` with the highest primary key that is less than or equal to a given primary key. - * @brief Searches for the `object_type` with the highest primary key that is less than or equal to a given primary key. - * - * @param primary - Primary key that establishes the target value for the upper bound search - * - * @return An iterator pointing to the `object_type` that has the highest primary key that is less than or equal to `primary`. If an object could not be found, it will return the `end` iterator. If the table does not exist** it will return `-1`. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint32_t zip = 0; - * uint64_t liked = 0; - * uint64_t primary_key() const { return account_name; } - * uint64_t by_zip() const { return zip; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state)(zip) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address, indexed_by< N(zip), const_mem_fun > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * address.zip = 93446; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * address.zip = 93445; - * }); - * uint32_t zipnumb = 93445; - * auto zip_index = addresses.get_index(); - * auto itr = zip_index.upper_bound(zipnumb); - * eosio_assert(itr->account_name == N(dan), "Incorrect First Upper Bound Record "); - * itr++; - * eosio_assert(itr == zip_index.end(), "Incorrect End of Iterator"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator upper_bound( uint64_t primary )const { - auto itr = db_upperbound_i64( _code, _scope, TableName, primary ); - if( itr < 0 ) return end(); - const auto& obj = load_object_by_primary_iterator( itr ); - return {this, &obj}; - } - - /** - * Returns an available primary key. - * @brief Returns an available primary key. - * - * @return An available (unused) primary key value. - * - * Notes: - * Intended to be used in tables in which the primary keys of the table are strictly intended to be auto-incrementing, and thus will never be set to custom values by the contract. Violating this expectation could result in the table appearing to be full due to inability to allocate an available primary key. - * Ideally this method would only be used to determine the appropriate primary key to use within new objects added to a table in which the primary keys of the table are strictly intended from the beginning to be autoincrementing and thus will not ever be set to custom arbitrary values by the contract. Violating this agreement could result in the table appearing full when in reality there is plenty of space left. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t key; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return key; } - * EOSLIB_SERIALIZE( address, (key)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.key = addresses.available_primary_key(); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - uint64_t available_primary_key()const { - if( _next_primary_key == unset_next_primary_key ) { - // This is the first time available_primary_key() is called for this multi_index instance. - if( begin() == end() ) { // empty table - _next_primary_key = 0; - } else { - auto itr = --end(); // last row of table sorted by primary key - auto pk = itr->primary_key(); // largest primary key currently in table - if( pk >= no_available_primary_key ) // Reserve the tags - _next_primary_key = no_available_primary_key; - else - _next_primary_key = pk + 1; - } - } - - eosio_assert( _next_primary_key < no_available_primary_key, "next primary key in table is at autoincrement limit"); - return _next_primary_key; - } - - /** - * Returns an appropriately typed Secondary Index. - * @brief Returns an appropriately typed Secondary Index. - * - * @tparam IndexName - the ID of the desired secondary index - * - * @return An index of the appropriate type: Primitive 64-bit unsigned integer key (idx64), Primitive 128-bit unsigned integer key (idx128), 128-bit fixed-size lexicographical key (idx128), 256-bit fixed-size lexicographical key (idx256), Floating point key, Double precision floating point key, Long Double (quadruple) precision floating point key - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint32_t zip = 0; - * uint64_t primary_key() const { return account_name; } - * uint64_t by_zip() const { return zip; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state)(zip) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address, indexed_by< N(zip), const_mem_fun > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * address.zip = 93446; - * }); - * uint32_t zipnumb = 93446; - * auto zip_index = addresses.get_index(); - * auto itr = zip_index.find(zipnumb); - * eosio_assert(itr->account_name == N(dan), "Incorrect Record "); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - template - auto get_index() { - using namespace _multi_index_detail; - - auto res = hana::find_if( _indices, []( auto&& in ) { - return std::integral_constant(in))::type>::type::index_name == IndexName>(); - }); - - static_assert( res != hana::nothing, "name provided is not the name of any secondary index within multi_index" ); - - return typename decltype(+hana::at_c<0>(res.value()))::type(this); - } - - /** - * Returns an appropriately typed Secondary Index. - * @brief Returns an appropriately typed Secondary Index. - * - * @tparam IndexName - the ID of the desired secondary index - * - * @return An index of the appropriate type: Primitive 64-bit unsigned integer key (idx64), Primitive 128-bit unsigned integer key (idx128), 128-bit fixed-size lexicographical key (idx128), 256-bit fixed-size lexicographical key (idx256), Floating point key, Double precision floating point key, Long Double (quadruple) precision floating point key - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint32_t zip = 0; - * uint64_t primary_key() const { return account_name; } - * uint64_t by_zip() const { return zip; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state)(zip) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address, indexed_by< N(zip), const_mem_fun > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * address.zip = 93446; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * address.zip = 93445; - * }); - * uint32_t zipnumb = 93445; - * auto zip_index = addresses.get_index(); - * auto itr = zip_index.upper_bound(zipnumb); - * eosio_assert(itr->account_name == N(dan), "Incorrect First Upper Bound Record "); - * itr++; - * eosio_assert(itr == zip_index.end(), "Incorrect End of Iterator"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - template - auto get_index()const { - using namespace _multi_index_detail; - - auto res = hana::find_if( _indices, []( auto&& in ) { - return std::integral_constant(in))::type>::type::index_name == IndexName>(); - }); - - static_assert( res != hana::nothing, "name provided is not the name of any secondary index within multi_index" ); - - return typename decltype(+hana::at_c<1>(res.value()))::type(this); - } - - /** - * Returns an iterator to the given object in a Multi-Index table. - * @brief Returns an iterator to the given object in a Multi-Index table. - * - * @param obj - A reference to the desired object - * - * @return An iterator to the given object - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint32_t zip = 0; - * uint64_t primary_key() const { return account_name; } - * uint64_t by_zip() const { return zip; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state)(zip) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address, indexed_by< N(zip), const_mem_fun > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * address.zip = 93446; - * }); - * addresses.emplace(payer, [&](auto& address) { - * address.account_name = N(brendan); - * address.first_name = "Brendan"; - * address.last_name = "Blumer"; - * address.street = "1 EOS Way"; - * address.city = "Hong Kong"; - * address.state = "HK"; - * address.zip = 93445; - * }); - * auto user = addresses.get(N(dan)); - * auto itr = address.find(N(dan)); - * eosio_assert(iterator_to(user) == itr, "Invalid iterator"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator iterator_to( const T& obj )const { - const auto& objitem = static_cast(obj); - eosio_assert( objitem.__idx == this, "object passed to iterator_to is not in multi_index" ); - return {this, &objitem}; - } - /** - * Adds a new object (i.e., row) to the table. - * @brief Adds a new object (i.e., row) to the table. - * - * @param payer - Account name of the payer for the Storage usage of the new object - * @param constructor - Lambda function that does an in-place initialization of the object to be created in the table - * - * @pre A multi index table has been instantiated - * @post A new object is created in the Multi-Index table, with a unique primary key (as specified in the object). The object is serialized and written to the table. If the table does not exist, it is created. - * @post Secondary indices are updated to refer to the newly added object. If the secondary index tables do not exist, they are created. - * @post The payer is charged for the storage usage of the new object and, if the table (and secondary index tables) must be created, for the overhead of the table creation. - * - * @return A primary key iterator to the newly created object - * - * Exception - The account is not authorized to write to the table. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - template - const_iterator emplace( uint64_t payer, Lambda&& constructor ) { - using namespace _multi_index_detail; - - eosio_assert( _code == current_receiver(), "cannot create objects in table of another contract" ); // Quick fix for mutating db using multi_index that shouldn't allow mutation. Real fix can come in RC2. - - auto itm = std::make_unique( this, [&]( auto& i ){ - T& obj = static_cast(i); - constructor( obj ); - - size_t size = pack_size( obj ); - - //using malloc/free here potentially is not exception-safe, although WASM doesn't support exceptions - void* buffer = max_stack_buffer_size < size ? malloc(size) : alloca(size); - - datastream ds( (char*)buffer, size ); - ds << obj; - - auto pk = obj.primary_key(); - - i.__primary_itr = db_store_i64( _scope, TableName, payer, pk, buffer, size ); - - if ( max_stack_buffer_size < size ) { - free(buffer); - } - - if( pk >= _next_primary_key ) - _next_primary_key = (pk >= no_available_primary_key) ? no_available_primary_key : (pk + 1); - - hana::for_each( _indices, [&]( auto& idx ) { - typedef typename decltype(+hana::at_c<0>(idx))::type index_type; - - i.__iters[index_type::number()] = secondary_index_db_functions::db_idx_store( _scope, index_type::name(), payer, obj.primary_key(), index_type::extract_secondary_key(obj) ); - }); - }); - - const item* ptr = itm.get(); - auto pk = itm->primary_key(); - auto pitr = itm->__primary_itr; - - _items_vector.emplace_back( std::move(itm), pk, pitr ); - - return {this, ptr}; - } - - /** - * Modifies an existing object in a table. - * @brief Modifies an existing object in a table. - * - * @param itr - an iterator pointing to the object to be updated - * @param payer - account name of the payer for the Storage usage of the updated row - * @param updater - lambda function that updates the target object - * - * @pre itr points to an existing element - * @pre payer is a valid account that is authorized to execute the action and be billed for storage usage. - * - * @post The modified object is serialized, then replaces the existing object in the table. - * @post Secondary indices are updated; the primary key of the updated object is not changed. - * @post The payer is charged for the storage usage of the updated object. - * @post If payer is the same as the existing payer, payer only pays for the usage difference between existing and updated object (and is refunded if this difference is negative). - * @post If payer is different from the existing payer, the existing payer is refunded for the storage usage of the existing object. - * - * Exceptions: - * If called with an invalid precondition, execution is aborted. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr != addresses.end(), "Address for account not found"); - * addresses.modify( itr, account payer, [&]( auto& address ) { - * address.city = "San Luis Obispo"; - * address.state = "CA"; - * }); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - template - void modify( const_iterator itr, uint64_t payer, Lambda&& updater ) { - eosio_assert( itr != end(), "cannot pass end iterator to modify" ); - - modify( *itr, payer, std::forward(updater) ); - } - - /** - * Modifies an existing object in a table. - * @brief Modifies an existing object in a table. - * - * @param obj - a reference to the object to be updated - * @param payer - account name of the payer for the Storage usage of the updated row - * @param updater - lambda function that updates the target object - * - * @pre obj is an existing object in the table - * @pre payer is a valid account that is authorized to execute the action and be billed for storage usage. - * - * @post The modified object is serialized, then replaces the existing object in the table. - * @post Secondary indices are updated; the primary key of the updated object is not changed. - * @post The payer is charged for the storage usage of the updated object. - * @post If payer is the same as the existing payer, payer only pays for the usage difference between existing and updated object (and is refunded if this difference is negative). - * @post If payer is different from the existing payer, the existing payer is refunded for the storage usage of the existing object. - * - * Exceptions: - * If called with an invalid precondition, execution is aborted. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr != addresses.end(), "Address for account not found"); - * addresses.modify( *itr, payer, [&]( auto& address ) { - * address.city = "San Luis Obispo"; - * address.state = "CA"; - * }); - * eosio_assert(itr->city == "San Luis Obispo", "Address not modified"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - template - void modify( const T& obj, uint64_t payer, Lambda&& updater ) { - using namespace _multi_index_detail; - - const auto& objitem = static_cast(obj); - eosio_assert( objitem.__idx == this, "object passed to modify is not in multi_index" ); - auto& mutableitem = const_cast(objitem); - eosio_assert( _code == current_receiver(), "cannot modify objects in table of another contract" ); // Quick fix for mutating db using multi_index that shouldn't allow mutation. Real fix can come in RC2. - - auto secondary_keys = hana::transform( _indices, [&]( auto&& idx ) { - typedef typename decltype(+hana::at_c<0>(idx))::type index_type; - - return index_type::extract_secondary_key( obj ); - }); - - auto pk = obj.primary_key(); - - auto& mutableobj = const_cast(obj); // Do not forget the auto& otherwise it would make a copy and thus not update at all. - updater( mutableobj ); - - eosio_assert( pk == obj.primary_key(), "updater cannot change primary key when modifying an object" ); - - size_t size = pack_size( obj ); - //using malloc/free here potentially is not exception-safe, although WASM doesn't support exceptions - void* buffer = max_stack_buffer_size < size ? malloc(size) : alloca(size); - - datastream ds( (char*)buffer, size ); - ds << obj; - - db_update_i64( objitem.__primary_itr, payer, buffer, size ); - - if ( max_stack_buffer_size < size ) { - free( buffer ); - } - - if( pk >= _next_primary_key ) - _next_primary_key = (pk >= no_available_primary_key) ? no_available_primary_key : (pk + 1); - - hana::for_each( _indices, [&]( auto& idx ) { - typedef typename decltype(+hana::at_c<0>(idx))::type index_type; - - auto secondary = index_type::extract_secondary_key( obj ); - if( memcmp( &hana::at_c(secondary_keys), &secondary, sizeof(secondary) ) != 0 ) { - auto indexitr = mutableitem.__iters[index_type::number()]; - - if( indexitr < 0 ) { - typename index_type::secondary_key_type temp_secondary_key; - indexitr = mutableitem.__iters[index_type::number()] - = secondary_index_db_functions::db_idx_find_primary( _code, _scope, index_type::name(), pk, temp_secondary_key ); - } - - secondary_index_db_functions::db_idx_update( indexitr, payer, secondary ); - } - }); - } - - /** - * Retrieves an existing object from a table using its primary key. - * @brief Retrieves an existing object from a table using its primary key. - * - * @param primary - Primary key value of the object - * @return A constant reference to the object containing the specified primary key. - * - * Exception - No object matches the given key - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto user = addresses.get(N(dan)); - * eosio_assert(user.first_name == "Daniel", "Couldn't get him."); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const T& get( uint64_t primary, const char* error_msg = "unable to find key" )const { - auto result = find( primary ); - eosio_assert( result != cend(), error_msg ); - return *result; - } - - /** - * Search for an existing object in a table using its primary key. - * @brief Search for an existing object in a table using its primary key. - * - * @param primary - Primary key value of the object - * @return An iterator to the found object which has a primary key equal to `primary` OR the `end` iterator of the referenced table if an object with primary key `primary` is not found. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr != addresses.end(), "Couldn't get him."); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator find( uint64_t primary )const { - auto itr2 = std::find_if(_items_vector.rbegin(), _items_vector.rend(), [&](const item_ptr& ptr) { - return ptr._item->primary_key() == primary; - }); - if( itr2 != _items_vector.rend() ) - return iterator_to(*(itr2->_item)); - - auto itr = db_find_i64( _code, _scope, TableName, primary ); - if( itr < 0 ) return end(); - - const item& i = load_object_by_primary_iterator( itr ); - return iterator_to(static_cast(i)); - } - - /** - * Search for an existing object in a table using its primary key. - * @brief Search for an existing object in a table using its primary key. - * - * @param primary - Primary key value of the object - * @param error_msg - error message if an object with primary key `primary` is not found. - * @return An iterator to the found object which has a primary key equal to `primary` OR throws an exception if an object with primary key `primary` is not found. - */ - - const_iterator require_find( uint64_t primary, const char* error_msg = "unable to find key" )const { - auto itr2 = std::find_if(_items_vector.rbegin(), _items_vector.rend(), [&](const item_ptr& ptr) { - return ptr._item->primary_key() == primary; - }); - if( itr2 != _items_vector.rend() ) - return iterator_to(*(itr2->_item)); - - auto itr = db_find_i64( _code, _scope, TableName, primary ); - eosio_assert( itr >= 0, error_msg ); - - const item& i = load_object_by_primary_iterator( itr ); - return iterator_to(static_cast(i)); - } - - /** - * Remove an existing object from a table using its primary key. - * @brief Remove an existing object from a table using its primary key. - * - * @param itr - An iterator pointing to the object to be removed - * - * @pre itr points to an existing element - * @post The object is removed from the table and all associated storage is reclaimed. - * @post Secondary indices associated with the table are updated. - * @post The existing payer for storage usage of the object is refunded for the table and secondary indices usage of the removed object, and if the table and indices are removed, for the associated overhead. - * - * @return For the signature with `const_iterator`, returns a pointer to the object following the removed object. - * - * Exceptions: - * The object to be removed is not in the table. - * The action is not authorized to modify the table. - * The given iterator is invalid. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr != addresses.end(), "Address for account not found"); - * addresses.erase( itr ); - * eosio_assert(itr != addresses.end(), "Address not erased properly"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - const_iterator erase( const_iterator itr ) { - eosio_assert( itr != end(), "cannot pass end iterator to erase" ); - - const auto& obj = *itr; - ++itr; - - erase(obj); - - return itr; - } - - /** - * Remove an existing object from a table using its primary key. - * @brief Remove an existing object from a table using its primary key. - * - * @param obj - Object to be removed - * - * @pre obj is an existing object in the table - * @post The object is removed from the table and all associated storage is reclaimed. - * @post Secondary indices associated with the table are updated. - * @post The existing payer for storage usage of the object is refunded for the table and secondary indices usage of the removed object, and if the table and indices are removed, for the associated overhead. - * - * Exceptions: - * The object to be removed is not in the table. - * The action is not authorized to modify the table. - * The given iterator is invalid. - * - * Example: - * - * @code - * #include - * using namespace eosio; - * using namespace std; - * class addressbook: contract { - * struct address { - * uint64_t account_name; - * string first_name; - * string last_name; - * string street; - * string city; - * string state; - * uint64_t primary_key() const { return account_name; } - * EOSLIB_SERIALIZE( address, (account_name)(first_name)(last_name)(street)(city)(state) ) - * }; - * public: - * addressbook(account_name self):contract(self) {} - * typedef eosio::multi_index< N(address), address > address_index; - * void myaction() { - * address_index addresses(_self, _self); // code, scope - * // add to table, first argument is account to bill for storage - * addresses.emplace(_self, [&](auto& address) { - * address.account_name = N(dan); - * address.first_name = "Daniel"; - * address.last_name = "Larimer"; - * address.street = "1 EOS Way"; - * address.city = "Blacksburg"; - * address.state = "VA"; - * }); - * auto itr = addresses.find(N(dan)); - * eosio_assert(itr != addresses.end(), "Record is not found"); - * addresses.erase(*itr); - * itr = addresses.find(N(dan)); - * eosio_assert(itr == addresses.end(), "Record is not deleted"); - * } - * } - * EOSIO_ABI( addressbook, (myaction) ) - * @endcode - */ - void erase( const T& obj ) { - using namespace _multi_index_detail; - - const auto& objitem = static_cast(obj); - eosio_assert( objitem.__idx == this, "object passed to erase is not in multi_index" ); - eosio_assert( _code == current_receiver(), "cannot erase objects in table of another contract" ); // Quick fix for mutating db using multi_index that shouldn't allow mutation. Real fix can come in RC2. - - auto pk = objitem.primary_key(); - auto itr2 = std::find_if(_items_vector.rbegin(), _items_vector.rend(), [&](const item_ptr& ptr) { - return ptr._item->primary_key() == pk; - }); - - eosio_assert( itr2 != _items_vector.rend(), "attempt to remove object that was not in multi_index" ); - - _items_vector.erase(--(itr2.base())); - - db_remove_i64( objitem.__primary_itr ); - - hana::for_each( _indices, [&]( auto& idx ) { - typedef typename decltype(+hana::at_c<0>(idx))::type index_type; - - auto i = objitem.__iters[index_type::number()]; - if( i < 0 ) { - typename index_type::secondary_key_type secondary; - i = secondary_index_db_functions::db_idx_find_primary( _code, _scope, index_type::name(), objitem.primary_key(), secondary ); - } - if( i >= 0 ) - secondary_index_db_functions::db_idx_remove( i ); - }); - } - -}; - /// @} -} /// eosio diff --git a/contracts/eosiolib/optional.hpp b/contracts/eosiolib/optional.hpp deleted file mode 100644 index fb3a404658f..00000000000 --- a/contracts/eosiolib/optional.hpp +++ /dev/null @@ -1,535 +0,0 @@ -#pragma once - -#include - -namespace eosio { - /** - * @defgroup optionaltype Optional Type - * @brief Defines otional type which is similar to boost::optional - * @ingroup types - * @{ - */ - - /** - * Provides stack-based nullable value similar to boost::optional - * - * @brief Provides stack-based nullable value similar to boost::optional - */ - template - class optional { - public: - typedef T value_type; - typedef typename std::aligned_storage::type storage_type; - - /** - * Default constructor - * - * @brief Construct a new optional object - */ - optional():_valid(false){} - - /** - * Destructor - * - * @brief Destroy the optional object - */ - ~optional(){ reset(); } - - /** - * Construct a new optional object from another optional object - * - * @brief Construct a new optional object - */ - optional( optional& o ) - :_valid(false) - { - if( o._valid ) new (ptr()) T( *o ); - _valid = o._valid; - } - - /** - * Copy constructor - * - * @brief Construct a new optional object - */ - optional( const optional& o ) - :_valid(false) - { - if( o._valid ) new (ptr()) T( *o ); - _valid = o._valid; - } - - /** - * Move constructor - * - * @brief Construct a new optional object - */ - optional( optional&& o ) - :_valid(false) - { - if( o._valid ) new (ptr()) T( std::move(*o) ); - _valid = o._valid; - o.reset(); - } - - /** - * Construct a new optional object from another type of optional object - * - * @brief Construct a new optional object from another type of optional object - */ - template - optional( const optional& o ) - :_valid(false) - { - if( o._valid ) new (ptr()) T( *o ); - _valid = o._valid; - } - - /** - * Construct a new optional object from another type of optional object - * - * @brief Construct a new optional object from another type of optional object - */ - template - optional( optional& o ) - :_valid(false) - { - if( o._valid ) - { - new (ptr()) T( *o ); - } - _valid = o._valid; - } - - /** - * Construct a new optional object from another type of optional object - * - * @brief Construct a new optional object from another type of optional object - */ - template - optional( optional&& o ) - :_valid(false) - { - if( o._valid ) new (ptr()) T( std::move(*o) ); - _valid = o._valid; - o.reset(); - } - - /** - * Construct a new optional object from another object - * - * @brief Construct a new optional object from another object - */ - template - optional( U&& u ) - :_valid(true) - { - new ((char*)ptr()) T( std::forward(u) ); - } - - /** - * Construct a new optional object from another object - * - * @brief Construct a new optional object from another object - */ - template - optional& operator=( U&& u ) - { - reset(); - new (ptr()) T( std::forward(u) ); - _valid = true; - return *this; - } - - /** - * Construct the contained value in place - * - * @brief Construct the contained value in place - * @tparam Args - Type of the contained value - * @param args - The value to be assigned as contained value - */ - template - void emplace(Args&& ... args) { - if (_valid) { - reset(); - } - - new ((char*)ptr()) T( std::forward(args)... ); - _valid = true; - } - - /** - * Assignment Operator - * - * @brief Assignment Operator - * @tparam U - Type of the contained value of the optional object to be assigned from - * @param o - The other optional object to be assigned from - * @return optional& - The reference to this object - */ - template - optional& operator=( optional& o ) { - if (this != &o) { - if( _valid && o._valid ) { - ref() = *o; - } else if( !_valid && o._valid ) { - new (ptr()) T( *o ); - _valid = true; - } else if (_valid) { - reset(); - } - } - return *this; - } - - /** - * Assignment Operator - * - * @brief Assignment Operator - * @tparam U - Type of the contained value of the optional object to be assigned from - * @param o - The other optional object to be assigned from - * @return optional& - The reference to this object - */ - template - optional& operator=( const optional& o ) { - if (this != &o) { - if( _valid && o._valid ) { - ref() = *o; - } else if( !_valid && o._valid ) { - new (ptr()) T( *o ); - _valid = true; - } else if (_valid) { - reset(); - } - } - return *this; - } - - /** - * Assignment Operator - * - * @brief Assignment Operator - * @param o - The other optional object to be assigned from - * @return optional& - The reference to this object - */ - optional& operator=( optional& o ) { - if (this != &o) { - if( _valid && o._valid ) { - ref() = *o; - } else if( !_valid && o._valid ) { - new (ptr()) T( *o ); - _valid = true; - } else if (_valid) { - reset(); - } - } - return *this; - } - - /** - * Assignment Operator - * - * @brief Assignment Operator - * @param o - The other optional object to be assigned from - * @return optional& - The reference to this object - */ - optional& operator=( const optional& o ) { - if (this != &o) { - if( _valid && o._valid ) { - ref() = *o; - } else if( !_valid && o._valid ) { - new (ptr()) T( *o ); - _valid = true; - } else if (_valid) { - reset(); - } - } - return *this; - } - - /** - * Assignment Operator - * - * @brief Assignment Operator - * @tparam U - Type of the contained value of the optional object to be assigned from - * @param o - The other optional object to be assigned from - * @return optional& - The reference to this object - */ - template - optional& operator=( optional&& o ) - { - if (this != &o) - { - if( _valid && o._valid ) - { - ref() = std::move(*o); - o.reset(); - } else if ( !_valid && o._valid ) { - *this = std::move(*o); - } else if (_valid) { - reset(); - } - } - return *this; - } - - /** - * Assignment Operator - * - * @brief Assignment Operator - * @param o - The other optional object to be assigned from - * @return optional& - The reference to this object - */ - optional& operator=( optional&& o ) - { - if (this != &o) - { - if( _valid && o._valid ) - { - ref() = std::move(*o); - o.reset(); - } else if ( !_valid && o._valid ) { - *this = std::move(*o); - } else if (_valid) { - reset(); - } - } - return *this; - } - - /** - * Check if this optional has valid contained value - * - * @brief Check if this optional has valid contained value - * @return true - if this optional has valid contained value - * @return false - otherwise - */ - bool valid()const { return _valid; } - - /** - * Logical Negation operator - * - * @brief Logical Negation Operator - * @return true - if this optional has invalid contained value - * @return false - otherwise - */ - bool operator!()const { return !_valid; } - - /** - * Similar to valid(). However, this operation is not safe and can result in unintential - * casts and comparisons, use valid() or !! - * - * @brief Check if this optional has valid contained value - * @return true - if this optional has valid contained value - * @return false - otherwise - */ - explicit operator bool()const { return _valid; } - - /** - * Get contained value of this optional - * - * @brief Pointer Dereference operator - * @return T& - Contained value - */ - T& operator*() { eosio_assert(_valid, "dereference of empty optional"); return ref(); } - - /** - * Get contained value of this optional - * - * @brief Pointer Dereference operator - * @return T& - Contained value - */ - const T& operator*()const { eosio_assert(_valid, "dereference of empty optional"); return ref(); } - - /** - * Get pointer to the contained value - * - * @brief Member Access Through Pointer Operator - * @return T& - The pointer to the contained value - */ - T* operator->() - { - eosio_assert(_valid, "dereference of empty optional"); - return ptr(); - } - - /** - * Get pointer to the contained value - * - * @brief Member Access Through Pointer Operator - * @return T& - The pointer to the contained value - */ - const T* operator->()const - { - eosio_assert(_valid, "dereference of empty optional"); - return ptr(); - } - - /** - * Assignment Operator with nullptr - * - * @brief Assignment Operator with nullptr - * @return optional& - The reference to this object - */ - optional& operator=(std::nullptr_t) - { - reset(); - return *this; - } - - /** - * Call the destructor fot he contained value and mark this optional as valid - * - * @brief Reset the optional object - */ - void reset() - { - if( _valid ) { - ref().~T(); // cal destructor - } - _valid = false; - } - - /** - * Check if a contained value is less than b contained value - * - * @brief Less than operator - * @param a - First object to compare - * @param b - Second object to compare - * @return true - if a contained value is less than b contained value - * @return false - otherwise - */ - friend bool operator < ( const optional a, optional b ) - { - if( a.valid() && b.valid() ) return *a < *b; - return a.valid() < b.valid(); - } - - /** - * Check if a contained value is equal to b contained value - * - * @brief Equality operator - * @param a - First object to compare - * @param b - Second object to compare - * @return true - if contained value is equal to b contained value - * @return false - otherwise - */ - friend bool operator == ( const optional a, optional b ) - { - if( a.valid() && b.valid() ) return *a == *b; - return a.valid() == b.valid(); - } - - /** - * Serialize an optional object - * - * @brief Serialize an optional object - * @param ds - The stream to write - * @param op - The value to serialize - * @tparam Stream - Type of datastream - * @return eosio::datastream& - Reference to the datastream - */ - template - friend inline eosio::datastream& operator>> (eosio::datastream& ds, optional& op) - { - char valid = 0; - ds >> valid; - if (valid) { - op._valid = true; - ds >> *op; - } - return ds; - } - - /** - * Deserialize an optional object - * - * @brief Deserialize an optional object - * @param ds - The stream to read - * @param op - The destination for deserialized value - * @tparam Stream - Type of datastream - * @return eosio::datastream& - Reference to the datastream - */ - template - friend inline eosio::datastream& operator<< (eosio::datastream& ds, const optional& op) - { - char valid = op._valid; - ds << valid; - if (valid) ds << *op; - return ds; - } - - private: - template friend class optional; - T& ref() { return *ptr(); } - const T& ref()const { return *ptr(); } - T* ptr() { return reinterpret_cast(&_value); } - const T* ptr()const { return reinterpret_cast(&_value); } - - bool _valid; - storage_type _value; - - }; - - /** - * Check equality between two optional object that shares same type of contained value - * - * @brief Equality Operator - * @tparam T - Type of contained value of the optional objects - * @param left - First object to be compared - * @param right - Second object to be compared - * @return true - if both optional objects are equal - * @return false - */ - template - bool operator == ( const optional& left, const optional& right ) { - return (!left == !right) || (!!left && *left == *right); - } - - /** - * Check equality between an optional object with another object - * - * @brief Equality Operator - * @tparam T - Type of contained value of the optional object - * @tparam U - Type of the other object to be compared - * @param left - First object to be compared - * @param u - Second object to be compared - * @return true - if the optional objects contained value is equal with the compared object - * @return false - */ - template - bool operator == ( const optional& left, const U& u ) { - return !!left && *left == u; - } - - /** - * Check inequality between two optional object that shares same type of contained value - * - * @brief Inquality Operator - * @tparam T - Type of contained value of the optional objects - * @param left - First object to be compared - * @param right - Second object to be compared - * @return true - if both optional objects are unequal - * @return false - */ - template - bool operator != ( const optional& left, const optional& right ) { - return (!left != !right) || (!!left && *left != *right); - } - - /** - * Check inequality between an optional object with another object - * - * @brief Inqquality Operator - * @tparam T - Type of contained value of the optional object - * @tparam U - Type of the other object to be compared - * @param left - First object to be compared - * @param u - Second object to be compared - * @return true - if the optional objects contained value is unequal with the compared object - * @return false - */ - template - bool operator != ( const optional& left, const U& u ) { - return !left || *left != u; - } -///@} optional -} // namespace eosio diff --git a/contracts/eosiolib/permission.h b/contracts/eosiolib/permission.h deleted file mode 100644 index 743b499bca8..00000000000 --- a/contracts/eosiolib/permission.h +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include - -extern "C" { - /** - * @brief Checks if a transaction is authorized by a provided set of keys and permissions - * - * @param trx_data - pointer to the start of the serialized transaction - * @param trx_size - size (in bytes) of the serialized transaction - * @param pubkeys_data - pointer to the start of the serialized vector of provided public keys - * @param pubkeys_size - size (in bytes) of serialized vector of provided public keys (can be 0 if no public keys are to be provided) - * @param perms_data - pointer to the start of the serialized vector of provided permissions (empty permission name acts as wildcard) - * @param perms_size - size (in bytes) of the serialized vector of provided permissions - * - * @return 1 if the transaction is authorized, 0 otherwise - */ - int32_t - check_transaction_authorization( const char* trx_data, uint32_t trx_size, - const char* pubkeys_data, uint32_t pubkeys_size, - const char* perms_data, uint32_t perms_size - ); - - /** - * @brief Checks if a permission is authorized by a provided delay and a provided set of keys and permissions - * - * @param account - the account owner of the permission - * @param permission - the name of the permission to check for authorization - * @param pubkeys_data - pointer to the start of the serialized vector of provided public keys - * @param pubkeys_size - size (in bytes) of serialized vector of provided public keys (can be 0 if no public keys are to be provided) - * @param perms_data - pointer to the start of the serialized vector of provided permissions (empty permission name acts as wildcard) - * @param perms_size - size (in bytes) of the serialized vector of provided permissions - * @param delay_us - the provided delay in microseconds (cannot exceed INT64_MAX) - * - * @return 1 if the permission is authorized, 0 otherwise - */ - int32_t - check_permission_authorization( account_name account, - permission_name permission, - const char* pubkeys_data, uint32_t pubkeys_size, - const char* perms_data, uint32_t perms_size, - uint64_t delay_us - ); - - /** - * @brief Returns the last used time of a permission - * - * @param account - the account owner of the permission - * @param permission - the name of the permission - * - * @return the last used time (in microseconds since Unix epoch) of the permission - */ - int64_t get_permission_last_used( account_name account, permission_name permission ); - - - /** - * @brief Returns the creation time of an account - * - * @param account - the account - * - * @return the creation time (in microseconds since Unix epoch) of the account - */ - int64_t get_account_creation_time( account_name account ); - -} diff --git a/contracts/eosiolib/permission.hpp b/contracts/eosiolib/permission.hpp deleted file mode 100644 index 668fa79bff9..00000000000 --- a/contracts/eosiolib/permission.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include - -#include -#include - -namespace eosio { - - /** - * @brief Checks if a transaction is authorized by a provided set of keys and permissions - * - * @param trx - the transaction for which to check authorizations - * @param provided_permissions - the set of permissions which have authorized the transaction (empty permission name acts as wildcard) - * @param provided_keys - the set of public keys which have authorized the transaction - * - * @return whether the transaction was authorized by provided keys and permissions - */ - bool - check_transaction_authorization( const transaction& trx, - const std::set& provided_permissions , - const std::set& provided_keys = std::set() - ) - { - bytes packed_trx = pack(trx); - - bytes packed_keys; - auto nkeys = provided_keys.size(); - if( nkeys > 0 ) { - packed_keys = pack(provided_keys); - } - - bytes packed_perms; - auto nperms = provided_permissions.size(); - if( nperms > 0 ) { - packed_perms = pack(provided_permissions); - } - - auto res = ::check_transaction_authorization( packed_trx.data(), - packed_trx.size(), - (nkeys > 0) ? packed_keys.data() : (const char*)0, - (nkeys > 0) ? packed_keys.size() : 0, - (nperms > 0) ? packed_perms.data() : (const char*)0, - (nperms > 0) ? packed_perms.size() : 0 - ); - - return (res > 0); - } - - /** - * @brief Checks if a permission is authorized by a provided delay and a provided set of keys and permissions - * - * @param account - the account owner of the permission - * @param permission - the permission name to check for authorization - * @param provided_keys - the set of public keys which have authorized the transaction - * @param provided_permissions - the set of permissions which have authorized the transaction (empty permission name acts as wildcard) - * @param provided_delay_us - the provided delay in microseconds (cannot exceed INT64_MAX) - * - * @return whether the permission was authorized by provided delay, keys, and permissions - */ - bool - check_permission_authorization( account_name account, - permission_name permission, - const std::set& provided_keys, - const std::set& provided_permissions = std::set(), - uint64_t provided_delay_us = static_cast(std::numeric_limits::max()) - ) - { - bytes packed_keys; - auto nkeys = provided_keys.size(); - if( nkeys > 0 ) { - packed_keys = pack(provided_keys); - } - - bytes packed_perms; - auto nperms = provided_permissions.size(); - if( nperms > 0 ) { - packed_perms = pack(provided_permissions); - } - - auto res = ::check_permission_authorization( account, - permission, - (nkeys > 0) ? packed_keys.data() : (const char*)0, - (nkeys > 0) ? packed_keys.size() : 0, - (nperms > 0) ? packed_perms.data() : (const char*)0, - (nperms > 0) ? packed_perms.size() : 0, - provided_delay_us - ); - - return (res > 0); - } - -} diff --git a/contracts/eosiolib/print.h b/contracts/eosiolib/print.h deleted file mode 100644 index ab7dfcc8ade..00000000000 --- a/contracts/eosiolib/print.h +++ /dev/null @@ -1,168 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include - -#ifdef __cplusplus -extern "C" { -#endif - /** - * @defgroup consoleapi Console API - * @brief Defines APIs to log/print text messages - * @ingroup contractdev - * - */ - - /** - * @defgroup consolecapi Console C API - * @brief Defnes %C API to log/print text messages - * @ingroup consoleapi - * @{ - */ - - /** - * Prints string - * @brief Prints string - * @param cstr - a null terminated string - * - * Example: -* - * @code - * prints("Hello World!"); // Output: Hello World! - * @endcode - */ - void prints( const char* cstr ); - - /** - * Prints string up to given length - * @brief Prints string - * @param cstr - pointer to string - * @param len - len of string to be printed - * - * Example: -* - * @code - * prints_l("Hello World!", 5); // Output: Hello - * @endcode - */ - void prints_l( const char* cstr, uint32_t len); - - /** - * Prints value as a 64 bit signed integer - * @brief Prints value as a 64 bit signed integer - * @param value of 64 bit signed integer to be printed - * - * Example: -* - * @code - * printi(-1e+18); // Output: -1000000000000000000 - * @endcode - */ - void printi( int64_t value ); - - /** - * Prints value as a 64 bit unsigned integer - * @brief Prints value as a 64 bit unsigned integer - * @param value of 64 bit unsigned integer to be printed - * - * Example: -* - * @code - * printui(1e+18); // Output: 1000000000000000000 - * @endcode - */ - void printui( uint64_t value ); - - /** - * Prints value as a 128 bit signed integer - * @brief Prints value as a 128 bit signed integer - * @param value is a pointer to the 128 bit signed integer to be printed - * - * Example: -* - * @code - * int128_t large_int(-87654323456); - * printi128(&large_int); // Output: -87654323456 - * @endcode - */ - void printi128( const int128_t* value ); - - /** - * Prints value as a 128 bit unsigned integer - * @brief Prints value as a 128 bit unsigned integer - * @param value is a pointer to the 128 bit unsigned integer to be printed - * - * Example: -* - * @code - * uint128_t large_int(87654323456); - * printui128(&large_int); // Output: 87654323456 - * @endcode - */ - void printui128( const uint128_t* value ); - - /** - * Prints value as single-precision floating point number - * @brief Prints value as single-precision floating point number (i.e. float) - * @param value of float to be printed - * - * Example: -* - * @code - * float value = 5.0 / 10.0; - * printsf(value); // Output: 0.5 - * @endcode - */ - void printsf(float value); - - /** - * Prints value as double-precision floating point number - * @brief Prints value as double-precision floating point number (i.e. double) - * @param value of double to be printed - * - * Example: -* - * @code - * double value = 5.0 / 10.0; - * printdf(value); // Output: 0.5 - * @endcode - */ - void printdf(double value); - - /** - * Prints value as quadruple-precision floating point number - * @brief Prints value as quadruple-precision floating point number (i.e. long double) - * @param value is a pointer to the long double to be printed - * - * Example: -* - * @code - * long double value = 5.0 / 10.0; - * printqf(value); // Output: 0.5 - * @endcode - */ - void printqf(const long double* value); - - /** - * Prints a 64 bit names as base32 encoded string - * @brief Prints a 64 bit names as base32 encoded string - * @param name - 64 bit name to be printed - * - * Example: - * @code - * printn(N(abcde)); // Output: abcde - * @endcode - */ - void printn( uint64_t name ); - - /** - */ - void printhex( const void* data, uint32_t datalen ); - - /// @} -#ifdef __cplusplus -} -#endif diff --git a/contracts/eosiolib/print.hpp b/contracts/eosiolib/print.hpp deleted file mode 100644 index 84bdf263aa3..00000000000 --- a/contracts/eosiolib/print.hpp +++ /dev/null @@ -1,321 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include -#include -#include -#include -#include - -namespace eosio { - - static_assert( sizeof(long) == sizeof(int), "unexpected size difference" ); - - /** - * Prints string - * - * @brief Prints string - * @param ptr - a null terminated string - */ - inline void print( const char* ptr ) { - prints(ptr); - } - - inline void print( const std::string& s) { - prints_l( s.c_str(), s.size() ); - } - - inline void print( std::string& s) { - prints_l( s.c_str(), s.size() ); - } - - inline void print( const char c ) { - prints_l( &c, 1 ); - } - - /** - * Prints signed integer - * - * @brief Prints signed integer as a 64 bit signed integer - * @param num to be printed - */ - inline void print( int num ) { - printi(num); - } - - /** - * Prints 32 bit signed integer - * - * @brief Prints 32 bit signed integer as a 64 bit signed integer - * @param num to be printed - */ - inline void print( int32_t num ) { - printi(num); - } - - /** - * Prints 64 bit signed integer - * - * @brief Prints 64 bit signed integer as a 64 bit signed integer - * @param num to be printed - */ - inline void print( int64_t num ) { - printi(num); - } - - - /** - * Prints unsigned integer - * - * @brief Prints unsigned integer as a 64 bit unsigned integer - * @param num to be printed - */ - inline void print( unsigned int num ) { - printui(num); - } - - /** - * Prints 32 bit unsigned integer - * - * @brief Prints 32 bit unsigned integer as a 64 bit unsigned integer - * @param num to be printed - */ - inline void print( uint32_t num ) { - printui(num); - } - - /** - * Prints 64 bit unsigned integer - * - * @brief Prints 64 bit unsigned integer as a 64 bit unsigned integer - * @param num to be printed - */ - inline void print( uint64_t num ) { - printui(num); - } - - /** - * Prints 128 bit signed integer - * - * @brief Prints 128 bit signed integer - * @param num to be printed - */ - inline void print( int128_t num ) { - printi128(&num); - } - - /** - * Prints 128 bit unsigned integer - * - * @brief Prints 128 bit unsigned integer - * @param num to be printed - */ - inline void print( uint128_t num ) { - printui128(&num); - } - - - /** - * Prints single-precision floating point number - * - * @brief Prints single-precision floating point number (i.e. float) - * @param num to be printed - */ - inline void print( float num ) { printsf( num ); } - - /** - * Prints double-precision floating point number - * - * @brief Prints double-precision floating point number (i.e. double) - * @param num to be printed - */ - inline void print( double num ) { printdf( num ); } - - /** - * Prints quadruple-precision floating point number - * - * @brief Prints quadruple-precision floating point number (i.e. long double) - * @param num to be printed - */ - inline void print( long double num ) { printqf( &num ); } - - - /** - * Prints fixed_key as a hexidecimal string - * - * @brief Prints fixed_key as a hexidecimal string - * @param val to be printed - */ - template - inline void print( const fixed_key& val ) { - auto arr = val.extract_as_byte_array(); - prints("0x"); - printhex(static_cast(arr.data()), arr.size()); - } - - /** - * Prints fixed_key as a hexidecimal string - * - * @brief Prints fixed_key as a hexidecimal string - * @param val to be printed - */ - template - inline void print( fixed_key& val ) { - print(static_cast&>(val)); - } - - /** - * Prints a 64 bit names as base32 encoded string - * - * @brief Prints a 64 bit names as base32 encoded string - * @param name 64 bit name to be printed - */ - inline void print( name name ) { - printn(name.value); - } - - /** - * Prints bool - * - * @brief Prints bool - * @param val to be printed - */ - inline void print( bool val ) { - prints(val?"true":"false"); - } - - - /** - * Prints class object - * - * @brief Prints class object - * @param t to be printed - * @pre T must implements print() function - */ - template - inline void print( T&& t ) { - t.print(); - } - - /** - * Prints null terminated string - * - * @brief Prints null terminated string - * @param s null terminated string to be printed - */ - inline void print_f( const char* s ) { - prints(s); - } - - /** - * @defgroup consolecppapi Console C++ API - * @ingroup consoleapi - * @brief Defines C++ wrapper to log/print text messages - * - * This API uses C++ variadic templates and type detection to - * make it easy to print any native type. You can even overload - * the `print()` method for your own custom types. - * - * **Example:** - * ``` - * print( "hello world, this is a number: ", 5 ); - * ``` - * - * @section override Overriding Print for your Types - * - * There are two ways to overload print: - * 1. implement void print( const T& ) - * 2. implement T::print()const - * - * @{ - */ - - - /** - * Prints formatted string. It behaves similar to C printf/ - * - * @brief Prints formatted string - * @tparam Arg - Type of the value used to replace the format specifier - * @tparam Args - Type of the value used to replace the format specifier - * @param s - Null terminated string with to be printed (it can contains format specifier) - * @param val - The value used to replace the format specifier - * @param rest - The values used to replace the format specifier - * - * Example: - * @code - * print_f("Number of apples: %", 10); - * @endcode - */ - template - inline void print_f( const char* s, Arg val, Args... rest ) { - while ( *s != '\0' ) { - if ( *s == '%' ) { - print( val ); - print_f( s+1, rest... ); - return; - } - prints_l( s, 1 ); - s++; - } - } - - /** - * Print out value / list of values - * @brief Print out value / list of values - * @param a - The value to be printed - * @param args - The other values to be printed - * - * Example: -* - * @code - * const char *s = "Hello World!"; - * uint64_t unsigned_64_bit_int = 1e+18; - * uint128_t unsigned_128_bit_int (87654323456); - * uint64_t string_as_unsigned_64_bit = N(abcde); - * print(s , unsigned_64_bit_int, unsigned_128_bit_int, string_as_unsigned_64_bit); - * // Ouput: Hello World!100000000000000000087654323456abcde - * @endcode - */ - template - void print( Arg&& a, Args&&... args ) { - print(std::forward(a)); - print(std::forward(args)...); - } - - /** - * Simulate C++ style streams - */ - class iostream {}; - - /** - * Overload c++ iostream - * @brief Overload c++ iostream - * @param out - Output strem - * @param v - The value to be printed - * @return iostream& - Reference to the input output stream - * - * Example: -* - * @code - * const char *s = "Hello World!"; - * uint64_t unsigned_64_bit_int = 1e+18; - * uint128_t unsigned_128_bit_int (87654323456); - * uint64_t string_as_unsigned_64_bit = N(abcde); - * std::out << s << " " << unsigned_64_bit_int << " " << unsigned_128_bit_int << " " << string_as_unsigned_64_bit; - * // Output: Hello World! 1000000000000000000 87654323456 abcde - * @endcode - */ - template - inline iostream& operator<<( iostream& out, const T& v ) { - print( v ); - return out; - } - - static iostream cout; - - /// @} consolecppapi - - -} diff --git a/contracts/eosiolib/privileged.h b/contracts/eosiolib/privileged.h deleted file mode 100644 index d6d6761e9e3..00000000000 --- a/contracts/eosiolib/privileged.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - - /** - * @defgroup privilegedapi Privileged API - * @ingroup systemapi - * @brief Defines an API for accessing configuration of the chain that can only be done by privileged accounts - */ - - /** - * @defgroup privilegedcapi Privileged C API - * @ingroup privilegedapi - * @brief Defines %C Privileged API - * - * @{ - */ - - /** - * @brief Get the resource limits of an account - * Get the resource limits of an account - * @param account - name of the account whose resource limit to get - * @param ram_bytes - pointer to `int64_t` to hold retrieved ram limit in absolute bytes - * @param net_weight - pointer to `int64_t` to hold net limit - * @param cpu_weight - pointer to `int64_t` to hold cpu limit - */ - void get_resource_limits( account_name account, int64_t* ram_bytes, int64_t* net_weight, int64_t* cpu_weight ); - - /** - * @brief Set the resource limits of an account - * Set the resource limits of an account - * @param account - name of the account whose resource limit to be set - * @param ram_bytes - ram limit in absolute bytes - * @param net_weight - fractionally proportionate net limit of available resources based on (weight / total_weight_of_all_accounts) - * @param cpu_weight - fractionally proportionate cpu limit of available resources based on (weight / total_weight_of_all_accounts) - */ - void set_resource_limits( account_name account, int64_t ram_bytes, int64_t net_weight, int64_t cpu_weight ); - - /** - * Proposes a schedule change, once the block that contains the proposal becomes irreversible, the schedule is promoted to "pending" automatically. Once the block that promotes the schedule is irreversible, the schedule will become "active" - * @param producer_data - packed data of produce_keys in the appropriate producer schedule order - * @param producer_data_size - size of the data buffer - * - * @return -1 if proposing a new producer schedule was unsuccessful, otherwise returns the version of the new proposed schedule - */ - int64_t set_proposed_producers( char *producer_data, uint32_t producer_data_size ); - - /** - * @brief Set new active producers - * Set new active producers. Producers will only be activated once the block which starts the next round is irrreversible - * @param producer_data - pointer to producer schedule packed as bytes - * @param producer_data_size - size of the packed producer schedule - * @pre `producer_data` is a valid pointer to a range of memory at least `producer_data_size` bytes long that contains serialized produced schedule data - */ - void set_active_producers( char *producer_data, uint32_t producer_data_size ); - /** - * @brief Check if an account is privileged - * Check if an account is privileged - * @param account - name of the account to be checked - * @return true if the account is privileged - * @return false if the account is not privileged - */ - bool is_privileged( account_name account ); - - /** - * @brief Set the privileged status of an account - * Set the privileged status of an account - * @param account - name of the account whose privileged account to be set - * @param is_priv - privileged status - */ - void set_privileged( account_name account, bool is_priv ); - - /** - * @brief Set the blockchain parameters - * Set the blockchain parameters - * @param data - pointer to blockchain parameters packed as bytes - * @param datalen - size of the packed blockchain parameters - * @pre `data` is a valid pointer to a range of memory at least `datalen` bytes long that contains packed blockchain params data - */ - void set_blockchain_parameters_packed(char* data, uint32_t datalen); - - /** - * @brief Retrieve the blolckchain parameters - * Retrieve the blolckchain parameters - * @param data - output buffer of the blockchain parameters, only retrieved if sufficent size to hold packed data. - * @param datalen - size of the data buffer, 0 to report required size. - * @return size of the blockchain parameters - * @pre `data` is a valid pointer to a range of memory at least `datalen` bytes long - * @post `data` is filled with packed blockchain parameters - */ - uint32_t get_blockchain_parameters_packed(char* data, uint32_t datalen); - - void set_upgrade_parameters_packed(char* data, uint32_t datalen); - /** - * @brief Activate new feature - * Activate new feature - * @param f - name (identifier) of the feature to be activated - */ - void activate_feature( int64_t f ); - - ///@ } privilegedcapi -#ifdef __cplusplus -} -#endif diff --git a/contracts/eosiolib/privileged.hpp b/contracts/eosiolib/privileged.hpp deleted file mode 100644 index e6541f31eb6..00000000000 --- a/contracts/eosiolib/privileged.hpp +++ /dev/null @@ -1,172 +0,0 @@ -#pragma once -#include "privileged.h" -#include "serialize.hpp" -#include "types.h" - -namespace eosio { - - /** - * @defgroup privilegedcppapi Privileged C++ API - * @ingroup privilegedapi - * @brief Defines C++ Privileged API - * - * @{ - */ - - /** - * Tunable blockchain configuration that can be changed via consensus - * - * @brief Tunable blockchain configuration that can be changed via consensus - */ - struct blockchain_parameters { - - uint64_t max_block_net_usage; - - uint32_t target_block_net_usage_pct; - - uint32_t max_transaction_net_usage; - - /** - * The base amount of net usage billed for a transaction to cover incidentals - * @brief The base amount of net usage billed for a transaction to cover incidentals - */ - uint32_t base_per_transaction_net_usage; - - uint32_t net_usage_leeway; - - uint32_t context_free_discount_net_usage_num; - - uint32_t context_free_discount_net_usage_den; - - uint32_t max_block_cpu_usage; - - uint32_t target_block_cpu_usage_pct; - - uint32_t max_transaction_cpu_usage; - - uint32_t min_transaction_cpu_usage; - - - /** - * The numerator for the discount on cpu usage for CFA's - * - * @brief The numerator for the discount on cpu usage for CFA's - */ - uint64_t context_free_discount_cpu_usage_num; - - /** - * The denominator for the discount on cpu usage for CFA's - * - * @brief The denominator for the discount on cpu usage for CFA's - - */ - uint64_t context_free_discount_cpu_usage_den; - - /** - * Maximum lifetime of a transacton - * - * @brief Maximum lifetime of a transacton - */ - uint32_t max_transaction_lifetime; - - uint32_t deferred_trx_expiration_window; - - uint32_t max_transaction_delay; - - /** - * Maximum size of inline action - * - * @brief Maximum size of inline action - */ - uint32_t max_inline_action_size; - - /** - * Maximum depth of inline action - * - * @brief Maximum depth of inline action - */ - uint16_t max_inline_action_depth; - - /** - * Maximum authority depth - * - * @brief Maximum authority depth - */ - uint16_t max_authority_depth; - - - EOSLIB_SERIALIZE( blockchain_parameters, - (max_block_net_usage)(target_block_net_usage_pct) - (max_transaction_net_usage)(base_per_transaction_net_usage)(net_usage_leeway) - (context_free_discount_net_usage_num)(context_free_discount_net_usage_den) - - (max_block_cpu_usage)(target_block_cpu_usage_pct) - (max_transaction_cpu_usage)(min_transaction_cpu_usage) - - (max_transaction_lifetime)(deferred_trx_expiration_window)(max_transaction_delay) - (max_inline_action_size)(max_inline_action_depth)(max_authority_depth) - ) - }; - - struct upgrade_parameters { - uint32_t target_block_num; - - EOSLIB_SERIALIZE(upgrade_parameters, - (target_block_num) - ) - }; - - /** - * @brief Set the blockchain parameters - * Set the blockchain parameters - * @param params - New blockchain parameters to set - */ - void set_blockchain_parameters(const eosio::blockchain_parameters& params); - - /** - * @brief Retrieve the blolckchain parameters - * Retrieve the blolckchain parameters - * @param params - It will be replaced with the retrieved blockchain params - */ - void get_blockchain_parameters(eosio::blockchain_parameters& params); - - void set_upgrade_parameters(const eosio::upgrade_parameters& params); - - ///@} priviledgedcppapi - - /** - * @defgroup producertype Producer Type - * @ingroup types - * @brief Defines producer type - * - * @{ - */ - - /** - * Maps producer with its signing key, used for producer schedule - * - * @brief Maps producer with its signing key - */ - struct producer_key { - - /** - * Name of the producer - * - * @brief Name of the producer - */ - account_name producer_name; - - /** - * Block signing key used by this producer - * - * @brief Block signing key used by this producer - */ - public_key block_signing_key; - - friend bool operator < ( const producer_key& a, const producer_key& b ) { - return a.producer_name < b.producer_name; - } - - EOSLIB_SERIALIZE( producer_key, (producer_name)(block_signing_key) ) - }; -} diff --git a/contracts/eosiolib/producer_schedule.hpp b/contracts/eosiolib/producer_schedule.hpp deleted file mode 100644 index 8fd2a26c973..00000000000 --- a/contracts/eosiolib/producer_schedule.hpp +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once -#include - -#include - -namespace eosio { - - /** - * Defines both the order, account name, and signing keys of the active set of producers. - * - * @brief Defines both the order, account name, and signing keys of the active set of producers. - */ - struct producer_schedule { - /** - * Version number of the schedule. It is sequentially incrementing version number - * - * @brief Version number of the schedule - */ - uint32_t version; - - /** - * List of producers for this schedule, including its signing key - * - * @brief List of producers for this schedule, including its signing key - */ - std::vector producers; - }; - - /// @} producertype -} /// namespace eosio diff --git a/contracts/eosiolib/public_key.hpp b/contracts/eosiolib/public_key.hpp deleted file mode 100644 index e7061ef74c9..00000000000 --- a/contracts/eosiolib/public_key.hpp +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once -#include -#include - -namespace eosio { - - /** - * @defgroup publickeytype Public Key Type - * @ingroup types - * @brief Specifies public key type - * - * @{ - */ - - /** - * EOSIO Public Key - * @brief EOSIO Public Key - */ - struct public_key { - /** - * Type of the public key, could be either K1 or R1 - * @brief Type of the public key - */ - unsigned_int type; - - /** - * Bytes of the public key - * - * @brief Bytes of the public key - */ - std::array data; - - friend bool operator == ( const public_key& a, const public_key& b ) { - return std::tie(a.type,a.data) == std::tie(b.type,b.data); - } - friend bool operator != ( const public_key& a, const public_key& b ) { - return std::tie(a.type,a.data) != std::tie(b.type,b.data); - } - EOSLIB_SERIALIZE( public_key, (type)(data) ) - }; - -} - -/// @} publickeytype diff --git a/contracts/eosiolib/reflect.hpp b/contracts/eosiolib/reflect.hpp deleted file mode 100644 index bea480ffc6e..00000000000 --- a/contracts/eosiolib/reflect.hpp +++ /dev/null @@ -1,186 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include - -namespace eosio { - template - struct reflector { - typedef std::false_type is_reflected; - typedef std::false_type is_enum; - }; - -} /// eosio - - - -#define EOSLIB_REFLECT_VISIT_BASE(r, visitor, base) \ - eosio::reflector::visit( visitor ); - -#define EOSLIB_REFLECT_VISIT2_BASE(r, visitor, base) \ - eosio::reflector::visit( t, forward(visitor) ); - - -#define EOSLIB_REFLECT_VISIT_MEMBER( r, visitor, elem ) \ -{ typedef decltype((static_cast(nullptr))->elem) member_type; \ - visitor( &type::elem ); \ -} - -#define EOSLIB_REFLECT_VISIT2_MEMBER( r, visitor, elem ) \ -{ typedef decltype((static_cast(nullptr))->elem) member_type; \ - visitor( t.elem ); \ -} - - -#define EOSLIB_REFLECT_BASE_MEMBER_COUNT( r, OP, elem ) \ - OP eosio::reflector::total_member_count - -#define EOSLIB_REFLECT_MEMBER_COUNT( r, OP, elem ) \ - OP 1 - -#define EOSLIB_REFLECT_DERIVED_IMPL_INLINE( TYPE, INHERITS, MEMBERS ) \ -template\ -static inline void visit( Visitor&& v ) { \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT_BASE, v, INHERITS ) \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT_MEMBER, v, MEMBERS ) \ -} \ -template\ -static inline void visit( const type& t, Visitor&& v ) { \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT2_BASE, v, INHERITS ) \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT2_MEMBER, v, MEMBERS ) \ -} \ -template\ -static inline void visit( type& t, Visitor&& v ) { \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT2_BASE, v, INHERITS ) \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT2_MEMBER, v, MEMBERS ) \ -} - -#define EOSLIB_REFLECT_DERIVED_IMPL_EXT( TYPE, INHERITS, MEMBERS ) \ -template\ -void eosio::reflector::visit( Visitor&& v ) { \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT_BASE, v, INHERITS ) \ - BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_VISIT_MEMBER, v, MEMBERS ) \ -} - - -/** - * @addtogroup serializecpp - * @{ - */ - -/** - * Perform class reflection - * - * @brief Specializes eosio::reflector for TYPE - * @param TYPE - the class template to be reflected - * @param MEMBERS - a sequence of member names. (field1)(field2)(field3) - * - * @see EOSLIB_REFLECT_DERIVED - */ -#define EOSLIB_REFLECT( TYPE, MEMBERS ) \ - EOSLIB_REFLECT_DERIVED( TYPE, BOOST_PP_SEQ_NIL, MEMBERS ) - -/** - * Perform class template reflection - * - * @brief Perform class template reflection - * @param TEMPLATE_ARGS - a sequence of template args. (args1)(args2)(args3) - * @param TYPE - the class template to be reflected - * @param MEMBERS - a sequence of member names. (field1)(field2)(field3) - */ -#define EOSLIB_REFLECT_TEMPLATE( TEMPLATE_ARGS, TYPE, MEMBERS ) \ - EOSLIB_REFLECT_DERIVED_TEMPLATE( TEMPLATE_ARGS, TYPE, BOOST_PP_SEQ_NIL, MEMBERS ) - -/** - * Perform class reflection on empty class - * - * @brief Perform class reflection on empty class - * @param TYPE - the class to be reflected - */ -#define EOSLIB_REFLECT_EMPTY( TYPE ) \ - EOSLIB_REFLECT_DERIVED( TYPE, BOOST_PP_SEQ_NIL, BOOST_PP_SEQ_NIL ) - -/** - * Perform forward declaration of class reflection - * - * @brief Perform forward declaration of class reflection - * @param TYPE - the class to be reflected - */ -#define EOSLIB_REFLECT_FWD( TYPE ) \ -namespace eosio { \ - template<> struct reflector {\ - typedef TYPE type; \ - typedef eosio::true_type is_reflected; \ - enum member_count_enum { \ - local_member_count = BOOST_PP_SEQ_SIZE(MEMBERS), \ - total_member_count = local_member_count BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_BASE_MEMBER_COUNT, +, INHERITS )\ - }; \ - template static void visit( Visitor&& v ); \ - template static void visit( const type& t, Visitor&& v ); \ - template static void visit( type& t, Visitor&& v ); \ - }; } - -///@} - -#define EOSLIB_REFLECT_DERIVED_IMPL( TYPE, MEMBERS ) \ - EOSLIB_REFLECT_IMPL_DERIVED_EXT( TYPE, BOOST_PP_SEQ_NIL, MEMBERS ) - -#define EOSLIB_REFLECT_IMPL( TYPE, MEMBERS ) \ - EOSLIB_REFLECT_DERIVED_IMPL_EXT( TYPE, BOOST_PP_SEQ_NIL, MEMBERS ) - - -/** - * @addtogroup serializecpp - * @{ - */ - -/** - * Perform class reflection where TYPE inherits other reflected classes - * - * @brief Specializes eosio::reflector for TYPE where - * type inherits other reflected classes - * - * @param TYPE - the class to be reflected - * @param INHERITS - a sequence of base class names (basea)(baseb)(basec) - * @param MEMBERS - a sequence of member names. (field1)(field2)(field3) - */ -#define EOSLIB_REFLECT_DERIVED( TYPE, INHERITS, MEMBERS ) \ -namespace eosio { \ -template<> struct reflector {\ - typedef TYPE type; \ - typedef eosio::true_type is_reflected; \ - typedef eosio::false_type is_enum; \ - enum member_count_enum { \ - local_member_count = 0 BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_MEMBER_COUNT, +, MEMBERS ),\ - total_member_count = local_member_count BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_BASE_MEMBER_COUNT, +, INHERITS )\ - }; \ - EOSLIB_REFLECT_DERIVED_IMPL_INLINE( TYPE, INHERITS, MEMBERS ) \ -}; } - -/** - * Perform class template reflection where TYPE inherits other reflected classes - * - * @brief Perform class template reflection where TYPE inherits other reflected classes - * - * @param TEMPLATE_ARGS - a sequence of template args. (args1)(args2)(args3) - * @param TYPE - the class to be reflected - * @param INHERITS - a sequence of base class names (basea)(baseb)(basec) - * @param MEMBERS - a sequence of member names. (field1)(field2)(field3) - */ -#define EOSLIB_REFLECT_DERIVED_TEMPLATE( TEMPLATE_ARGS, TYPE, INHERITS, MEMBERS ) \ -namespace eosio { \ -template struct reflector {\ - typedef TYPE type; \ - typedef eosio::true_type is_defined; \ - typedef eosio::false_type is_enum; \ - enum member_count_enum { \ - local_member_count = 0 BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_MEMBER_COUNT, +, MEMBERS ),\ - total_member_count = local_member_count BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_BASE_MEMBER_COUNT, +, INHERITS )\ - }; \ - EOSLIB_REFLECT_DERIVED_IMPL_INLINE( TYPE, INHERITS, MEMBERS ) \ -}; } - - -///@} diff --git a/contracts/eosiolib/rpc.dox b/contracts/eosiolib/rpc.dox deleted file mode 100644 index 047250276eb..00000000000 --- a/contracts/eosiolib/rpc.dox +++ /dev/null @@ -1,544 +0,0 @@ -/** -@defgroup eosiorpc RPC Interface -@brief Describes how to interface with eosd over HTTP RPC - -@section tableofcontent Table Of Contents -- [Configuration](#configuration) -- [Chain API](#chainrpc) - - [get_info](#v1chaingetinfo) - - [get_block](#v1chaingetblock) - - [get_account](#v1chaingetaccount) - - [get_code](#v1chaingetcode) - - [get_table_rows](#v1chaingettablerows) - - [abi_json_to_bin](#v1chainabijsontobin) - - [abi_bin_to_json](#v1chainabibintojson) - - [push_transaction](#v1chainpushtransaction) - - [push_transactions](#v1chainpushtransactions) - - [get_required_keys](#v1chaingetrequiredkeys) -- [Wallet API](#walletrpc) - - [wallet_create](#v1walletcreate) - - [wallet_open](#v1walletopen) - - [wallet_lock](#v1walletlock) - - [wallet_lock_all](#v1walletlockall) - - [wallet_import_key](#v1walletimportkey) - - [wallet_list](#v1walletlist) - - [wallet_list_keys](#v1walletlistkeys) - - [wallet_get_public_keys](#v1walletgetpublickeys) - - [wallet_set_timeout](#v1walletsettimeout) - - [wallet_sign_trx](#v1walletsigntrx) - -@section configuration Configuration - -`eosd` uses a REST RPC interface where plugins can register their own endpoints with the API server. This page -will explain how to use some of the APIs to get information about the blockchain and send transactions. - -Before you can query `eosd` you must first enable the necessary API plugin(s). Depending on which API you want to enable, add the following line to your `eosd`'s `config.ini`: -``` -plugin = eosio::chain_api_plugin // Enable Chain API -plugin = eosio::wallet_api_plugin // Enable Wallet API -``` -Alternatively, for Wallet API, you can also have the wallet functionality separate from `eosd`, by running `eos-walletd` separately. - -For the following guide, we will assume that we have `eosd` running on `127.0.0.1:8888` (Chain API Plugin enabled, Wallet API Plugin disabled) and `eos-walletd` running on `127.0.0.1:8889`. - -=== - -@section chainrpc Chain API - - -@subsection v1chaingetinfo get_info - -Get latest information related to a node - -@subsubsection examplegetinfo Example get_info Usage - -``` -curl http://127.0.0.1:8888/v1/chain/get_info -``` - -@subsubsection examplegetinforesult Example get_info Result - -``` -{ - "server_version": "b2eb1667", - "head_block_num": 259590, - "last_irreversible_block_num": 259573, - "head_block_id": "0003f60677f3707f0704f16177bf5f007ebd45eb6efbb749fb1c468747f72046", - "head_block_time": "2017-12-10T17:05:36", - "head_block_producer": "initp", - "recent_slots": "1111111111111111111111111111111111111111111111111111111111111111", - "participation_rate": "1.00000000000000000" -} -``` - -@subsection v1chaingetblock get_block - -Get information related to a block. - -@subsubsection examplegetblock Example get_block Usage -``` -$ curl http://127.0.0.1:8888/v1/chain/get_block -X POST -d '{"block_num_or_id":5}' -$ curl http://127.0.0.1:8888/v1/chain/get_block -X POST -d '{"block_num_or_id":0000000445a9f27898383fd7de32835d5d6a978cc14ce40d9f327b5329de796b}' -``` - -@subsubsection examplegetblockresult Example get_block Result -``` -{ - "previous": "0000000445a9f27898383fd7de32835d5d6a978cc14ce40d9f327b5329de796b", - "timestamp": "2017-07-18T20:16:36", - "transaction_merkle_root": "0000000000000000000000000000000000000000000000000000000000000000", - "producer": "initf", - "producer_changes": [ ], - "producer_signature": "204cb94b3186c3b4a7f88be4e9db9f8af2ffdb7ef0f27a065c8177a5fcfacf876f684e59c39fb009903c0c59220b147bb07f1144df1c65d26c57b534a76dd29073", - "cycles": [ ], - "id":"000000050c0175cbf218a70131ddc3c3fab8b6e954edef77e0bfe7c36b599b1d", - "block_num":5, - "ref_block_prefix":27728114 -} -``` - - -@subsection v1chaingetaccount get_account - -Get information related to an account. - -@subsubsection examplegetaccount Example get_account Usage -``` -$ curl http://127.0.0.1:8888/v1/chain/get_account -X POST -d '{"account_name":"inita"}' -``` - -@subsubsection examplegetaccountresult Example get_account Result -``` -{ - "name": "inita", - "eos_balance": "999998.9574 EOS", - "staked_balance": "0.0000 EOS", - "unstaking_balance": "0.0000 EOS", - "last_unstaking_time": "2106-02-07T06:28:15", - "permissions": [ - { - "name": "active", - "parent": "owner", - "required_auth": { - "threshold": 1, - "keys": [ - { - "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", - "weight": 1 - } - ], - "accounts": [] - } - }, - { - "name": "owner", - "parent": "owner", - "required_auth": { - "threshold": 1, - "keys": [ - { - "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", - "weight": 1 - } - ], - "accounts": [] - } - } - ] -} -``` - - -@subsection v1chaingetcode get_code - -Fetch smart contract code. - -@subsubsection examplegetcode Example get_code Usage -``` -$ curl http://127.0.0.1:8888/v1/chain/get_code -X POST -d '{"account_name":"currency"}' -``` - -@subsubsection examplegetcoderesult Example get_code Result -``` -{ - "name":"currency", - "code_hash":"a1c8c84b4700c09c8edb83522237439e33cf011a4d7ace51075998bd002e04c9", - "wast":"(module\n (type $0 (func (param i64 i64 i32) (result i32)))\n ...truncated", - "abi": { - "types": [{ - "new_type_name": "account_name", - "type": "name" - } - ], - "structs": [{ - "name": "transfer", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"}, - {"name":"to", "type":"account_name"}, - {"name":"quantity", "type":"uint64"} - ] - },{ - "name": "account", - "base": "", - "fields": [ - {"name":"key", "type":"name"}, - {"name":"balance", "type":"uint64"} - ] - } - ], - "actions": [{ - "name": "transfer", - "type": "transfer" - } - ], - "tables": [{ - "name": "account", - "type": "account", - "index_type": "i64", - "key_names" : ["key"], - "key_types" : ["name"] - } - ] -} -``` - - -@subsection v1chaingettablerows get_table_rows - -Fetch smart contract data from an account. - -@subsubsection examplegettablerows get_table_rows Usage -``` -$ curl http://127.0.0.1:8888/v1/chain/get_table_rows -X POST -d '{"scope":"inita", "code":"currency", "table":"account", "json": true}' -$ curl http://127.0.0.1:8888/v1/chain/get_table_rows -X POST -d '{"scope":"inita", "code":"currency", "table":"account", "json": true, "lower_bound":0, "upper_bound":-1, "limit":10}' -``` - -@subsubsection examplegettablerowsresult Example get_table_rows Result -``` -{ - "rows": [ - { - "account": "account", - "balance": 1000 - } - ], - "more": false -} -``` - - -@subsection v1chaingeabijsontobin abi_json_to_bin - -Serialize json to binary hex. The resulting binary hex is usually used for the data field in [push_transaction](#v1chainpushtransaction). - -@subsubsection exampleabijsontobin Example abi_json_to_bin Usage -``` -$ curl http://127.0.0.1:8888/v1/chain/abi_json_to_bin -X POST -d '{"code":"currency", "action":"transfer", "args":{"from":"initb", "to":"initc", "quantity":1000}}' -``` - -@subsubsection exampleabijsontobinresult Example abi_json_to_bin Result -``` -{ - "binargs": "000000008093dd74000000000094dd74e803000000000000", - "required_scope": [], - "required_auth": [] -} -``` - - -@subsection v1chaingeabibintojson abi_bin_to_json - -Serialize back binary hex to json. - -@subsubsection exampleabibintojson Example abi_bin_to_json Usage -``` -$ curl http://127.0.0.1:8888/v1/chain/abi_bin_to_json -X POST -d '{"code":"currency", "action":"transfer", "binargs":"000000008093dd74000000000094dd74e803000000000000"}' -``` - -@subsubsection exampleabibintojsonresult Example abi_bin_to_json Result -``` -{ - "args": { - "from": "initb", - "to": "initc", - "quantity": 1000 - }, - "required_scope": [], - "required_auth": [] -} -``` - - -@subsection v1chainpushtransaction push_transaction - -This method expects a transaction in JSON format and will attempt to apply it to the blockchain, - -Success Response -

-On success it will return HTTP 200 and the transaction ID. -

- -``` - -{ - 'transaction_id' : "..." -} - - -``` - -Just because the transaction is pushed locally does not mean that the transaction has been incorporated into a block. - - -Error Response -

-If an error occurs it will return either HTTP 400 (Invalid arguments) or 500 (Internal Server Error) -

- -``` - -HTTP/1.1 500 Internal Server Error -Content-Length: 1466 - -...error message... - -``` - -@subsubsection examplepushtrx Example push_transaction Usage -This example assumes a transfer operation. The `ref_block_num` and `ref_block_prefix` here are provided as a result of `/v1/chain/get_block` of the last_irreversible_block. -You also need to use /v1/wallet/sign_transaction to get the right signature. -``` -curl http://localhost:8888/v1/chain/push_transaction -X POST -d '{"ref_block_num":"100","ref_block_prefix":"137469861","expiration":"2017-09-25T06:28:49","scope":["initb","initc"],"actions":[{"code":"currency","type":"transfer","recipients":["initb","initc"],"authorization":[{"account":"initb","permission":"active"}],"data":"000000000041934b000000008041934be803000000000000"}],"signatures":[],"authorizations":[]}' -``` - - -@subsection v1chainpushtransactions push_transactions - -This method push multiple transactions at once. - -@subsubsection examplepushtrxs Example push_transactions Usage -``` -curl http://localhost:8888/v1/chain/push_transaction -X POST -d '[{"ref_block_num":"101","ref_block_prefix":"4159312339","expiration":"2017-09-25T06:28:49","scope":["initb","initc"],"actions":[{"code":"currency","type":"transfer","recipients":["initb","initc"],"authorization":[{"account":"initb","permission":"active"}],"data":"000000000041934b000000008041934be803000000000000"}],"signatures":[],"authorizations":[]}, {"ref_block_num":"101","ref_block_prefix":"4159312339","expiration":"2017-09-25T06:28:49","scope":["inita","initc"],"actions":[{"code":"currency","type":"transfer","recipients":["inita","initc"],"authorization":[{"account":"inita","permission":"active"}],"data":"000000008040934b000000008041934be803000000000000"}],"signatures":[],"authorizations":[]}]' -``` - - -@subsection v1chaingetrequiredkeys get_required_keys - -Get required keys to sign a transaction from list of your keys. - -@subsubsection examplegetrequiredkeys Example get_required_keys Usage -``` -curl http://localhost:8888/v1/chain/get_required_keys -X POST -d '{"transaction": {"ref_block_num":"100","ref_block_prefix":"137469861","expiration":"2017-09-25T06:28:49","scope":["initb","initc"],"actions":[{"code":"currency","type":"transfer","recipients":["initb","initc"],"authorization":[{"account":"initb","permission":"active"}],"data":"000000000041934b000000008041934be803000000000000"}],"signatures":[],"authorizations":[]}, "available_keys":["EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq","EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA","EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV"]}' -``` - -@subsubsection examplegetrequiredkeysresult Example get_required_keys Result -``` -{ - "required_keys": [ - "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV" - ] -} -``` - -@section walletrpc Wallet API - -@subsection v1walletcreate wallet_create - -Create a new wallet with the given name - -@subsubsection examplewalletcreate Example wallet_create Usage -``` -$ curl http://localhost:8888/v1/wallet/create -X POST -d '"default"' -``` - -@subsubsection examplewalletcreateresult Example wallet_create Result -This command will return the password that can be used to unlock the wallet in the future -``` -PW5KFWYKqvt63d4iNvedfDEPVZL227D3RQ1zpVFzuUwhMAJmRAYyX -``` - -@subsection v1walletcreatekey wallet_create_key - -Creates a key within the specified wallet, wallet must be opened and unlocked. -Param are: 1.name of the wallet to create key in; 2. type of key to create, currently we support two values: K1 and R1 - -@subsubsection examplewalletcreatekey Example wallet_create_key Usage -``` -$ curl http://localhost:8888/v1/wallet/create_key -X POST -d '["default","K1"]' -``` - -@subsubsection examplewalletcreatekeyresult Example wallet_create_key Result -This command will return the public key of the created key -``` -EOS6GZE1xeo6jX2AtP2Z6WTcxawQMH7cyYMNpG6Q3q7s514zyRhgo -``` - -@subsection v1walletopen wallet_open - -Open an existing wallet of the given name - -@subsubsection examplewalletopen Example wallet_open Usage -``` -$ curl http://localhost:8888/v1/wallet/open -X POST -d '"default"' -``` - -@subsubsection examplewalletopenresult Example wallet_open Result -``` -{} -``` - - -@subsection v1walletlock wallet_lock - -Lock a wallet of the given name - -@subsubsection examplewalletlock Example wallet_lock Usage -``` -$ curl http://localhost:8888/v1/wallet/lock -X POST -d '"default"' -``` - -@subsubsection examplewalletlockresult Example wallet_lock Result -``` -{} -``` - - -@subsection v1walletlockall wallet_lock_all - -Lock all wallets - -@subsubsection examplewalletlockall Example wallet_lock_all Usage -``` -$ curl http://localhost:8888/v1/wallet/lock_all -``` - -@subsubsection examplewalletlockallresult Example wallet_lock_all Result -``` -{} -``` - -@subsection v1walletunlock wallet_unlock - -Unlock a wallet with the given name and password - -@subsubsection examplewalletunlock Example wallet_unlock Usage -``` -$ curl http://localhost:8888/v1/wallet/unlock -X POST -d '["default", "PW5KFWYKqvt63d4iNvedfDEPVZL227D3RQ1zpVFzuUwhMAJmRAYyX"]' -``` - -@subsubsection examplewalletunlockresult Example wallet_unlock Result -``` -{} -``` - -@subsection v1walletimport wallet_import_key - -Import a private key to the wallet of the given name - -@subsubsection examplewalletimport Example wallet_import_key Usage -``` -$ curl http://localhost:8888/v1/wallet/import_key -X POST -d '["default","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]' -``` - -@subsubsection examplewalletimportresult Example wallet_import_key Result -``` -{} -``` - -@subsection v1walletlist wallet_list - -List all wallets - -@subsubsection examplewalletlist Example wallet_list Usage -``` -$ curl http://localhost:8888/v1/wallet/list_wallets -``` - -@subsubsection examplewalletlistresult Example wallet_list Result -``` -["default *"] -``` - -@subsection v1walletlistkeys wallet_list_keys - -List all key pairs across all wallets - -@subsubsection examplewalletlistkeys Example wallet_list_keys Usage -``` -$ curl http://localhost:8888/v1/wallet/list_keys -``` - -@subsubsection examplewalletlistkeysresult Example wallet_list_keys Result -``` -[["EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]] -``` - -@subsection v1walletgetpublickeys wallet_get_public_keys - -List all public keys across all wallets - -@subsubsection examplewalletgetpublickeys Example wallet_get_public_keys Usage -``` -$ curl http://localhost:8888/v1/wallet/get_public_keys -``` - -@subsubsection examplewallegetpublickeysresult Example wallet_get_public_keys Result -``` -["EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV"] -``` - -@subsection v1walletsettimeout wallet_set_timeout - -Set wallet auto lock timeout (in seconds) - -@subsubsection examplewalletsettimeout Example wallet_set_timeout Usage -``` -$ curl http://localhost:8888/v1/wallet/set_timeout -X POST -d '10' -``` - -@subsubsection examplewalletsettimeoutresult Example wallet_set_timeout Result -``` -{} -``` - -@subsection v1walletsigntrx wallet_sign_trx - -Sign transaction given an array of transaction, require public keys, and chain id - -@subsubsection examplewalletsigntrx Example wallet_sign_trx Usage -``` -$ curl http://localhost:8888/v1/wallet/sign_transaction -X POST -d '[{"ref_block_num":21453,"ref_block_prefix":3165644999,"expiration":"2017-12-08T10:28:49","scope":["initb","initc"],"read_scope":[],"messages":[{"code":"currency","type":"transfer","authorization":[{"account":"initb","permission":"active"}],"data":"000000008093dd74000000000094dd74e803000000000000"}],"signatures":[]}, ["EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV"], ""]' -``` - -@subsubsection examplewalletsigntrxresult Example wallet_sign_trx Result -``` -{ - "ref_block_num": 21453, - "ref_block_prefix": 3165644999, - "expiration": "2017-12-08T10:28:49", - "scope": [ - "initb", - "initc" - ], - "read_scope": [], - "messages": [ - { - "code": "currency", - "type": "transfer", - "authorization": [ - { - "account": "initb", - "permission": "active" - } - ], - "data": "000000008093dd74000000000094dd74e803000000000000" - } - ], - "signatures": [ - "1f393cc5ce6a6951fb53b11812345bcf14ffd978b07be386fd639eaf440bca7dca16b14833ec661ca0703d15e55a2a599a36d55ce78c4539433f6ce8bcee0158c3" - ] -} -``` - -*/ diff --git a/contracts/eosiolib/serialize.hpp b/contracts/eosiolib/serialize.hpp deleted file mode 100644 index eff10d3cc60..00000000000 --- a/contracts/eosiolib/serialize.hpp +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include -#include -#include - -#define EOSLIB_REFLECT_MEMBER_OP( r, OP, elem ) \ - OP t.elem - -/** - * @defgroup serialize Serialize API - * @brief Defines functions to serialize and deserialize object - * @ingroup contractdev - */ - -/** - * @defgroup serializecpp Serialize C++ API - * @brief Defines C++ API to serialize and deserialize object - * @ingroup serialize - * @{ - */ - -/** - * Defines serialization and deserialization for a class - * - * @brief Defines serialization and deserialization for a class - * - * @param TYPE - the class to have its serialization and deserialization defined - * @param MEMBERS - a sequence of member names. (field1)(field2)(field3) - */ -#define EOSLIB_SERIALIZE( TYPE, MEMBERS ) \ - template \ - friend DataStream& operator << ( DataStream& ds, const TYPE& t ){ \ - return ds BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_MEMBER_OP, <<, MEMBERS );\ - }\ - template \ - friend DataStream& operator >> ( DataStream& ds, TYPE& t ){ \ - return ds BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_MEMBER_OP, >>, MEMBERS );\ - } - -/** - * Defines serialization and deserialization for a class which inherits from other classes that - * have their serialization and deserialization defined - * - * @brief Defines serialization and deserialization for a class which inherits from other classes that - * have their serialization and deserialization defined - * - * @param TYPE - the class to have its serialization and deserialization defined - * @param BASE - a sequence of base class names (basea)(baseb)(basec) - * @param MEMBERS - a sequence of member names. (field1)(field2)(field3) - */ -#define EOSLIB_SERIALIZE_DERIVED( TYPE, BASE, MEMBERS ) \ - template \ - friend DataStream& operator << ( DataStream& ds, const TYPE& t ){ \ - ds << static_cast(t); \ - return ds BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_MEMBER_OP, <<, MEMBERS );\ - }\ - template \ - friend DataStream& operator >> ( DataStream& ds, TYPE& t ){ \ - ds >> static_cast(t); \ - return ds BOOST_PP_SEQ_FOR_EACH( EOSLIB_REFLECT_MEMBER_OP, >>, MEMBERS );\ - } -///@} serializecpp diff --git a/contracts/eosiolib/singleton.hpp b/contracts/eosiolib/singleton.hpp deleted file mode 100644 index 48e75126ed9..00000000000 --- a/contracts/eosiolib/singleton.hpp +++ /dev/null @@ -1,150 +0,0 @@ -#pragma once -#include -#include - -namespace eosio { - - /** - * @defgroup singleton Singleton Table - * @brief Defines EOSIO Singleton Table - * @ingroup databasecpp - * @{ - */ - - /** - * This wrapper uses a single table to store named objects various types. - * - * @tparam SingletonName - the name of this singleton variable - * @tparam T - the type of the singleton - */ - template - class singleton - { - /** - * Primary key of the data inside singleton table - * - * @brief Primary key of the data singleton table - */ - constexpr static uint64_t pk_value = SingletonName; - - /** - * Structure of data inside the singleton table - * - * @brief Structure of data inside the singleton table - */ - struct row { - /** - * Value to be stored inside the singleton table - * - * @brief Value to be stored inside the singleton table - */ - T value; - - /** - * Get primary key of the data - * - * @brief Get primary key of the data - * @return uint64_t - Primary Key - */ - uint64_t primary_key() const { return pk_value; } - - EOSLIB_SERIALIZE( row, (value) ) - }; - - typedef eosio::multi_index table; - - public: - - /** - * Construct a new singleton object given the table's owner and the scope - * - * @brief Construct a new singleton object - * @param code - The table's owner - * @param scope - The scope of the table - */ - singleton( account_name code, scope_name scope ) : _t( code, scope ) {} - - /** - * Check if the singleton table exists - * - * @brief Check if the singleton table exists - * @return true - if exists - * @return false - otherwise - */ - bool exists() { - return _t.find( pk_value ) != _t.end(); - } - - /** - * Get the value stored inside the singleton table. Will throw an exception if it doesn't exist - * - * @brief Get the value stored inside the singleton table - * @return T - The value stored - */ - T get() { - auto itr = _t.find( pk_value ); - eosio_assert( itr != _t.end(), "singleton does not exist" ); - return itr->value; - } - - /** - * Get the value stored inside the singleton table. If it doesn't exist, it will return the specified default value - * - * @brief Get the value stored inside the singleton table or return the specified default value if it doesn't exist - * @param def - The default value to be returned in case the data doesn't exist - * @return T - The value stored - */ - T get_or_default( const T& def = T() ) { - auto itr = _t.find( pk_value ); - return itr != _t.end() ? itr->value : def; - } - - /** - * Get the value stored inside the singleton table. If it doesn't exist, it will create a new one with the specified default value - * - * @brief Get the value stored inside the singleton table or create a new one with the specified default value if it doesn't exist - * @param bill_to_account - The account to bill for the newly created data if the data doesn't exist - * @param def - The default value to be created in case the data doesn't exist - * @return T - The value stored - */ - T get_or_create( account_name bill_to_account, const T& def = T() ) { - auto itr = _t.find( pk_value ); - return itr != _t.end() ? itr->value - : _t.emplace(bill_to_account, [&](row& r) { r.value = def; })->value; - } - - /** - * Set new value to the singleton table - * - * @brief Set new value to the singleton table - * - * @param value - New value to be set - * @param bill_to_account - Account to pay for the new value - */ - void set( const T& value, account_name bill_to_account ) { - auto itr = _t.find( pk_value ); - if( itr != _t.end() ) { - _t.modify(itr, bill_to_account, [&](row& r) { r.value = value; }); - } else { - _t.emplace(bill_to_account, [&](row& r) { r.value = value; }); - } - } - - /** - * Remove the only data inside singleton table - * - * @brief Remove the only data inside singleton table - */ - void remove( ) { - auto itr = _t.find( pk_value ); - if( itr != _t.end() ) { - _t.erase(itr); - } - } - - private: - table _t; - }; - -/// @} singleton -} /// namespace eosio diff --git a/contracts/eosiolib/stdlib.hpp b/contracts/eosiolib/stdlib.hpp deleted file mode 100644 index 7fd8f86d525..00000000000 --- a/contracts/eosiolib/stdlib.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include -#include -#include diff --git a/contracts/eosiolib/symbol.hpp b/contracts/eosiolib/symbol.hpp deleted file mode 100644 index 8e63a0f18e5..00000000000 --- a/contracts/eosiolib/symbol.hpp +++ /dev/null @@ -1,227 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace eosio { - - /** - * @defgroup symbolapi Symbol API - * @brief Defines API for managing symbols - * @ingroup contractdev - */ - - /** - * @defgroup symbolcppapi Symbol CPP API - * @brief Defines %CPP API for managing symbols - * @ingroup symbolapi - * @{ - */ - - /** - * Converts string to uint64_t representation of symbol - * - * @param precision - precision of symbol - * @param str - the string representation of the symbol - */ - static constexpr uint64_t string_to_symbol( uint8_t precision, const char* str ) { - uint32_t len = 0; - while( str[len] ) ++len; - - uint64_t result = 0; - for( uint32_t i = 0; i < len; ++i ) { - if( str[i] < 'A' || str[i] > 'Z' ) { - /// ERRORS? - } else { - result |= (uint64_t(str[i]) << (8*(1+i))); - } - } - - result |= uint64_t(precision); - return result; - } - - /** - * Macro for converting string to char representation of symbol - * - * @param precision - precision of symbol - * @param str - the string representation of the symbol - */ - #define S(P,X) ::eosio::string_to_symbol(P,#X) - - /** - * uint64_t representation of a symbol name - */ - typedef uint64_t symbol_name; - - /** - * Checks if provided symbol name is valid. - * - * @param sym - symbol name of type symbol_name - * @return true - if symbol is valid - */ - static constexpr bool is_valid_symbol( symbol_name sym ) { - sym >>= 8; - for( int i = 0; i < 7; ++i ) { - char c = (char)(sym & 0xff); - if( !('A' <= c && c <= 'Z') ) return false; - sym >>= 8; - if( !(sym & 0xff) ) { - do { - sym >>= 8; - if( (sym & 0xff) ) return false; - ++i; - } while( i < 7 ); - } - } - return true; - } - - /** - * Returns the character length of the provided symbol - * - * @param sym - symbol to retrieve length for (uint64_t) - * @return length - character length of the provided symbol - */ - static constexpr uint32_t symbol_name_length( symbol_name sym ) { - sym >>= 8; /// skip precision - uint32_t length = 0; - while( sym & 0xff && length <= 7) { - ++length; - sym >>= 8; - } - - return length; - } - - /** - * \struct Stores information about a symbol - * - * @brief Stores information about a symbol - */ - struct symbol_type { - /** - * The symbol name - */ - symbol_name value; - - symbol_type() { } - - /** - * What is the type of the symbol - */ - symbol_type(symbol_name s): value(s) { } - - /** - * Is this symbol valid - */ - bool is_valid()const { return is_valid_symbol( value ); } - - /** - * This symbol's precision - */ - uint64_t precision()const { return value & 0xff; } - - /** - * Returns uint64_t representation of symbol name - */ - uint64_t name()const { return value >> 8; } - - /** - * The length of this symbol - */ - uint32_t name_length()const { return symbol_name_length( value ); } - - /** - * - */ - operator symbol_name()const { return value; } - - /** - * %Print the symbol - * - * @brief %Print the symbol - */ - void print(bool show_precision=true)const { - if( show_precision ){ - ::eosio::print(precision()); - prints(","); - } - - auto sym = value; - sym >>= 8; - for( int i = 0; i < 7; ++i ) { - char c = (char)(sym & 0xff); - if( !c ) return; - prints_l(&c, 1 ); - sym >>= 8; - } - } - - EOSLIB_SERIALIZE( symbol_type, (value) ) - }; - - /** - * \struct Extended asset which stores the information of the owner of the symbol - * - */ - struct extended_symbol : public symbol_type - { - /** - * The owner of the symbol - * - * @brief The owner of the symbol - */ - account_name contract; - - extended_symbol( symbol_name sym = 0, account_name acc = 0 ):symbol_type{sym},contract(acc){} - - /** - * %Print the extended symbol - * - * @brief %Print the extended symbol - */ - void print()const { - symbol_type::print(); - prints("@"); - printn( contract ); - } - - - /** - * Equivalency operator. Returns true if a == b (are the same) - * - * @brief Subtraction operator - * @param a - The extended asset to be subtracted - * @param b - The extended asset used to subtract - * @return boolean - true if both provided symbols are the same - */ - friend bool operator == ( const extended_symbol& a, const extended_symbol& b ) { - return std::tie( a.value, a.contract ) == std::tie( b.value, b.contract ); - } - - /** - * Inverted equivalency operator. Returns true if a != b (are different) - * - * @brief Subtraction operator - * @param a - The extended asset to be subtracted - * @param b - The extended asset used to subtract - * @return boolean - true if both provided symbols are the same - */ - friend bool operator != ( const extended_symbol& a, const extended_symbol& b ) { - return std::tie( a.value, a.contract ) != std::tie( b.value, b.contract ); - } - - friend bool operator < ( const extended_symbol& a, const extended_symbol& b ) { - return std::tie( a.value, a.contract ) < std::tie( b.value, b.contract ); - } - - EOSLIB_SERIALIZE( extended_symbol, (value)(contract) ) - }; - - // }@ symbolapi - -} /// namespace eosio diff --git a/contracts/eosiolib/system.h b/contracts/eosiolib/system.h deleted file mode 100644 index b7d3e614107..00000000000 --- a/contracts/eosiolib/system.h +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include - -extern "C" { - - /** - * @defgroup systemapi System API - * @ingroup contractdev - * @brief Defines API for interacting with system level intrinsics - * - */ - - /** - * @defgroup systemcapi System C API - * @ingroup systemapi - * @brief Defines API for interacting with system level intrinsics - * - * @{ - */ - - /** - * Aborts processing of this action and unwinds all pending changes if the test condition is true - * @brief Aborts processing of this action and unwinds all pending changes - * @param test - 0 to abort, 1 to ignore - * - * Example: -* - * @code - * eosio_assert(1 == 2, "One is not equal to two."); - * eosio_assert(1 == 1, "One is not equal to one."); - * @endcode - * - * @param msg - a null terminated string explaining the reason for failure - */ - void eosio_assert( uint32_t test, const char* msg ); - - /** - * Aborts processing of this action and unwinds all pending changes if the test condition is true - * @brief Aborts processing of this action and unwinds all pending changes - * @param test - 0 to abort, 1 to ignore - * @param msg - a pointer to the start of string explaining the reason for failure - * @param msg_len - length of the string - */ - void eosio_assert_message( uint32_t test, const char* msg, uint32_t msg_len ); - - /** - * Aborts processing of this action and unwinds all pending changes if the test condition is true - * @brief Aborts processing of this action and unwinds all pending changes - * @param test - 0 to abort, 1 to ignore - * @param code - the error code - */ - void eosio_assert_code( uint32_t test, uint64_t code ); - - /** - * This method will abort execution of wasm without failing the contract. This is used to bypass all cleanup / destructors that would normally be called. - * @brief Aborts execution of wasm without failing the contract - * @param code - the exit code - * Example: -* - * @code - * eosio_exit(0); - * eosio_exit(1); - * eosio_exit(2); - * eosio_exit(3); - * @endcode - */ - [[noreturn]] void eosio_exit( int32_t code ); - - - /** - * Returns the time in microseconds from 1970 of the current block - * @brief Get time of the current block (i.e. the block including this action) - * @return time in microseconds from 1970 of the current block - */ - uint64_t current_time(); - - /** - * Returns the time in seconds from 1970 of the block including this action - * @brief Get time (rounded down to the nearest second) of the current block (i.e. the block including this action) - * @return time in seconds from 1970 of the current block - */ - uint32_t now() { - return (uint32_t)( current_time() / 1000000 ); - } - ///@ } systemcapi - - -} diff --git a/contracts/eosiolib/time.hpp b/contracts/eosiolib/time.hpp deleted file mode 100644 index ff9d0e47757..00000000000 --- a/contracts/eosiolib/time.hpp +++ /dev/null @@ -1,179 +0,0 @@ -#pragma once -#include -#include -#include - -namespace eosio { - class microseconds { - public: - explicit microseconds( int64_t c = 0) :_count(c){} - static microseconds maximum() { return microseconds(0x7fffffffffffffffll); } - friend microseconds operator + (const microseconds& l, const microseconds& r ) { return microseconds(l._count+r._count); } - friend microseconds operator - (const microseconds& l, const microseconds& r ) { return microseconds(l._count-r._count); } - - - bool operator==(const microseconds& c)const { return _count == c._count; } - bool operator!=(const microseconds& c)const { return _count != c._count; } - friend bool operator>(const microseconds& a, const microseconds& b){ return a._count > b._count; } - friend bool operator>=(const microseconds& a, const microseconds& b){ return a._count >= b._count; } - friend bool operator<(const microseconds& a, const microseconds& b){ return a._count < b._count; } - friend bool operator<=(const microseconds& a, const microseconds& b){ return a._count <= b._count; } - microseconds& operator+=(const microseconds& c) { _count += c._count; return *this; } - microseconds& operator-=(const microseconds& c) { _count -= c._count; return *this; } - int64_t count()const { return _count; } - int64_t to_seconds()const { return _count/1000000; } - - int64_t _count; - EOSLIB_SERIALIZE( microseconds, (_count) ) - private: - friend class time_point; - }; - - inline microseconds seconds( int64_t s ) { return microseconds( s * 1000000 ); } - inline microseconds milliseconds( int64_t s ) { return microseconds( s * 1000 ); } - inline microseconds minutes(int64_t m) { return seconds(60*m); } - inline microseconds hours(int64_t h) { return minutes(60*h); } - inline microseconds days(int64_t d) { return hours(24*d); } - - class time_point { - public: - explicit time_point( microseconds e = microseconds() ) :elapsed(e){} - operator std::string()const; - static time_point from_iso_string( const std::string& s ); - const microseconds& time_since_epoch()const { return elapsed; } - uint32_t sec_since_epoch()const { return uint32_t(elapsed.count() / 1000000); } - bool operator > ( const time_point& t )const { return elapsed._count > t.elapsed._count; } - bool operator >=( const time_point& t )const { return elapsed._count >=t.elapsed._count; } - bool operator < ( const time_point& t )const { return elapsed._count < t.elapsed._count; } - bool operator <=( const time_point& t )const { return elapsed._count <=t.elapsed._count; } - bool operator ==( const time_point& t )const { return elapsed._count ==t.elapsed._count; } - bool operator !=( const time_point& t )const { return elapsed._count !=t.elapsed._count; } - time_point& operator += ( const microseconds& m) { elapsed+=m; return *this; } - time_point& operator -= ( const microseconds& m) { elapsed-=m; return *this; } - time_point operator + (const microseconds& m) const { return time_point(elapsed+m); } - time_point operator + (const time_point& m) const { return time_point(elapsed+m.elapsed); } - time_point operator - (const microseconds& m) const { return time_point(elapsed-m); } - microseconds operator - (const time_point& m) const { return microseconds(elapsed.count() - m.elapsed.count()); } - microseconds elapsed; - EOSLIB_SERIALIZE( time_point, (elapsed) ) - }; - - /** - * A lower resolution time_point accurate only to seconds from 1970 - */ - class time_point_sec - { - public: - time_point_sec() - :utc_seconds(0){} - - explicit time_point_sec(uint32_t seconds ) - :utc_seconds(seconds){} - - time_point_sec( const time_point& t ) - :utc_seconds( uint32_t(t.time_since_epoch().count() / 1000000ll) ){} - - static time_point_sec maximum() { return time_point_sec(0xffffffff); } - static time_point_sec min() { return time_point_sec(0); } - - operator time_point()const { return time_point( eosio::seconds( utc_seconds) ); } - uint32_t sec_since_epoch()const { return utc_seconds; } - - time_point_sec operator = ( const eosio::time_point& t ) - { - utc_seconds = uint32_t(t.time_since_epoch().count() / 1000000ll); - return *this; - } - friend bool operator < ( const time_point_sec& a, const time_point_sec& b ) { return a.utc_seconds < b.utc_seconds; } - friend bool operator > ( const time_point_sec& a, const time_point_sec& b ) { return a.utc_seconds > b.utc_seconds; } - friend bool operator <= ( const time_point_sec& a, const time_point_sec& b ) { return a.utc_seconds <= b.utc_seconds; } - friend bool operator >= ( const time_point_sec& a, const time_point_sec& b ) { return a.utc_seconds >= b.utc_seconds; } - friend bool operator == ( const time_point_sec& a, const time_point_sec& b ) { return a.utc_seconds == b.utc_seconds; } - friend bool operator != ( const time_point_sec& a, const time_point_sec& b ) { return a.utc_seconds != b.utc_seconds; } - time_point_sec& operator += ( uint32_t m ) { utc_seconds+=m; return *this; } - time_point_sec& operator += ( microseconds m ) { utc_seconds+=m.to_seconds(); return *this; } - time_point_sec& operator += ( time_point_sec m ) { utc_seconds+=m.utc_seconds; return *this; } - time_point_sec& operator -= ( uint32_t m ) { utc_seconds-=m; return *this; } - time_point_sec& operator -= ( microseconds m ) { utc_seconds-=m.to_seconds(); return *this; } - time_point_sec& operator -= ( time_point_sec m ) { utc_seconds-=m.utc_seconds; return *this; } - time_point_sec operator +( uint32_t offset )const { return time_point_sec(utc_seconds + offset); } - time_point_sec operator -( uint32_t offset )const { return time_point_sec(utc_seconds - offset); } - - friend time_point operator + ( const time_point_sec& t, const microseconds& m ) { return time_point(t) + m; } - friend time_point operator - ( const time_point_sec& t, const microseconds& m ) { return time_point(t) - m; } - friend microseconds operator - ( const time_point_sec& t, const time_point_sec& m ) { return time_point(t) - time_point(m); } - friend microseconds operator - ( const time_point& t, const time_point_sec& m ) { return time_point(t) - time_point(m); } - uint32_t utc_seconds; - - EOSLIB_SERIALIZE( time_point_sec, (utc_seconds) ) - }; - - /** - * This class is used in the block headers to represent the block time - * It is a parameterised class that takes an Epoch in milliseconds and - * and an interval in milliseconds and computes the number of slots. - **/ - class block_timestamp { - public: - explicit block_timestamp( uint32_t s=0 ) :slot(s){} - - block_timestamp(const time_point& t) { - set_time_point(t); - } - - block_timestamp(const time_point_sec& t) { - set_time_point(t); - } - - static block_timestamp maximum() { return block_timestamp( 0xffff ); } - static block_timestamp min() { return block_timestamp(0); } - - block_timestamp next() const { - eosio_assert( std::numeric_limits::max() - slot >= 1, "block timestamp overflow" ); - auto result = block_timestamp(*this); - result.slot += 1; - return result; - } - - time_point to_time_point() const { - return (time_point)(*this); - } - - operator time_point() const { - int64_t msec = slot * (int64_t)block_interval_ms; - msec += block_timestamp_epoch; - return time_point(milliseconds(msec)); - } - - void operator = (const time_point& t ) { - set_time_point(t); - } - - bool operator > ( const block_timestamp& t )const { return slot > t.slot; } - bool operator >=( const block_timestamp& t )const { return slot >= t.slot; } - bool operator < ( const block_timestamp& t )const { return slot < t.slot; } - bool operator <=( const block_timestamp& t )const { return slot <= t.slot; } - bool operator ==( const block_timestamp& t )const { return slot == t.slot; } - bool operator !=( const block_timestamp& t )const { return slot != t.slot; } - uint32_t slot; - static constexpr int32_t block_interval_ms = 500; - static constexpr int64_t block_timestamp_epoch = 946684800000ll; // epoch is year 2000 - - EOSLIB_SERIALIZE( block_timestamp, (slot) ) - private: - - - void set_time_point(const time_point& t) { - int64_t micro_since_epoch = t.time_since_epoch().count(); - int64_t msec_since_epoch = micro_since_epoch / 1000; - slot = uint32_t(( msec_since_epoch - block_timestamp_epoch ) / int64_t(block_interval_ms)); - } - - void set_time_point(const time_point_sec& t) { - int64_t sec_since_epoch = t.sec_since_epoch(); - slot = uint32_t((sec_since_epoch * 1000 - block_timestamp_epoch) / block_interval_ms); - } - }; // block_timestamp - typedef block_timestamp block_timestamp_type; - -} // namespace eosio diff --git a/contracts/eosiolib/transaction.h b/contracts/eosiolib/transaction.h deleted file mode 100644 index 0cbe0f67a57..00000000000 --- a/contracts/eosiolib/transaction.h +++ /dev/null @@ -1,194 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include - -extern "C" { - /** - * @defgroup transactionapi Transaction API - * @ingroup contractdev - * @brief Defines API for sending transactions and inline actions - * - * - * Deferred transactions will not be processed until a future block. They - * can therefore have no effect on the success or failure of their parent - * transaction so long as they appear well formed. If any other condition - * causes the parent transaction to be marked as failing, then the deferred - * transaction will never be processed. - * - * Deferred transactions must adhere to the permissions available to the - * parent transaction or, in the future, delegated to the contract account - * for future use. - * - * An inline message allows one contract to send another contract a message - * which is processed immediately after the current message's processing - * ends such that the success or failure of the parent transaction is - * dependent on the success of the message. If an inline message fails in - * processing then the whole tree of transactions and actions rooted in the - * block will be marked as failing and none of effects on the database will - * persist. - * - * Inline actions and Deferred transactions must adhere to the permissions - * available to the parent transaction or, in the future, delegated to the - * contract account for future use. - */ - - /** - * @defgroup transactioncapi Transaction C API - * @ingroup transactionapi - * @brief Defines API for sending transactions - * - * @{ - */ - - /** - * Sends a deferred transaction. - * - * @brief Sends a deferred transaction. - * @param sender_id - ID of sender - * @param payer - Account paying for RAM - * @param serialized_transaction - Pointer of serialized transaction to be deferred - * @param size - Size to reserve - * @param replace_existing - f this is `0` then if the provided sender_id is already in use by an in-flight transaction from this contract, which will be a failing assert. If `1` then transaction will atomically cancel/replace the inflight transaction - */ - void send_deferred(const uint128_t& sender_id, account_name payer, const char *serialized_transaction, size_t size, uint32_t replace_existing = 0); - - /** - * Cancels a deferred transaction. - * - * @brief Cancels a deferred transaction. - * @param sender_id - The id of the sender - * - * @pre The deferred transaction ID exists. - * @pre The deferred transaction ID has not yet been published. - * @post Deferred transaction canceled. - * - * @return 1 if transaction was canceled, 0 if transaction was not found - * - * Example: - * - * @code - * id = 0xffffffffffffffff - * cancel_deferred( id ); - * @endcode - */ - int cancel_deferred(const uint128_t& sender_id); - - /** - * Access a copy of the currently executing transaction. - * - * @brief Access a copy of the currently executing transaction. - * @param buffer - a buffer to write the current transaction to - * @param size - the size of the buffer, 0 to return required size - * @return the size of the transaction written to the buffer, or number of bytes that can be copied if size==0 passed - */ - size_t read_transaction(char *buffer, size_t size); - - /** - * Gets the size of the currently executing transaction. - * - * @brief Gets the size of the currently executing transaction. - * @return size of the currently executing transaction - */ - size_t transaction_size(); - - /** - * Get transaction id - * - * @param id : return id - */ - void get_transaction_id( transaction_id_type* id ); - - /** - * Get the action globally unique sequence - * - * @param seq : return sequence - */ - void get_action_sequence(uint64_t* seq); - - /** - * Tests if the account has an installed contract - * @param name : account name - * @return : Return has contract - */ - bool has_contract( account_name name); - - /** - * Get the code of the deployment contract - * @param name : account name - * @param code : return contract code - */ - void get_contract_code( account_name name, checksum256* code); - - /** - * Get the producer's signature for the action - * @param sig : Memory buffer - * @param siglen :Memory buffer size - * @return : Return valid data size - */ - int bpsig_action_time_seed( const char* sig, size_t siglen ); - - /** - * Gets the block number used for TAPOS on the currently executing transaction. - * - * @brief Gets the block number used for TAPOS on the currently executing transaction. - * @return block number used for TAPOS on the currently executing transaction - * Example: - * @code - * int tbn = tapos_block_num(); - * @endcode - */ - int tapos_block_num(); - - /** - * Gets the block prefix used for TAPOS on the currently executing transaction. - * - * @brief Gets the block prefix used for TAPOS on the currently executing transaction. - * @return block prefix used for TAPOS on the currently executing transaction - * Example: - * @code - * int tbp = tapos_block_prefix(); - * @endcode - */ - int tapos_block_prefix(); - - /** - * Gets the expiration of the currently executing transaction. - * - * @brief Gets the expiration of the currently executing transaction. - * @return expiration of the currently executing transaction - * Example: - * @code - * time tm = expiration(); - * eosio_print(tm); - * @endcode - */ - time expiration(); - - /** - * Retrieves the indicated action from the active transaction. - * - * @brief Retrieves the indicated action from the active transaction. - * @param type - 0 for context free action, 1 for action - * @param index - the index of the requested action - * @param buff - output packed buff of the action - * @param size - amount of buff read, pass 0 to have size returned - * @return the size of the action, -1 on failure - */ - int get_action( uint32_t type, uint32_t index, char* buff, size_t size ); - - /** - * Retrieve the signed_transaction.context_free_data[index]. - * - * @brief Retrieve the signed_transaction.context_free_data[index]. - * @param index - the index of the context_free_data entry to retrieve - * @param buff - output buff of the context_free_data entry - * @param size - amount of context_free_data[index] to retrieve into buff, 0 to report required size - * @return size copied, or context_free_data[index].size() if 0 passed for size, or -1 if index not valid - */ - int get_context_free_data( uint32_t index, char* buff, size_t size ); - - ///@ } transactioncapi -} diff --git a/contracts/eosiolib/transaction.hpp b/contracts/eosiolib/transaction.hpp deleted file mode 100644 index 2b5e1f1fb2a..00000000000 --- a/contracts/eosiolib/transaction.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include -#include -#include -#include -#include -#include - -namespace eosio { - - /** - * @defgroup transactioncppapi Transaction C++ API - * @ingroup transactionapi - * @brief Type-safe C++ wrappers for transaction C API - * - * @note There are some methods from the @ref transactioncapi that can be used directly from C++ - * - * @{ - */ - - class transaction_header { - public: - transaction_header( time_point_sec exp = time_point_sec(now() + 60) ) - :expiration(exp) - {} - - time_point_sec expiration; - uint16_t ref_block_num; - uint32_t ref_block_prefix; - unsigned_int net_usage_words = 0UL; /// number of 8 byte words this transaction can serialize into after compressions - uint8_t max_cpu_usage_ms = 0UL; /// number of CPU usage units to bill transaction for - unsigned_int delay_sec = 0UL; /// number of CPU usage units to bill transaction for - - EOSLIB_SERIALIZE( transaction_header, (expiration)(ref_block_num)(ref_block_prefix)(net_usage_words)(max_cpu_usage_ms)(delay_sec) ) - }; - - class transaction : public transaction_header { - public: - transaction(time_point_sec exp = time_point_sec(now() + 60)) : transaction_header( exp ) {} - - void send(const uint128_t& sender_id, account_name payer, bool replace_existing = false) const { - auto serialize = pack(*this); - send_deferred(sender_id, payer, serialize.data(), serialize.size(), replace_existing); - } - - vector context_free_actions; - vector actions; - extensions_type transaction_extensions; - - EOSLIB_SERIALIZE_DERIVED( transaction, transaction_header, (context_free_actions)(actions)(transaction_extensions) ) - }; - - /** - * - * - * - * - */ - struct onerror { - uint128_t sender_id; - bytes sent_trx; - - static onerror from_current_action() { - return unpack_action_data(); - } - - transaction unpack_sent_trx() const { - return unpack(sent_trx); - } - - EOSLIB_SERIALIZE( onerror, (sender_id)(sent_trx) ) - }; - - /** - * Retrieve the indicated action from the active transaction. - * @param type - 0 for context free action, 1 for action - * @param index - the index of the requested action - * @return the indicated action - */ - inline action get_action( uint32_t type, uint32_t index ) { - constexpr size_t max_stack_buffer_size = 512; - int s = ::get_action( type, index, nullptr, 0 ); - eosio_assert( s > 0, "get_action size failed" ); - size_t size = static_cast(s); - char* buffer = (char*)( max_stack_buffer_size < size ? malloc(size) : alloca(size) ); - auto size2 = ::get_action( type, index, buffer, size ); - eosio_assert( size == static_cast(size2), "get_action failed" ); - return eosio::unpack( buffer, size ); - } - - ///@} transactioncpp api - -} // namespace eos diff --git a/contracts/eosiolib/types.h b/contracts/eosiolib/types.h deleted file mode 100644 index 1611df2aad2..00000000000 --- a/contracts/eosiolib/types.h +++ /dev/null @@ -1,123 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup types Builtin Types - * @ingroup contractdev - * @brief Specifies builtin types, typedefs and aliases - * - * @{ - */ - -/** - * @brief Name of an account - * @details Name of an account - */ -typedef uint64_t account_name; - -/** - * @brief Name of a permission - * @details Name of a permission - */ -typedef uint64_t permission_name; - -/** - * @brief Name of a table - * @details Name of a table - */ -typedef uint64_t table_name; - -/** - * @brief Time - * @details Time - */ -typedef uint32_t time; - -/** - * @brief Name of a scope - * @details Name of a scope - */ -typedef uint64_t scope_name; - -/** - * @brief Name of an action - * @details Name of an action - */ -typedef uint64_t action_name; - -/** - * @brief Macro to align/overalign a type to ensure calls to intrinsics with pointers/references are properly aligned - * @details Macro to align/overalign a type to ensure calls to intrinsics with pointers/references are properly aligned - */ - -typedef uint16_t weight_type; - -/* macro to align/overalign a type to ensure calls to intrinsics with pointers/references are properly aligned */ -#define ALIGNED(X) __attribute__ ((aligned (16))) X - -/** - * @brief EOSIO Public Key - * @details EOSIO Public Key. It is 34 bytes. - */ -struct public_key { - char data[34]; -}; - -/** - * @brief EOSIO Signature - * @details EOSIO Signature. It is 66 bytes. - */ -struct signature { - uint8_t data[66]; -}; - -/** - * @brief 256-bit hash - * @details 256-bit hash - */ -struct ALIGNED(checksum256) { - uint8_t hash[32]; -}; - -/** - * @brief 160-bit hash - * @details 160-bit hash - */ -struct ALIGNED(checksum160) { - uint8_t hash[20]; -}; - -/** - * @brief 512-bit hash - * @details 512-bit hash - */ -struct ALIGNED(checksum512) { - uint8_t hash[64]; -}; - -/** - * @brief Type of EOSIO Transaction Id - * @details Type of EOSIO Transaction Id. It is 256-bit hash - */ -typedef struct checksum256 transaction_id_type; -typedef struct checksum256 block_id_type; - -struct account_permission { - account_name account; - permission_name permission; -}; - -#ifdef __cplusplus -} /// extern "C" -#endif -/// @} diff --git a/contracts/eosiolib/types.hpp b/contracts/eosiolib/types.hpp deleted file mode 100644 index f1e7c10dcd1..00000000000 --- a/contracts/eosiolib/types.hpp +++ /dev/null @@ -1,220 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once -#include -#include -#include -#include - -namespace eosio { - - typedef std::vector>> extensions_type; - - /** - * Converts a base32 symbol into its binary representation, used by string_to_name() - * - * @brief Converts a base32 symbol into its binary representation, used by string_to_name() - * @param c - Character to be converted - * @return constexpr char - Converted character - * @ingroup types - */ - static constexpr char char_to_symbol( char c ) { - if( c >= 'a' && c <= 'z' ) - return (c - 'a') + 6; - if( c >= '1' && c <= '5' ) - return (c - '1') + 1; - return 0; - } - - - /** - * Converts a base32 string to a uint64_t. This is a constexpr so that - * this method can be used in template arguments as well. - * - * @brief Converts a base32 string to a uint64_t. - * @param str - String representation of the name - * @return constexpr uint64_t - 64-bit unsigned integer representation of the name - * @ingroup types - */ - static constexpr uint64_t string_to_name( const char* str ) { - - uint32_t len = 0; - while( str[len] ) ++len; - - uint64_t value = 0; - - for( uint32_t i = 0; i <= 12; ++i ) { - uint64_t c = 0; - if( i < len && i <= 12 ) c = uint64_t(char_to_symbol( str[i] )); - - if( i < 12 ) { - c &= 0x1f; - c <<= 64-5*(i+1); - } - else { - c &= 0x0f; - } - - value |= c; - } - - return value; - } - - /** - * Used to generate a compile time uint64_t from the base32 encoded string interpretation of X - * - * @brief Used to generate a compile time uint64_t from the base32 encoded string interpretation of X - * @param X - String representation of the name - * @return constexpr uint64_t - 64-bit unsigned integer representation of the name - * @ingroup types - */ - #define N(X) ::eosio::string_to_name(#X) - - - static constexpr uint64_t name_suffix( uint64_t n ) { - uint32_t remaining_bits_after_last_actual_dot = 0; - uint32_t tmp = 0; - for( int32_t remaining_bits = 59; remaining_bits >= 4; remaining_bits -= 5 ) { // Note: remaining_bits must remain signed integer - // Get characters one-by-one in name in order from left to right (not including the 13th character) - auto c = (n >> remaining_bits) & 0x1Full; - if( !c ) { // if this character is a dot - tmp = static_cast(remaining_bits); - } else { // if this character is not a dot - remaining_bits_after_last_actual_dot = tmp; - } - } - - uint64_t thirteenth_character = n & 0x0Full; - if( thirteenth_character ) { // if 13th character is not a dot - remaining_bits_after_last_actual_dot = tmp; - } - - if( remaining_bits_after_last_actual_dot == 0 ) // there is no actual dot in the name other than potentially leading dots - return n; - - // At this point remaining_bits_after_last_actual_dot has to be within the range of 4 to 59 (and restricted to increments of 5). - - // Mask for remaining bits corresponding to characters after last actual dot, except for 4 least significant bits (corresponds to 13th character). - uint64_t mask = (1ull << remaining_bits_after_last_actual_dot) - 16; - uint32_t shift = 64 - remaining_bits_after_last_actual_dot; - - return ( ((n & mask) << shift) + (thirteenth_character << (shift-1)) ); - } - - /** - * Wraps a uint64_t to ensure it is only passed to methods that expect a Name and - * that no mathematical operations occur. It also enables specialization of print - * so that it is printed as a base32 string. - * - * @brief wraps a uint64_t to ensure it is only passed to methods that expect a Name - * @ingroup types - */ - struct name { - /** - * Conversion Operator to convert name to uint64_t - * - * @brief Conversion Operator - * @return uint64_t - Converted result - */ - operator uint64_t()const { return value; } - - // keep in sync with name::operator string() in eosio source code definition for name - std::string to_string() const { - static const char* charmap = ".12345abcdefghijklmnopqrstuvwxyz"; - - std::string str(13,'.'); - - uint64_t tmp = value; - for( uint32_t i = 0; i <= 12; ++i ) { - char c = charmap[tmp & (i == 0 ? 0x0f : 0x1f)]; - str[12-i] = c; - tmp >>= (i == 0 ? 4 : 5); - } - - trim_right_dots( str ); - return str; - } - - /** - * Equality Operator for name - * - * @brief Equality Operator for name - * @param a - First data to be compared - * @param b - Second data to be compared - * @return true - if equal - * @return false - if unequal - */ - friend bool operator==( const name& a, const name& b ) { return a.value == b.value; } - - /** - * Internal Representation of the account name - * - * @brief Internal Representation of the account name - */ - account_name value = 0; - - private: - static void trim_right_dots(std::string& str ) { - const auto last = str.find_last_not_of('.'); - if (last != std::string::npos) - str = str.substr(0, last + 1); - } - }; - -} // namespace eosio - -namespace std { - /** - * Provide less for checksum256 - * @brief Provide less for checksum256 - */ - template<> - struct less : binary_function { - bool operator()( const checksum256& lhs, const checksum256& rhs ) const { - return memcmp(&lhs, &rhs, sizeof(lhs)) < 0; - } - }; - -} // namespace std - -/** - * Equality Operator for checksum256 - * - * @brief Equality Operator for checksum256 - * @param lhs - First data to be compared - * @param rhs - Second data to be compared - * @return true - if equal - * @return false - if unequal - */ -bool operator==(const checksum256& lhs, const checksum256& rhs) { - return memcmp(&lhs, &rhs, sizeof(lhs)) == 0; -} - -/** - * Equality Operator for checksum160 - * - * @brief Equality Operator for checksum256 - * @param lhs - First data to be compared - * @param rhs - Second data to be compared - * @return true - if equal - * @return false - if unequal - */ -bool operator==(const checksum160& lhs, const checksum160& rhs) { - return memcmp(&lhs, &rhs, sizeof(lhs)) == 0; -} - -/** - * Equality Operator for checksum160 - * - * @brief Equality Operator for checksum256 - * @param lhs - First data to be compared - * @param rhs - Second data to be compared - * @return true - if unequal - * @return false - if equal - */ -bool operator!=(const checksum160& lhs, const checksum160& rhs) { - return memcmp(&lhs, &rhs, sizeof(lhs)) != 0; -} diff --git a/contracts/eosiolib/varint.hpp b/contracts/eosiolib/varint.hpp deleted file mode 100644 index dcc444f20d6..00000000000 --- a/contracts/eosiolib/varint.hpp +++ /dev/null @@ -1,484 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - - -/** - * @defgroup varint Variable Length Integer Type - * @brief Defines variable length integer type which provides more efficient serialization - * @ingroup types - * @{/ - */ - -/** - * Variable Length Unsigned Integer. This provides more efficient serialization of 32-bit unsigned int. - * It serialuzes a 32-bit unsigned integer in as few bytes as possible - * `varuint32` is unsigned and uses [VLQ or Base-128 encoding](https://en.wikipedia.org/wiki/Variable-length_quantity) - * - * @brief Variable Length Unsigned Integer - */ -struct unsigned_int { - /** - * Construct a new unsigned int object - * - * @brief Construct a new unsigned int object - * @param v - Source - */ - unsigned_int( uint32_t v = 0 ):value(v){} - - /** - * Construct a new unsigned int object from a type that is convertible to uint32_t - * - * @brief Construct a new unsigned int object - * @tparam T - Type of the source - * @param v - Source - * @pre T must be convertible to uint32_t - */ - template - unsigned_int( T v ):value(v){} - - //operator uint32_t()const { return value; } - //operator uint64_t()const { return value; } - - /** - * Convert unsigned_int as T - * @brief Conversion Operator - * @tparam T - Target type of conversion - * @return T - Converted target - */ - template - operator T()const { return static_cast(value); } - - /** - * Assign 32-bit unsigned integer - * - * @brief Assignment operator - * @param v - Soruce - * @return unsigned_int& - Reference to this object - */ - unsigned_int& operator=( uint32_t v ) { value = v; return *this; } - - /** - * Contained value - * - * @brief Contained value - */ - uint32_t value; - - /** - * Check equality between a unsigned_int object and 32-bit unsigned integer - * - * @brief Equality Operator - * @param i - unsigned_int object to compare - * @param v - 32-bit unsigned integer to compare - * @return true - if equal - * @return false - otherwise - */ - friend bool operator==( const unsigned_int& i, const uint32_t& v ) { return i.value == v; } - - /** - * Check equality between 32-bit unsigned integer and a unsigned_int object - * - * @brief Equality Operator - * @param i - 32-bit unsigned integer to compare - * @param v - unsigned_int object to compare - * @return true - if equal - * @return false - otherwise - */ - friend bool operator==( const uint32_t& i, const unsigned_int& v ) { return i == v.value; } - - /** - * Check equality between two unsigned_int objects - * - * @brief Equality Operator - * @param i - First unsigned_int object to compare - * @param v - Second unsigned_int object to compare - * @return true - if equal - * @return false - otherwise - */ - friend bool operator==( const unsigned_int& i, const unsigned_int& v ) { return i.value == v.value; } - - /** - * Check inequality between a unsigned_int object and 32-bit unsigned integer - * - * @brief Inequality Operator - * @param i - unsigned_int object to compare - * @param v - 32-bit unsigned integer to compare - * @return true - if inequal - * @return false - otherwise - */ - friend bool operator!=( const unsigned_int& i, const uint32_t& v ) { return i.value != v; } - - /** - * Check inequality between 32-bit unsigned integer and a unsigned_int object - * - * @brief Equality Operator - * @param i - 32-bit unsigned integer to compare - * @param v - unsigned_int object to compare - * @return true - if unequal - * @return false - otherwise - */ - friend bool operator!=( const uint32_t& i, const unsigned_int& v ) { return i != v.value; } - - /** - * Check inequality between two unsigned_int objects - * - * @brief Inequality Operator - * @param i - First unsigned_int object to compare - * @param v - Second unsigned_int object to compare - * @return true - if inequal - * @return false - otherwise - */ - friend bool operator!=( const unsigned_int& i, const unsigned_int& v ) { return i.value != v.value; } - - /** - * Check if the given unsigned_int object is less than the given 32-bit unsigned integer - * - * @brief Less than Operator - * @param i - unsigned_int object to compare - * @param v - 32-bit unsigned integer to compare - * @return true - if i less than v - * @return false - otherwise - */ - friend bool operator<( const unsigned_int& i, const uint32_t& v ) { return i.value < v; } - - /** - * Check if the given 32-bit unsigned integer is less than the given unsigned_int object - * - * @brief Less than Operator - * @param i - 32-bit unsigned integer to compare - * @param v - unsigned_int object to compare - * @return true - if i less than v - * @return false - otherwise - */ - friend bool operator<( const uint32_t& i, const unsigned_int& v ) { return i < v.value; } - - /** - * Check if the first given unsigned_int is less than the second given unsigned_int object - * - * @brief Less than Operator - * @param i - First unsigned_int object to compare - * @param v - Second unsigned_int object to compare - * @return true - if i less than v - * @return false - otherwise - */ - friend bool operator<( const unsigned_int& i, const unsigned_int& v ) { return i.value < v.value; } - - /** - * Check if the given unsigned_int object is greater or equal to the given 32-bit unsigned integer - * - * @brief Greater or Equal to Operator - * @param i - unsigned_int object to compare - * @param v - 32-bit unsigned integer to compare - * @return true - if i is greater or equal to v - * @return false - otherwise - */ - friend bool operator>=( const unsigned_int& i, const uint32_t& v ) { return i.value >= v; } - - /** - * Check if the given 32-bit unsigned integer is greater or equal to the given unsigned_int object - * - * @brief Greater or Equal to Operator - * @param i - 32-bit unsigned integer to compare - * @param v - unsigned_int object to compare - * @return true - if i is greater or equal to v - * @return false - otherwise - */ - friend bool operator>=( const uint32_t& i, const unsigned_int& v ) { return i >= v.value; } - - /** - * Check if the first given unsigned_int is greater or equal to the second given unsigned_int object - * - * @brief Greater or Equal to Operator - * @param i - First unsigned_int object to compare - * @param v - Second unsigned_int object to compare - * @return true - if i is greater or equal to v - * @return false - otherwise - */ - friend bool operator>=( const unsigned_int& i, const unsigned_int& v ) { return i.value >= v.value; } - - /** - * Serialize an unsigned_int object with as few bytes as possible - * - * @brief Serialize an unsigned_int object with as few bytes as possible - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ - template - friend DataStream& operator << ( DataStream& ds, const unsigned_int& v ){ - uint64_t val = v.value; - do { - uint8_t b = uint8_t(val) & 0x7f; - val >>= 7; - b |= ((val > 0) << 7); - ds.write((char*)&b,1);//.put(b); - } while( val ); - return ds; - } - - /** - * Deserialize an unsigned_int object - * - * @brief Deserialize an unsigned_int object - * @param ds - The stream to read - * @param vi - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ - template - friend DataStream& operator >> ( DataStream& ds, unsigned_int& vi ){ - uint64_t v = 0; char b = 0; uint8_t by = 0; - do { - ds.get(b); - v |= uint32_t(uint8_t(b) & 0x7f) << by; - by += 7; - } while( uint8_t(b) & 0x80 ); - vi.value = static_cast(v); - return ds; - } -}; - -/** - * Variable Length Signed Integer. This provides more efficient serialization of 32-bit signed int. - * It serializes a 32-bit signed integer in as few bytes as possible. - * `varint32' is signed and uses [Zig-Zag encoding](https://developers.google.com/protocol-buffers/docs/encoding#signed-integers) - * - * @brief Variable Length Signed Integer - */ -struct signed_int { - /** - * Construct a new signed int object - * - * @brief Construct a new signed int object - * @param v - Source - */ - signed_int( int32_t v = 0 ):value(v){} - - /** - * Convert signed_int to primitive 32-bit signed integer - * @brief Conversion operator - * - * @return int32_t - The converted result - */ - operator int32_t()const { return value; } - - - /** - * Assign an object that is convertible to int32_t - * - * @brief Assignment operator - * @tparam T - Type of the assignment object - * @param v - Source - * @return unsigned_int& - Reference to this object - */ - template - signed_int& operator=( const T& v ) { value = v; return *this; } - - /** - * Increment operator - * - * @brief Increment operator - * @return signed_int - New signed_int with value incremented from the current object's value - */ - signed_int operator++(int) { return value++; } - - /** - * Increment operator - * - * @brief Increment operator - * @return signed_int - Reference to current object - */ - signed_int& operator++(){ ++value; return *this; } - - /** - * Contained value - * - * @brief Contained value - */ - int32_t value; - - /** - * Check equality between a signed_int object and 32-bit integer - * - * @brief Equality Operator - * @param i - signed_int object to compare - * @param v - 32-bit integer to compare - * @return true - if equal - * @return false - otherwise - */ - friend bool operator==( const signed_int& i, const int32_t& v ) { return i.value == v; } - - /** - * Check equality between 32-bit integer and a signed_int object - * - * @brief Equality Operator - * @param i - 32-bit integer to compare - * @param v - signed_int object to compare - * @return true - if equal - * @return false - otherwise - */ - friend bool operator==( const int32_t& i, const signed_int& v ) { return i == v.value; } - - /** - * Check equality between two signed_int objects - * - * @brief Equality Operator - * @param i - First signed_int object to compare - * @param v - Second signed_int object to compare - * @return true - if equal - * @return false - otherwise - */ - friend bool operator==( const signed_int& i, const signed_int& v ) { return i.value == v.value; } - - - /** - * Check inequality between a signed_int object and 32-bit integer - * - * @brief Inequality Operator - * @param i - signed_int object to compare - * @param v - 32-bit integer to compare - * @return true - if inequal - * @return false - otherwise - */ - friend bool operator!=( const signed_int& i, const int32_t& v ) { return i.value != v; } - - /** - * Check inequality between 32-bit integer and a signed_int object - * - * @brief Equality Operator - * @param i - 32-bit integer to compare - * @param v - signed_int object to compare - * @return true - if unequal - * @return false - otherwise - */ - friend bool operator!=( const int32_t& i, const signed_int& v ) { return i != v.value; } - - /** - * Check inequality between two signed_int objects - * - * @brief Inequality Operator - * @param i - First signed_int object to compare - * @param v - Second signed_int object to compare - * @return true - if inequal - * @return false - otherwise - */ - friend bool operator!=( const signed_int& i, const signed_int& v ) { return i.value != v.value; } - - /** - * Check if the given signed_int object is less than the given 32-bit integer - * - * @brief Less than Operator - * @param i - signed_int object to compare - * @param v - 32-bit integer to compare - * @return true - if i less than v - * @return false - otherwise - */ - friend bool operator<( const signed_int& i, const int32_t& v ) { return i.value < v; } - - /** - * Check if the given 32-bit integer is less than the given signed_int object - * - * @brief Less than Operator - * @param i - 32-bit integer to compare - * @param v - signed_int object to compare - * @return true - if i less than v - * @return false - otherwise - */ - friend bool operator<( const int32_t& i, const signed_int& v ) { return i < v.value; } - - /** - * Check if the first given signed_int is less than the second given signed_int object - * - * @brief Less than Operator - * @param i - First signed_int object to compare - * @param v - Second signed_int object to compare - * @return true - if i less than v - * @return false - otherwise - */ - friend bool operator<( const signed_int& i, const signed_int& v ) { return i.value < v.value; } - - - /** - * Check if the given signed_int object is greater or equal to the given 32-bit integer - * - * @brief Greater or Equal to Operator - * @param i - signed_int object to compare - * @param v - 32-bit integer to compare - * @return true - if i is greater or equal to v - * @return false - otherwise - */ - friend bool operator>=( const signed_int& i, const int32_t& v ) { return i.value >= v; } - - /** - * Check if the given 32-bit integer is greater or equal to the given signed_int object - * - * @brief Greater or Equal to Operator - * @param i - 32-bit integer to compare - * @param v - signed_int object to compare - * @return true - if i is greater or equal to v - * @return false - otherwise - */ - friend bool operator>=( const int32_t& i, const signed_int& v ) { return i >= v.value; } - - /** - * Check if the first given signed_int is greater or equal to the second given signed_int object - * - * @brief Greater or Equal to Operator - * @param i - First signed_int object to compare - * @param v - Second signed_int object to compare - * @return true - if i is greater or equal to v - * @return false - otherwise - */ - friend bool operator>=( const signed_int& i, const signed_int& v ) { return i.value >= v.value; } - - - /** - * Serialize an signed_int object with as few bytes as possible - * - * @brief Serialize an signed_int object with as few bytes as possible - * @param ds - The stream to write - * @param v - The value to serialize - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ - template - friend DataStream& operator << ( DataStream& ds, const signed_int& v ){ - uint32_t val = uint32_t((v.value<<1) ^ (v.value>>31)); - do { - uint8_t b = uint8_t(val) & 0x7f; - val >>= 7; - b |= ((val > 0) << 7); - ds.write((char*)&b,1);//.put(b); - } while( val ); - return ds; - } - - /** - * Deserialize an signed_int object - * - * @brief Deserialize an signed_int object - * @param ds - The stream to read - * @param vi - The destination for deserialized value - * @tparam DataStream - Type of datastream - * @return DataStream& - Reference to the datastream - */ - template - friend DataStream& operator >> ( DataStream& ds, signed_int& vi ){ - uint32_t v = 0; char b = 0; int by = 0; - do { - ds.get(b); - v |= uint32_t(uint8_t(b) & 0x7f) << by; - by += 7; - } while( uint8_t(b) & 0x80 ); - vi.value = ((v>>1) ^ (v>>31)) + (v&0x01); - vi.value = v&0x01 ? vi.value : -vi.value; - vi.value = -vi.value; - return ds; - } -}; - -/// @} diff --git a/contracts/eosiolib/vector.hpp b/contracts/eosiolib/vector.hpp deleted file mode 100644 index a6aa811d222..00000000000 --- a/contracts/eosiolib/vector.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#include -#include -#include - -namespace eosio { - - using std::vector; - - typedef std::vector bytes; - -} /// namespace eosio diff --git a/contracts/hello/CMakeLists.txt b/contracts/hello/CMakeLists.txt deleted file mode 100644 index 5cd15332331..00000000000 --- a/contracts/hello/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET hello - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc libc++ eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/hello/hello.abi b/contracts/hello/hello.abi deleted file mode 100644 index 4ab98040edf..00000000000 --- a/contracts/hello/hello.abi +++ /dev/null @@ -1,65 +0,0 @@ -{ - "____comment": "This file was generated by eosio-abigen. DO NOT EDIT - 2018-05-23T20:27:36", - "version": "eosio::abi/1.0", - "types": [], - "structs": [{ - "name": "hi", - "base": "", - "fields": [{ - "name": "user", - "type": "name" - } - ] - } - ], - "actions": [{ - "name": "hi", - "type": "hi", - "ricardian_contract": "# CONTRACT FOR hello::hi## ACTION NAME: hi\n### Parameters### Parameters\nInput parameters:Input parameters:\n\n* `user` (string to include in the output)* `user` (string to include in the output)\n\nImplied parameters: Implied parameters: \n\n* `account_name` (name of the party invoking and signing the contract)* `account_name` (name of the party invoking and signing the contract)\n\n### Intent### Intent\nINTENT. The intention of the author and the invoker of this contract is to print output. It shall have no other effect.INTENT. The intention of the author and the invoker of this contract is to print output. It shall have no other effect.\n\n### Term### Term\nTERM. This Contract expires at the conclusion of code execution.TERM. This Contract expires at the conclusion of code execution.\n" - } - ], - "tables": [], - "ricardian_clauses": [{ - "id": "Warranty", - "body": "WARRANTY. The invoker of the contract action shall uphold its Obligations under this Contract in a timely and workmanlike manner, using knowledge and recommendations for performing the services which meet generally acceptable standards set forth by EOS.IO Blockchain Block Producers.\n\n" - },{ - "id": "Default", - "body": "DEFAULT. The occurrence of any of the following shall constitute a material default under this Contract: \n\n" - },{ - "id": "Remedies", - "body": "REMEDIES. In addition to any and all other rights a party may have available according to law, if a party defaults by failing to substantially perform any provision, term or condition of this Contract, the other party may terminate the Contract by providing written notice to the defaulting party. This notice shall describe with sufficient detail the nature of the default. The party receiving such notice shall promptly be removed from being a Block Producer and this Contract shall be automatically terminated. \n \n" - },{ - "id": "Force Majeure", - "body": "FORCE MAJEURE. If performance of this Contract or any obligation under this Contract is prevented, restricted, or interfered with by causes beyond either party's reasonable control (\"Force Majeure\"), and if the party unable to carry out its obligations gives the other party prompt written notice of such event, then the obligations of the party invoking this provision shall be suspended to the extent necessary by such event. The term Force Majeure shall include, without limitation, acts of God, fire, explosion, vandalism, storm or other similar occurrence, orders or acts of military or civil authority, or by national emergencies, insurrections, riots, or wars, or strikes, lock-outs, work stoppages, or supplier failures. The excused party shall use reasonable efforts under the circumstances to avoid or remove such causes of non-performance and shall proceed to perform with reasonable dispatch whenever such causes are removed or ceased. An act or omission shall be deemed within the reasonable control of a party if committed, omitted, or caused by such party, or its employees, officers, agents, or affiliates. \n \n" - },{ - "id": "Dispute Resolution", - "body": "DISPUTE RESOLUTION. Any controversies or disputes arising out of or relating to this Contract will be resolved by binding arbitration under the default rules set forth by the EOS.IO Blockchain. The arbitrator's award will be final, and judgment may be entered upon it by any court having proper jurisdiction. \n \n" - },{ - "id": "Entire Agreement", - "body": "ENTIRE AGREEMENT. This Contract contains the entire agreement of the parties, and there are no other promises or conditions in any other agreement whether oral or written concerning the subject matter of this Contract. This Contract supersedes any prior written or oral agreements between the parties. \n\n" - },{ - "id": "Severability", - "body": "SEVERABILITY. If any provision of this Contract will be held to be invalid or unenforceable for any reason, the remaining provisions will continue to be valid and enforceable. If a court finds that any provision of this Contract is invalid or unenforceable, but that by limiting such provision it would become valid and enforceable, then such provision will be deemed to be written, construed, and enforced as so limited. \n\n" - },{ - "id": "Amendment", - "body": "AMENDMENT. This Contract may be modified or amended in writing by mutual agreement between the parties, if the writing is signed by the party obligated under the amendment. \n\n" - },{ - "id": "Governing Law", - "body": "GOVERNING LAW. This Contract shall be construed in accordance with the Maxims of Equity. \n\n" - },{ - "id": "Notice", - "body": "NOTICE. Any notice or communication required or permitted under this Contract shall be sufficiently given if delivered to a verifiable email address or to such other email address as one party may have publicly furnished in writing, or published on a broadcast contract provided by this blockchain for purposes of providing notices of this type. \n" - },{ - "id": "Waiver of Contractual Right", - "body": "WAIVER OF CONTRACTUAL RIGHT. The failure of either party to enforce any provision of this Contract shall not be construed as a waiver or limitation of that party's right to subsequently enforce and compel strict compliance with every provision of this Contract. \n\n" - },{ - "id": "Arbitrator's Fees to Prevailing Party", - "body": "ARBITRATOR'S FEES TO PREVAILING PARTY. In any action arising hereunder or any separate action pertaining to the validity of this Agreement, both sides shall pay half the initial cost of arbitration, and the prevailing party shall be awarded reasonable arbitrator's fees and costs.\n \n" - },{ - "id": "Construction and Interpretation", - "body": "CONSTRUCTION AND INTERPRETATION. The rule requiring construction or interpretation against the drafter is waived. The document shall be deemed as if it were drafted by both parties in a mutual effort. \n \n" - } - ], - "error_messages": [], - "abi_extensions": [] -} \ No newline at end of file diff --git a/contracts/hello/hello.cpp b/contracts/hello/hello.cpp deleted file mode 100644 index 7c52afa9b60..00000000000 --- a/contracts/hello/hello.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -using namespace eosio; - -class hello : public eosio::contract { - public: - using contract::contract; - - /// @abi action - void hi( account_name user ) { - print( "Hello, ", name{user} ); - } -}; - -EOSIO_ABI( hello, (hi) ) diff --git a/contracts/hello/hello.hi_rc.md b/contracts/hello/hello.hi_rc.md deleted file mode 100644 index 0d4ebd3ae8b..00000000000 --- a/contracts/hello/hello.hi_rc.md +++ /dev/null @@ -1,18 +0,0 @@ -# CONTRACT FOR hello::hi - -## ACTION NAME: hi - -### Parameters -Input parameters: - -* `user` (string to include in the output) - -Implied parameters: - -* `account_name` (name of the party invoking and signing the contract) - -### Intent -INTENT. The intention of the author and the invoker of this contract is to print output. It shall have no other effect. - -### Term -TERM. This Contract expires at the conclusion of code execution. diff --git a/contracts/hello/hello_rc.md b/contracts/hello/hello_rc.md deleted file mode 100644 index 4ca04401a20..00000000000 --- a/contracts/hello/hello_rc.md +++ /dev/null @@ -1,40 +0,0 @@ -### CLAUSE NAME: Warranty -WARRANTY. The invoker of the contract action shall uphold its Obligations under this Contract in a timely and workmanlike manner, using knowledge and recommendations for performing the services which meet generally acceptable standards set forth by EOS.IO Blockchain Block Producers. - -### CLAUSE NAME: Default -DEFAULT. The occurrence of any of the following shall constitute a material default under this Contract: - -### CLAUSE NAME: Remedies -REMEDIES. In addition to any and all other rights a party may have available according to law, if a party defaults by failing to substantially perform any provision, term or condition of this Contract, the other party may terminate the Contract by providing written notice to the defaulting party. This notice shall describe with sufficient detail the nature of the default. The party receiving such notice shall promptly be removed from being a Block Producer and this Contract shall be automatically terminated. - -### CLAUSE NAME: Force Majeure -FORCE MAJEURE. If performance of this Contract or any obligation under this Contract is prevented, restricted, or interfered with by causes beyond either party's reasonable control ("Force Majeure"), and if the party unable to carry out its obligations gives the other party prompt written notice of such event, then the obligations of the party invoking this provision shall be suspended to the extent necessary by such event. The term Force Majeure shall include, without limitation, acts of God, fire, explosion, vandalism, storm or other similar occurrence, orders or acts of military or civil authority, or by national emergencies, insurrections, riots, or wars, or strikes, lock-outs, work stoppages, or supplier failures. The excused party shall use reasonable efforts under the circumstances to avoid or remove such causes of non-performance and shall proceed to perform with reasonable dispatch whenever such causes are removed or ceased. An act or omission shall be deemed within the reasonable control of a party if committed, omitted, or caused by such party, or its employees, officers, agents, or affiliates. - -### CLAUSE NAME: Dispute Resolution -DISPUTE RESOLUTION. Any controversies or disputes arising out of or relating to this Contract will be resolved by binding arbitration under the default rules set forth by the EOS.IO Blockchain. The arbitrator's award will be final, and judgment may be entered upon it by any court having proper jurisdiction. - -### CLAUSE NAME: Entire Agreement -ENTIRE AGREEMENT. This Contract contains the entire agreement of the parties, and there are no other promises or conditions in any other agreement whether oral or written concerning the subject matter of this Contract. This Contract supersedes any prior written or oral agreements between the parties. - -### CLAUSE NAME: Severability -SEVERABILITY. If any provision of this Contract will be held to be invalid or unenforceable for any reason, the remaining provisions will continue to be valid and enforceable. If a court finds that any provision of this Contract is invalid or unenforceable, but that by limiting such provision it would become valid and enforceable, then such provision will be deemed to be written, construed, and enforced as so limited. - -### CLAUSE NAME: Amendment -AMENDMENT. This Contract may be modified or amended in writing by mutual agreement between the parties, if the writing is signed by the party obligated under the amendment. - -### CLAUSE NAME: Governing Law -GOVERNING LAW. This Contract shall be construed in accordance with the Maxims of Equity. - -### CLAUSE NAME: Notice -NOTICE. Any notice or communication required or permitted under this Contract shall be sufficiently given if delivered to a verifiable email address or to such other email address as one party may have publicly furnished in writing, or published on a broadcast contract provided by this blockchain for purposes of providing notices of this type. -### CLAUSE NAME: Waiver of Contractual Right -WAIVER OF CONTRACTUAL RIGHT. The failure of either party to enforce any provision of this Contract shall not be construed as a waiver or limitation of that party's right to subsequently enforce and compel strict compliance with every provision of this Contract. - -### CLAUSE NAME: Arbitrator's Fees to Prevailing Party -ARBITRATOR'S FEES TO PREVAILING PARTY. In any action arising hereunder or any separate action pertaining to the validity of this Agreement, both sides shall pay half the initial cost of arbitration, and the prevailing party shall be awarded reasonable arbitrator's fees and costs. - -### CLAUSE NAME: Construction and Interpretation -CONSTRUCTION AND INTERPRETATION. The rule requiring construction or interpretation against the drafter is waived. The document shall be deemed as if it were drafted by both parties in a mutual effort. - -### CLAUSE NAME: In Witness Whereof -IN WITNESS WHEREOF, the parties hereto have caused this Agreement to be executed by themselves or their duly authorized representatives as of the date of execution, and authorized as proven by the cryptographic signature on the transaction that invokes this contract. diff --git a/contracts/identity/CMakeLists.txt b/contracts/identity/CMakeLists.txt deleted file mode 100644 index 230adcda29c..00000000000 --- a/contracts/identity/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_library(TARGET identity_common - SOURCE_FILES common.cpp - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - -add_wast_executable(TARGET identity - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES identity_common libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - -add_wast_library(TARGET identity_interface - SOURCE_FILES interface.cpp - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES identity_common libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - -add_subdirectory(test) diff --git a/contracts/identity/common.cpp b/contracts/identity/common.cpp deleted file mode 100644 index 68e48bc6adb..00000000000 --- a/contracts/identity/common.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "common.hpp" - -#include - -namespace identity { - - bool identity_base::is_trusted_by( account_name trusted, account_name by ) { - trust_table t( _self, by ); - return t.find( trusted ) != t.end(); - } - - bool identity_base::is_trusted( account_name acnt ) { - account_name active_producers[21]; - auto active_prod_size = get_active_producers( active_producers, sizeof(active_producers) ); - auto count = active_prod_size / sizeof(account_name); - for( size_t i = 0; i < count; ++i ) { - if( active_producers[i] == acnt ) - return true; - } - for( size_t i = 0; i < count; ++i ) { - if( is_trusted_by( acnt, active_producers[i] ) ) - return true; - } - return false; - } - -} diff --git a/contracts/identity/common.hpp b/contracts/identity/common.hpp deleted file mode 100644 index 48d8cf39f9e..00000000000 --- a/contracts/identity/common.hpp +++ /dev/null @@ -1,84 +0,0 @@ -#pragma once - -#include -#include - -namespace identity { - - typedef uint64_t identity_name; - typedef uint64_t property_name; - typedef uint64_t property_type_name; - - struct certvalue { - property_name property; ///< name of property, base32 encoded i64 - std::string type; ///< defines type serialized in data - std::vector data; ///< - std::string memo; ///< meta data documenting basis of certification - uint8_t confidence = 1; ///< used to define liability for lies, - /// 0 to delete - - EOSLIB_SERIALIZE( certvalue, (property)(type)(data)(memo)(confidence) ) - }; - - struct certrow { - uint64_t id; - property_name property; - uint64_t trusted; - account_name certifier; - uint8_t confidence = 0; - std::string type; - std::vector data; - uint64_t primary_key() const { return id; } - /* constexpr */ static eosio::key256 key(uint64_t property, uint64_t trusted, uint64_t certifier) { - /* - key256 key; - key.uint64s[0] = property; - key.uint64s[1] = trusted; - key.uint64s[2] = certifier; - key.uint64s[3] = 0; - */ - return eosio::key256::make_from_word_sequence(property, trusted, certifier); - } - eosio::key256 get_key() const { return key(property, trusted, certifier); } - - EOSLIB_SERIALIZE( certrow , (property)(trusted)(certifier)(confidence)(type)(data)(id) ) - }; - - struct identrow { - uint64_t identity; - account_name creator; - - uint64_t primary_key() const { return identity; } - - EOSLIB_SERIALIZE( identrow , (identity)(creator) ) - }; - - struct trustrow { - account_name account; - - uint64_t primary_key() const { return account; } - - EOSLIB_SERIALIZE( trustrow, (account) ) - }; - - typedef eosio::multi_index > - > certs_table; - typedef eosio::multi_index idents_table; - typedef eosio::singleton accounts_table; - typedef eosio::multi_index trust_table; - - class identity_base { - public: - identity_base( account_name acnt) : _self( acnt ) {} - - bool is_trusted_by( account_name trusted, account_name by ); - - bool is_trusted( account_name acnt ); - - protected: - account_name _self; - }; - -} - diff --git a/contracts/identity/identity.abi b/contracts/identity/identity.abi deleted file mode 100644 index cbb3e2373bf..00000000000 --- a/contracts/identity/identity.abi +++ /dev/null @@ -1,118 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - },{ - "new_type_name": "identity_name", - "type": "name" - },{ - "new_type_name": "property_name", - "type": "name" - } - ], - "structs": [{ - "name": "create", - "base": "", - "fields": [ - {"name":"creator", "type":"account_name"}, - {"name":"identity", "type":"uint64"} - ] - },{ - "name": "certvalue", - "base": "", - "fields": [ - {"name":"property", "type":"name"}, - {"name":"type", "type":"string"}, - {"name":"data", "type":"uint8[]"}, - {"name":"memo", "type":"string"}, - {"name":"confidence", "type":"uint8"} - ] - },{ - "name": "certprop", - "base": "", - "fields": [ - {"name":"bill_storage_to", "type":"account_name"}, - {"name":"certifier", "type":"account_name"}, - {"name":"identity", "type":"uint64"}, - {"name":"value", "type":"certvalue[]"} - ] - },{ - "name": "settrust", - "base": "", - "fields": [ - {"name":"trustor", "type":"account_name"}, - {"name":"trusting", "type":"account_name"}, - {"name":"trust", "type":"uint8"} - ] - },{ - "name": "certrow", - "base": "", - "fields": [ - {"name":"property", "type":"property_name"}, - {"name":"trusted", "type":"uint64"}, - {"name":"certifier", "type":"account_name"}, - {"name":"confidence", "type":"uint8"}, - {"name":"type", "type":"string"}, - {"name":"data", "type":"uint8[]"} - ] - },{ - "name": "identrow", - "base": "", - "fields": [ - {"name":"identity", "type":"uint64"}, - {"name":"creator", "type":"account_name"} - ] - },{ - "name": "accountrow", - "base": "", - "fields": [ - {"name":"identity", "type":"uint64"} - ] - } - ], - "actions": [{ - "name": "create", - "type": "create", - "ricardian_contract": "" - },{ - "name": "certprop", - "type": "certprop", - "ricardian_contract": "" - },{ - "name": "settrust", - "type": "settrust", - "ricardian_contract": "" - } - ], - "tables": [{ - "name": "certs", - "type": "certrow", - "index_type": "i64i64i64", - "key_names" : [ - "property", - "trusted", - "certifier" - ], - " key_types": [ - "uint64", - "uint64", - "uint64" - ] - },{ - "name": "idents", - "type": "identrow", - "index_type": "i64", - "key_names" : [ "identity" ], - "key_types": [ "uint64" ] - },{ - "name": "trust", - "type": "account_name", - "index_type": "i64", - "key_names" : [ "account" ], - "key_types": [ "account_name" ] - } - ], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/identity/identity.cpp b/contracts/identity/identity.cpp deleted file mode 100644 index c33cd66d526..00000000000 --- a/contracts/identity/identity.cpp +++ /dev/null @@ -1,188 +0,0 @@ -#include "common.hpp" - -#include -#include -#include - -namespace identity { - using eosio::action_meta; - using eosio::singleton; - using eosio::key256; - using std::string; - using std::vector; - - /** - * This contract maintains a graph database of certified statements about an - * identity. An identity is separated from the concept of an account because - * the mapping of identity to accounts is subject to community consensus. - * - * Some use cases need a global source of trust, this trust rooted in the voter - * who selects block producers. A block producer's opinion is "trusted" and so - * is the opinion of anyone the block producer marks as "trusted". - * - * When a block producer is voted out the implicit trust in every certification - * they made or those they trusted made is removed. All users are liable for - * making false certifications. - * - * An account needs to claim the identity and a trusted account must certify the - * claim. - * - * Data for an identity is stored: - * - * DeployToAccount / identity / certs / [property, trusted, certifier] => value - * - * Questions database is designed to answer: - * - * 1. has $identity.$unique been certified a "trusted" certifier - * 2. has $identity.$property been certified by $account - * 3. has $identity.$trusted been certified by a "trusted" certifier - * 4. what account has authority to speak on behalf of identity? - * - for each trusted owner certification - * check to see if the account has claimed it - * - * 5. what identity does account have authority to speak on behalf? - * - check what identity the account has self certified owner - * - verify that a trusted certifier has confirmed owner - * - * This database structure enables parallel opeartions on independent identities. - * - * When an account certs a property we check to see if that - */ - class contract : public identity_base { - public: - - using identity_base::identity_base; - - void settrust( const account_name trustor, ///< the account authorizing the trust - const account_name trusting, ///< the account receiving the trust - const uint8_t trust = 0 )/// 0 to remove, -1 to mark untrusted, 1 to mark trusted - { - require_auth( trustor ); - require_recipient( trusting ); - - trust_table table( _self, trustor ); - auto itr = table.find(trusting); - if( itr == table.end() && trust > 0 ) { - table.emplace( trustor, [&](trustrow& row) { - row.account = trusting; - }); - } else if( itr != table.end() && trust == 0 ) { - table.erase(itr); - } - } - - /** - * This action create a new globally unique 64 bit identifier, - * to minimize collisions each account is automatically assigned - * a 32 bit identity prefix based upon hash(account_name) ^ hash(tapos). - * - * With this method no two accounts are likely to be assigned the same - * 32 bit prefix consistantly due to the constantly changing tapos. This prevents - * abuse of 'creator' selection to generate intentional conflicts with other users. - * - * The creator can determine the last 32 bits using an algorithm of their choice. We - * presume the creator's algorithm can avoid collisions with itself. - * - * Even if two accounts get a collision in first 32 bits, a proper creator algorithm - * should generate randomness in last 32 bits that will minimize collisions. In event - * of collision transaction will fail and creator can try again. - * - * A 64 bit identity is used because the key is used frequently and it makes for more - * effecient tables/scopes/etc. - */ - void create( const account_name creator, const uint64_t identity ) { - require_auth( creator ); - idents_table t( _self, _self ); - auto itr = t.find( identity ); - eosio_assert( itr == t.end(), "identity already exists" ); - eosio_assert( identity != 0, "identity=0 is not allowed" ); - t.emplace(creator, [&](identrow& i) { - i.identity = identity; - i.creator = creator; - }); - } - - void certprop( const account_name bill_storage_to, ///< account which is paying for storage - const account_name certifier, - const identity_name identity, - const vector& values ) - { - require_auth( certifier ); - if( bill_storage_to != certifier ) - require_auth( bill_storage_to ); - - idents_table t( _self, _self ); - eosio_assert( t.find( identity ) != t.end(), "identity does not exist" ); - - /// the table exists in the scope of the identity - certs_table certs( _self, identity ); - bool trusted = is_trusted( certifier ); - - for( const auto& value : values ) { - auto idx = certs.template get_index(); - if (value.confidence) { - eosio_assert(value.type.size() <= 32, "certrow::type should be not longer than 32 bytes"); - auto itr = idx.lower_bound( certrow::key(value.property, trusted, certifier) ); - - if (itr != idx.end() && itr->property == value.property && itr->trusted == trusted && itr->certifier == certifier) { - idx.modify(itr, 0, [&](certrow& row) { - row.confidence = value.confidence; - row.type = value.type; - row.data = value.data; - }); - } else { - auto pk = certs.available_primary_key(); - certs.emplace(_self, [&](certrow& row) { - row.id = pk; - row.property = value.property; - row.trusted = trusted; - row.certifier = certifier; - row.confidence = value.confidence; - row.type = value.type; - row.data = value.data; - }); - } - - auto itr_old = idx.lower_bound( certrow::key(value.property, !trusted, certifier) ); - if (itr_old != idx.end() && itr_old->property == value.property && itr_old->trusted == !trusted && itr_old->certifier == certifier) { - idx.erase(itr_old); - } - - //special handling for owner - if (value.property == N(owner)) { - eosio_assert(sizeof(account_name) == value.data.size(), "data size doesn't match account_name size"); - account_name acnt = *reinterpret_cast(value.data.data()); - if (certifier == acnt) { //only self-certitication affects accounts_table - accounts_table( _self, acnt ).set( identity, acnt ); - } - } - } else { - bool removed = false; - auto itr = idx.lower_bound( certrow::key(value.property, trusted, certifier) ); - if (itr != idx.end() && itr->property == value.property && itr->trusted == trusted && itr->certifier == certifier) { - idx.erase(itr); - } else { - removed = true; - } - itr = idx.lower_bound( certrow::key(value.property, !trusted, certifier) ); - if (itr != idx.end() && itr->property == value.property && itr->trusted == !trusted && itr->certifier == certifier) { - idx.erase(itr); - } else { - removed = true; - } - //special handling for owner - if (value.property == N(owner)) { - eosio_assert(sizeof(account_name) == value.data.size(), "data size doesn't match account_name size"); - account_name acnt = *reinterpret_cast(value.data.data()); - if (certifier == acnt) { //only self-certitication affects accounts_table - accounts_table( _self, acnt ).remove(); - } - } - } - } - } - }; - -} /// namespace identity - -EOSIO_ABI( identity::contract, (create)(certprop)(settrust) ); diff --git a/contracts/identity/interface.cpp b/contracts/identity/interface.cpp deleted file mode 100644 index fb633bc52a8..00000000000 --- a/contracts/identity/interface.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include "interface.hpp" - -namespace identity { - -identity_name interface::get_claimed_identity( account_name acnt ) { - return accounts_table( _self, acnt ).get_or_default(0); -} - -account_name interface::get_owner_for_identity( uint64_t receiver, identity_name ident ) { - // for each trusted owner certification - // check to see if the certification is still trusted - // check to see if the account has claimed it - certs_table certs( _self, ident ); - auto idx = certs.template get_index(); - auto itr = idx.lower_bound(certrow::key(N(owner), 1, 0)); - account_name owner = 0; - while (itr != idx.end() && itr->property == N(owner) && itr->trusted) { - if (sizeof(account_name) == itr->data.size()) { - account_name account = *reinterpret_cast(itr->data.data()); - if (ident == get_claimed_identity(account)) { - if (is_trusted(itr->certifier) ) { - // the certifier is still trusted - if (!owner || owner == account) { - owner = account; - } else { - //contradiction found: different owners certified for the same identity - return 0; - } - } else if (_self == receiver){ - //the certifier is no longer trusted, need to unset the flag - idx.modify(itr, 0, [&](certrow& r) { - r.trusted = 0; - }); - } else { - // the certifier is no longer trusted, but the code runs in read-only mode - } - } - } else { - // bad row - skip it - } - ++itr; - } - if (owner) { - //owner found, no contradictions among certifications flaged as trusted - return owner; - } - // trusted certification not found - // let's see if any untrusted certifications became trusted - itr = idx.lower_bound(certrow::key(N(owner), 0, 0)); - while (itr != idx.end() && itr->property == N(owner) && !itr->trusted) { - if (sizeof(account_name) == itr->data.size()) { - account_name account = *reinterpret_cast(itr->data.data()); - if (ident == get_claimed_identity(account) && is_trusted(itr->certifier)) { - if (_self == receiver) { - // the certifier became trusted and we have permissions to update the flag - idx.modify(itr, 0, [&](certrow& r) { - r.trusted = 1; - }); - } - if (!owner || owner == account) { - owner = account; - } else { - //contradiction found: different owners certified for the same identity - return 0; - } - } - } else { - // bad row - skip it - } - ++itr; - } - return owner; -} - -identity_name interface::get_identity_for_account( uint64_t receiver, account_name acnt ) { - // check what identity the account has self certified owner - // verify that a trusted certifier has confirmed owner - auto identity = get_claimed_identity(acnt); - return (identity != 0 && acnt == get_owner_for_identity(receiver, identity)) ? identity : 0; -} - -} // namespace identity diff --git a/contracts/identity/interface.hpp b/contracts/identity/interface.hpp deleted file mode 100644 index 5415bbbdb57..00000000000 --- a/contracts/identity/interface.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "common.hpp" - -namespace identity { - - class interface : public identity_base { - public: - using identity_base::identity_base; - - identity_name get_claimed_identity( account_name acnt ); - - account_name get_owner_for_identity( uint64_t receiver, identity_name ident ); - - identity_name get_identity_for_account( uint64_t receiver, account_name acnt ); - }; - -} diff --git a/contracts/identity/test/CMakeLists.txt b/contracts/identity/test/CMakeLists.txt deleted file mode 100644 index 739341339a1..00000000000 --- a/contracts/identity/test/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -set(ABI_FILES "identity_test.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) -add_wast_executable(TARGET identity_test - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES identity_interface identity_common libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/identity/test/identity_test.abi b/contracts/identity/test/identity_test.abi deleted file mode 100644 index a0b450f8ac4..00000000000 --- a/contracts/identity/test/identity_test.abi +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - },{ - "new_type_name": "identity_name", - "type": "name" - } - ], - "structs": [{ - "name": "getowner", - "base": "", - "fields": [ - {"name":"identity", "type":"uint64"} - ] - },{ - "name": "getidentity", - "base": "", - "fields": [ - {"name":"account", "type":"account_name"} - ] - } - ], - "actions": [{ - "name": "getowner", - "type": "getowner" - },{ - "name": "getidentity", - "type": "getidentity" - } - ], - "tables": [ - ] -} diff --git a/contracts/identity/test/identity_test.cpp b/contracts/identity/test/identity_test.cpp deleted file mode 100644 index 4688d4db4db..00000000000 --- a/contracts/identity/test/identity_test.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include -#include - -namespace identity_test { - - using eosio::action_meta; - using eosio::singleton; - using std::string; - using std::vector; - - class contract : public eosio::contract { - public: - static constexpr uint64_t code = N(identitytest); - typedef singleton result_table; - - using eosio::contract::contract; - - void getowner( const uint64_t identity ) { - identity::interface iface( N(identity) ); - account_name owner = iface.get_owner_for_identity(current_receiver(), identity); - result_table( code, 0 ).set( owner, code ); //use scope = 0 for simplicity - } - - void getidentity( const account_name account ) { - identity::interface iface( N(identity) ); - identity::identity_name idnt = iface.get_identity_for_account(current_receiver(), account); - result_table( code, 0 ).set(idnt, code ); //use scope = 0 for simplicity - } - }; - -} /// namespace identity - -EOSIO_ABI( identity_test::contract, (getowner)(getidentity) ); diff --git a/contracts/integration_test/CMakeLists.txt b/contracts/integration_test/CMakeLists.txt deleted file mode 100644 index 6439a566f36..00000000000 --- a/contracts/integration_test/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET integration_test - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc libc++ eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/integration_test/integration_test.abi b/contracts/integration_test/integration_test.abi deleted file mode 100644 index 6f181b255ba..00000000000 --- a/contracts/integration_test/integration_test.abi +++ /dev/null @@ -1,41 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - }], - "structs": [{ - "name": "store", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"}, - {"name":"to", "type":"account_name"}, - {"name":"num", "type":"uint64"} - ] - },{ - "name": "payload", - "base": "", - "fields": [ - {"name":"key", "type":"uint64"}, - {"name":"data", "type":"uint64[]"} - ] - } - ], - "actions": [{ - "name": "store", - "type": "store", - "ricardian_contract": "" - } - - ], - "tables": [{ - "name": "payloads", - "type": "payload", - "index_type": "i64", - "key_names" : ["key"], - "key_types" : ["uint64"] - } - ], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/integration_test/integration_test.cpp b/contracts/integration_test/integration_test.cpp deleted file mode 100644 index 6b6997903b7..00000000000 --- a/contracts/integration_test/integration_test.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include -using namespace eosio; - -struct integration_test : public eosio::contract { - using contract::contract; - - struct payload { - uint64_t key; - vector data; - - uint64_t primary_key()const { return key; } - }; - typedef eosio::multi_index payloads; - - /// @abi action - void store( account_name from, - account_name to, - uint64_t num ) { - require_auth( from ); - eosio_assert( is_account( to ), "to account does not exist"); - eosio_assert( num < std::numeric_limits::max(), "num to large"); - payloads data ( _self, from ); - uint64_t key = 0; - const uint64_t num_keys = 5; - while (data.find( key ) != data.end()) { - key += num_keys; - } - for (size_t i = 0; i < num_keys; ++i) { - data.emplace(from, [&]( auto& g ) { - g.key = key + i; - g.data = vector( static_cast(num), 5); - }); - } - } -}; - -EOSIO_ABI( integration_test, (store) ) diff --git a/contracts/libc++/CMakeLists.txt b/contracts/libc++/CMakeLists.txt deleted file mode 100644 index 6fc747de469..00000000000 --- a/contracts/libc++/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -SET(SRC_FILENAMES algorithm.cpp any.cpp bind.cpp condition_variable.cpp exception.cpp functional.cpp - future.cpp ios.cpp iostream.cpp locale.cpp memory.cpp mutex.cpp new.cpp optional.cpp - regex.cpp shared_mutex.cpp stdexcept.cpp string.cpp strstream.cpp system_error.cpp - thread.cpp typeinfo.cpp utility.cpp valarray.cpp variant.cpp vector.cpp) - -#SET(SRC_FILENAMES exception.cpp) - -SET(SRC_FILES "") -FOREACH(FN ${SRC_FILENAMES}) - LIST(APPEND SRC_FILES "upstream/src/${FN}") -ENDFOREACH(FN) - -add_wast_library(TARGET libc++ - NOWARNINGS - SOURCE_FILES "${SRC_FILES}" - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/libc++/upstream b/contracts/libc++/upstream deleted file mode 160000 index 2880ac42909..00000000000 --- a/contracts/libc++/upstream +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2880ac42909d4bb29687ed079f8bb4405c3b0869 diff --git a/contracts/multi_index_test/CMakeLists.txt b/contracts/multi_index_test/CMakeLists.txt deleted file mode 100644 index 40a4eef16fd..00000000000 --- a/contracts/multi_index_test/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) -add_wast_executable(TARGET multi_index_test - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - diff --git a/contracts/multi_index_test/multi_index_test.abi b/contracts/multi_index_test/multi_index_test.abi deleted file mode 100644 index 6679fa67b16..00000000000 --- a/contracts/multi_index_test/multi_index_test.abi +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [], - "structs": [{ - "name": "trigger", - "base": "", - "fields": [ - {"name": "what", "type": "uint32" } - ] - } - ], - "actions": [{ - "name": "trigger", - "type": "trigger", - "ricaridian_contract": "" - } - ], - "tables": [], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/multi_index_test/multi_index_test.cpp b/contracts/multi_index_test/multi_index_test.cpp deleted file mode 100644 index 531984f28fe..00000000000 --- a/contracts/multi_index_test/multi_index_test.cpp +++ /dev/null @@ -1,177 +0,0 @@ -#include -#include -#include - -using namespace eosio; - -namespace multi_index_test { - -struct limit_order { - uint64_t id; - uint64_t padding = 0; - uint128_t price; - uint64_t expiration; - account_name owner; - - auto primary_key()const { return id; } - uint64_t get_expiration()const { return expiration; } - uint128_t get_price()const { return price; } - - EOSLIB_SERIALIZE( limit_order, (id)(price)(expiration)(owner) ) - }; - - struct test_k256 { - uint64_t id; - key256 val; - - auto primary_key()const { return id; } - key256 get_val()const { return val; } - - EOSLIB_SERIALIZE( test_k256, (id)(val) ) - }; - - class snapshot_test { - public: - - ACTION(N(multitest), trigger) { - trigger(): what(0) {} - trigger(uint32_t w): what(w) {} - - uint32_t what; - - EOSLIB_SERIALIZE(trigger, (what)) - }; - - static void on(const trigger& act) - { - auto payer = act.get_account(); - print("Acting on trigger action.\n"); - switch(act.what) - { - case 0: - { - print("Testing uint128_t secondary index.\n"); - eosio::multi_index >, - indexed_by< N(byprice), const_mem_fun > - > orders( N(multitest), N(multitest) ); - - orders.emplace( payer, [&]( auto& o ) { - o.id = 1; - o.expiration = 300; - o.owner = N(dan); - }); - - auto order2 = orders.emplace( payer, [&]( auto& o ) { - o.id = 2; - o.expiration = 200; - o.owner = N(alice); - }); - - print("Items sorted by primary key:\n"); - for( const auto& item : orders ) { - print(" ID=", item.id, ", expiration=", item.expiration, ", owner=", name{item.owner}, "\n"); - } - - auto expidx = orders.get_index(); - - print("Items sorted by expiration:\n"); - for( const auto& item : expidx ) { - print(" ID=", item.id, ", expiration=", item.expiration, ", owner=", name{item.owner}, "\n"); - } - - print("Modifying expiration of order with ID=2 to 400.\n"); - orders.modify( order2, payer, [&]( auto& o ) { - o.expiration = 400; - }); - - print("Items sorted by expiration:\n"); - for( const auto& item : expidx ) { - print(" ID=", item.id, ", expiration=", item.expiration, ", owner=", name{item.owner}, "\n"); - } - - auto lower = expidx.lower_bound(100); - - print("First order with an expiration of at least 100 has ID=", lower->id, " and expiration=", lower->get_expiration(), "\n"); - - } - break; - case 1: // Test key265 secondary index - { - print("Testing key256 secondary index.\n"); - eosio::multi_index > - > testtable( N(multitest), N(exchange) ); // Code must be same as the receiver? Scope doesn't have to be. - - testtable.emplace( payer, [&]( auto& o ) { - o.id = 1; - o.val = key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 42ULL); - }); - - testtable.emplace( payer, [&]( auto& o ) { - o.id = 2; - o.val = key256::make_from_word_sequence(1ULL, 2ULL, 3ULL, 4ULL); - }); - - testtable.emplace( payer, [&]( auto& o ) { - o.id = 3; - o.val = key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 42ULL); - }); - - auto itr = testtable.find( 2 ); - - print("Items sorted by primary key:\n"); - for( const auto& item : testtable ) { - print(" ID=", item.primary_key(), ", val=", item.val, "\n"); - } - - auto validx = testtable.get_index(); - - auto lower1 = validx.lower_bound(key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 40ULL)); - print("First entry with a val of at least 40 has ID=", lower1->id, ".\n"); - - auto lower2 = validx.lower_bound(key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 50ULL)); - print("First entry with a val of at least 50 has ID=", lower2->id, ".\n"); - - if( testtable.iterator_to(*lower2) == itr ) { - print("Previously found entry is the same as the one found earlier with a primary key value of 2.\n"); - } - - print("Items sorted by val (secondary key):\n"); - for( const auto& item : validx ) { - print(" ID=", item.primary_key(), ", val=", item.val, "\n"); - } - - auto upper = validx.upper_bound(key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 42ULL)); - - print("First entry with a val greater than 42 has ID=", upper->id, ".\n"); - - print("Removed entry with ID=", lower1->id, ".\n"); - validx.erase( lower1 ); - - print("Items sorted by primary key:\n"); - for( const auto& item : testtable ) { - print(" ID=", item.primary_key(), ", val=", item.val, "\n"); - } - - } - break; - default: - eosio_assert(0, "Given what code is not supported."); - break; - } - } - }; - -} /// multi_index_test - -namespace multi_index_test { - extern "C" { - /// The apply method implements the dispatch of events to this contract - void apply( uint64_t /* receiver */, uint64_t code, uint64_t action ) { - require_auth(code); - eosio_assert(eosio::dispatch(code, action), - "Could not dispatch"); - } - } -} diff --git a/contracts/musl/CMakeLists.txt b/contracts/musl/CMakeLists.txt deleted file mode 100644 index d9794c311ed..00000000000 --- a/contracts/musl/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -file(GLOB CRYPT_SOURCES "upstream/src/crypt/*.c") -file(GLOB CTYPE_SOURCES "upstream/src/ctype/*.c") -file(GLOB ENV_SOURCES "upstream/src/env/*.c") -file(GLOB ERRNO_SOURCES "upstream/src/errno/*.c") -file(GLOB EXIT_SOURCES "upstream/src/exit/*.c") -file(GLOB LOCALE_SOURCES "upstream/src/locale/*.c") -file(GLOB MATH_SOURCES "upstream/src/math/*.c") -file(GLOB MBYTE_SOURCES "upstream/src/multibyte/*.c") -file(GLOB MISC_SOURCES "upstream/src/misc/*.c") -file(GLOB SEARCH_SOURCES "upstream/src/search/*.c") -file(GLOB STDIO_SOURCES "upstream/src/stdio/*.c") -file(GLOB STDLIB_SOURCES "upstream/src/stdlib/*.c") -file(GLOB STRING_SOURCES "upstream/src/string/*.c") -file(GLOB TIME_SOURCES "upstream/src/time/*.c") -file(GLOB THREAD_SOURCES "upstream/src/thread/*.c") #only for __lock __unlock -set(INTERNAL_SOURCES upstream/src/internal/floatscan.c upstream/src/internal/intscan.c upstream/src/internal/shgetc.c upstream/src/internal/libc.c) - -add_wast_library(TARGET libc - NOWARNINGS - SOURCE_FILES ${CRYPT_SOURCES} ${CTYPE_SOURCES} ${ENV_SOURCES} ${ERRNO_SOURCES} ${EXIT_SOURCES} ${INTERNAL_SOURCES} ${LOCALE_SOURCES} ${MATH_SOURCES} - ${MBYTE_SOURCES} ${MISC_SOURCES} ${SEARCH_SOURCES} ${STDIO_SOURCES} ${STDLIB_SOURCES} ${STRING_SOURCES} ${TIME_SOURCES} ${THREAD_SOURCES} - INCLUDE_FOLDERS ${CMAKE_SOURCE_DIR}/contracts/musl/upstream/include - ${CMAKE_SOURCE_DIR}/contracts/musl/upstream/src/internal - ${CMAKE_SOURCE_DIR}/contracts/musl/upstream/arch/eos - ${CMAKE_SOURCE_DIR}/contracts/ - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/musl/upstream b/contracts/musl/upstream deleted file mode 160000 index 8a34536ac97..00000000000 --- a/contracts/musl/upstream +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8a34536ac9764c90c86cc0b62d0cda07449fd5d8 diff --git a/contracts/noop/CMakeLists.txt b/contracts/noop/CMakeLists.txt deleted file mode 100644 index 6aadc90d01b..00000000000 --- a/contracts/noop/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) -add_wast_executable(TARGET noop - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - diff --git a/contracts/noop/noop.abi b/contracts/noop/noop.abi deleted file mode 100644 index 34f52bd1406..00000000000 --- a/contracts/noop/noop.abi +++ /dev/null @@ -1,27 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - } - ], - "structs": [{ - "name": "anyaction", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"}, - {"name":"type", "type":"string"}, - {"name":"data", "type":"string"} - ] - } - ], - "actions": [{ - "name":"anyaction", - "type":"anyaction", - "ricardian_contract": "" - } -], - "tables": [], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/noop/noop.cpp b/contracts/noop/noop.cpp deleted file mode 100644 index 6699eca57c9..00000000000 --- a/contracts/noop/noop.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ - -#include - -namespace eosio { - - class noop: public contract { - public: - noop( account_name self ): contract( self ) { } - void anyaction( account_name from, - const std::string& /*type*/, - const std::string& /*data*/ ) - { - require_auth( from ); - } - }; - - EOSIO_ABI( noop, ( anyaction ) ) - -} /// eosio diff --git a/contracts/payloadless/CMakeLists.txt b/contracts/payloadless/CMakeLists.txt deleted file mode 100644 index 16bad40cb27..00000000000 --- a/contracts/payloadless/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET payloadless - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc libc++ eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/payloadless/payloadless.abi b/contracts/payloadless/payloadless.abi deleted file mode 100644 index 1ea79c6f275..00000000000 --- a/contracts/payloadless/payloadless.abi +++ /dev/null @@ -1,59 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "____comment": "This file was generated by eosio-abigen. DO NOT EDIT - 2018-04-19T09:07:16", - "types": [], - "structs": [{ - "name": "doit", - "base": "", - "fields": [] - } - ], - "actions": [{ - "name": "doit", - "type": "doit", - "ricardian_contract": "# CONTRACT FOR payloadless::doit## ACTION NAME: doit\n### Parameters### Parameters\nInput paramters:Input paramters:\n\nImplied parameters: Implied parameters: \n\n### Intent### Intent\nINTENT. The intention of the author and the invoker of this contract is to print output. It shall have no other effect.INTENT. The intention of the author and the invoker of this contract is to print output. It shall have no other effect.\n\n### Term### Term\nTERM. This Contract expires at the conclusion of code execution.TERM. This Contract expires at the conclusion of code execution.\n" - } - ], - "tables": [], - "ricardian_clauses": [{ - "id": "Warranty", - "body": "WARRANTY. The invoker of the contract action shall uphold its Obligations under this Contract in a timely and workmanlike manner, using knowledge and recommendations for performing the services which meet generally acceptable standards set forth by EOS.IO Blockchain Block Producers.\n\n" - },{ - "id": "Default", - "body": "DEFAULT. The occurrence of any of the following shall constitute a material default under this Contract: \n\n" - },{ - "id": "Remedies", - "body": "REMEDIES. In addition to any and all other rights a party may have available according to law, if a party defaults by failing to substantially perform any provision, term or condition of this Contract, the other party may terminate the Contract by providing written notice to the defaulting party. This notice shall describe with sufficient detail the nature of the default. The party receiving such notice shall promptly be removed from being a Block Producer and this Contract shall be automatically terminated. \n \n" - },{ - "id": "Force Majeure", - "body": "FORCE MAJEURE. If performance of this Contract or any obligation under this Contract is prevented, restricted, or interfered with by causes beyond either party's reasonable control (\"Force Majeure\"), and if the party unable to carry out its obligations gives the other party prompt written notice of such event, then the obligations of the party invoking this provision shall be suspended to the extent necessary by such event. The term Force Majeure shall include, without limitation, acts of God, fire, explosion, vandalism, storm or other similar occurrence, orders or acts of military or civil authority, or by national emergencies, insurrections, riots, or wars, or strikes, lock-outs, work stoppages, or supplier failures. The excused party shall use reasonable efforts under the circumstances to avoid or remove such causes of non-performance and shall proceed to perform with reasonable dispatch whenever such causes are removed or ceased. An act or omission shall be deemed within the reasonable control of a party if committed, omitted, or caused by such party, or its employees, officers, agents, or affiliates. \n \n" - },{ - "id": "Dispute Resolution", - "body": "DISPUTE RESOLUTION. Any controversies or disputes arising out of or relating to this Contract will be resolved by binding arbitration under the default rules set forth by the EOS.IO Blockchain. The arbitrator's award will be final, and judgment may be entered upon it by any court having proper jurisdiction. \n \n" - },{ - "id": "Entire Agreement", - "body": "ENTIRE AGREEMENT. This Contract contains the entire agreement of the parties, and there are no other promises or conditions in any other agreement whether oral or written concerning the subject matter of this Contract. This Contract supersedes any prior written or oral agreements between the parties. \n\n" - },{ - "id": "Severability", - "body": "SEVERABILITY. If any provision of this Contract will be held to be invalid or unenforceable for any reason, the remaining provisions will continue to be valid and enforceable. If a court finds that any provision of this Contract is invalid or unenforceable, but that by limiting such provision it would become valid and enforceable, then such provision will be deemed to be written, construed, and enforced as so limited. \n\n" - },{ - "id": "Amendment", - "body": "AMENDMENT. This Contract may be modified or amended in writing by mutual agreement between the parties, if the writing is signed by the party obligated under the amendment. \n\n" - },{ - "id": "Governing Law", - "body": "GOVERNING LAW. This Contract shall be construed in accordance with the Maxims of Equity. \n\n" - },{ - "id": "Notice", - "body": "NOTICE. Any notice or communication required or permitted under this Contract shall be sufficiently given if delivered to a verifiable email address or to such other email address as one party may have publicly furnished in writing, or published on a broadcast contract provided by this blockchain for purposes of providing notices of this type. \n" - },{ - "id": "Waiver of Contractual Right", - "body": "WAIVER OF CONTRACTUAL RIGHT. The failure of either party to enforce any provision of this Contract shall not be construed as a waiver or limitation of that party's right to subsequently enforce and compel strict compliance with every provision of this Contract. \n\n" - },{ - "id": "Arbitrator's Fees to Prevailing Party", - "body": "ARBITRATOR'S FEES TO PREVAILING PARTY. In any action arising hereunder or any separate action pertaining to the validity of this Agreement, both sides shall pay half the initial cost of arbitration, and the prevailing party shall be awarded reasonable arbitrator's fees and costs.\n \n" - },{ - "id": "Construction and Interpretation", - "body": "CONSTRUCTION AND INTERPRETATION. The rule requiring construction or interpretation against the drafter is waived. The document shall be deemed as if it were drafted by both parties in a mutual effort. \n \n" - } - ] -} \ No newline at end of file diff --git a/contracts/payloadless/payloadless.cpp b/contracts/payloadless/payloadless.cpp deleted file mode 100644 index b67c7e23b3a..00000000000 --- a/contracts/payloadless/payloadless.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include -using namespace eosio; - -class payloadless : public eosio::contract { - public: - using contract::contract; - - void doit() { - print( "Im a payloadless action" ); - } -}; - -EOSIO_ABI( payloadless, (doit) ) diff --git a/contracts/payloadless/payloadless.doit_rc.md b/contracts/payloadless/payloadless.doit_rc.md deleted file mode 100644 index 4b365afbd03..00000000000 --- a/contracts/payloadless/payloadless.doit_rc.md +++ /dev/null @@ -1,14 +0,0 @@ -# CONTRACT FOR payloadless::doit - -## ACTION NAME: doit - -### Parameters -Input paramters: - -Implied parameters: - -### Intent -INTENT. The intention of the author and the invoker of this contract is to print output. It shall have no other effect. - -### Term -TERM. This Contract expires at the conclusion of code execution. diff --git a/contracts/payloadless/payloadless_rc.md b/contracts/payloadless/payloadless_rc.md deleted file mode 100644 index 4ca04401a20..00000000000 --- a/contracts/payloadless/payloadless_rc.md +++ /dev/null @@ -1,40 +0,0 @@ -### CLAUSE NAME: Warranty -WARRANTY. The invoker of the contract action shall uphold its Obligations under this Contract in a timely and workmanlike manner, using knowledge and recommendations for performing the services which meet generally acceptable standards set forth by EOS.IO Blockchain Block Producers. - -### CLAUSE NAME: Default -DEFAULT. The occurrence of any of the following shall constitute a material default under this Contract: - -### CLAUSE NAME: Remedies -REMEDIES. In addition to any and all other rights a party may have available according to law, if a party defaults by failing to substantially perform any provision, term or condition of this Contract, the other party may terminate the Contract by providing written notice to the defaulting party. This notice shall describe with sufficient detail the nature of the default. The party receiving such notice shall promptly be removed from being a Block Producer and this Contract shall be automatically terminated. - -### CLAUSE NAME: Force Majeure -FORCE MAJEURE. If performance of this Contract or any obligation under this Contract is prevented, restricted, or interfered with by causes beyond either party's reasonable control ("Force Majeure"), and if the party unable to carry out its obligations gives the other party prompt written notice of such event, then the obligations of the party invoking this provision shall be suspended to the extent necessary by such event. The term Force Majeure shall include, without limitation, acts of God, fire, explosion, vandalism, storm or other similar occurrence, orders or acts of military or civil authority, or by national emergencies, insurrections, riots, or wars, or strikes, lock-outs, work stoppages, or supplier failures. The excused party shall use reasonable efforts under the circumstances to avoid or remove such causes of non-performance and shall proceed to perform with reasonable dispatch whenever such causes are removed or ceased. An act or omission shall be deemed within the reasonable control of a party if committed, omitted, or caused by such party, or its employees, officers, agents, or affiliates. - -### CLAUSE NAME: Dispute Resolution -DISPUTE RESOLUTION. Any controversies or disputes arising out of or relating to this Contract will be resolved by binding arbitration under the default rules set forth by the EOS.IO Blockchain. The arbitrator's award will be final, and judgment may be entered upon it by any court having proper jurisdiction. - -### CLAUSE NAME: Entire Agreement -ENTIRE AGREEMENT. This Contract contains the entire agreement of the parties, and there are no other promises or conditions in any other agreement whether oral or written concerning the subject matter of this Contract. This Contract supersedes any prior written or oral agreements between the parties. - -### CLAUSE NAME: Severability -SEVERABILITY. If any provision of this Contract will be held to be invalid or unenforceable for any reason, the remaining provisions will continue to be valid and enforceable. If a court finds that any provision of this Contract is invalid or unenforceable, but that by limiting such provision it would become valid and enforceable, then such provision will be deemed to be written, construed, and enforced as so limited. - -### CLAUSE NAME: Amendment -AMENDMENT. This Contract may be modified or amended in writing by mutual agreement between the parties, if the writing is signed by the party obligated under the amendment. - -### CLAUSE NAME: Governing Law -GOVERNING LAW. This Contract shall be construed in accordance with the Maxims of Equity. - -### CLAUSE NAME: Notice -NOTICE. Any notice or communication required or permitted under this Contract shall be sufficiently given if delivered to a verifiable email address or to such other email address as one party may have publicly furnished in writing, or published on a broadcast contract provided by this blockchain for purposes of providing notices of this type. -### CLAUSE NAME: Waiver of Contractual Right -WAIVER OF CONTRACTUAL RIGHT. The failure of either party to enforce any provision of this Contract shall not be construed as a waiver or limitation of that party's right to subsequently enforce and compel strict compliance with every provision of this Contract. - -### CLAUSE NAME: Arbitrator's Fees to Prevailing Party -ARBITRATOR'S FEES TO PREVAILING PARTY. In any action arising hereunder or any separate action pertaining to the validity of this Agreement, both sides shall pay half the initial cost of arbitration, and the prevailing party shall be awarded reasonable arbitrator's fees and costs. - -### CLAUSE NAME: Construction and Interpretation -CONSTRUCTION AND INTERPRETATION. The rule requiring construction or interpretation against the drafter is waived. The document shall be deemed as if it were drafted by both parties in a mutual effort. - -### CLAUSE NAME: In Witness Whereof -IN WITNESS WHEREOF, the parties hereto have caused this Agreement to be executed by themselves or their duly authorized representatives as of the date of execution, and authorized as proven by the cryptographic signature on the transaction that invokes this contract. diff --git a/contracts/proxy/CMakeLists.txt b/contracts/proxy/CMakeLists.txt deleted file mode 100644 index ad554e4dd16..00000000000 --- a/contracts/proxy/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET proxy - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" ${Boost_INCLUDE_DIR} - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/proxy/proxy.abi b/contracts/proxy/proxy.abi deleted file mode 100644 index cb4ccc2fe74..00000000000 --- a/contracts/proxy/proxy.abi +++ /dev/null @@ -1,41 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - } - ], - "structs": [{ - "name": "config", - "base": "", - "fields": [ - { "name": "key", "type": "name" }, - { "name": "owner", "type": "name" }, - { "name": "next_id", "type": "uint32" } - ] - },{ - "name": "setowner", - "base": "", - "fields": [ - { "name": "owner", "type": "name" }, - { "name": "delay", "type": "uint32" } - ] - } - ], - "actions": [{ - "name": "setowner", - "type": "setowner", - "ricardian_contract": "" - } - ], - "tables": [{ - "name": "configs", - "type": "config", - "index_type": "i64", - "key_names" : ["key"], - "key_types" : ["name"] - } - ], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/proxy/proxy.cpp b/contracts/proxy/proxy.cpp deleted file mode 100644 index 3d243fd4e02..00000000000 --- a/contracts/proxy/proxy.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include -#include - -namespace proxy { - using namespace eosio; - - namespace configs { - - bool get(config &out, const account_name &self) { - auto it = db_find_i64(self, self, N(config), config::key); - if (it != -1) { - auto size = db_get_i64(it, (char*)&out, sizeof(config)); - eosio_assert(size == sizeof(config), "Wrong record size"); - return true; - } else { - return false; - } - } - - void store(const config &in, const account_name &self) { - auto it = db_find_i64(self, self, N(config), config::key); - if (it != -1) { - db_update_i64(it, self, (const char *)&in, sizeof(config)); - } else { - db_store_i64(self, N(config), self, config::key, (const char *)&in, sizeof(config)); - } - } - }; - - template - void apply_transfer(uint64_t receiver, account_name /* code */, const T& transfer) { - config code_config; - const auto self = receiver; - auto get_res = configs::get(code_config, self); - eosio_assert(get_res, "Attempting to use unconfigured proxy"); - if (transfer.from == self) { - eosio_assert(transfer.to == code_config.owner, "proxy may only pay its owner" ); - } else { - eosio_assert(transfer.to == self, "proxy is not involved in this transfer"); - T new_transfer = T(transfer); - new_transfer.from = self; - new_transfer.to = code_config.owner; - - auto id = code_config.next_id++; - configs::store(code_config, self); - - transaction out; - out.actions.emplace_back(permission_level{self, N(active)}, N(eosio.token), N(transfer), new_transfer); - out.delay_sec = code_config.delay; - out.send(id, self); - } - } - - void apply_setowner(uint64_t receiver, set_owner params) { - const auto self = receiver; - require_auth(params.owner); - config code_config; - configs::get(code_config, self); - code_config.owner = params.owner; - code_config.delay = params.delay; - eosio::print("Setting owner to: ", name{params.owner}, " with delay: ", params.delay, "\n"); - configs::store(code_config, self); - } - - template - void apply_onerror(uint64_t receiver, const onerror& error ) { - eosio::print("starting onerror\n"); - const auto self = receiver; - config code_config; - eosio_assert(configs::get(code_config, self), "Attempting use of unconfigured proxy"); - - auto id = code_config.next_id++; - configs::store(code_config, self); - - eosio::print("Resending Transaction: ", error.sender_id, " as ", id, "\n"); - transaction dtrx = error.unpack_sent_trx(); - dtrx.delay_sec = code_config.delay; - dtrx.send(id, self); - } -} - -using namespace proxy; -using namespace eosio; - -extern "C" { - - /// The apply method implements the dispatch of events to this contract - void apply( uint64_t receiver, uint64_t code, uint64_t action ) { - if( code == N(eosio) && action == N(onerror) ) { - apply_onerror( receiver, onerror::from_current_action() ); - } else if( code == N(eosio.token) ) { - if( action == N(transfer) ) { - apply_transfer(receiver, code, unpack_action_data()); - } - } else if( code == receiver ) { - if( action == N(setowner) ) { - apply_setowner(receiver, unpack_action_data()); - } - } - } -} diff --git a/contracts/proxy/proxy.hpp b/contracts/proxy/proxy.hpp deleted file mode 100644 index 924edd24b10..00000000000 --- a/contracts/proxy/proxy.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#pragma once - -#include - -namespace proxy { - - //@abi action - struct set_owner { - account_name owner; - uint32_t delay; - - EOSLIB_SERIALIZE( set_owner, (owner)(delay) ) - }; - - //@abi table - struct config { - config(){} - constexpr static uint64_t key = N(config); - account_name owner = 0; - uint32_t delay = 0; - uint32_t next_id = 0; - }; - -} /// namespace proxy diff --git a/contracts/skeleton/skeleton.cpp b/contracts/skeleton/skeleton.cpp deleted file mode 100644 index a4ad22e1f1b..00000000000 --- a/contracts/skeleton/skeleton.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include - -using namespace eosio; - -class hello : public eosio::contract { - public: - using contract::contract; - - /// @abi action - void hi( account_name user ) { - print( "Hello, ", name{user} ); - } -}; - -EOSIO_ABI( hello, (hi) ) diff --git a/contracts/skeleton/skeleton.hpp b/contracts/skeleton/skeleton.hpp deleted file mode 100644 index 2b621b6f2ed..00000000000 --- a/contracts/skeleton/skeleton.hpp +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include - - diff --git a/contracts/snapshot_test/CMakeLists.txt b/contracts/snapshot_test/CMakeLists.txt deleted file mode 100644 index 81af479e479..00000000000 --- a/contracts/snapshot_test/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) -add_wast_executable(TARGET snapshot_test - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - diff --git a/contracts/snapshot_test/snapshot_test.abi b/contracts/snapshot_test/snapshot_test.abi deleted file mode 100644 index 0bddc7293ce..00000000000 --- a/contracts/snapshot_test/snapshot_test.abi +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [], - "structs": [{ - "name": "increment", - "base": "", - "fields": [ - {"name": "value", "type": "uint32" } - ] - } - ], - "actions": [{ - "name": "increment", - "type": "increment", - "ricaridian_contract": "" - } - ], - "tables": [], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/snapshot_test/snapshot_test.cpp b/contracts/snapshot_test/snapshot_test.cpp deleted file mode 100644 index 0ef6939f07e..00000000000 --- a/contracts/snapshot_test/snapshot_test.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include - -using namespace eosio; - -namespace snapshot_test { - - struct main_record { - uint64_t id; - double index_f64 = 0.0; - long double index_f128 = 0.0L; - uint64_t index_i64 = 0ULL; - uint128_t index_i128 = 0ULL; - key256 index_i256 = key256(); - - auto primary_key() const { return id; } - - auto get_index_f64 () const { return index_f64 ; } - auto get_index_f128 () const { return index_f128; } - auto get_index_i64 () const { return index_i64 ; } - auto get_index_i128 () const { return index_i128; } - const key256& get_index_i256 () const { return index_i256; } - - EOSLIB_SERIALIZE( main_record, (id)(index_f64)(index_f128)(index_i64)(index_i128)(index_i256) ) - }; - - struct increment { - increment(): value(0) {} - increment(uint32_t v): value(v) {} - - uint32_t value; - - EOSLIB_SERIALIZE(increment, (value)) - }; - - using multi_index_type = eosio::multi_index>, - indexed_by< N(byff), const_mem_fun>, - indexed_by< N(byi ), const_mem_fun>, - indexed_by< N(byii), const_mem_fun>, - indexed_by< N(byiiii), const_mem_fun> - >; - - static void exec( uint64_t self, uint32_t value ) { - multi_index_type data(self, self); - auto current = data.begin( ); - if( current == data.end() ) { - data.emplace( self, [&]( auto& r ) { - r.id = value; - r.index_f64 = value; - r.index_f128 = value; - r.index_i64 = value; - r.index_i128 = value; - r.index_i256.data()[0] = value; - }); - - } else { - data.modify( current, self, [&]( auto& r ) { - r.index_f64 += value; - r.index_f128 += value; - r.index_i64 += value; - r.index_i128 += value; - r.index_i256.data()[0] += value; - }); - } - } - -} /// multi_index_test - -namespace multi_index_test { - extern "C" { - /// The apply method implements the dispatch of events to this contract - void apply( uint64_t self, uint64_t code, uint64_t action ) { - require_auth(code); - eosio_assert(action == N(increment), "unsupported action"); - snapshot_test::exec(self, unpack_action_data().value); - } - } -} diff --git a/contracts/stltest/CMakeLists.txt b/contracts/stltest/CMakeLists.txt deleted file mode 100644 index 81d615ebbf2..00000000000 --- a/contracts/stltest/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -#file(GLOB ABI_FILES "*.abi") -set(ABI_FILES "stltest.abi") -add_wast_executable(TARGET stltest - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) - -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) diff --git a/contracts/stltest/stltest.abi b/contracts/stltest/stltest.abi deleted file mode 100644 index c341713d412..00000000000 --- a/contracts/stltest/stltest.abi +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "my_account_name", - "type": "name" - } - ], - "structs": [{ - "name": "message", - "base": "", - "fields": [ - {"name":"from", "type":"my_account_name"}, - {"name":"to", "type":"my_account_name"}, - {"name": "message", "type":"string" } - ] - },{ - "name": "messages_count", - "base": "", - "fields": [ - {"name": "user", "type": "my_account_name"}, - {"name": "count", "type": "uint32"} - ] - } - ], - "actions": [{ - "name": "message", - "type": "message", - "ricardian_contract": "" - } - ], - "tables": [{ - "name": "msgsent", - "type": "messages_count", - "index_type": "i64", - "key_names" : ["user"], - "key_types" : ["my_account_name"] - },{ - "name": "msgreceived", - "type": "messages_count", - "index_type": "i64", - "key_names" : ["user"], - "key_types" : ["my_account_name"] - } - ], - "ricardian_clauses": [], - "abi_extensions": [] -} diff --git a/contracts/stltest/stltest.cpp b/contracts/stltest/stltest.cpp deleted file mode 100644 index baf975ff703..00000000000 --- a/contracts/stltest/stltest.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -// include entire libc -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//include entire libstdc++ -#include -#include -#include -#include -#include -//include -#include -#include -//include -#include -//include -#include -#include -#include -#include -#include -#include -//include -#include -//include -//include -#include -#include -#include -#include -#include -#include -#include -//include -#include -#include -#include -#include -#include -#include -//include -#include -//include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//include -#include -#include -#include -#include -//include -#include -#include -#include -#include -#include -#include -#include -#include -//include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -/* -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -*/ -//include -#include - -using namespace eosio; -/* -namespace std { - extern ios_base __start_std_streams; -} -*/ -namespace stltest { - - struct MSTR { - MSTR() : x(7891) { - prints("ATTENTION! S::S() called\n"); - } - int x; - ~MSTR() { - prints("~MSTR"); - } - }; - - class contract { - public: - static const uint64_t sent_table_name = N(sent); - static const uint64_t received_table_name = N(received); - - struct message { - account_name from; - account_name to; - //string msg; - - static uint64_t get_account() { return N(stltest); } - static uint64_t get_name() { return N(message); } - - template - friend DataStream& operator << ( DataStream& ds, const message& m ){ - return ds << m.from << m.to;// << m.msg; - } - template - friend DataStream& operator >> ( DataStream& ds, message& m ){ - return ds >> m.from >> m.to;// >> m.msg; - } - }; - - static void f(const char* __restrict, ...) { - prints("f() called\n"); - } - - static void on( const message& ) { - /* manual initialization of global variable - new(&std::__start_std_streams)std::ios_base::Init; - */ - /* - std::ostringstream osm; - osm << "abcdef"; - std::string s = osm.str(); - prints_l(s.data(), s.size()); - */ - /* - prints("STD string: "); prints(s.c_str()); - prints("\nEOS string: "); prints_l(s2.get_data(), s2.get_size()); - */ - prints("STL test start\n"); - /* doesn't work with WASM::serializeWithInjection - printf("stdout output\n", 0); - fprintf(stderr, "stderr output\n", 0); - */ - void* ptr = malloc(10); - free(ptr); - f("abc", 10, 20); - - //auto mptr = new MSTR(); - //delete mptr; - - std::array arr; - arr.fill(3); - arr[0] = 0; - - std::vector v; - v.push_back(0); - - std::stack stack; - stack.push('J'); - stack.pop(); - - std::queue q; - q.push(0); - - std::deque dq; - dq.push_front(0.0f); - - std::list l; - l.push_back(0); - - std::string s = "abcdef"; - s.append(1, 'g'); - - std::map m; - m.emplace(0, 1); - m.lower_bound(2); - - std::set st; - st.insert(0); - st.erase(st.begin()); - st.count(0); - - //std::unordered_map hm; - //hm[0] = "abc"; - //std::unordered_set hs; - //hs.insert(0); - - sort(dq.begin(), dq.end()); - find_if(l.begin(), l.end(), [](uint32_t f) { return f < 10; }); - prints("STL test done.\n"); - //std::cout << "STL test done." << std::endl; - } - - static void apply( account_name c, action_name act) { - eosio::dispatch(c,act); - } - }; - -} /// namespace eosio - - -extern "C" { -/// The apply method implements the dispatch of events to this contract -void apply( uint64_t receiver, uint64_t code, uint64_t action ) { - (void)receiver; - stltest::contract::apply( code, action ); -} -} diff --git a/contracts/test.inline/CMakeLists.txt b/contracts/test.inline/CMakeLists.txt deleted file mode 100644 index 9b7d8dcb425..00000000000 --- a/contracts/test.inline/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET test.inline - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/test.inline/test.inline.abi b/contracts/test.inline/test.inline.abi deleted file mode 100644 index 614cfab2474..00000000000 --- a/contracts/test.inline/test.inline.abi +++ /dev/null @@ -1,29 +0,0 @@ -{ - "types": [], - "structs": [ - { - "name": "forward", - "base": "", - "fields": [ - {"name":"reqauth", "type":"account_name"}, - {"name":"forward_code", "type":"account_name"}, - {"name":"forward_auth", "type":"account_name"} - ] - }, - { - "name": "reqauth", - "base": "", - "fields": [ - {"name":"from", "type":"account_name"} - ] - }], - "actions": [{ - "name": "reqauth", - "type": "reqauth" - },{ - "name": "forward", - "type": "forward" - } - ], - "tables": [] -} diff --git a/contracts/test.inline/test.inline.cpp b/contracts/test.inline/test.inline.cpp deleted file mode 100644 index eb6c5ed18c6..00000000000 --- a/contracts/test.inline/test.inline.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include - -EOSIO_ABI( eosio::testinline, (reqauth)(forward) ) diff --git a/contracts/test.inline/test.inline.hpp b/contracts/test.inline/test.inline.hpp deleted file mode 100644 index 96788107914..00000000000 --- a/contracts/test.inline/test.inline.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include -#include - -namespace eosio { - - class testinline : public contract { - public: - testinline( action_name self ):contract(self){} - - void reqauth( account_name from ) { - require_auth( from ); - } - - void forward( action_name reqauth, account_name forward_code, account_name forward_auth ) { - require_auth( reqauth ); - INLINE_ACTION_SENDER(testinline, reqauth)( forward_code, {forward_auth,N(active)}, {forward_auth} ); - //SEND_INLINE_ACTION( testinline(forward_code), reqauth, {forward_auth,N(active)}, {forward_auth} ); - //eosio::dispatch_inline( N(forward_code), N(reqauth), {{forward_auth, N(active)}}, {forward_auth} ); - } - }; - -} /// namespace eosio diff --git a/contracts/test_api/CMakeLists.txt b/contracts/test_api/CMakeLists.txt deleted file mode 100644 index 1751c9300aa..00000000000 --- a/contracts/test_api/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -#set the MAX_MEMORY to 1MB for these tests; there were lots of memory unit tests that assume such - -add_wast_executable(TARGET test_api - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/test_api/test_action.cpp b/contracts/test_api/test_action.cpp deleted file mode 100644 index 20eacaa1bd8..00000000000 --- a/contracts/test_api/test_action.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/** - * @file action_test.cpp - * @copyright defined in eos/LICENSE - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "test_api.hpp" - -void test_action::read_action_normal() { - - char buffer[100]; - uint32_t total = 0; - - eosio_assert(action_data_size() == sizeof(dummy_action), "action_size() == sizeof(dummy_action)"); - - total = read_action_data(buffer, 30); - eosio_assert(total == sizeof(dummy_action) , "read_action(30)" ); - - total = read_action_data(buffer, 100); - eosio_assert(total == sizeof(dummy_action) , "read_action(100)" ); - - total = read_action_data(buffer, 5); - eosio_assert(total == 5 , "read_action(5)" ); - - total = read_action_data(buffer, sizeof(dummy_action) ); - eosio_assert(total == sizeof(dummy_action), "read_action(sizeof(dummy_action))" ); - - dummy_action *dummy13 = reinterpret_cast(buffer); - - eosio_assert(dummy13->a == DUMMY_ACTION_DEFAULT_A, "dummy13->a == DUMMY_ACTION_DEFAULT_A"); - eosio_assert(dummy13->b == DUMMY_ACTION_DEFAULT_B, "dummy13->b == DUMMY_ACTION_DEFAULT_B"); - eosio_assert(dummy13->c == DUMMY_ACTION_DEFAULT_C, "dummy13->c == DUMMY_ACTION_DEFAULT_C"); -} - -void test_action::test_dummy_action() { - char buffer[100]; - int total = 0; - - // get_action - total = get_action( 1, 0, buffer, 0 ); - total = get_action( 1, 0, buffer, static_cast(total) ); - eosio_assert( total > 0, "get_action failed" ); - eosio::action act = eosio::get_action( 1, 0 ); - eosio_assert( act.authorization.back().actor == N(testapi), "incorrect permission actor" ); - eosio_assert( act.authorization.back().permission == N(active), "incorrect permission name" ); - eosio_assert( eosio::pack_size(act) == static_cast(total), "pack_size does not match get_action size" ); - eosio_assert( act.account == N(testapi), "expected testapi account" ); - - dummy_action dum13 = act.data_as(); - - if ( dum13.b == 200 ) { - // attempt to access context free only api - get_context_free_data( 0, nullptr, 0 ); - eosio_assert(false, "get_context_free_data() not allowed in non-context free action"); - } else { - eosio_assert(dum13.a == DUMMY_ACTION_DEFAULT_A, "dum13.a == DUMMY_ACTION_DEFAULT_A"); - eosio_assert(dum13.b == DUMMY_ACTION_DEFAULT_B, "dum13.b == DUMMY_ACTION_DEFAULT_B"); - eosio_assert(dum13.c == DUMMY_ACTION_DEFAULT_C, "dum13.c == DUMMY_ACTION_DEFAULT_C"); - } -} - -void test_action::read_action_to_0() { - read_action_data((void *)0, action_data_size()); -} - -void test_action::read_action_to_64k() { - read_action_data( (void *)((1<<16)-2), action_data_size()); -} - -void test_action::test_cf_action() { - - eosio::action act = eosio::get_action( 0, 0 ); - cf_action cfa = act.data_as(); - if ( cfa.payload == 100 ) { - // verify read of get_context_free_data, also verifies system api access - int size = get_context_free_data( cfa.cfd_idx, nullptr, 0 ); - eosio_assert( size > 0, "size determination failed" ); - eosio::bytes cfd( static_cast(size) ); - size = get_context_free_data( cfa.cfd_idx, &cfd[0], static_cast(size) ); - eosio_assert(static_cast(size) == cfd.size(), "get_context_free_data failed" ); - uint32_t v = eosio::unpack( &cfd[0], cfd.size() ); - eosio_assert( v == cfa.payload, "invalid value" ); - - // verify crypto api access - checksum256 hash; - char test[] = "test"; - sha256( test, sizeof(test), &hash ); - assert_sha256( test, sizeof(test), &hash ); - // verify action api access - action_data_size(); - // verify console api access - eosio::print("test\n"); - // verify memory api access - uint32_t i = 42; - memccpy(&v, &i, sizeof(i), sizeof(i)); - // verify transaction api access - eosio_assert(transaction_size() > 0, "transaction_size failed"); - // verify softfloat api access - float f1 = 1.0f, f2 = 2.0f; - float f3 = f1 + f2; - eosio_assert( f3 > 2.0f, "Unable to add float."); - // verify compiler builtin api access - __int128 ret; - __divti3(ret, 2, 2, 2, 2); - // verify context_free_system_api - eosio_assert( true, "verify eosio_assert can be called" ); - - - } else if ( cfa.payload == 200 ) { - // attempt to access non context free api, privileged_api - is_privileged(act.name); - eosio_assert( false, "privileged_api should not be allowed" ); - } else if ( cfa.payload == 201 ) { - // attempt to access non context free api, producer_api - get_active_producers( nullptr, 0 ); - eosio_assert( false, "producer_api should not be allowed" ); - } else if ( cfa.payload == 202 ) { - // attempt to access non context free api, db_api - db_store_i64( N(testapi), N(testapi), N(testapi), 0, "test", 4 ); - eosio_assert( false, "db_api should not be allowed" ); - } else if ( cfa.payload == 203 ) { - // attempt to access non context free api, db_api - uint64_t i = 0; - db_idx64_store( N(testapi), N(testapi), N(testapi), 0, &i ); - eosio_assert( false, "db_api should not be allowed" ); - } else if ( cfa.payload == 204 ) { - db_find_i64( N(testapi), N(testapi), N(testapi), 1); - eosio_assert( false, "db_api should not be allowed" ); - } else if ( cfa.payload == 205 ) { - // attempt to access non context free api, send action - eosio::action dum_act; - dum_act.send(); - eosio_assert( false, "action send should not be allowed" ); - } else if ( cfa.payload == 206 ) { - eosio::require_auth(N(test)); - eosio_assert( false, "authorization_api should not be allowed" ); - } else if ( cfa.payload == 207 ) { - now(); - eosio_assert( false, "system_api should not be allowed" ); - } else if ( cfa.payload == 208 ) { - current_time(); - eosio_assert( false, "system_api should not be allowed" ); - } else if ( cfa.payload == 209 ) { - publication_time(); - eosio_assert( false, "system_api should not be allowed" ); - } else if ( cfa.payload == 210 ) { - send_inline( (char*)"hello", 6 ); - eosio_assert( false, "transaction_api should not be allowed" ); - } else if ( cfa.payload == 211 ) { - send_deferred( N(testapi), N(testapi), "hello", 6 ); - eosio_assert( false, "transaction_api should not be allowed" ); - } - -} - -void test_action::require_notice(uint64_t receiver, uint64_t code, uint64_t action) { - (void)code;(void)action; - if( receiver == N(testapi) ) { - eosio::require_recipient( N(acc1) ); - eosio::require_recipient( N(acc2) ); - eosio::require_recipient( N(acc1), N(acc2) ); - eosio_assert(false, "Should've failed"); - } else if ( receiver == N(acc1) || receiver == N(acc2) ) { - return; - } - eosio_assert(false, "Should've failed"); -} - -void test_action::require_notice_tests(uint64_t receiver, uint64_t code, uint64_t action) { - eosio::print( "require_notice_tests" ); - if( receiver == N( testapi ) ) { - eosio::print( "require_recipient( N(acc5) )" ); - eosio::require_recipient( N( acc5 ) ); - } else if( receiver == N( acc5 ) ) { - eosio::print( "require_recipient( N(testapi) )" ); - eosio::require_recipient( N( testapi ) ); - } -} - -void test_action::require_auth() { - prints("require_auth"); - eosio::require_auth( N(acc3) ); - eosio::require_auth( N(acc4) ); -} - -void test_action::assert_false() { - eosio_assert(false, "test_action::assert_false"); -} - -void test_action::assert_true() { - eosio_assert(true, "test_action::assert_true"); -} - -void test_action::assert_true_cf() { - eosio_assert(true, "test_action::assert_true"); -} - -void test_action::test_abort() { - abort(); - eosio_assert( false, "should've aborted" ); -} - -void test_action::test_publication_time() { - uint64_t pub_time = 0; - uint32_t total = read_action_data(&pub_time, sizeof(uint64_t)); - eosio_assert( total == sizeof(uint64_t), "total == sizeof(uint64_t)"); - eosio_assert( pub_time == publication_time(), "pub_time == publication_time()" ); -} - -void test_action::test_current_receiver(uint64_t receiver, uint64_t code, uint64_t action) { - (void)code;(void)action; - account_name cur_rec; - read_action_data(&cur_rec, sizeof(account_name)); - - eosio_assert( receiver == cur_rec, "the current receiver does not match" ); -} - -void test_action::test_current_time() { - uint64_t tmp = 0; - uint32_t total = read_action_data(&tmp, sizeof(uint64_t)); - eosio_assert( total == sizeof(uint64_t), "total == sizeof(uint64_t)"); - eosio_assert( tmp == current_time(), "tmp == current_time()" ); -} - -void test_action::test_assert_code() { - uint64_t code = 0; - uint32_t total = read_action_data(&code, sizeof(uint64_t)); - eosio_assert( total == sizeof(uint64_t), "total == sizeof(uint64_t)"); - eosio_assert_code( false, code ); -} - -void test_action::test_ram_billing_in_notify(uint64_t receiver, uint64_t code, uint64_t action) { - uint128_t tmp = 0; - uint32_t total = read_action_data(&tmp, sizeof(uint128_t)); - eosio_assert( total == sizeof(uint128_t), "total == sizeof(uint128_t)"); - - uint64_t to_notify = tmp >> 64; - uint64_t payer = tmp & 0xFFFFFFFFFFFFFFFFULL; - - if( code == receiver ) { - eosio::require_recipient( to_notify ); - } else { - eosio_assert( to_notify == receiver, "notified recipient other than the one specified in to_notify" ); - - // Remove main table row if it already exists. - int itr = db_find_i64( receiver, N(notifytest), N(notifytest), N(notifytest) ); - if( itr >= 0 ) - db_remove_i64( itr ); - - // Create the main table row simply for the purpose of charging code more RAM. - if( payer != 0 ) - db_store_i64(N(notifytest), N(notifytest), payer, N(notifytest), &to_notify, sizeof(to_notify) ); - } - -} diff --git a/contracts/test_api/test_api.cpp b/contracts/test_api/test_api.cpp deleted file mode 100644 index ce7b44d6c9f..00000000000 --- a/contracts/test_api/test_api.cpp +++ /dev/null @@ -1,189 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include - -#include "test_api.hpp" -#include "test_action.cpp" -#include "test_print.cpp" -#include "test_types.cpp" -#include "test_fixedpoint.cpp" -#include "test_compiler_builtins.cpp" -#include "test_crypto.cpp" -#include "test_chain.cpp" -#include "test_transaction.cpp" -#include "test_checktime.cpp" -#include "test_permission.cpp" -#include "test_datastream.cpp" - -account_name global_receiver; - -extern "C" { - void apply( uint64_t receiver, uint64_t code, uint64_t action ) { - if( code == N(eosio) && action == N(onerror) ) { - auto error = eosio::onerror::from_current_action(); - eosio::print("onerror called\n"); - auto error_trx = error.unpack_sent_trx(); - auto error_action = error_trx.actions.at(0).name; - - // Error handlers for deferred transactions in these tests currently only support the first action - - WASM_TEST_ERROR_HANDLER("test_action", "assert_false", test_transaction, assert_false_error_handler ); - - - return; - } - - if ( action == N(cf_action) ) { - test_action::test_cf_action(); - return; - } - WASM_TEST_HANDLER(test_action, assert_true_cf); - - if (action != WASM_TEST_ACTION("test_transaction", "stateful_api") && action != WASM_TEST_ACTION("test_transaction", "context_free_api")) - require_auth(code); - - //test_types - WASM_TEST_HANDLER(test_types, types_size); - WASM_TEST_HANDLER(test_types, char_to_symbol); - WASM_TEST_HANDLER(test_types, string_to_name); - WASM_TEST_HANDLER(test_types, name_class); - - //test_compiler_builtins - WASM_TEST_HANDLER(test_compiler_builtins, test_multi3); - WASM_TEST_HANDLER(test_compiler_builtins, test_divti3); - WASM_TEST_HANDLER(test_compiler_builtins, test_divti3_by_0); - WASM_TEST_HANDLER(test_compiler_builtins, test_udivti3); - WASM_TEST_HANDLER(test_compiler_builtins, test_udivti3_by_0); - WASM_TEST_HANDLER(test_compiler_builtins, test_modti3); - WASM_TEST_HANDLER(test_compiler_builtins, test_modti3_by_0); - WASM_TEST_HANDLER(test_compiler_builtins, test_umodti3); - WASM_TEST_HANDLER(test_compiler_builtins, test_umodti3_by_0); - WASM_TEST_HANDLER(test_compiler_builtins, test_lshlti3); - WASM_TEST_HANDLER(test_compiler_builtins, test_lshrti3); - WASM_TEST_HANDLER(test_compiler_builtins, test_ashlti3); - WASM_TEST_HANDLER(test_compiler_builtins, test_ashrti3); - - //test_action - WASM_TEST_HANDLER(test_action, read_action_normal); - WASM_TEST_HANDLER(test_action, read_action_to_0); - WASM_TEST_HANDLER(test_action, read_action_to_64k); - WASM_TEST_HANDLER_EX(test_action, require_notice); - WASM_TEST_HANDLER_EX(test_action, require_notice_tests); - WASM_TEST_HANDLER(test_action, require_auth); - WASM_TEST_HANDLER(test_action, assert_false); - WASM_TEST_HANDLER(test_action, assert_true); - WASM_TEST_HANDLER(test_action, test_current_time); - WASM_TEST_HANDLER(test_action, test_abort); - WASM_TEST_HANDLER_EX(test_action, test_current_receiver); - WASM_TEST_HANDLER(test_action, test_publication_time); - WASM_TEST_HANDLER(test_action, test_assert_code); - WASM_TEST_HANDLER_EX(test_action, test_ram_billing_in_notify); - - // test named actions - // We enforce action name matches action data type name, so name mangling will not work for these tests. - if ( action == N(dummy_action) ) { - test_action::test_dummy_action(); - return; - } - //test_print - WASM_TEST_HANDLER(test_print, test_prints); - WASM_TEST_HANDLER(test_print, test_prints_l); - WASM_TEST_HANDLER(test_print, test_printi); - WASM_TEST_HANDLER(test_print, test_printui); - WASM_TEST_HANDLER(test_print, test_printi128); - WASM_TEST_HANDLER(test_print, test_printui128); - WASM_TEST_HANDLER(test_print, test_printn); - WASM_TEST_HANDLER(test_print, test_printsf); - WASM_TEST_HANDLER(test_print, test_printdf); - WASM_TEST_HANDLER(test_print, test_printqf); - - //test crypto - WASM_TEST_HANDLER(test_crypto, test_recover_key); - WASM_TEST_HANDLER(test_crypto, test_recover_key_assert_true); - WASM_TEST_HANDLER(test_crypto, test_recover_key_assert_false); - WASM_TEST_HANDLER(test_crypto, test_sha1); - WASM_TEST_HANDLER(test_crypto, test_sha256); - WASM_TEST_HANDLER(test_crypto, test_sha512); - WASM_TEST_HANDLER(test_crypto, test_ripemd160); - WASM_TEST_HANDLER(test_crypto, sha1_no_data); - WASM_TEST_HANDLER(test_crypto, sha256_no_data); - WASM_TEST_HANDLER(test_crypto, sha512_no_data); - WASM_TEST_HANDLER(test_crypto, ripemd160_no_data); - WASM_TEST_HANDLER(test_crypto, sha256_null); - WASM_TEST_HANDLER(test_crypto, assert_sha256_false); - WASM_TEST_HANDLER(test_crypto, assert_sha256_true); - WASM_TEST_HANDLER(test_crypto, assert_sha1_false); - WASM_TEST_HANDLER(test_crypto, assert_sha1_true); - WASM_TEST_HANDLER(test_crypto, assert_sha512_false); - WASM_TEST_HANDLER(test_crypto, assert_sha512_true); - WASM_TEST_HANDLER(test_crypto, assert_ripemd160_false); - WASM_TEST_HANDLER(test_crypto, assert_ripemd160_true); - - //test transaction - WASM_TEST_HANDLER(test_transaction, test_tapos_block_num); - WASM_TEST_HANDLER(test_transaction, test_tapos_block_prefix); - WASM_TEST_HANDLER(test_transaction, send_action); - WASM_TEST_HANDLER(test_transaction, send_action_inline_fail); - WASM_TEST_HANDLER(test_transaction, send_action_empty); - WASM_TEST_HANDLER(test_transaction, send_action_large); - WASM_TEST_HANDLER(test_transaction, send_action_recurse); - WASM_TEST_HANDLER(test_transaction, test_read_transaction); - WASM_TEST_HANDLER(test_transaction, test_transaction_size); - WASM_TEST_HANDLER_EX(test_transaction, send_transaction); - WASM_TEST_HANDLER_EX(test_transaction, send_transaction_empty); - WASM_TEST_HANDLER_EX(test_transaction, send_transaction_trigger_error_handler); - WASM_TEST_HANDLER_EX(test_transaction, send_transaction_large); - WASM_TEST_HANDLER_EX(test_transaction, send_action_sender); - WASM_TEST_HANDLER(test_transaction, deferred_print); - WASM_TEST_HANDLER_EX(test_transaction, send_deferred_transaction); - WASM_TEST_HANDLER_EX(test_transaction, send_deferred_transaction_replace); - WASM_TEST_HANDLER(test_transaction, send_deferred_tx_with_dtt_action); - WASM_TEST_HANDLER(test_transaction, cancel_deferred_transaction_success); - WASM_TEST_HANDLER(test_transaction, cancel_deferred_transaction_not_found); - WASM_TEST_HANDLER(test_transaction, send_cf_action); - WASM_TEST_HANDLER(test_transaction, send_cf_action_fail); - WASM_TEST_HANDLER(test_transaction, stateful_api); - WASM_TEST_HANDLER(test_transaction, context_free_api); - WASM_TEST_HANDLER(test_transaction, new_feature); - WASM_TEST_HANDLER(test_transaction, active_new_feature); - WASM_TEST_HANDLER_EX(test_transaction, repeat_deferred_transaction); - - //test chain - WASM_TEST_HANDLER(test_chain, test_activeprods); - - // test fixed_point - WASM_TEST_HANDLER(test_fixedpoint, create_instances); - WASM_TEST_HANDLER(test_fixedpoint, test_addition); - WASM_TEST_HANDLER(test_fixedpoint, test_subtraction); - WASM_TEST_HANDLER(test_fixedpoint, test_multiplication); - WASM_TEST_HANDLER(test_fixedpoint, test_division); - WASM_TEST_HANDLER(test_fixedpoint, test_division_by_0); - - // test checktime - WASM_TEST_HANDLER(test_checktime, checktime_pass); - WASM_TEST_HANDLER(test_checktime, checktime_failure); - WASM_TEST_HANDLER(test_checktime, checktime_sha1_failure); - WASM_TEST_HANDLER(test_checktime, checktime_assert_sha1_failure); - WASM_TEST_HANDLER(test_checktime, checktime_sha256_failure); - WASM_TEST_HANDLER(test_checktime, checktime_assert_sha256_failure); - WASM_TEST_HANDLER(test_checktime, checktime_sha512_failure); - WASM_TEST_HANDLER(test_checktime, checktime_assert_sha512_failure); - WASM_TEST_HANDLER(test_checktime, checktime_ripemd160_failure); - WASM_TEST_HANDLER(test_checktime, checktime_assert_ripemd160_failure); - - // test datastream - WASM_TEST_HANDLER(test_datastream, test_basic); - - // test permission - WASM_TEST_HANDLER_EX(test_permission, check_authorization); - WASM_TEST_HANDLER_EX(test_permission, test_permission_last_used); - WASM_TEST_HANDLER_EX(test_permission, test_account_creation_time); - - //unhandled test call - eosio_assert(false, "Unknown Test"); - - } -} diff --git a/contracts/test_api/test_chain.cpp b/contracts/test_api/test_chain.cpp deleted file mode 100644 index 22f4ca4f914..00000000000 --- a/contracts/test_api/test_chain.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include -#include -#include "test_api.hpp" - -#pragma pack(push, 1) -struct producers { - char len; - account_name producers[21]; -}; -#pragma pack(pop) - -void test_chain::test_activeprods() { - producers act_prods; - read_action_data(&act_prods, sizeof(producers)); - - eosio_assert(act_prods.len == 21, "producers.len != 21"); - - producers api_prods; - get_active_producers(api_prods.producers, sizeof(account_name)*21); - - for( int i = 0; i < 21 ; ++i ) - eosio_assert(api_prods.producers[i] == act_prods.producers[i], "Active producer"); -} diff --git a/contracts/test_api/test_compiler_builtins.cpp b/contracts/test_api/test_compiler_builtins.cpp deleted file mode 100644 index a7571b0a2ce..00000000000 --- a/contracts/test_api/test_compiler_builtins.cpp +++ /dev/null @@ -1,396 +0,0 @@ -/** - * @file test_compiler_builtins.cpp - * @copyright defined in eos/LICENSE - */ - -#include -#include -#include - -#include "test_api.hpp" - -unsigned __int128 operator "" _ULLL( const char* lit ) { - __int128 ret = 0; - size_t i = 0; - bool sign = false; - - if (lit[i] == '-') { - ++i; - sign = true; - } - - if (lit[i] == '+') - ++i; - - for (; lit[i] != '\0' ; ++i) { - const char c = lit[i]; - ret *= 10; - ret += c - '0'; - } - - if (sign) - ret *= -1; - - return (unsigned __int128)ret; -} - -__int128 operator "" _LLL( const char* lit ) { - __int128 ret = 0; - size_t i = 0; - bool sign = false; - - if (lit[i] == '-') { - ++i; - sign = true; - } - - if (lit[i] == '+') - ++i; - - for (; lit[i] != '\0' ; ++i) { - const char c = lit[i]; - ret *= 10; - ret += c - '0'; - } - - if (sign) - ret *= -1; - - return ret; -} - -void test_compiler_builtins::test_multi3() { - /* - * tests for negative values - */ - __int128 res = 0; - __int128 lhs_a = -30; - __int128 rhs_a = 100; - __int128 lhs_b = 100; - __int128 rhs_b = -30; - - __multi3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == -3000, "__multi3 result should be -3000" ); - - __multi3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_b), uint64_t( rhs_b >> 64 ) ); - eosio_assert( res == -3000, "__multi3 result should be -3000" ); - - __multi3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), uint64_t(rhs_b), uint64_t( rhs_b >> 64 ) ); - eosio_assert( res == 900, "__multi3 result should be 900" ); - - /* - * test for positive values - */ - __multi3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == 10000, "__multi3 result should be 10000" ); - - /* - * test identity - */ - __multi3( res, 1, 0, uint64_t(rhs_a), uint64_t(rhs_a >> 64) ); - eosio_assert( res == 100, "__multi3 result should be 100" ); - - __multi3( res, 1, 0, uint64_t(rhs_b), uint64_t(rhs_b >> 64) ); - eosio_assert( res == -30, "__multi3 result should be -30" ); -} - -void test_compiler_builtins::test_divti3() { - /* - * test for negative values - */ - __int128 res = 0; - __int128 lhs_a = -30; - __int128 rhs_a = 100; - __int128 lhs_b = 100; - __int128 rhs_b = -30; - - __divti3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == 0, "__divti3 result should be 0" ); - - __divti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_b), uint64_t( rhs_b >> 64 ) ); - eosio_assert( res == -3, "__divti3 result should be -3" ); - - __divti3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), uint64_t(rhs_b), uint64_t( rhs_b >> 64 ) ); - eosio_assert( res == 1, "__divti3 result should be 1" ); - - /* - * test for positive values - */ - __int128 lhs_c = 3333; - __int128 rhs_c = 3333; - - __divti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == 1, "__divti3 result should be 1" ); - - __divti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_c), uint64_t( rhs_c >> 64 ) ); - eosio_assert( res == 0, "__divti3 result should be 0" ); - - __divti3( res, uint64_t(lhs_c), uint64_t( lhs_c >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == 33, "__divti3 result should be 33" ); - - /* - * test identity - */ - __divti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), 1, 0 ); - eosio_assert( res == 100, "__divti3 result should be 100" ); - - __divti3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), 1, 0 ); - eosio_assert( res == -30, "__divti3 result should be -30" ); -} - -void test_compiler_builtins::test_divti3_by_0() { - __int128 res = 0; - - __divti3( res, 100, 0, 0, 0 ); - eosio_assert( false, "Should have eosio_asserted" ); -} - -void test_compiler_builtins::test_udivti3() { - /* - * test for negative values - */ - unsigned __int128 res = 0; - unsigned __int128 lhs_a = (unsigned __int128)-30; - unsigned __int128 rhs_a = 100; - unsigned __int128 lhs_b = 100; - unsigned __int128 rhs_b = (unsigned __int128)-30; - - __udivti3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == 3402823669209384634633746074317682114_ULLL, "__udivti3 result should be 0" ); - - __udivti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_b), uint64_t( rhs_b >> 64 ) ); - eosio_assert( res == 0, "__udivti3 result should be 0" ); - - __udivti3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), uint64_t(rhs_b), uint64_t( rhs_b >> 64 ) ); - eosio_assert( res == 1, "__udivti3 result should be 1" ); - - /* - * test for positive values - */ - __int128 lhs_c = 3333; - __int128 rhs_c = 3333; - - __udivti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == 1, "__divti3 result should be 1" ); - - __udivti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), uint64_t(rhs_c), uint64_t( rhs_c >> 64 ) ); - eosio_assert( res == 0, "__divti3 result should be 0" ); - - __udivti3( res, uint64_t(lhs_c), uint64_t( lhs_c >> 64 ), uint64_t(rhs_a), uint64_t( rhs_a >> 64 ) ); - eosio_assert( res == 33, "__divti3 result should be 33" ); - - /* - * test identity - */ - __udivti3( res, uint64_t(lhs_b), uint64_t( lhs_b >> 64 ), 1, 0 ); - eosio_assert( res == 100, "__divti3 result should be 100" ); - - __udivti3( res, uint64_t(lhs_a), uint64_t( lhs_a >> 64 ), 1, 0 ); - eosio_assert( res == (unsigned __int128)-30, "__divti3 result should be -30" ); -} - -void test_compiler_builtins::test_udivti3_by_0() { - unsigned __int128 res = 0; - - __udivti3( res, 100, 0, 0, 0 ); - eosio_assert( false, "Should have eosio_asserted" ); -} - - -void test_compiler_builtins::test_lshlti3() { - __int128 res = 0; - __int128 val = 1; - __int128 test_res = 0; - - test_res = 0x8000000000000000; - test_res <<= 1; - - - __lshlti3( res, uint64_t(val), uint64_t(val >> 64), 0 ); - eosio_assert( res == 1, "__lshlti3 result should be 1" ); - - - __lshlti3( res, uint64_t(val), uint64_t(val >> 64), 1 ); - eosio_assert( res == ( 1 << 1 ), "__lshlti3 result should be 2" ); - - __lshlti3( res, uint64_t(val), uint64_t( val >> 64 ), 31 ); - eosio_assert( (unsigned __int128)res == 2147483648_ULLL, "__lshlti3 result should be 2^31" ); - - __lshlti3( res, uint64_t(val), uint64_t( val >> 64 ), 63 ); - eosio_assert( (unsigned __int128)res == 9223372036854775808_ULLL, "__lshlti3 result should be 2^63" ); - - __lshlti3( res, uint64_t(val), uint64_t( val >> 64 ), 64 ); - eosio_assert( res == test_res, "__lshlti3 result should be 2^64" ); - - __lshlti3( res, uint64_t(val), uint64_t( val >> 64 ), 127 ); - test_res <<= 63; - eosio_assert( res == test_res, "__lshlti3 result should be 2^127" ); - - __lshlti3( res, uint64_t(val), uint64_t( val >> 64 ), 128 ); - test_res <<= 1; - //should rollover - eosio_assert( res == test_res, "__lshlti3 result should be 2^128" ); -} - -void test_compiler_builtins::test_ashlti3() { - __int128 res = 0; - __int128 val = 1; - __int128 test_res = 0; - - test_res = 0x8000000000000000; - test_res <<= 1; - - __ashlti3( res, uint64_t(val), uint64_t(val >> 64), 0 ); - eosio_assert( res == 1, "__ashlti3 result should be 1" ); - - - __ashlti3( res, uint64_t(val), uint64_t(val >> 64), 1 ); - eosio_assert( res == (1 << 1), "__ashlti3 result should be 2" ); - - __ashlti3( res, uint64_t(val), uint64_t(val >> 64), 31 ); - eosio_assert( res == (__int128)2147483648_ULLL, "__ashlti3 result should be 2^31" ); - - __ashlti3( res, uint64_t(val), uint64_t(val >> 64), 63 ); - eosio_assert( res == (__int128)9223372036854775808_ULLL, "__ashlti3 result should be 2^63" ); - - __ashlti3( res, uint64_t(val), uint64_t(val >> 64), 64 ); - eosio_assert( res == test_res, "__ashlti3 result should be 2^64" ); - - __ashlti3( res, uint64_t(val), uint64_t(val >> 64), 127 ); - test_res <<= 63; - eosio_assert( res == test_res, "__ashlti3 result should be 2^127" ); - - __ashlti3( res, uint64_t(val), uint64_t(val >> 64), 128 ); - test_res <<= 1; - //should rollover - eosio_assert( res == test_res, "__ashlti3 result should be 2^128" ); -} - - -void test_compiler_builtins::test_lshrti3() { - __int128 res = 0; - __int128 val = 0x8000000000000000; - __int128 test_res = 0x8000000000000000; - - val <<= 64; - test_res <<= 64; - - __lshrti3( res, uint64_t(val), uint64_t(val >> 64), 0 ); - eosio_assert( res == test_res, "__lshrti3 result should be 2^127" ); - - __lshrti3( res, uint64_t(val), uint64_t(val >> 64), 1 ); - eosio_assert( res == (__int128)85070591730234615865843651857942052864_ULLL, "__lshrti3 result should be 2^126" ); - - __lshrti3( res, uint64_t(val), uint64_t(val >> 64), 63 ); - eosio_assert( res == (__int128)18446744073709551616_ULLL, "__lshrti3 result should be 2^64" ); - - __lshrti3( res, uint64_t(val), uint64_t(val >> 64), 64 ); - eosio_assert( res == (__int128)9223372036854775808_ULLL, "__lshrti3 result should be 2^63" ); - - __lshrti3( res, uint64_t(val), uint64_t(val >> 64), 96 ); - eosio_assert( res == (__int128)2147483648_ULLL, "__lshrti3 result should be 2^31" ); - - __lshrti3( res, uint64_t(val), uint64_t(val >> 64), 127 ); - eosio_assert( res == 0x1, "__lshrti3 result should be 2^0" ); -} - -void test_compiler_builtins::test_ashrti3() { - __int128 res = 0; - __int128 test = 1; - __int128 val = -170141183460469231731687303715884105728_LLL; - - test <<= 127; - - __ashrti3( res, uint64_t(val), uint64_t(val >> 64), 0 ); - eosio_assert( res == -170141183460469231731687303715884105728_LLL, "__ashrti3 result should be -2^127" ); - - __ashrti3(res, uint64_t(val), uint64_t(val >> 64), 1 ); - eosio_assert( res == -85070591730234615865843651857942052864_LLL, "__ashrti3 result should be -2^126" ); - - __ashrti3(res, uint64_t(val), uint64_t(val >> 64), 2 ); - eosio_assert( res == test >> 2, "__ashrti3 result should be -2^125" ); - - __ashrti3( res, uint64_t(val), uint64_t(val >> 64), 64 ); - eosio_assert( res == test >> 64, "__ashrti3 result should be -2^63" ); - - __ashrti3( res, uint64_t(val), uint64_t(val >> 64), 95 ); - eosio_assert( res == test >> 95, "__ashrti3 result should be -2^31" ); - - __ashrti3( res, uint64_t(val), uint64_t(val >> 64), 127 ); - eosio_assert( res == test >> 127, "__ashrti3 result should be -2^0" ); -} - - -void test_compiler_builtins::test_modti3() { - __int128 res = 0; - __int128 lhs_a = -30; - __int128 rhs_a = 100; - __int128 lhs_b = 30; - __int128 rhs_b = -100; - - __modti3( res, uint64_t(lhs_a), uint64_t(lhs_a >> 64), uint64_t(rhs_a), uint64_t(rhs_a >> 64) ); - eosio_assert( res == -30, "__modti3 result should be -30" ); - - __modti3( res, uint64_t(lhs_b), uint64_t(lhs_b >> 64), uint64_t(rhs_b), uint64_t(rhs_b >> 64) ); - eosio_assert( res == 30, "__modti3 result should be 30" ); - - __modti3( res, uint64_t(lhs_a), uint64_t(lhs_a >> 64), uint64_t(rhs_b), uint64_t(rhs_b >> 64) ); - eosio_assert( res == -30, "__modti3 result should be -30" ); - - __modti3( res, uint64_t(rhs_a), uint64_t(rhs_a >> 64), uint64_t(lhs_b), uint64_t(lhs_b >> 64) ); - eosio_assert( res == 10, "__modti3 result should be 10" ); - - __modti3( res, uint64_t(rhs_a), uint64_t(rhs_a >> 64), uint64_t(rhs_b), uint64_t(rhs_b >> 64) ); - eosio_assert( res == 0, "__modti3 result should be 0" ); - - __modti3( res, uint64_t(rhs_a), uint64_t(rhs_a >> 64), uint64_t(rhs_a), uint64_t(rhs_a >> 64) ); - eosio_assert( res == 0, "__modti3 result should be 0" ); - - __modti3( res, 0, 0, uint64_t(rhs_a), uint64_t(rhs_a >> 64) ); - eosio_assert( res == 0, "__modti3 result should be 0" ); -} - -void test_compiler_builtins::test_modti3_by_0() { - __int128 res = 0; - __int128 lhs = 100; - - __modti3( res, uint64_t(lhs), uint64_t(lhs >> 64), 0, 0 ); - eosio_assert( false, "should have thrown an error" ); -} - -void test_compiler_builtins::test_umodti3() { - unsigned __int128 res = 0; - unsigned __int128 lhs_a = (unsigned __int128)-30; - unsigned __int128 rhs_a = 100; - unsigned __int128 lhs_b = 30; - unsigned __int128 rhs_b = (unsigned __int128)-100; - - __umodti3( res, uint64_t(lhs_a), uint64_t(lhs_a >> 64), uint64_t(rhs_a), uint64_t(rhs_a >> 64) ); - eosio_assert( res == (unsigned __int128)-30, "__modti3 result should be -30" ); - - __umodti3( res, uint64_t(lhs_b), uint64_t(lhs_b >> 64), uint64_t(rhs_b), uint64_t(rhs_b >> 64) ); - eosio_assert( res == 30, "__modti3 result should be 30" ); - - __umodti3( res, uint64_t(lhs_a), uint64_t(lhs_a >> 64), uint64_t(rhs_b), uint64_t(rhs_b >> 64) ); - eosio_assert( res == (unsigned __int128)-30, "__modti3 result should be -30" ); - - __umodti3( res, uint64_t(rhs_a), uint64_t(rhs_a >> 64), uint64_t(lhs_b), uint64_t(lhs_b >> 64) ); - eosio_assert( res == 10, "__modti3 result should be 10" ); - - __umodti3( res, uint64_t(rhs_a), uint64_t(rhs_a >> 64), uint64_t(rhs_b), uint64_t(rhs_b >> 64) ); - eosio_assert( res == 0, "__modti3 result should be 0" ); - - __umodti3( res, uint64_t(rhs_a), uint64_t(rhs_a >> 64), uint64_t(rhs_a), uint64_t(rhs_a >> 64) ); - eosio_assert( res == 0, "__modti3 result should be 0" ); - - __umodti3( res, 0, 0, uint64_t(rhs_a), uint64_t(rhs_a >> 64) ); - eosio_assert( res == 0, "__modti3 result should be 0" ); -} - -void test_compiler_builtins::test_umodti3_by_0() { - unsigned __int128 res = 0; - unsigned __int128 lhs = 100; - - __umodti3( res, uint64_t(lhs), uint64_t(lhs >> 64), 0, 0 ); - eosio_assert( false, "should have thrown an error" ); -} diff --git a/contracts/test_api/test_crypto.cpp b/contracts/test_api/test_crypto.cpp deleted file mode 100644 index 3b96e6e6fad..00000000000 --- a/contracts/test_api/test_crypto.cpp +++ /dev/null @@ -1,436 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include -#include - -#include "test_api.hpp" -#define WASM_TEST_FAIL 1 - -static const char test1[] = "abc"; -static const unsigned char test1_ok_1[] = { - 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, - 0x6a, 0xba, 0x3e, 0x25, 0x71, 0x78, 0x50, - 0xc2, 0x6c, 0x9c, 0xd0, 0xd8, 0x9d -}; - -static const unsigned char test1_ok_256[] = { - 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, - 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, - 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, - 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad -}; - -static const unsigned char test1_ok_512[] = { - 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, - 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, - 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, - 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, - 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, - 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd, - 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, - 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f -}; - -static const unsigned char test1_ok_ripe[] = { - 0x8e, 0xb2, 0x08, 0xf7, 0xe0, 0x5d, 0x98, 0x7a, - 0x9b, 0x04, 0x4a, 0x8e, 0x98, 0xc6, 0xb0, 0x87, - 0xf1, 0x5a, 0x0b, 0xfc -}; - -const char test2[] = ""; -static const unsigned char test2_ok_1[] = { - 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, - 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, - 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 -}; - -const unsigned char test2_ok_256[] = { - 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, - 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, - 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, - 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55 -}; - -const unsigned char test2_ok_512[] = { - 0xcf, 0x83, 0xe1, 0x35, 0x7e, 0xef, 0xb8, 0xbd, - 0xf1, 0x54, 0x28, 0x50, 0xd6, 0x6d, 0x80, 0x07, - 0xd6, 0x20, 0xe4, 0x05, 0x0b, 0x57, 0x15, 0xdc, - 0x83, 0xf4, 0xa9, 0x21, 0xd3, 0x6c, 0xe9, 0xce, - 0x47, 0xd0, 0xd1, 0x3c, 0x5d, 0x85, 0xf2, 0xb0, - 0xff, 0x83, 0x18, 0xd2, 0x87, 0x7e, 0xec, 0x2f, - 0x63, 0xb9, 0x31, 0xbd, 0x47, 0x41, 0x7a, 0x81, - 0xa5, 0x38, 0x32, 0x7a, 0xf9, 0x27, 0xda, 0x3e -}; - -const unsigned char test2_ok_ripe[] = { - 0x9c, 0x11, 0x85, 0xa5, 0xc5, 0xe9, 0xfc, 0x54, - 0x61, 0x28, 0x08, 0x97, 0x7e, 0xe8, 0xf5, 0x48, - 0xb2, 0x25, 0x8d, 0x31 -}; - -static const char test3[] = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; -static const unsigned char test3_ok_1[] = { - 0x84, 0x98, 0x3e, 0x44, 0x1c, 0x3b, 0xd2, - 0x6e, 0xba, 0xae, 0x4a, 0xa1, 0xf9, 0x51, - 0x29, 0xe5, 0xe5, 0x46, 0x70, 0xf1 -}; - -static const unsigned char test3_ok_256[] = { - 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, - 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39, - 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67, - 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 -}; - -static const unsigned char test3_ok_512[] = { - 0x20, 0x4a, 0x8f, 0xc6, 0xdd, 0xa8, 0x2f, 0x0a, - 0x0c, 0xed, 0x7b, 0xeb, 0x8e, 0x08, 0xa4, 0x16, - 0x57, 0xc1, 0x6e, 0xf4, 0x68, 0xb2, 0x28, 0xa8, - 0x27, 0x9b, 0xe3, 0x31, 0xa7, 0x03, 0xc3, 0x35, - 0x96, 0xfd, 0x15, 0xc1, 0x3b, 0x1b, 0x07, 0xf9, - 0xaa, 0x1d, 0x3b, 0xea, 0x57, 0x78, 0x9c, 0xa0, - 0x31, 0xad, 0x85, 0xc7, 0xa7, 0x1d, 0xd7, 0x03, - 0x54, 0xec, 0x63, 0x12, 0x38, 0xca, 0x34, 0x45 -}; - -static const unsigned char test3_ok_ripe[] = { - 0x12, 0xa0, 0x53, 0x38, 0x4a, 0x9c, 0x0c, 0x88, - 0xe4, 0x05, 0xa0, 0x6c, 0x27, 0xdc, 0xf4, 0x9a, - 0xda, 0x62, 0xeb, 0x2b -}; - -static const char test4[] = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; -static const unsigned char test4_ok_1[] = { - 0xa4, 0x9b, 0x24, 0x46, 0xa0, 0x2c, 0x64, - 0x5b, 0xf4, 0x19, 0xf9, 0x95, 0xb6, 0x70, - 0x91, 0x25, 0x3a, 0x04, 0xa2, 0x59 -}; - -static const unsigned char test4_ok_256[] = { - 0xcf, 0x5b, 0x16, 0xa7, 0x78, 0xaf, 0x83, 0x80, - 0x03, 0x6c, 0xe5, 0x9e, 0x7b, 0x04, 0x92, 0x37, - 0x0b, 0x24, 0x9b, 0x11, 0xe8, 0xf0, 0x7a, 0x51, - 0xaf, 0xac, 0x45, 0x03, 0x7a, 0xfe, 0xe9, 0xd1 -}; - -static const unsigned char test4_ok_512[] = { - 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda, - 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f, - 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1, - 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18, - 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4, - 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a, - 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54, - 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 -}; - -static const unsigned char test4_ok_ripe[] = { - 0x6f, 0x3f, 0xa3, 0x9b, 0x6b, 0x50, 0x3c, 0x38, - 0x4f, 0x91, 0x9a, 0x49, 0xa7, 0xaa, 0x5c, 0x2c, - 0x08, 0xbd, 0xfb, 0x45 -}; - -static const char test5[] = "message digest"; -static const unsigned char test5_ok_1[] = { - 0xc1, 0x22, 0x52, 0xce, 0xda, 0x8b, 0xe8, - 0x99, 0x4d, 0x5f, 0xa0, 0x29, 0x0a, 0x47, - 0x23, 0x1c, 0x1d, 0x16, 0xaa, 0xe3 -}; - -static const unsigned char test5_ok_256[] = { - 0xf7, 0x84, 0x6f, 0x55, 0xcf, 0x23, 0xe1, 0x4e, - 0xeb, 0xea, 0xb5, 0xb4, 0xe1, 0x55, 0x0c, 0xad, - 0x5b, 0x50, 0x9e, 0x33, 0x48, 0xfb, 0xc4, 0xef, - 0xa3, 0xa1, 0x41, 0x3d, 0x39, 0x3c, 0xb6, 0x50 -}; - -static const unsigned char test5_ok_512[] = { - 0x10, 0x7d, 0xbf, 0x38, 0x9d, 0x9e, 0x9f, 0x71, - 0xa3, 0xa9, 0x5f, 0x6c, 0x05, 0x5b, 0x92, 0x51, - 0xbc, 0x52, 0x68, 0xc2, 0xbe, 0x16, 0xd6, 0xc1, - 0x34, 0x92, 0xea, 0x45, 0xb0, 0x19, 0x9f, 0x33, - 0x09, 0xe1, 0x64, 0x55, 0xab, 0x1e, 0x96, 0x11, - 0x8e, 0x8a, 0x90, 0x5d, 0x55, 0x97, 0xb7, 0x20, - 0x38, 0xdd, 0xb3, 0x72, 0xa8, 0x98, 0x26, 0x04, - 0x6d, 0xe6, 0x66, 0x87, 0xbb, 0x42, 0x0e, 0x7c -}; - -static const unsigned char test5_ok_ripe[] = { - 0x5d, 0x06, 0x89, 0xef, 0x49, 0xd2, 0xfa, 0xe5, - 0x72, 0xb8, 0x81, 0xb1, 0x23, 0xa8, 0x5f, 0xfa, - 0x21, 0x59, 0x5f, 0x36 -}; - -extern "C" { - uint32_t my_strlen(const char *str) { - uint32_t len = 0; - while(str[len]) ++len; - return len; - } - - bool my_memcmp(void *s1, void *s2, uint32_t n) - { - unsigned char *c1 = (unsigned char *)s1; - unsigned char *c2 = (unsigned char *)s2; - for (uint32_t i = 0; i < n; ++i) { - if (c1[i] != c2[i]) { - return false; - } - } - return true; - } - -} - -struct sig_hash_key { - checksum256 hash; - public_key pk; - signature sig; -}; - -void test_crypto::test_recover_key_assert_true() { - sig_hash_key sh; - read_action_data( (char*)&sh, sizeof(sh) ); - assert_recover_key( &sh.hash, (const char*)&sh.sig, sizeof(sh.sig), (const char*)&sh.pk, sizeof(sh.pk) ); -} - -void test_crypto::test_recover_key_assert_false() { - sig_hash_key sh; - read_action_data( (char*)&sh, sizeof(sh) ); - assert_recover_key( &sh.hash, (const char*)&sh.sig, sizeof(sh.sig), (const char*)&sh.pk, sizeof(sh.pk) ); - eosio_assert( false, "should have thrown an error" ); -} - -void test_crypto::test_recover_key() { - sig_hash_key sh; - read_action_data( (char*)&sh, sizeof(sh) ); - public_key pk; - recover_key( &sh.hash, (const char*)&sh.sig, sizeof(sh.sig), pk.data, sizeof(pk) ); - for ( uint32_t i=0; i < sizeof(pk); i++ ) - if ( pk.data[i] != sh.pk.data[i] ) - eosio_assert( false, "public key does not match" ); -} - -void test_crypto::test_sha1() { - checksum160 tmp; - - sha1( (char *)test1, my_strlen(test1), &tmp ); - eosio_assert( my_memcmp((void *)test1_ok_1, &tmp, sizeof(checksum160)), "sha1 test1" ); - - sha1( (char *)test3, my_strlen(test3), &tmp ); - eosio_assert( my_memcmp((void *)test3_ok_1, &tmp, sizeof(checksum160)), "sha1 test3" ); - - sha1( (char *)test4, my_strlen(test4), &tmp ); - eosio_assert( my_memcmp((void *)test4_ok_1, &tmp, sizeof(checksum160)), "sha1 test4" ); - - sha1( (char *)test5, my_strlen(test5), &tmp ); - eosio_assert( my_memcmp((void *)test5_ok_1, &tmp, sizeof(checksum160)), "sha1 test5" ); -} - -void test_crypto::test_sha256() { - - checksum256 tmp; - - sha256( (char *)test1, my_strlen(test1), &tmp ); - eosio_assert( my_memcmp((void *)test1_ok_256, &tmp, sizeof(checksum256)), "sha256 test1" ); - - sha256( (char *)test3, my_strlen(test3), &tmp ); - eosio_assert( my_memcmp((void *)test3_ok_256, &tmp, sizeof(checksum256)), "sha256 test3" ); - - sha256( (char *)test4, my_strlen(test4), &tmp ); - eosio_assert( my_memcmp((void *)test4_ok_256, &tmp, sizeof(checksum256)), "sha256 test4" ); - - sha256( (char *)test5, my_strlen(test5), &tmp ); - eosio_assert( my_memcmp((void *)test5_ok_256, &tmp, sizeof(checksum256)), "sha256 test5" ); -} - -void test_crypto::test_sha512() { - - checksum512 tmp; - - sha512( (char *)test1, my_strlen(test1), &tmp ); - eosio_assert( my_memcmp((void *)test1_ok_512, &tmp, sizeof(checksum512)), "sha512 test1" ); - - sha512( (char *)test3, my_strlen(test3), &tmp ); - eosio_assert( my_memcmp((void *)test3_ok_512, &tmp, sizeof(checksum512)), "sha512 test3" ); - - sha512( (char *)test4, my_strlen(test4), &tmp ); - eosio_assert( my_memcmp((void *)test4_ok_512, &tmp, sizeof(checksum512)), "sha512 test4" ); - - sha512( (char *)test5, my_strlen(test5), &tmp ); - eosio_assert( my_memcmp((void *)test5_ok_512, &tmp, sizeof(checksum512)), "sha512 test5" ); -} - -void test_crypto::test_ripemd160() { - - checksum160 tmp; - - ripemd160( (char *)test1, my_strlen(test1), &tmp ); - eosio_assert( my_memcmp((void *)test1_ok_ripe, &tmp, sizeof(checksum160)), "ripemd160 test1" ); - - ripemd160( (char *)test3, my_strlen(test3), &tmp ); - eosio_assert( my_memcmp((void *)test3_ok_ripe, &tmp, sizeof(checksum160)), "ripemd160 test3" ); - - ripemd160( (char *)test4, my_strlen(test4), &tmp ); - eosio_assert( my_memcmp((void *)test4_ok_ripe, &tmp, sizeof(checksum160)), "ripemd160 test4" ); - - ripemd160( (char *)test5, my_strlen(test5), &tmp ); - eosio_assert( my_memcmp((void *)test5_ok_ripe, &tmp, sizeof(checksum160)), "ripemd160 test5" ); -} - -void test_crypto::sha256_null() { - checksum256 tmp; - sha256(nullptr, 100, &tmp); - //eosio_assert(false, "should've thrown an error"); -} - -void test_crypto::sha1_no_data() { - - checksum160 tmp; - - sha1( (char *)test2, my_strlen(test2), &tmp ); - eosio_assert( my_memcmp((void *)test2_ok_1, &tmp, sizeof(checksum160)), "sha1 test2" ); -} - -void test_crypto::sha256_no_data() { - - checksum256 tmp; - - sha256( (char *)test2, my_strlen(test2), &tmp ); - eosio_assert( my_memcmp((void *)test2_ok_256, &tmp, sizeof(checksum256)), "sha256 test2" ); -} - -void test_crypto::sha512_no_data() { - - checksum512 tmp; - - sha512( (char *)test2, my_strlen(test2), &tmp ); - eosio_assert( my_memcmp((void *)test2_ok_512, &tmp, sizeof(checksum512)), "sha512 test2" ); -} - -void test_crypto::ripemd160_no_data() { - - checksum160 tmp; - - ripemd160( (char *)test2, my_strlen(test2), &tmp ); - eosio_assert( my_memcmp((void *)test2_ok_ripe, &tmp, sizeof(checksum160)), "ripemd160 test2" ); -} - - -void test_crypto::assert_sha256_false() { - - checksum256 tmp; - - sha256( (char *)test1, my_strlen(test1), &tmp ); - tmp.hash[0] ^= (uint64_t)(-1); - assert_sha256( (char *)test1, my_strlen(test1), &tmp); - - eosio_assert(false, "should have failed"); -} - -void test_crypto::assert_sha256_true() { - - checksum256 tmp; - - sha256( (char *)test1, my_strlen(test1), &tmp ); - assert_sha256( (char *)test1, my_strlen(test1), &tmp); - - sha256( (char *)test3, my_strlen(test3), &tmp ); - assert_sha256( (char *)test3, my_strlen(test3), &tmp); - - sha256( (char *)test4, my_strlen(test4), &tmp ); - assert_sha256( (char *)test4, my_strlen(test4), &tmp); - - sha256( (char *)test5, my_strlen(test5), &tmp ); - assert_sha256( (char *)test5, my_strlen(test5), &tmp); -} - -void test_crypto::assert_sha1_false() { - - checksum160 tmp; - - sha1( (char *)test1, my_strlen(test1), &tmp ); - tmp.hash[0] ^= (uint64_t)(-1); - assert_sha1( (char *)test1, my_strlen(test1), &tmp); - - eosio_assert(false, "should have failed"); -} - - -void test_crypto::assert_sha1_true() { - - checksum160 tmp; - - sha1( (char *)test1, my_strlen(test1), &tmp ); - assert_sha1( (char *)test1, my_strlen(test1), &tmp); - - sha1( (char *)test3, my_strlen(test3), &tmp ); - assert_sha1( (char *)test3, my_strlen(test3), &tmp); - - sha1( (char *)test4, my_strlen(test4), &tmp ); - assert_sha1( (char *)test4, my_strlen(test4), &tmp); - - sha1( (char *)test5, my_strlen(test5), &tmp ); - assert_sha1( (char *)test5, my_strlen(test5), &tmp); -} - -void test_crypto::assert_sha512_false() { - - checksum512 tmp; - - sha512( (char *)test1, my_strlen(test1), &tmp ); - tmp.hash[0] ^= (uint64_t)(-1); - assert_sha512( (char *)test1, my_strlen(test1), &tmp); - - eosio_assert(false, "should have failed"); -} - - -void test_crypto::assert_sha512_true() { - - checksum512 tmp; - - sha512( (char *)test1, my_strlen(test1), &tmp ); - assert_sha512( (char *)test1, my_strlen(test1), &tmp); - - sha512( (char *)test3, my_strlen(test3), &tmp ); - assert_sha512( (char *)test3, my_strlen(test3), &tmp); - - sha512( (char *)test4, my_strlen(test4), &tmp ); - assert_sha512( (char *)test4, my_strlen(test4), &tmp); - - sha512( (char *)test5, my_strlen(test5), &tmp ); - assert_sha512( (char *)test5, my_strlen(test5), &tmp); -} - -void test_crypto::assert_ripemd160_false() { - - checksum160 tmp; - - ripemd160( (char *)test1, my_strlen(test1), &tmp ); - tmp.hash[0] ^= (uint64_t)(-1); - assert_ripemd160( (char *)test1, my_strlen(test1), &tmp); - - eosio_assert(false, "should have failed"); -} - - -void test_crypto::assert_ripemd160_true() { - - checksum160 tmp; - - ripemd160( (char *)test1, my_strlen(test1), &tmp ); - assert_ripemd160( (char *)test1, my_strlen(test1), &tmp); - - ripemd160( (char *)test3, my_strlen(test3), &tmp ); - assert_ripemd160( (char *)test3, my_strlen(test3), &tmp); - - ripemd160( (char *)test4, my_strlen(test4), &tmp ); - assert_ripemd160( (char *)test4, my_strlen(test4), &tmp); - - ripemd160( (char *)test5, my_strlen(test5), &tmp ); - assert_ripemd160( (char *)test5, my_strlen(test5), &tmp); -} diff --git a/contracts/test_api/test_datastream.cpp b/contracts/test_api/test_datastream.cpp deleted file mode 100644 index 3ad663ec48a..00000000000 --- a/contracts/test_api/test_datastream.cpp +++ /dev/null @@ -1,87 +0,0 @@ - -#include -#include -#include - -#include "test_api.hpp" - -template -struct testtype { - static void run(const T &v, const char *errmsg = "") { - char buf[128]; - eosio::datastream ds(buf, sizeof(buf)); - ds << v; - T v2; - ds.seekp(0); - ds >> v2; - eosio_assert(v == v2, errmsg); - } -}; - -template <> -struct testtype { - static void run(const double &v, const char *errmsg = "") { - char buf[128]; - eosio::datastream ds(buf, sizeof(buf)); - ds << v; - double v2; - ds.seekp(0); - ds >> v2; - eosio_assert(std::abs(v - v2) < 1e-20, errmsg); - } -}; - -template <> -struct testtype { - static void run(const float &v, const char *errmsg = "") { - char buf[128]; - eosio::datastream ds(buf, sizeof(buf)); - ds << v; - float v2; - ds.seekp(0); - ds >> v2; - eosio_assert(std::abs(v - v2) < float(1e-10), errmsg); - } -}; - -void test_datastream::test_basic() -{ - - testtype::run(true, "bool"); - testtype::run(false, "bool"); - testtype::run(-123, "int8"); - testtype::run(127, "uint8"); - testtype::run(-12345, "int16"); - testtype::run(12345, "uint16"); - testtype::run(-1234567890, "int32"); - testtype::run(3234567890u, "uint32"); - testtype::run((long long)0x8000000000000000ll, "int64"); - testtype::run(0x7fffffffffffffffull, "uint64"); - testtype::run(1.234f, "float"); - testtype::run(0.333333333333333333, "double"); - - // this should generate compile error - //testtype::run((char *)0x12345678, "pointer"); - - struct Pair { - int a; - double d; - bool operator==(const Pair &p) const { return a == p.a && std::abs(d - p.d) < 1e-20;} - }; - testtype::run({1, 1.23456}, "struct"); - - struct StaticArray { - int a[2]; - bool operator==(const StaticArray &o) const { return a[0] == o.a[0] && a[1] == o.a[1]; } - }; - testtype::run({{10,20}}, "StaticArray"); - - testtype::run("hello", "string"); - - testtype >::run({10,20,30}, "vector"); - testtype >::run({}, "empty vector"); - testtype >::run({{10,20,30}}, "std::array"); - testtype >::run({{1,"apple"}, {2,"cat"}, {3,"panda"}}, "map"); - testtype >::run({1, "abc", 3.3333}, "tuple"); -} - diff --git a/contracts/test_api/test_fixedpoint.cpp b/contracts/test_api/test_fixedpoint.cpp deleted file mode 100644 index 3f7c0260786..00000000000 --- a/contracts/test_api/test_fixedpoint.cpp +++ /dev/null @@ -1,155 +0,0 @@ -#include -#include - -#include "test_api.hpp" - -void test_fixedpoint::create_instances() -{ - { - // Various ways to create fixed_point128 - eosio::fixed_point128<18> a(12345667); - eosio::fixed_point128<18> b(12345667); - eosio::fixed_point128<16> c(12345667); - eosio_assert(b == a, "fixed_point128 instances comparison with same number of decimals"); - eosio_assert(c == a, "fixed_point128 instances with different number of decimals"); - } - - { - // Various ways to create fixed_point64 - eosio::fixed_point64<5> a(12345667); - eosio::fixed_point64<5> b(12345667); - eosio::fixed_point64<5> c(12345667); - eosio_assert(b == a, "fixed_point64 instances comparison with same number of decimals"); - eosio_assert(c == a, "fixed_point64 instances with different number of decimals"); - } - - { - // Various ways to create fixed_point32 - eosio::fixed_point32<18> a(12345667); - eosio::fixed_point32<18> b(12345667); - eosio::fixed_point32<16> c(12345667); - eosio_assert(b == a, "fixed_point32 instances comparison with same number of decimals"); - eosio_assert(c == a, "fixed_point32 instances with different number of decimals"); - } -} - -void test_fixedpoint::test_addition() -{ - { - // Various ways to create fixed_point32 - eosio::fixed_point32<0> a(100); - eosio::fixed_point32<0> b(100); - eosio::fixed_point32<0> c = a + b; - eosio::fixed_point32<0> d = 200; - eosio_assert(c == d, "fixed_point32 instances addition with zero decmimals"); - } - { - // Various ways to create fixed_point64 - eosio::fixed_point64<0> a(100); - eosio::fixed_point64<0> b(100); - eosio::fixed_point64<0> c = a + b; - eosio::fixed_point64<0> d = 200; - eosio_assert(c == d, "fixed_point64 instances addition with zero decmimals"); - } -}; - -void test_fixedpoint::test_subtraction() -{ - { - // Various ways to create fixed_point64 - eosio::fixed_point64<0> a(100); - eosio::fixed_point64<0> b(100); - eosio::fixed_point64<0> c = a - b; - eosio::fixed_point64<0> d = 0; - eosio_assert(c == d, "fixed_point64 instances subtraction with zero decmimals"); - - eosio::fixed_point64<0> a1(0); - eosio::fixed_point64<0> c1 = a1 - b; - eosio::fixed_point64<0> d1 = -100; - eosio_assert(c1 == d1, "fixed_point64 instances subtraction with zero decmimals"); - } - { - // Various ways to create fixed_point32 - eosio::fixed_point32<0> a(100); - eosio::fixed_point32<0> b(100); - eosio::fixed_point32<0> c = a - b; - eosio::fixed_point32<0> d = 0; - eosio_assert(c == d, "fixed_point32 instances subtraction with zero decmimals"); - - // Various ways to create fixed_point32 - eosio::fixed_point32<0> a1(0); - eosio::fixed_point32<0> c1 = a1 - b; - eosio::fixed_point32<0> d1 = -100; - eosio_assert(c1 == d1, "fixed_point32 instances subtraction with zero decmimals"); - - } -}; - -void test_fixedpoint::test_multiplication() -{ - { - // Various ways to create fixed_point64 - eosio::fixed_point64<0> a(100); - eosio::fixed_point64<0> b(200); - eosio::fixed_point128<0> c = a * b; - eosio::fixed_point128<0> d(200*100); - eosio_assert(c == d, "fixed_point64 instances multiplication result in fixed_point128"); - } - - { - // Various ways to create fixed_point32 - eosio::fixed_point32<0> a(100); - eosio::fixed_point32<0> b(200); - eosio::fixed_point64<0> c = a * b; - eosio::fixed_point64<0> d(200*100); - eosio_assert(c == d, "fixed_point32 instances multiplication result in fixed_point64"); - } -} - -void test_fixedpoint::test_division() -{ - { - uint64_t lhs = 10000000; - uint64_t rhs = 333; - - eosio::fixed_point64<0> a((int64_t)lhs); - eosio::fixed_point64<0> b((int64_t)rhs); - eosio::fixed_point128<5> c = a / b; - - eosio::fixed_point128<5> e = eosio::fixed_divide<5>(lhs, rhs); - print(e); - eosio_assert(c == e, "fixed_point64 instances division result from operator and function and compare in fixed_point128"); - - } - - { - uint32_t lhs = 100000; - uint32_t rhs = 33; - - eosio::fixed_point32<0> a((int32_t)lhs); - eosio::fixed_point32<0> b((int32_t)rhs); - eosio::fixed_point64<5> c = a / b; - - eosio::fixed_point64<5> e = eosio::fixed_divide<5>(lhs, rhs); - eosio_assert(c == e, "fixed_point64 instances division result from operator and function and compare in fixed_point128"); - - } -} - -void test_fixedpoint::test_division_by_0() -{ - { - uint64_t lhs = 10000000; - uint64_t rhs = 0; - - eosio::fixed_point64<0> a((int64_t)lhs); - eosio::fixed_point64<0> b((int64_t)rhs); - - eosio::fixed_point128<5> e = eosio::fixed_divide<5>(lhs, rhs); - // in order to get rid of unused parameter warning - e = 0; - eosio_assert(false, "should've thrown an error"); - - } - - } diff --git a/contracts/test_api/test_transaction.cpp b/contracts/test_api/test_transaction.cpp deleted file mode 100644 index cc1128ae5f6..00000000000 --- a/contracts/test_api/test_transaction.cpp +++ /dev/null @@ -1,339 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include -#include - -#include "test_api.hpp" - -#pragma pack(push, 1) -template -struct test_action_action { - static account_name get_account() { - return account_name(ACCOUNT); - } - - static action_name get_name() { - return action_name(NAME); - } - - eosio::vector data; - - template - friend DataStream& operator << ( DataStream& ds, const test_action_action& a ) { - for ( auto c : a.data ) - ds << c; - return ds; - } - /* - template - friend DataStream& operator >> ( DataStream& ds, test_action_action& a ) { - return ds; - } - */ -}; - - -template -struct test_dummy_action { - static account_name get_account() { - return account_name(ACCOUNT); - } - - static action_name get_name() { - return action_name(NAME); - } - char a; - unsigned long long b; - int32_t c; - - template - friend DataStream& operator << ( DataStream& ds, const test_dummy_action& da ) { - ds << da.a; - ds << da.b; - ds << da.c; - return ds; - } - - template - friend DataStream& operator >> ( DataStream& ds, test_dummy_action& da ) { - ds >> da.a; - ds >> da.b; - ds >> da.c; - return ds; - } -}; -#pragma pack(pop) - -void copy_data(char* data, size_t data_len, eosio::vector& data_out) { - for (unsigned int i=0; i < data_len; i++) - data_out.push_back(data[i]); -} - -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); - - act.send(); -} - -/** - * cause failure due to a large action payload - */ -void test_transaction::send_action_large() { - using namespace eosio; - static char large_message[8 * 1024]; - test_action_action test_action; - copy_data(large_message, 8*1024, test_action.data); - action act(vector{{N(testapi), N(active)}}, test_action); - act.send(); - eosio_assert(false, "send_message_large() should've thrown an error"); -} - -/** - * cause failure due recursive loop - */ -void test_transaction::send_action_recurse() { - using namespace eosio; - char buffer[1024]; - read_action_data(buffer, 1024); - - test_action_action test_action; - copy_data(buffer, 1024, test_action.data); - action act(vector{{N(testapi), N(active)}}, test_action); - - act.send(); -} - -/** - * 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); - - act.send(); -} - -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" ); -} - - -void test_transaction::test_read_transaction() { - using namespace eosio; - checksum256 h; - auto size = transaction_size(); - char buf[size]; - uint32_t read = read_transaction( buf, size ); - eosio_assert( size == read, "read_transaction failed"); - sha256(buf, read, &h); - printhex( &h, sizeof(h) ); -} - -void test_transaction::test_transaction_size() { - using namespace eosio; - uint32_t trans_size = 0; - read_action_data( (char*)&trans_size, sizeof(uint32_t) ); - print( "size: ", transaction_size() ); - eosio_assert( trans_size == transaction_size(), "transaction size does not match" ); -} - -void test_transaction::send_transaction(uint64_t receiver, uint64_t, uint64_t) { - using namespace eosio; - dummy_action payload = {DUMMY_ACTION_DEFAULT_A, DUMMY_ACTION_DEFAULT_B, DUMMY_ACTION_DEFAULT_C}; - - test_action_action test_action; - copy_data((char*)&payload, sizeof(dummy_action), test_action.data); - - auto trx = transaction(); - trx.actions.emplace_back(vector{{N(testapi), N(active)}}, test_action); - trx.send(0, receiver); -} - -void test_transaction::send_action_sender(uint64_t receiver, uint64_t, uint64_t) { - using namespace eosio; - account_name cur_send; - read_action_data( &cur_send, sizeof(account_name) ); - test_action_action test_action; - copy_data((char*)&cur_send, sizeof(account_name), test_action.data); - - auto trx = transaction(); - trx.actions.emplace_back(vector{{N(testapi), N(active)}}, test_action); - trx.send(0, receiver); -} - -void test_transaction::send_transaction_empty(uint64_t receiver, uint64_t, uint64_t) { - using namespace eosio; - auto trx = transaction(); - trx.send(0, receiver); - - eosio_assert(false, "send_transaction_empty() should've thrown an error"); -} - -void test_transaction::send_transaction_trigger_error_handler(uint64_t receiver, uint64_t, uint64_t) { - using namespace eosio; - auto trx = transaction(); - test_action_action test_action; - trx.actions.emplace_back(vector{{N(testapi), N(active)}}, test_action); - trx.send(0, receiver); -} - -void test_transaction::assert_false_error_handler(const eosio::transaction& dtrx) { - eosio_assert(dtrx.actions.size() == 1, "transaction should only have one action"); - eosio_assert(dtrx.actions[0].account == N(testapi), "transaction has wrong code"); - eosio_assert(dtrx.actions[0].name == WASM_TEST_ACTION("test_action", "assert_false"), "transaction has wrong name"); - eosio_assert(dtrx.actions[0].authorization.size() == 1, "action should only have one authorization"); - eosio_assert(dtrx.actions[0].authorization[0].actor == N(testapi), "action's authorization has wrong actor"); - eosio_assert(dtrx.actions[0].authorization[0].permission == N(active), "action's authorization has wrong permission"); -} - -/** - * cause failure due to a large transaction size - */ -void test_transaction::send_transaction_large(uint64_t receiver, uint64_t, uint64_t) { - using namespace eosio; - auto trx = transaction(); - for (int i = 0; i < 32; i ++) { - char large_message[1024]; - test_action_action test_action; - copy_data(large_message, 1024, test_action.data); - trx.actions.emplace_back(vector{{N(testapi), N(active)}}, test_action); - } - - trx.send(0, receiver); - - eosio_assert(false, "send_transaction_large() should've thrown an error"); -} - -/** - * deferred transaction - */ -void test_transaction::deferred_print() { - eosio::print("deferred executed\n"); -} - -void test_transaction::send_deferred_transaction(uint64_t receiver, uint64_t, uint64_t) { - using namespace eosio; - auto trx = transaction(); - test_action_action test_action; - trx.actions.emplace_back(vector{{N(testapi), N(active)}}, test_action); - trx.delay_sec = 2; - trx.send( 0xffffffffffffffff, receiver ); -} - -void test_transaction::send_deferred_transaction_replace(uint64_t receiver, uint64_t, uint64_t) { - using namespace eosio; - auto trx = transaction(); - test_action_action test_action; - trx.actions.emplace_back(vector{{N(testapi), N(active)}}, test_action); - trx.delay_sec = 2; - trx.send( 0xffffffffffffffff, receiver, true ); -} - -void test_transaction::send_deferred_tx_with_dtt_action() { - using namespace eosio; - dtt_action dtt_act; - read_action_data(&dtt_act, action_data_size()); - - action deferred_act; - deferred_act.account = dtt_act.deferred_account; - deferred_act.name = dtt_act.deferred_action; - deferred_act.authorization = vector{{N(testapi), dtt_act.permission_name}}; - - auto trx = transaction(); - trx.actions.emplace_back(deferred_act); - trx.delay_sec = dtt_act.delay_sec; - cancel_deferred( 0xffffffffffffffff ); // TODO: Remove this line after fixing deferred trx replacement RAM bug - trx.send( 0xffffffffffffffff, dtt_act.payer, true ); -} - - -void test_transaction::cancel_deferred_transaction_success() { - using namespace eosio; - auto r = cancel_deferred( 0xffffffffffffffff ); //use the same id (0) as in send_deferred_transaction - eosio_assert( (bool)r, "transaction was not found" ); -} - -void test_transaction::cancel_deferred_transaction_not_found() { - using namespace eosio; - auto r = cancel_deferred( 0xffffffffffffffff ); //use the same id (0) as in send_deferred_transaction - eosio_assert( !r, "transaction was canceled, whild should not be found" ); -} - -void test_transaction::send_cf_action() { - using namespace eosio; - test_action_action cfa; - action act(cfa); - act.send_context_free(); -} - -void test_transaction::send_cf_action_fail() { - using namespace eosio; - test_action_action cfa; - action act(vector{{N(dummy), N(active)}}, cfa); - act.send_context_free(); - eosio_assert(false, "send_cfa_action_fail() should've thrown an error"); -} - -void test_transaction::stateful_api() { - char buf[4] = {1}; - db_store_i64(N(test_transaction), N(table), N(test_transaction), 0, buf, 4); -} - -void test_transaction::context_free_api() { - char buf[128] = {0}; - get_context_free_data(0, buf, sizeof(buf)); -} - -extern "C" { int is_feature_active(int64_t); } -void test_transaction::new_feature() { - eosio_assert(false == is_feature_active((int64_t)N(newfeature)), "we should not have new features unless hardfork"); -} - -void test_transaction::active_new_feature() { - activate_feature((int64_t)N(newfeature)); -} - -void test_transaction::repeat_deferred_transaction(uint64_t receiver, uint64_t code, uint64_t action) { - using namespace eosio; - - uint128_t sender_id = 0; - - uint32_t payload = unpack_action_data(); - print( "repeat_deferred_transaction called: payload = ", payload ); - - bool res = cancel_deferred( sender_id ); - - print( "\nrepeat_deferred_transaction cancelled trx with sender_id = ", sender_id, ", result is ", res ); - - if( payload == 0 ) return; - - --payload; - transaction trx; - trx.actions.emplace_back( permission_level{receiver, N(active)}, code, action, payload ); - trx.send( sender_id, receiver ); -} diff --git a/contracts/test_api/test_types.cpp b/contracts/test_api/test_types.cpp deleted file mode 100644 index bc9dca52e2a..00000000000 --- a/contracts/test_api/test_types.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include - -#include "test_api.hpp" - -void test_types::types_size() { - - eosio_assert( sizeof(int64_t) == 8, "int64_t size != 8"); - eosio_assert( sizeof(uint64_t) == 8, "uint64_t size != 8"); - eosio_assert( sizeof(uint32_t) == 4, "uint32_t size != 4"); - eosio_assert( sizeof(int32_t) == 4, "int32_t size != 4"); - eosio_assert( sizeof(uint128_t) == 16, "uint128_t size != 16"); - eosio_assert( sizeof(int128_t) == 16, "int128_t size != 16"); - eosio_assert( sizeof(uint8_t) == 1, "uint8_t size != 1"); - - eosio_assert( sizeof(account_name) == 8, "account_name size != 8"); - eosio_assert( sizeof(table_name) == 8, "table_name size != 8"); - eosio_assert( sizeof(time) == 4, "time size != 4"); - eosio_assert( sizeof(eosio::key256) == 32, "key256 size != 32" ); -} - -void test_types::char_to_symbol() { - - eosio_assert( eosio::char_to_symbol('1') == 1, "eosio::char_to_symbol('1') != 1"); - eosio_assert( eosio::char_to_symbol('2') == 2, "eosio::char_to_symbol('2') != 2"); - eosio_assert( eosio::char_to_symbol('3') == 3, "eosio::char_to_symbol('3') != 3"); - eosio_assert( eosio::char_to_symbol('4') == 4, "eosio::char_to_symbol('4') != 4"); - eosio_assert( eosio::char_to_symbol('5') == 5, "eosio::char_to_symbol('5') != 5"); - eosio_assert( eosio::char_to_symbol('a') == 6, "eosio::char_to_symbol('a') != 6"); - eosio_assert( eosio::char_to_symbol('b') == 7, "eosio::char_to_symbol('b') != 7"); - eosio_assert( eosio::char_to_symbol('c') == 8, "eosio::char_to_symbol('c') != 8"); - eosio_assert( eosio::char_to_symbol('d') == 9, "eosio::char_to_symbol('d') != 9"); - eosio_assert( eosio::char_to_symbol('e') == 10, "eosio::char_to_symbol('e') != 10"); - eosio_assert( eosio::char_to_symbol('f') == 11, "eosio::char_to_symbol('f') != 11"); - eosio_assert( eosio::char_to_symbol('g') == 12, "eosio::char_to_symbol('g') != 12"); - eosio_assert( eosio::char_to_symbol('h') == 13, "eosio::char_to_symbol('h') != 13"); - eosio_assert( eosio::char_to_symbol('i') == 14, "eosio::char_to_symbol('i') != 14"); - eosio_assert( eosio::char_to_symbol('j') == 15, "eosio::char_to_symbol('j') != 15"); - eosio_assert( eosio::char_to_symbol('k') == 16, "eosio::char_to_symbol('k') != 16"); - eosio_assert( eosio::char_to_symbol('l') == 17, "eosio::char_to_symbol('l') != 17"); - eosio_assert( eosio::char_to_symbol('m') == 18, "eosio::char_to_symbol('m') != 18"); - eosio_assert( eosio::char_to_symbol('n') == 19, "eosio::char_to_symbol('n') != 19"); - eosio_assert( eosio::char_to_symbol('o') == 20, "eosio::char_to_symbol('o') != 20"); - eosio_assert( eosio::char_to_symbol('p') == 21, "eosio::char_to_symbol('p') != 21"); - eosio_assert( eosio::char_to_symbol('q') == 22, "eosio::char_to_symbol('q') != 22"); - eosio_assert( eosio::char_to_symbol('r') == 23, "eosio::char_to_symbol('r') != 23"); - eosio_assert( eosio::char_to_symbol('s') == 24, "eosio::char_to_symbol('s') != 24"); - eosio_assert( eosio::char_to_symbol('t') == 25, "eosio::char_to_symbol('t') != 25"); - eosio_assert( eosio::char_to_symbol('u') == 26, "eosio::char_to_symbol('u') != 26"); - eosio_assert( eosio::char_to_symbol('v') == 27, "eosio::char_to_symbol('v') != 27"); - eosio_assert( eosio::char_to_symbol('w') == 28, "eosio::char_to_symbol('w') != 28"); - eosio_assert( eosio::char_to_symbol('x') == 29, "eosio::char_to_symbol('x') != 29"); - eosio_assert( eosio::char_to_symbol('y') == 30, "eosio::char_to_symbol('y') != 30"); - eosio_assert( eosio::char_to_symbol('z') == 31, "eosio::char_to_symbol('z') != 31"); - - for(unsigned char i = 0; i<255; i++) { - if((i >= 'a' && i <= 'z') || (i >= '1' || i <= '5')) continue; - eosio_assert( eosio::char_to_symbol((char)i) == 0, "eosio::char_to_symbol() != 0"); - } -} - -void test_types::string_to_name() { - - eosio_assert( eosio::string_to_name("a") == N(a) , "eosio::string_to_name(a)" ); - eosio_assert( eosio::string_to_name("ba") == N(ba) , "eosio::string_to_name(ba)" ); - eosio_assert( eosio::string_to_name("cba") == N(cba) , "eosio::string_to_name(cba)" ); - eosio_assert( eosio::string_to_name("dcba") == N(dcba) , "eosio::string_to_name(dcba)" ); - eosio_assert( eosio::string_to_name("edcba") == N(edcba) , "eosio::string_to_name(edcba)" ); - eosio_assert( eosio::string_to_name("fedcba") == N(fedcba) , "eosio::string_to_name(fedcba)" ); - eosio_assert( eosio::string_to_name("gfedcba") == N(gfedcba) , "eosio::string_to_name(gfedcba)" ); - eosio_assert( eosio::string_to_name("hgfedcba") == N(hgfedcba) , "eosio::string_to_name(hgfedcba)" ); - eosio_assert( eosio::string_to_name("ihgfedcba") == N(ihgfedcba) , "eosio::string_to_name(ihgfedcba)" ); - eosio_assert( eosio::string_to_name("jihgfedcba") == N(jihgfedcba) , "eosio::string_to_name(jihgfedcba)" ); - eosio_assert( eosio::string_to_name("kjihgfedcba") == N(kjihgfedcba) , "eosio::string_to_name(kjihgfedcba)" ); - eosio_assert( eosio::string_to_name("lkjihgfedcba") == N(lkjihgfedcba) , "eosio::string_to_name(lkjihgfedcba)" ); - eosio_assert( eosio::string_to_name("mlkjihgfedcba") == N(mlkjihgfedcba) , "eosio::string_to_name(mlkjihgfedcba)" ); - eosio_assert( eosio::string_to_name("mlkjihgfedcba1") == N(mlkjihgfedcba2) , "eosio::string_to_name(mlkjihgfedcba2)" ); - eosio_assert( eosio::string_to_name("mlkjihgfedcba55") == N(mlkjihgfedcba14) , "eosio::string_to_name(mlkjihgfedcba14)" ); - - eosio_assert( eosio::string_to_name("azAA34") == N(azBB34) , "eosio::string_to_name N(azBB34)" ); - eosio_assert( eosio::string_to_name("AZaz12Bc34") == N(AZaz12Bc34) , "eosio::string_to_name AZaz12Bc34" ); - eosio_assert( eosio::string_to_name("AAAAAAAAAAAAAAA") == eosio::string_to_name("BBBBBBBBBBBBBDDDDDFFFGG") , "eosio::string_to_name BBBBBBBBBBBBBDDDDDFFFGG" ); -} - -void test_types::name_class() { - - eosio_assert( eosio::name{eosio::string_to_name("azAA34")}.value == N(azAA34), "eosio::name != N(azAA34)" ); - eosio_assert( eosio::name{eosio::string_to_name("AABBCC")}.value == 0, "eosio::name != N(0)" ); - eosio_assert( eosio::name{eosio::string_to_name("AA11")}.value == N(AA11), "eosio::name != N(AA11)" ); - eosio_assert( eosio::name{eosio::string_to_name("11AA")}.value == N(11), "eosio::name != N(11)" ); - eosio_assert( eosio::name{eosio::string_to_name("22BBCCXXAA")}.value == N(22), "eosio::name != N(22)" ); - eosio_assert( eosio::name{eosio::string_to_name("AAAbbcccdd")} == eosio::name{eosio::string_to_name("AAAbbcccdd")}, "eosio::name == eosio::name" ); - - uint64_t tmp = eosio::name{eosio::string_to_name("11bbcccdd")}; - eosio_assert(N(11bbcccdd) == tmp, "N(11bbcccdd) == tmp"); -} diff --git a/contracts/test_api_db/CMakeLists.txt b/contracts/test_api_db/CMakeLists.txt deleted file mode 100644 index 0121439dbf1..00000000000 --- a/contracts/test_api_db/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -add_wast_executable(TARGET test_api_db - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/test_api_db/test_api_db.cpp b/contracts/test_api_db/test_api_db.cpp deleted file mode 100644 index d603477a631..00000000000 --- a/contracts/test_api_db/test_api_db.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include "../test_api/test_api.hpp" - -#include "test_db.cpp" - -extern "C" { - void apply( uint64_t receiver, uint64_t code, uint64_t action ) { - require_auth(code); - WASM_TEST_HANDLER_EX(test_db, primary_i64_general); - WASM_TEST_HANDLER_EX(test_db, primary_i64_lowerbound); - WASM_TEST_HANDLER_EX(test_db, primary_i64_upperbound); - WASM_TEST_HANDLER_EX(test_db, idx64_general); - WASM_TEST_HANDLER_EX(test_db, idx64_lowerbound); - WASM_TEST_HANDLER_EX(test_db, idx64_upperbound); - WASM_TEST_HANDLER_EX(test_db, test_invalid_access); - WASM_TEST_HANDLER_EX(test_db, idx_double_nan_create_fail); - WASM_TEST_HANDLER_EX(test_db, idx_double_nan_modify_fail); - WASM_TEST_HANDLER_EX(test_db, idx_double_nan_lookup_fail); - WASM_TEST_HANDLER_EX(test_db, misaligned_secondary_key256_tests); - - //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 deleted file mode 100644 index a4096fc2ede..00000000000 --- a/contracts/test_api_db/test_db.cpp +++ /dev/null @@ -1,552 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include "../test_api/test_api.hpp" - -int primary[11] = {0,1,2,3,4,5,6,7,8,9,10}; -int secondary[11] = {7,0,1,3,6,9,10,2,4,5,8}; -int tertiary[11] = {0,10,1,2,4,3,5,6,7,8,9}; - -int primary_lb[11] = {0,0,0,3,3,3,6,7,7,9,9}; -int secondary_lb[11] = {0,0,10,0,10,10,0,7,8,0,10}; -int tertiary_lb[11] = {0,1,2,3,2,5,6,7,8,9,0}; - -int primary_ub[11] = {3,3,3,6,6,6,7,9,9,-1,-1}; -int secondary_ub[11] = {10,10,8,10,8,8,10,0,-1,10,8}; -int tertiary_ub[11] = {1,2,3,5,3,6,7,8,9,-1,1}; - -#pragma pack(push, 1) -struct test_model { - account_name name; - unsigned char age; - uint64_t phone; -}; - -struct test_model_v2 : test_model { - test_model_v2() : new_field(0) {} - uint64_t new_field; -}; - -struct test_model_v3 : test_model_v2 { - uint64_t another_field; -}; - -struct TestModel128x2 { - uint128_t number; - uint128_t price; - uint64_t extra; - uint64_t table_name; -}; - -struct TestModel128x2_V2 : TestModel128x2 { - uint64_t new_field; -}; - -struct TestModel3xi64 { - uint64_t a; - uint64_t b; - uint64_t c; - uint64_t table; -}; - -struct TestModel3xi64_V2 : TestModel3xi64 { - uint64_t new_field; -}; - -#pragma pack(pop) - -#define STRLEN(s) my_strlen(s) - -extern "C" { - void my_memset(void *vptr, unsigned char val, unsigned int size) { - char *ptr = (char *)vptr; - while(size--) { *(ptr++)=(char)val; } - } - uint32_t my_strlen(const char *str) { - uint32_t len = 0; - while(str[len]) ++len; - return len; - } - bool my_memcmp(void *s1, void *s2, uint32_t n) { - unsigned char *c1 = (unsigned char*)s1; - unsigned char *c2 = (unsigned char*)s2; - for (uint32_t i = 0; i < n; i++) { - if (c1[i] != c2[i]) { - return false; - } - } - return true; - } -} - -void test_db::primary_i64_general(uint64_t receiver, uint64_t code, uint64_t action) -{ - (void)code; (void)action; - auto table1 = N(table1); - - int alice_itr = db_store_i64(receiver, table1, receiver, N(alice), "alice's info", strlen("alice's info")); - db_store_i64(receiver, table1, receiver, N(bob), "bob's info", strlen("bob's info")); - db_store_i64(receiver, table1, receiver, N(charlie), "charlie's info", strlen("charlies's info")); - db_store_i64(receiver, table1, receiver, N(allyson), "allyson's info", strlen("allyson's info")); - - - // find - { - uint64_t prim = 0; - int itr_next = db_next_i64(alice_itr, &prim); - int itr_next_expected = db_find_i64(receiver, receiver, table1, N(allyson)); - eosio_assert(itr_next == itr_next_expected && prim == N(allyson), "primary_i64_general - db_find_i64" ); - itr_next = db_next_i64(itr_next, &prim); - itr_next_expected = db_find_i64(receiver, receiver, table1, N(bob)); - eosio_assert(itr_next == itr_next_expected && prim == N(bob), "primary_i64_general - db_next_i64"); - } - - // next - { - int charlie_itr = db_find_i64(receiver, receiver, table1, N(charlie)); - // nothing after charlie - uint64_t prim = 0; - int end_itr = db_next_i64(charlie_itr, &prim); - eosio_assert(end_itr < 0, "primary_i64_general - db_next_i64"); - // prim didn't change - eosio_assert(prim == 0, "primary_i64_general - db_next_i64"); - } - - // previous - { - int charlie_itr = db_find_i64(receiver, receiver, table1, N(charlie)); - uint64_t prim = 0; - int itr_prev = db_previous_i64(charlie_itr, &prim); - int itr_prev_expected = db_find_i64(receiver, receiver, table1, N(bob)); - eosio_assert(itr_prev == itr_prev_expected && prim == N(bob), "primary_i64_general - db_previous_i64"); - - itr_prev = db_previous_i64(itr_prev, &prim); - itr_prev_expected = db_find_i64(receiver, receiver, table1, N(allyson)); - eosio_assert(itr_prev == itr_prev_expected && prim == N(allyson), "primary_i64_general - db_previous_i64"); - - itr_prev = db_previous_i64(itr_prev, &prim); - itr_prev_expected = db_find_i64(receiver, receiver, table1, N(alice)); - eosio_assert(itr_prev == itr_prev_expected && prim == N(alice), "primary_i64_general - db_previous_i64"); - - itr_prev = db_previous_i64(itr_prev, &prim); - eosio_assert(itr_prev < 0 && prim == N(alice), "primary_i64_general - db_previous_i64"); - } - - // remove - { - int itr = db_find_i64(receiver, receiver, table1, N(alice)); - eosio_assert(itr >= 0, "primary_i64_general - db_find_i64"); - db_remove_i64(itr); - itr = db_find_i64(receiver, receiver, table1, N(alice)); - eosio_assert(itr < 0, "primary_i64_general - db_find_i64"); - } - - // get - { - int itr = db_find_i64(receiver, receiver, table1, N(bob)); - eosio_assert(itr >= 0, ""); - uint32_t buffer_len = 5; - char value[50]; - auto len = db_get_i64(itr, value, buffer_len); - value[buffer_len] = '\0'; - std::string s(value); - eosio_assert(uint32_t(len) == buffer_len, "primary_i64_general - db_get_i64"); - eosio_assert(s == "bob's", "primary_i64_general - db_get_i64 - 5"); - - buffer_len = 20; - len = db_get_i64(itr, value, 0); - len = db_get_i64(itr, value, (uint32_t)len); - value[len] = '\0'; - std::string sfull(value); - eosio_assert(sfull == "bob's info", "primary_i64_general - db_get_i64 - full"); - } - - // update - { - int itr = db_find_i64(receiver, receiver, table1, N(bob)); - eosio_assert(itr >= 0, ""); - const char* new_value = "bob's new info"; - uint32_t new_value_len = strlen(new_value); - db_update_i64(itr, receiver, new_value, new_value_len); - char ret_value[50]; - db_get_i64(itr, ret_value, new_value_len); - ret_value[new_value_len] = '\0'; - std::string sret(ret_value); - eosio_assert(sret == "bob's new info", "primary_i64_general - db_update_i64"); - } -} - -void test_db::primary_i64_lowerbound(uint64_t receiver, uint64_t code, uint64_t action) -{ - (void)code;(void)action; - auto table = N(mytable); - db_store_i64(receiver, table, receiver, N(alice), "alice's info", strlen("alice's info")); - db_store_i64(receiver, table, receiver, N(bob), "bob's info", strlen("bob's info")); - db_store_i64(receiver, table, receiver, N(charlie), "charlie's info", strlen("charlies's info")); - db_store_i64(receiver, table, receiver, N(emily), "emily's info", strlen("emily's info")); - db_store_i64(receiver, table, receiver, N(allyson), "allyson's info", strlen("allyson's info")); - db_store_i64(receiver, table, receiver, N(joe), "nothing here", strlen("nothing here")); - - const std::string err = "primary_i64_lowerbound"; - - { - int lb = db_lowerbound_i64(receiver, receiver, table, N(alice)); - eosio_assert(lb == db_find_i64(receiver, receiver, table, N(alice)), err.c_str()); - } - { - int lb = db_lowerbound_i64(receiver, receiver, table, N(billy)); - eosio_assert(lb == db_find_i64(receiver, receiver, table, N(bob)), err.c_str()); - } - { - int lb = db_lowerbound_i64(receiver, receiver, table, N(frank)); - eosio_assert(lb == db_find_i64(receiver, receiver, table, N(joe)), err.c_str()); - } - { - int lb = db_lowerbound_i64(receiver, receiver, table, N(joe)); - eosio_assert(lb == db_find_i64(receiver, receiver, table, N(joe)), err.c_str()); - } - { - int lb = db_lowerbound_i64(receiver, receiver, table, N(kevin)); - eosio_assert(lb < 0, err.c_str()); - } -} - -void test_db::primary_i64_upperbound(uint64_t receiver, uint64_t code, uint64_t action) -{ - (void)code;(void)action; - auto table = N(mytable); - const std::string err = "primary_i64_upperbound"; - { - int ub = db_upperbound_i64(receiver, receiver, table, N(alice)); - eosio_assert(ub == db_find_i64(receiver, receiver, table, N(allyson)), err.c_str()); - } - { - int ub = db_upperbound_i64(receiver, receiver, table, N(billy)); - eosio_assert(ub == db_find_i64(receiver, receiver, table, N(bob)), err.c_str()); - } - { - int ub = db_upperbound_i64(receiver, receiver, table, N(frank)); - eosio_assert(ub == db_find_i64(receiver, receiver, table, N(joe)), err.c_str()); - } - { - int ub = db_upperbound_i64(receiver, receiver, table, N(joe)); - eosio_assert(ub < 0, err.c_str()); - } - { - int ub = db_upperbound_i64(receiver, receiver, table, N(kevin)); - eosio_assert(ub < 0, err.c_str()); - } -} - -void test_db::idx64_general(uint64_t receiver, uint64_t code, uint64_t action) -{ - (void)code;(void)action; - const auto table = N(myindextable); - - typedef uint64_t secondary_type; - - struct record { - uint64_t ssn; - secondary_type name; - }; - - record records[] = {{265, N(alice)}, - {781, N(bob)}, - {234, N(charlie)}, - {650, N(allyson)}, - {540, N(bob)}, - {976, N(emily)}, - {110, N(joe)} - }; - - for (uint32_t i = 0; i < sizeof(records)/sizeof(records[0]); ++i) { - db_idx64_store(receiver, table, receiver, records[i].ssn, &records[i].name); - } - - // find_primary - { - secondary_type sec = 0; - int itr = db_idx64_find_primary(receiver, receiver, table, &sec, 999); - eosio_assert(itr < 0 && sec == 0, "idx64_general - db_idx64_find_primary"); - itr = db_idx64_find_primary(receiver, receiver, table, &sec, 110); - eosio_assert(itr >= 0 && sec == N(joe), "idx64_general - db_idx64_find_primary"); - uint64_t prim_next = 0; - int itr_next = db_idx64_next(itr, &prim_next); - eosio_assert(itr_next < 0 && prim_next == 0, "idx64_general - db_idx64_find_primary"); - } - - // iterate forward starting with charlie - { - secondary_type sec = 0; - int itr = db_idx64_find_primary(receiver, receiver, table, &sec, 234); - eosio_assert(itr >= 0 && sec == N(charlie), "idx64_general - db_idx64_find_primary"); - - uint64_t prim_next = 0; - int itr_next = db_idx64_next(itr, &prim_next); - eosio_assert(itr_next >= 0 && prim_next == 976, "idx64_general - db_idx64_next"); - secondary_type sec_next = 0; - int itr_next_expected = db_idx64_find_primary(receiver, receiver, table, &sec_next, prim_next); - eosio_assert(itr_next == itr_next_expected && sec_next == N(emily), "idx64_general - db_idx64_next"); - - itr_next = db_idx64_next(itr_next, &prim_next); - eosio_assert(itr_next >= 0 && prim_next == 110, "idx64_general - db_idx64_next"); - itr_next_expected = db_idx64_find_primary(receiver, receiver, table, &sec_next, prim_next); - eosio_assert(itr_next == itr_next_expected && sec_next == N(joe), "idx64_general - db_idx64_next"); - - itr_next = db_idx64_next(itr_next, &prim_next); - eosio_assert(itr_next < 0 && prim_next == 110, "idx64_general - db_idx64_next"); - } - - // iterate backward staring with second bob - { - secondary_type sec = 0; - int itr = db_idx64_find_primary(receiver, receiver, table, &sec, 781); - eosio_assert(itr >= 0 && sec == N(bob), "idx64_general - db_idx64_find_primary"); - - uint64_t prim_prev = 0; - int itr_prev = db_idx64_previous(itr, &prim_prev); - eosio_assert(itr_prev >= 0 && prim_prev == 540, "idx64_general - db_idx64_previous"); - - secondary_type sec_prev = 0; - int itr_prev_expected = db_idx64_find_primary(receiver, receiver, table, &sec_prev, prim_prev); - eosio_assert(itr_prev == itr_prev_expected && sec_prev == N(bob), "idx64_general - db_idx64_previous"); - - itr_prev = db_idx64_previous(itr_prev, &prim_prev); - eosio_assert(itr_prev >= 0 && prim_prev == 650, "idx64_general - db_idx64_previous"); - itr_prev_expected = db_idx64_find_primary(receiver, receiver, table, &sec_prev, prim_prev); - eosio_assert(itr_prev == itr_prev_expected && sec_prev == N(allyson), "idx64_general - db_idx64_previous"); - - itr_prev = db_idx64_previous(itr_prev, &prim_prev); - eosio_assert(itr_prev >= 0 && prim_prev == 265, "idx64_general - db_idx64_previous"); - itr_prev_expected = db_idx64_find_primary(receiver, receiver, table, &sec_prev, prim_prev); - eosio_assert(itr_prev == itr_prev_expected && sec_prev == N(alice), "idx64_general - db_idx64_previous"); - - itr_prev = db_idx64_previous(itr_prev, &prim_prev); - eosio_assert(itr_prev < 0 && prim_prev == 265, "idx64_general - db_idx64_previous"); - } - - // find_secondary - { - uint64_t prim = 0; - auto sec = N(bob); - int itr = db_idx64_find_secondary(receiver, receiver, table, &sec, &prim); - eosio_assert(itr >= 0 && prim == 540, "idx64_general - db_idx64_find_secondary"); - - sec = N(emily); - itr = db_idx64_find_secondary(receiver, receiver, table, &sec, &prim); - eosio_assert(itr >= 0 && prim == 976, "idx64_general - db_idx64_find_secondary"); - - sec = N(frank); - itr = db_idx64_find_secondary(receiver, receiver, table, &sec, &prim); - eosio_assert(itr < 0 && prim == 976, "idx64_general - db_idx64_find_secondary"); - } - - // update and remove - { - auto one_more_bob = N(bob); - const uint64_t ssn = 421; - int itr = db_idx64_store(receiver, table, receiver, ssn, &one_more_bob); - auto new_name = N(billy); - db_idx64_update(itr, receiver, &new_name); - secondary_type sec = 0; - int sec_itr = db_idx64_find_primary(receiver, receiver, table, &sec, ssn); - eosio_assert(sec_itr == itr && sec == new_name, "idx64_general - db_idx64_update"); - db_idx64_remove(itr); - int itrf = db_idx64_find_primary(receiver, receiver, table, &sec, ssn); - eosio_assert(itrf < 0, "idx64_general - db_idx64_remove"); - } -} - -void test_db::idx64_lowerbound(uint64_t receiver, uint64_t code, uint64_t action) -{ - (void)code;(void)action; - const auto table = N(myindextable); - typedef uint64_t secondary_type; - const std::string err = "idx64_lowerbound"; - { - secondary_type lb_sec = N(alice); - uint64_t lb_prim = 0; - const uint64_t ssn = 265; - int lb = db_idx64_lowerbound(receiver, receiver, table, &lb_sec, &lb_prim); - eosio_assert(lb_prim == ssn && lb_sec == N(alice), err.c_str()); - eosio_assert(lb == db_idx64_find_primary(receiver, receiver, table, &lb_sec, ssn), err.c_str()); - } - { - secondary_type lb_sec = N(billy); - uint64_t lb_prim = 0; - const uint64_t ssn = 540; - int lb = db_idx64_lowerbound(receiver, receiver, table, &lb_sec, &lb_prim); - eosio_assert(lb_prim == ssn && lb_sec == N(bob), err.c_str()); - eosio_assert(lb == db_idx64_find_primary(receiver, receiver, table, &lb_sec, ssn), err.c_str()); - } - { - secondary_type lb_sec = N(joe); - uint64_t lb_prim = 0; - const uint64_t ssn = 110; - int lb = db_idx64_lowerbound(receiver, receiver, table, &lb_sec, &lb_prim); - eosio_assert(lb_prim == ssn && lb_sec == N(joe), err.c_str()); - eosio_assert(lb == db_idx64_find_primary(receiver, receiver, table, &lb_sec, ssn), err.c_str()); - } - { - secondary_type lb_sec = N(kevin); - uint64_t lb_prim = 0; - int lb = db_idx64_lowerbound(receiver, receiver, table, &lb_sec, &lb_prim); - eosio_assert(lb_prim == 0 && lb_sec == N(kevin), err.c_str()); - eosio_assert(lb < 0, ""); - } -} - -void test_db::idx64_upperbound(uint64_t receiver, uint64_t code, uint64_t action) -{ - (void)code;(void)action; - const auto table = N(myindextable); - typedef uint64_t secondary_type; - const std::string err = "idx64_upperbound"; - { - secondary_type ub_sec = N(alice); - uint64_t ub_prim = 0; - const uint64_t allyson_ssn = 650; - int ub = db_idx64_upperbound(receiver, receiver, table, &ub_sec, &ub_prim); - eosio_assert(ub_prim == allyson_ssn && ub_sec == N(allyson), ""); - eosio_assert(ub == db_idx64_find_primary(receiver, receiver, table, &ub_sec, allyson_ssn), err.c_str()); - } - { - secondary_type ub_sec = N(billy); - uint64_t ub_prim = 0; - const uint64_t bob_ssn = 540; - int ub = db_idx64_upperbound(receiver, receiver, table, &ub_sec, &ub_prim); - eosio_assert(ub_prim == bob_ssn && ub_sec == N(bob), ""); - eosio_assert(ub == db_idx64_find_primary(receiver, receiver, table, &ub_sec, bob_ssn), err.c_str()); - } - { - secondary_type ub_sec = N(joe); - uint64_t ub_prim = 0; - int ub = db_idx64_upperbound(receiver, receiver, table, &ub_sec, &ub_prim); - eosio_assert(ub_prim == 0 && ub_sec == N(joe), err.c_str()); - eosio_assert(ub < 0, err.c_str()); - } - { - secondary_type ub_sec = N(kevin); - uint64_t ub_prim = 0; - int ub = db_idx64_upperbound(receiver, receiver, table, &ub_sec, &ub_prim); - eosio_assert(ub_prim == 0 && ub_sec == N(kevin), err.c_str()); - eosio_assert(ub < 0, err.c_str()); - } -} - -void test_db::test_invalid_access(uint64_t receiver, uint64_t code, uint64_t action) -{ - (void)code;(void)action; - auto act = eosio::get_action(1, 0); - auto ia = eosio::unpack(act.data); - uint64_t scope = N(access); - uint64_t table = scope; - uint64_t pk = scope; - - int32_t itr = -1; - uint64_t value = 0; - switch( ia.index ) { - case 1: - itr = db_idx64_find_primary(ia.code, scope, table, &value, pk); - break; - case 0: - default: - itr = db_find_i64(ia.code, scope, table, pk); - break; - } - if( ia.store ) { - uint64_t value_to_store = ia.val; - if( itr < 0 ) { - switch( ia.index ) { - case 1: - db_idx64_store( scope, table, receiver, pk, &value_to_store ); - break; - case 0: - default: - db_store_i64( scope, table, receiver, pk, &value_to_store, sizeof(value_to_store) ); - break; - } - } else { - switch( ia.index ) { - case 1: - db_idx64_update( itr, receiver, &value_to_store); - break; - case 0: - default: - db_update_i64( itr, receiver, &value_to_store, sizeof(value_to_store) ); - break; - } - } - //eosio::print("test_invalid_access: stored ", value_to_store, "\n"); - } else { - eosio_assert( itr >= 0, "test_invalid_access: could not find row" ); - switch( ia.index ) { - case 1: - break; - case 0: - default: - eosio_assert( db_get_i64( itr, &value, sizeof(value) ) == sizeof(value), - "test_invalid_access: value in primary table was incorrect size" ); - break; - } - //eosio::print("test_invalid_access: expected ", ia.val, " and retrieved ", value, "\n"); - eosio_assert( value == ia.val, "test_invalid_access: value did not match" ); - } -} - -void test_db::idx_double_nan_create_fail(uint64_t receiver, uint64_t, uint64_t) { - double x = 0.0; - x = x / x; // create a NaN - db_idx_double_store( N(nan), N(nan), receiver, 0, &x); // should fail -} - -void test_db::idx_double_nan_modify_fail(uint64_t receiver, uint64_t, uint64_t) { - double x = 0.0; - db_idx_double_store( N(nan), N(nan), receiver, 0, &x); - auto itr = db_idx_double_find_primary(receiver, N(nan), N(nan), &x, 0); - x = 0.0; - x = x / x; // create a NaN - db_idx_double_update(itr, 0, &x); // should fail -} - -void test_db::idx_double_nan_lookup_fail(uint64_t receiver, uint64_t, uint64_t) { - auto act = eosio::get_action(1, 0); - auto lookup_type = eosio::unpack(act.data); - - uint64_t pk; - double x = 0.0; - db_idx_double_store( N(nan), N(nan), receiver, 0, &x); - x = x / x; // create a NaN - switch( lookup_type ) { - case 0: // find - db_idx_double_find_secondary(receiver, N(nan), N(nan), &x, &pk); - break; - case 1: // lower bound - db_idx_double_lowerbound(receiver, N(nan), N(nan), &x, &pk); - break; - case 2: // upper bound - db_idx_double_upperbound(receiver, N(nan), N(nan), &x, &pk); - break; - default: - eosio_assert( false, "idx_double_nan_lookup_fail: unexpected lookup_type" ); - } -} - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wcast-align" - -void test_db::misaligned_secondary_key256_tests(uint64_t /* receiver */, uint64_t, uint64_t) { - auto key = eosio::key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 42ULL); - char* ptr = (char*)(&key); - ptr += 1; - // test that store doesn't crash on unaligned data - db_idx256_store( N(testapi), N(testtable), N(testapi), 1, (uint128_t*)(ptr), 2 ); - // test that find_primary doesn't crash on unaligned data - db_idx256_find_primary( N(testapi), N(testtable), N(testapi), (uint128_t*)(ptr), 2, 0); -} - -#pragma clang diagnostic pop diff --git a/contracts/test_api_mem/CMakeLists.txt b/contracts/test_api_mem/CMakeLists.txt deleted file mode 100644 index fc0d40f21e4..00000000000 --- a/contracts/test_api_mem/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -#set the MAX_MEMORY to 1MB for these tests; there were lots of memory unit tests that assume such - -add_wast_executable( TARGET test_api_mem - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} - MAX_MEMORY 1048576 -) diff --git a/contracts/test_api_mem/test_api_mem.cpp b/contracts/test_api_mem/test_api_mem.cpp deleted file mode 100644 index ce59249425d..00000000000 --- a/contracts/test_api_mem/test_api_mem.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include "../test_api/test_api.hpp" - -#include "test_extended_memory.cpp" -#include "test_memory.cpp" - -extern "C" { - void apply( uint64_t /*receiver*/, uint64_t code, uint64_t action ) { - require_auth(code); - - //test_extended_memory - WASM_TEST_HANDLER(test_extended_memory, test_initial_buffer); - WASM_TEST_HANDLER(test_extended_memory, test_page_memory); - WASM_TEST_HANDLER(test_extended_memory, test_page_memory_exceeded); - WASM_TEST_HANDLER(test_extended_memory, test_page_memory_negative_bytes); - - //test_memory - WASM_TEST_HANDLER(test_memory, test_memory_allocs); - WASM_TEST_HANDLER(test_memory, test_memory_hunk); - WASM_TEST_HANDLER(test_memory, test_memory_hunks); - WASM_TEST_HANDLER(test_memory, test_memory_hunks_disjoint); - WASM_TEST_HANDLER(test_memory, test_memset_memcpy); - WASM_TEST_HANDLER(test_memory, test_memcpy_overlap_start); - WASM_TEST_HANDLER(test_memory, test_memcpy_overlap_end); - WASM_TEST_HANDLER(test_memory, test_memcmp); - WASM_TEST_HANDLER(test_memory, test_outofbound_0); - WASM_TEST_HANDLER(test_memory, test_outofbound_1); - WASM_TEST_HANDLER(test_memory, test_outofbound_2); - WASM_TEST_HANDLER(test_memory, test_outofbound_3); - WASM_TEST_HANDLER(test_memory, test_outofbound_4); - WASM_TEST_HANDLER(test_memory, test_outofbound_5); - WASM_TEST_HANDLER(test_memory, test_outofbound_6); - WASM_TEST_HANDLER(test_memory, test_outofbound_7); - WASM_TEST_HANDLER(test_memory, test_outofbound_8); - WASM_TEST_HANDLER(test_memory, test_outofbound_9); - WASM_TEST_HANDLER(test_memory, test_outofbound_10); - WASM_TEST_HANDLER(test_memory, test_outofbound_11); - WASM_TEST_HANDLER(test_memory, test_outofbound_12); - WASM_TEST_HANDLER(test_memory, test_outofbound_13); - - //unhandled test call - eosio_assert(false, "Unknown Test"); - } - -} diff --git a/contracts/test_api_mem/test_extended_memory.cpp b/contracts/test_api_mem/test_extended_memory.cpp deleted file mode 100644 index 48740a1421f..00000000000 --- a/contracts/test_api_mem/test_extended_memory.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include -#include -#include "../test_api/test_api.hpp" - -//using namespace eosio; - -void verify( const void* const ptr, const uint32_t val, const uint32_t size) { - const char* char_ptr = (const char*)ptr; - for (uint32_t i = 0; i < size; ++i) - eosio_assert(static_cast(static_cast(char_ptr[i])) == val, "buffer slot doesn't match"); -} - -#define PRINT_PTR(x) prints("PTR : "); print((uint32_t)x, 4); prints("\n"); - -void test_extended_memory::test_page_memory() { - constexpr uint32_t _64K = 64*1024; - /* - * Test test_extended_memory::test_page_memory `ensure initial page size` - * Given I have not tried to increase the "program break" yet, - * when I call sbrk(0), then I should get the end of the first page, which should be 64K. - */ - auto prev = sbrk(0); - eosio_assert(reinterpret_cast(prev) == _64K, "Should initially have 1 64K page allocated"); - - /* - * Test test_extended_memory::test_page_memory `ensure sbrk returns previous end of program break` - * Given I have not tried to increase memory, - * when I call sbrk(1), then I should get the end of the first page, which should be 64K. - */ - prev = sbrk(1); - eosio_assert(reinterpret_cast(prev) == _64K, "Should still be pointing to the end of the 1st 64K page"); - - /* - * Test test_extended_memory::test_page_memory `ensure sbrk aligns allocations` - * Given that I allocated 1 byte via sbrk, - * when I call sbrk(2), then I should get 8 bytes past the previous end because of maintaining 8 byte alignment. - */ - prev = sbrk(2); - eosio_assert(reinterpret_cast(prev) == _64K+8, "Should point to 8 past the end of 1st 64K page"); - - /* - * Test test_extended_memory::test_page_memory `ensure sbrk aligns allocations 2` - * Given that I allocated 2 bytes via sbrk, - * when I call sbrk(_64K-17), then I should get 8 bytes past the previous end because of maintaining 8 byte alignment. - */ - prev = sbrk(_64K - 17); - eosio_assert(reinterpret_cast(prev) == _64K+16, "Should point to 16 past the end of the 1st 64K page"); - - prev = sbrk(1); - eosio_assert(reinterpret_cast(prev) == 2*_64K, "Should point to the end of the 2nd 64K page"); - - prev = sbrk(_64K); - eosio_assert(reinterpret_cast(prev) == 2*_64K+8, "Should point to 8 past the end of the 2nd 64K page"); - - prev = sbrk(_64K - 15); - eosio_assert(reinterpret_cast(prev) == 3*_64K+8, "Should point to 8 past the end of the 3rd 64K page"); - - prev = sbrk(2*_64K-1); - eosio_assert(reinterpret_cast(prev) == 4*_64K, "Should point to the end of the 4th 64K page"); - - prev = sbrk(2*_64K); - eosio_assert(reinterpret_cast(prev) == 6*_64K, "Should point to the end of the 6th 64K page"); - - prev = sbrk(2*_64K+1); - eosio_assert(reinterpret_cast(prev) == 8*_64K, "Should point to the end of the 8th 64K page"); - - prev = sbrk(6*_64K-15); - eosio_assert(reinterpret_cast(prev) == 10*_64K+8, "Should point to 8 past the end of the 10th 64K page"); - - prev = sbrk(0); - eosio_assert(reinterpret_cast(prev) == 16*_64K, "Should point to 8 past the end of the 16th 64K page"); -} - -void test_extended_memory::test_page_memory_exceeded() { - /* - * Test test_extended_memory::test_page_memory_exceeded `ensure sbrk won't allocation more than 1M of memory` - * Given that I have not tried to increase allocated memory, - * when I increase allocated memory with sbrk(15*64K), then I should get the end of the first page. - */ - auto prev = sbrk(15*64*1024); - eosio_assert(reinterpret_cast(prev) == 64*1024, "Should have allocated 1M of memory"); - - /* - * Test test_extended_memory::test_page_memory_exceeded `ensure sbrk won't allocation more than 1M of memory 2` - */ - prev = sbrk(0); - eosio_assert(reinterpret_cast(prev) == (1024*1024), "Should have allocated 1M of memory"); - - eosio_assert(reinterpret_cast(sbrk(1)) == -1, "sbrk should have failed for trying to allocate too much memory"); -} - -void test_extended_memory::test_page_memory_negative_bytes() { - eosio_assert(reinterpret_cast(sbrk((uint32_t)-1)) == -1, "Should have errored for trying to remove memory"); -} - -void test_extended_memory::test_initial_buffer() { - // initial buffer should be exhausted at 8192 bytes - // 8176 left ( 12 + ptr header ) - char* ptr1 = (char*)malloc(12); - eosio_assert(ptr1 != nullptr, "should have allocated 12 char buffer"); - - char* ptr2 = (char*)malloc(8159); - eosio_assert(ptr2 != nullptr, "should have allocate 8159 char buffer"); - - // should overrun initial heap, allocated in 2nd heap - char* ptr3 = (char*)malloc(20); - eosio_assert(ptr3 != nullptr, "should have allocated a 20 char buffer"); - verify(ptr3, 0, 20); - -} diff --git a/contracts/test_api_mem/test_memory.cpp b/contracts/test_api_mem/test_memory.cpp deleted file mode 100644 index 3e1eb52243e..00000000000 --- a/contracts/test_api_mem/test_memory.cpp +++ /dev/null @@ -1,396 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ - -#include - - -void verify_mem(const void* const ptr, const uint32_t val, const uint32_t size) -{ - const char* char_ptr = (const char*)ptr; - for (uint32_t i = 0; i < size; ++i) - { - eosio_assert(static_cast(static_cast(char_ptr[i])) == val, "buf slot doesn't match"); - } -} - -/* -void print(const void* const ptr, const uint32_t size) -{ - const char* char_ptr = (const char*)ptr; - eosio::print("\n{ "); - for (uint32_t i = 0; i < size; ++i) - { - const char* delim = (i % 8 == 7) ? ", " : " "; - eosio::print("", static_cast(static_cast(char_ptr[i])), delim); - } - eosio::print("}\n"); -} -*/ - -/* -* malloc and realloc always allocate on 8 byte boundaries based off of total allocation, so -* if the requested size + the 2 byte header is not divisible by 8, then the allocated space -* will be larger than the requested size -*/ -void test_memory::test_memory_allocs() -{ - char* ptr1 = (char*)malloc(0); - eosio_assert(ptr1 == nullptr, "should not have allocated a 0 char buf"); - - // 20 chars - 20 + 4(header) which is divisible by 8 - ptr1 = (char*)malloc(20); - eosio_assert(ptr1 != nullptr, "should have allocated a 20 char buf"); - verify_mem(ptr1, 0, 20); - // existing memory layout -> |24| - - // 36 chars allocated - 30 + 4 plus an extra 6 to be divisible by 8 - char* ptr1_realloc = (char*)realloc(ptr1, 30); - eosio_assert(ptr1_realloc != nullptr, "should have returned a 30 char buf"); - eosio_assert(ptr1_realloc == ptr1, "should have enlarged the 20 char buf"); - // existing memory layout -> |40| - - // 20 chars allocated - char* ptr2 = (char*)malloc(20); - eosio_assert(ptr2 != nullptr, "should have allocated another 20 char buf"); - eosio_assert(ptr1 + 36 < ptr2, "20 char buf should have been created after ptr1"); // test specific to implementation (can remove for refactor) - verify_mem(ptr1, 0, 36); - eosio_assert(ptr1[36] != 0, "should not have empty bytes following since block allocated"); // test specific to implementation (can remove for refactor) - // existing memory layout -> |40|24| - - //shrink the buffer - ptr1[14] = 0x7e; - // 20 chars allocated (still) - ptr1_realloc = (char*)realloc(ptr1, 15); - eosio_assert(ptr1_realloc != nullptr, "should have returned a 15 char buf"); - eosio_assert(ptr1_realloc == ptr1, "should have shrunk the reallocated 30 char buf"); - verify_mem(ptr1, 0, 14); // test specific to implementation (can remove for refactor) - eosio_assert(ptr1[14] == 0x7e, "remaining 15 chars of buf should be untouched"); - // existing memory layout -> |24(shrunk)|16(freed)|24| - - //same size the buffer (verify corner case) - // 20 chars allocated (still) - ptr1_realloc = (char*)realloc(ptr1, 15); - eosio_assert(ptr1_realloc != nullptr, "should have returned a reallocated 15 char buf"); - eosio_assert(ptr1_realloc == ptr1, "should have reallocated 15 char buf as the same buf"); - eosio_assert(ptr1[14] == 0x7e, "remaining 15 chars of buf should be untouched for unchanged buf"); - - //same size as max allocated buffer -- test specific to implementation (can remove for refactor) - ptr1_realloc = (char*)realloc(ptr1, 30); - eosio_assert(ptr1_realloc != nullptr, "should have returned a 30 char buf"); - eosio_assert(ptr1_realloc == ptr1, "should have increased the buf back to orig max"); //test specific to implementation (can remove for refactor) - eosio_assert(ptr1[14] == 0x7e, "remaining 15 chars of buf should be untouched for expanded buf"); - - //increase buffer beyond (indicated) allocated space - // 36 chars allocated (still) - ptr1_realloc = (char*)realloc(ptr1, 36); - eosio_assert(ptr1_realloc != nullptr, "should have returned a 36 char buf"); - eosio_assert(ptr1_realloc == ptr1, "should have increased char buf to actual size"); // test specific to implementation (can remove for refactor) - - //increase buffer beyond allocated space - ptr1[35] = 0x7f; - // 44 chars allocated - 37 + 4 plus an extra 7 to be divisible by 8 - ptr1_realloc = (char*)realloc(ptr1, 37); - eosio_assert(ptr1_realloc != nullptr, "should have returned a 37 char buf"); - eosio_assert(ptr1_realloc != ptr1, "should have had to create new 37 char buf from 36 char buf"); - eosio_assert(ptr2 < ptr1_realloc, "should have been created after ptr2"); // test specific to implementation (can remove for refactor) - eosio_assert(ptr1_realloc[14] == 0x7e, "orig 36 char buf's content should be copied"); - eosio_assert(ptr1_realloc[35] == 0x7f, "orig 36 char buf's content should be copied"); - - //realloc with nullptr - char* nullptr_realloc = (char*)realloc(nullptr, 50); - eosio_assert(nullptr_realloc != nullptr, "should have returned a 50 char buf and ignored nullptr"); - eosio_assert(ptr1_realloc < nullptr_realloc, "should have created after ptr1_realloc"); // test specific to implementation (can remove for refactor) - - //realloc with invalid ptr - char* invalid_ptr_realloc = (char*)realloc(nullptr_realloc + 4, 10); - eosio_assert(invalid_ptr_realloc != nullptr, "should have returned a 10 char buf and ignored invalid ptr"); - eosio_assert(nullptr_realloc < invalid_ptr_realloc, "should have created invalid_ptr_realloc after nullptr_realloc"); // test specific to implementation (can remove for refactor) -} - -// this test verifies that malloc can allocate 15 64K pages and treat them as one big heap space (if sbrk is not called in the mean time) -void test_memory::test_memory_hunk() -{ - // try to allocate the largest buffer we can, which is 15 contiguous 64K pages (with the 4 char space for the ptr header) - char* ptr1 = (char*)malloc(15 * 64 * 1024 - 4); - eosio_assert(ptr1 != nullptr, "should have allocated a ~983K char buf"); -} - -void test_memory::test_memory_hunks() -{ - // leave 784 bytes of initial buffer to allocate later (rounds up to nearest 8 byte boundary, - // 16 bytes bigger than remainder left below in 15 64K page heap)) - char* ptr1 = (char*)malloc(7404); - eosio_assert(ptr1 != nullptr, "should have allocated a 7404 char buf"); - - char* last_ptr = nullptr; - // 96 * (10 * 1024 - 15) => 15 ~64K pages with 768 byte buffer left to allocate - for (int i = 0; i < 96; ++i) - { - char* ptr2 = (char*)malloc(10 * 1024 - 15); - eosio_assert(ptr2 != nullptr, "should have allocated a ~10K char buf"); - if (last_ptr != nullptr) - { - // - 15 rounds to -8 - eosio_assert(last_ptr + 10 * 1024 - 8 == ptr2, "should allocate the very next ptr"); // test specific to implementation (can remove for refactor) - } - - last_ptr = ptr2; - } - - // try to allocate a buffer slightly larger than the remaining buffer| 765 + 4 rounds to 776 - char* ptr3 = (char*)malloc(765); - eosio_assert(ptr3 != nullptr, "should have allocated a 772 char buf"); - eosio_assert(ptr1 + 7408 == ptr3, "should allocate the very next ptr after ptr1 in initial heap"); // test specific to implementation (can remove for refactor) - - // use all but 8 chars - char* ptr4 = (char*)malloc(764); - eosio_assert(ptr4 != nullptr, "should have allocated a 764 char buf"); - eosio_assert(last_ptr + 10 * 1024 - 8 == ptr4, "should allocate the very next ptr after last_ptr at end of contiguous heap"); // test specific to implementation (can remove for refactor) - - // use up remaining 8 chars - char* ptr5 = (char*)malloc(4); - eosio_assert(ptr5 != nullptr, "should have allocated a 4 char buf"); - eosio_assert(ptr3 + 776 == ptr5, "should allocate the very next ptr after ptr3 in initial heap"); // test specific to implementation (can remove for refactor) - - // nothing left to allocate - char* ptr6 = (char*)malloc(4); - eosio_assert(ptr6 == nullptr, "should not have allocated a char buf"); -} - -void test_memory::test_memory_hunks_disjoint() -{ - // leave 8 bytes of initial buffer to allocate later - char* ptr1 = (char*)malloc(8 * 1024 - 12); - eosio_assert(ptr1 != nullptr, "should have allocated a 8184 char buf"); - - // can only make 14 extra (64K) heaps for malloc, since calls to sbrk will eat up part - char* loop_ptr1[14]; - // 14 * (64 * 1024 - 28) => 14 ~64K pages with each page having 24 bytes left to allocate - for (int i = 0; i < 14; ++i) - { - // allocates a new heap for each request, since sbrk call doesn't allow contiguous heaps to grow - loop_ptr1[i] = (char*)malloc(64 * 1024 - 28); - eosio_assert(loop_ptr1[i] != nullptr, "should have allocated a 64K char buf"); - - 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 - // will leave 8 bytes to allocate later (verifying that we circle back in the list - char* ptr2 = (char*)malloc(65412); - eosio_assert(ptr2 != nullptr, "should have allocated a 65412 char buf"); - - char* loop_ptr2[14]; - for (int i = 0; i < 14; ++i) - { - // 12 char buffer to leave 8 bytes for another pass - loop_ptr2[i] = (char*)malloc(12); - eosio_assert(loop_ptr2[i] != nullptr, "should have allocated a 12 char buf"); - eosio_assert(loop_ptr1[i] + 64 * 1024 - 24 == loop_ptr2[i], "loop_ptr2[i] should be very next pointer after loop_ptr1[i]"); - } - - // this shows that searching for free ptrs starts at the last loop to find free memory, not at the begining - char* ptr3 = (char*)malloc(4); - eosio_assert(ptr3 != nullptr, "should have allocated a 4 char buf"); - eosio_assert(loop_ptr2[13] + 16 == ptr3, "should allocate the very next ptr after loop_ptr2[13]"); // test specific to implementation (can remove for refactor) - - char* ptr4 = (char*)malloc(4); - eosio_assert(ptr4 != nullptr, "should have allocated a 4 char buf"); - eosio_assert(ptr2 + 65416 == ptr4, "should allocate the very next ptr after ptr2 in last heap"); // test specific to implementation (can remove for refactor) - - char* ptr5 = (char*)malloc(4); - eosio_assert(ptr5 != nullptr, "should have allocated a 4 char buf"); - eosio_assert(ptr1 + 8184 == ptr5, "should allocate the very next ptr after ptr1 in last heap"); // test specific to implementation (can remove for refactor) - - // will eat up remaining memory (14th heap already used up) - char* loop_ptr3[13]; - for (int i = 0; i < 13; ++i) - { - // 4 char buffer to use up buffer - loop_ptr3[i] = (char*)malloc(4); - eosio_assert(loop_ptr3[i] != nullptr, "should have allocated a 4 char buf"); - eosio_assert(loop_ptr2[i] + 16 == loop_ptr3[i], "loop_ptr3[i] should be very next pointer after loop_ptr2[i]"); - } - - char* ptr6 = (char*)malloc(4); - eosio_assert(ptr6 == nullptr, "should not have allocated a char buf"); - - free(loop_ptr1[3]); - free(loop_ptr2[3]); - free(loop_ptr3[3]); - - char* slot3_ptr[64]; - for (int i = 0; i < 64; ++i) - { - slot3_ptr[i] = (char*)malloc(1020); - eosio_assert(slot3_ptr[i] != nullptr, "should have allocated a 1020 char buf"); - if (i == 0) - eosio_assert(loop_ptr1[3] == slot3_ptr[0], "loop_ptr1[3] should be very next pointer after slot3_ptr[0]"); - else - eosio_assert(slot3_ptr[i - 1] + 1024 == slot3_ptr[i], "slot3_ptr[i] should be very next pointer after slot3_ptr[i-1]"); - } - - char* ptr7 = (char*)malloc(4); - eosio_assert(ptr7 == nullptr, "should not have allocated a char buf"); -} - -void test_memory::test_memset_memcpy() -{ - char buf1[40] = {}; - char buf2[40] = {}; - - verify_mem(buf1, 0, 40); - verify_mem(buf2, 0, 40); - - memset(buf1, 0x22, 20); - verify_mem(buf1, 0x22, 20); - verify_mem(&buf1[20], 0, 20); - - memset(&buf2[20], 0xff, 20); - verify_mem(buf2, 0, 20); - verify_mem(&buf2[20], 0xff, 20); - - memcpy(&buf1[10], &buf2[10], 20); - verify_mem(buf1, 0x22, 10); - verify_mem(&buf1[10], 0, 10); - verify_mem(&buf1[20], 0xff, 10); - verify_mem(&buf1[30], 0, 10); - - memset(&buf1[1], 1, 1); - verify_mem(buf1, 0x22, 1); - verify_mem(&buf1[1], 1, 1); - verify_mem(&buf1[2], 0x22, 8); - - // verify adjacent non-overlapping buffers - char buf3[50] = {}; - memset(&buf3[25], 0xee, 25); - verify_mem(buf3, 0, 25); - memcpy(buf3, &buf3[25], 25); - verify_mem(buf3, 0xee, 50); - - memset(buf3, 0, 25); - verify_mem(&buf3[25], 0xee, 25); - memcpy(&buf3[25], buf3, 25); - verify_mem(buf3, 0, 50); -} - -void test_memory::test_memcpy_overlap_start() -{ - char buf3[99] = {}; - memset(buf3, 0xee, 50); - memset(&buf3[50], 0xff, 49); - memcpy(&buf3[49], buf3, 50); -} - - -void test_memory::test_memcpy_overlap_end() -{ - char buf3[99] = {}; - memset(buf3, 0xee, 50); - memset(&buf3[50], 0xff, 49); - memcpy(buf3, &buf3[49], 50); -} - -void test_memory::test_memcmp() -{ - char buf1[] = "abcde"; - char buf2[] = "abcde"; - int32_t res1 = memcmp(buf1, buf2, 6); - eosio_assert(res1 == 0, "first data should be equal to second data"); - - char buf3[] = "abcde"; - char buf4[] = "fghij"; - int32_t res2 = memcmp(buf3, buf4, 6); - eosio_assert(res2 < 0, "first data should be smaller than second data"); - - char buf5[] = "fghij"; - char buf6[] = "abcde"; - int32_t res3 = memcmp(buf5, buf6, 6); - eosio_assert(res3 > 0, "first data should be larger than second data"); -} - -void test_memory::test_outofbound_0() -{ - memset((char *)0, 0xff, 1024 * 1024 * 1024); // big memory -} - -void test_memory::test_outofbound_1() -{ - memset((char *)16, 0xff, 0xffffffff); // memory wrap around -} - -void test_memory::test_outofbound_2() -{ - char buf[1024] = {0}; - char *ptr = (char *)malloc(1048576); - memcpy(buf, ptr, 1048576); // stack memory out of bound -} - -void test_memory::test_outofbound_3() -{ - char *ptr = (char *)malloc(128); - memset(ptr, 0xcc, 1048576); // heap memory out of bound -} - -template -void test_memory_store() { - T *ptr = (T *)(8192 * 1024 - 1); - ptr[0] = (T)1; -} - -template -void test_memory_load() { - T *ptr = (T *)(8192 * 1024 - 1); - volatile T tmp = ptr[0]; - (void)tmp; -} - -void test_memory::test_outofbound_4() -{ - test_memory_store(); -} -void test_memory::test_outofbound_5() -{ - test_memory_store(); -} -void test_memory::test_outofbound_6() -{ - test_memory_store(); -} -void test_memory::test_outofbound_7() -{ - test_memory_store(); -} -void test_memory::test_outofbound_8() -{ - test_memory_load(); -} -void test_memory::test_outofbound_9() -{ - test_memory_load(); -} -void test_memory::test_outofbound_10() -{ - test_memory_load(); -} -void test_memory::test_outofbound_11() -{ - test_memory_load(); -} - -void test_memory::test_outofbound_12() -{ - volatile unsigned int a = 0xffffffff; - double *ptr = (double *)a; // store with memory wrap - ptr[0] = 1; -} - -void test_memory::test_outofbound_13() -{ - volatile unsigned int a = 0xffffffff; - double *ptr = (double *)a; // load with memory wrap - volatile double tmp = ptr[0]; - (void)tmp; -} diff --git a/contracts/test_api_multi_index/CMakeLists.txt b/contracts/test_api_multi_index/CMakeLists.txt deleted file mode 100644 index b6906b0fb34..00000000000 --- a/contracts/test_api_multi_index/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -add_wast_executable(TARGET test_api_multi_index - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/test_api_multi_index/test_api_multi_index.cpp b/contracts/test_api_multi_index/test_api_multi_index.cpp deleted file mode 100644 index 828a1d75b88..00000000000 --- a/contracts/test_api_multi_index/test_api_multi_index.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include -#include "../test_api/test_api.hpp" - -#include "test_multi_index.cpp" - -extern "C" { - - void apply( uint64_t receiver, uint64_t code, uint64_t action ) { - require_auth(code); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_general); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_store_only); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_check_without_storing); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_require_find_fail); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_require_find_fail_with_msg); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_require_find_sk_fail); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_require_find_sk_fail_with_msg); - WASM_TEST_HANDLER_EX(test_multi_index, idx128_general); - WASM_TEST_HANDLER_EX(test_multi_index, idx128_store_only); - WASM_TEST_HANDLER_EX(test_multi_index, idx128_check_without_storing); - WASM_TEST_HANDLER_EX(test_multi_index, idx128_autoincrement_test); - WASM_TEST_HANDLER_EX(test_multi_index, idx128_autoincrement_test_part1); - WASM_TEST_HANDLER_EX(test_multi_index, idx128_autoincrement_test_part2); - WASM_TEST_HANDLER_EX(test_multi_index, idx256_general); - WASM_TEST_HANDLER_EX(test_multi_index, idx_double_general); - WASM_TEST_HANDLER_EX(test_multi_index, idx_long_double_general); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pk_iterator_exceed_end); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_sk_iterator_exceed_end); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pk_iterator_exceed_begin); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_sk_iterator_exceed_begin); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_pk_ref_to_other_table); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_sk_ref_to_other_table); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_pk_end_itr_to_iterator_to); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_pk_end_itr_to_modify); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_pk_end_itr_to_erase); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_sk_end_itr_to_iterator_to); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_sk_end_itr_to_modify); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_pass_sk_end_itr_to_erase); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_modify_primary_key); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_run_out_of_avl_pk); - WASM_TEST_HANDLER_EX(test_multi_index, idx64_sk_cache_pk_lookup); - WASM_TEST_HANDLER_EX(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 deleted file mode 100644 index cbbe86eb44e..00000000000 --- a/contracts/test_api_multi_index/test_multi_index.cpp +++ /dev/null @@ -1,953 +0,0 @@ -#include -#include "../test_api/test_api.hpp" -#include -#include -#include -#include - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - -namespace _test_multi_index { - - using eosio::key256; - - struct record_idx64 { - uint64_t id; - uint64_t sec; - - auto primary_key()const { return id; } - uint64_t get_secondary()const { return sec; } - - EOSLIB_SERIALIZE( record_idx64, (id)(sec) ) - }; - - struct record_idx128 { - uint64_t id; - uint128_t sec; - - auto primary_key()const { return id; } - uint128_t get_secondary()const { return sec; } - - EOSLIB_SERIALIZE( record_idx128, (id)(sec) ) - }; - - struct record_idx256 { - uint64_t id; - key256 sec; - - auto primary_key()const { return id; } - const key256& get_secondary()const { return sec; } - - EOSLIB_SERIALIZE( record_idx256, (id)(sec) ) - }; - - struct record_idx_double { - uint64_t id; - double sec; - - auto primary_key()const { return id; } - double get_secondary()const { return sec; } - - EOSLIB_SERIALIZE( record_idx_double, (id)(sec) ) - }; - - struct record_idx_long_double { - uint64_t id; - long double sec; - - auto primary_key()const { return id; } - long double get_secondary()const { return sec; } - - EOSLIB_SERIALIZE( record_idx_long_double, (id)(sec) ) - }; - - template - void idx64_store_only(uint64_t receiver) - { - using namespace eosio; - - typedef record_idx64 record; - - record records[] = {{265, N(alice)}, - {781, N(bob)}, - {234, N(charlie)}, - {650, N(allyson)}, - {540, N(bob)}, - {976, N(emily)}, - {110, N(joe)} - }; - size_t num_records = sizeof(records)/sizeof(records[0]); - - // Construct and fill table using multi_index - multi_index > - > table( receiver, receiver ); - - auto payer = receiver; - - for (size_t i = 0; i < num_records; ++i) { - table.emplace( payer, [&]( auto& r ) { - r.id = records[i].id; - r.sec = records[i].sec; - }); - } - } - - template - void idx64_check_without_storing(uint64_t receiver) - { - using namespace eosio; - - typedef record_idx64 record; - - // Load table using multi_index - multi_index > - > table( receiver, receiver ); - - auto payer = receiver; - - auto secondary_index = table.template get_index(); - - // find by primary key - { - auto itr = table.find(999); - eosio_assert(itr == table.end(), "idx64_general - table.find() of non-existing primary key"); - - itr = table.find(976); - eosio_assert(itr != table.end() && itr->sec == N(emily), "idx64_general - table.find() of existing primary key"); - - ++itr; - eosio_assert(itr == table.end(), "idx64_general - increment primary iterator to end"); - - itr = table.require_find(976); - eosio_assert(itr != table.end() && itr->sec == N(emily), "idx64_general - table.require_find() of existing primary key"); - - ++itr; - eosio_assert(itr == table.end(), "idx64_general - increment primary iterator to end"); - } - - // iterate forward starting with charlie - { - auto itr = secondary_index.lower_bound(N(charlie)); - eosio_assert(itr != secondary_index.end() && itr->sec == N(charlie), "idx64_general - secondary_index.lower_bound()"); - - ++itr; - eosio_assert(itr != secondary_index.end() && itr->id == 976 && itr->sec == N(emily), "idx64_general - increment secondary iterator"); - - ++itr; - eosio_assert(itr != secondary_index.end() && itr->id == 110 && itr->sec == N(joe), "idx64_general - increment secondary iterator again"); - - ++itr; - eosio_assert(itr == secondary_index.end(), "idx64_general - increment secondary iterator to end"); - } - - // iterate backward starting with second bob - { - auto pk_itr = table.find(781); - eosio_assert(pk_itr != table.end() && pk_itr->sec == N(bob), "idx64_general - table.find() of existing primary key"); - - auto itr = secondary_index.iterator_to(*pk_itr); - eosio_assert(itr->id == 781 && itr->sec == N(bob), "idx64_general - iterator to existing object in secondary index"); - - --itr; - eosio_assert(itr != secondary_index.end() && itr->id == 540 && itr->sec == N(bob), "idx64_general - decrement secondary iterator"); - - --itr; - eosio_assert(itr != secondary_index.end() && itr->id == 650 && itr->sec == N(allyson), "idx64_general - decrement secondary iterator again"); - - --itr; - eosio_assert(itr == secondary_index.begin() && itr->id == 265 && itr->sec == N(alice), "idx64_general - decrement secondary iterator to beginning"); - } - - // iterate backward starting with emily using const_reverse_iterator - { - std::array pks{{976, 234, 781, 540, 650, 265}}; - - auto pk_itr = pks.begin(); - - auto itr = --std::make_reverse_iterator( secondary_index.find( N(emily) ) ); - for( ; itr != secondary_index.rend(); ++itr ) { - eosio_assert(pk_itr != pks.end(), "idx64_general - unexpected continuation of secondary index in reverse iteration"); - eosio_assert(*pk_itr == itr->id, "idx64_general - primary key mismatch in reverse iteration"); - ++pk_itr; - } - eosio_assert( pk_itr == pks.end(), "idx64_general - did not iterate backwards through secondary index properly" ); - } - - // require_find secondary key - { - auto itr = secondary_index.require_find(N(bob)); - eosio_assert(itr != secondary_index.end(), "idx64_general - require_find must never return end iterator"); - eosio_assert(itr->id == 540, "idx64_general - require_find test"); - - ++itr; - eosio_assert(itr->id == 781, "idx64_general - require_find secondary key test"); - } - - // modify and erase - { - const uint64_t ssn = 421; - auto new_person = table.emplace( payer, [&]( auto& r ) { - r.id = ssn; - r.sec = N(bob); - }); - - table.modify(new_person, payer, [&]( auto& r ) { - r.sec = N(billy); - }); - - auto itr1 = table.find(ssn); - eosio_assert(itr1 != table.end() && itr1->sec == N(billy), "idx64_general - table.modify()"); - - table.erase(itr1); - auto itr2 = table.find(ssn); - eosio_assert( itr2 == table.end(), "idx64_general - table.erase()"); - } - } - - template - void idx64_require_find_fail(uint64_t receiver) - { - using namespace eosio; - typedef record_idx64 record; - - // Load table using multi_index - multi_index table( receiver, receiver ); - - // make sure we're looking at the right table - auto itr = table.require_find(781, "table not loaded"); - eosio_assert(itr != table.end(), "table not loaded"); - - // require_find by primary key - // should fail - itr = table.require_find(999); - } - - template - void idx64_require_find_fail_with_msg(uint64_t receiver) - { - using namespace eosio; - typedef record_idx64 record; - - // Load table using multi_index - multi_index table( receiver, receiver ); - - // make sure we're looking at the right table - auto itr = table.require_find(234, "table not loaded"); - eosio_assert(itr != table.end(), "table not loaded"); - - // require_find by primary key - // should fail - itr = table.require_find(335, "unable to find primary key in require_find"); - } - - template - void idx64_require_find_sk_fail(uint64_t receiver) - { - using namespace eosio; - typedef record_idx64 record; - - // Load table using multi_index - multi_index>> table( receiver, receiver ); - auto sec_index = table.template get_index(); - - // make sure we're looking at the right table - auto itr = sec_index.require_find(N(charlie), "table not loaded"); - eosio_assert(itr != sec_index.end(), "table not loaded"); - - // require_find by secondary key - // should fail - itr = sec_index.require_find(N(bill)); - } - - template - void idx64_require_find_sk_fail_with_msg(uint64_t receiver) - { - using namespace eosio; - typedef record_idx64 record; - - // Load table using multi_index - multi_index>> table( receiver, receiver ); - auto sec_index = table.template get_index(); - - // make sure we're looking at the right table - auto itr = sec_index.require_find(N(emily), "table not loaded"); - eosio_assert(itr != sec_index.end(), "table not loaded"); - - // require_find by secondary key - // should fail - itr = sec_index.require_find(N(frank), "unable to find sec key"); - } - - template - void idx128_store_only(uint64_t receiver) - { - using namespace eosio; - - typedef record_idx128 record; - - - // Construct and fill table using multi_index - multi_index > - > table( receiver, receiver ); - - auto payer = receiver; - - for (uint64_t i = 0; i < 5; ++i) { - table.emplace( payer, [&]( auto& r ) { - r.id = i; - r.sec = static_cast(1ULL << 63) * i; - }); - } - } - - template - void idx128_check_without_storing(uint64_t receiver) - { - using namespace eosio; - - typedef record_idx128 record; - - // Load table using multi_index - multi_index > - > table( receiver, receiver ); - - auto payer = receiver; - - auto secondary_index = table.template get_index(); - - table.modify(table.get(3), payer, [&]( auto& r ) { - r.sec *= 2; - }); - - { - uint128_t multiplier = 1ULL << 63; - - auto itr = secondary_index.begin(); - eosio_assert( itr->primary_key() == 0 && itr->get_secondary() == multiplier*0, "idx128_general - secondary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 1 && itr->get_secondary() == multiplier*1, "idx128_general - secondary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 2 && itr->get_secondary() == multiplier*2, "idx128_general - secondary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 4 && itr->get_secondary() == multiplier*4, "idx128_general - secondary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 3 && itr->get_secondary() == multiplier*6, "idx128_general - secondary key sort" ); - ++itr; - eosio_assert( itr == secondary_index.end(), "idx128_general - secondary key sort" ); - } - - } - - template - auto idx64_table(uint64_t receiver) - { - using namespace eosio; - typedef record_idx64 record; - // Load table using multi_index - multi_index > - > table( receiver, receiver ); - return table; - } - -} /// _test_multi_index - -void test_multi_index::idx64_store_only(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx64_store_only(receiver); -} - -void test_multi_index::idx64_check_without_storing(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx64_check_without_storing(receiver); -} - -void test_multi_index::idx64_general(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx64_store_only(receiver); - _test_multi_index::idx64_check_without_storing(receiver); -} - -void test_multi_index::idx128_store_only(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx128_store_only(receiver); -} - -void test_multi_index::idx128_check_without_storing(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx128_check_without_storing(receiver); -} - -void test_multi_index::idx128_general(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx128_store_only(receiver); - _test_multi_index::idx128_check_without_storing(receiver); -} - -void test_multi_index::idx64_require_find_fail(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx64_store_only(receiver); - _test_multi_index::idx64_require_find_fail(receiver); -} - -void test_multi_index::idx64_require_find_fail_with_msg(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx64_store_only(receiver); - _test_multi_index::idx64_require_find_fail_with_msg(receiver); -} - -void test_multi_index::idx64_require_find_sk_fail(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx64_store_only(receiver); - _test_multi_index::idx64_require_find_sk_fail(receiver); -} - -void test_multi_index::idx64_require_find_sk_fail_with_msg(uint64_t receiver, uint64_t code, uint64_t action) -{ - _test_multi_index::idx64_store_only(receiver); - _test_multi_index::idx64_require_find_sk_fail_with_msg(receiver); -} - -void test_multi_index::idx128_autoincrement_test(uint64_t receiver, uint64_t code, uint64_t action) -{ - using namespace eosio; - using namespace _test_multi_index; - - typedef record_idx128 record; - - const uint64_t table_name = N(autoinctbl1); - auto payer = receiver; - - multi_index > - > table( receiver, receiver ); - - for( int i = 0; i < 5; ++i ) { - table.emplace( payer, [&]( auto& r ) { - r.id = table.available_primary_key(); - r.sec = 1000 - static_cast(r.id); - }); - } - - uint64_t expected_key = 4; - for( const auto& r : table.get_index() ) - { - eosio_assert( r.primary_key() == expected_key, "idx128_autoincrement_test - unexpected primary key" ); - --expected_key; - } - eosio_assert( expected_key == static_cast(-1), "idx128_autoincrement_test - did not iterate through secondary index properly" ); - - auto itr = table.find(3); - eosio_assert( itr != table.end(), "idx128_autoincrement_test - could not find object with primary key of 3" ); - - // The modification below would trigger an error: - /* - table.modify(itr, payer, [&]( auto& r ) { - r.id = 100; - }); - */ - - table.emplace( payer, [&]( auto& r) { - r.id = 100; - r.sec = itr->sec; - }); - table.erase(itr); - - eosio_assert( table.available_primary_key() == 101, "idx128_autoincrement_test - next_primary_key was not correct after record modify" ); -} - -void test_multi_index::idx128_autoincrement_test_part1(uint64_t receiver, uint64_t code, uint64_t action) -{ - using namespace eosio; - using namespace _test_multi_index; - - typedef record_idx128 record; - - const uint64_t table_name = N(autoinctbl2); - auto payer = receiver; - - multi_index > - > table( receiver, receiver ); - - for( int i = 0; i < 3; ++i ) { - table.emplace( payer, [&]( auto& r ) { - r.id = table.available_primary_key(); - r.sec = 1000 - static_cast(r.id); - }); - } - - table.erase(table.get(0)); - - uint64_t expected_key = 2; - for( const auto& r : table.get_index() ) - { - eosio_assert( r.primary_key() == expected_key, "idx128_autoincrement_test_part1 - unexpected primary key" ); - --expected_key; - } - eosio_assert( expected_key == 0, "idx128_autoincrement_test_part1 - did not iterate through secondary index properly" ); - -} - -void test_multi_index::idx128_autoincrement_test_part2(uint64_t receiver, uint64_t code, uint64_t action) -{ - using namespace eosio; - using namespace _test_multi_index; - - typedef record_idx128 record; - - const uint64_t table_name = N(autoinctbl2); - auto payer = receiver; - - { - multi_index > - > table( receiver, receiver ); - - eosio_assert( table.available_primary_key() == 3, "idx128_autoincrement_test_part2 - did not recover expected next primary key"); - } - - multi_index > - > table( receiver, receiver ); - - table.emplace( payer, [&]( auto& r) { - r.id = 0; - r.sec = 1000; - }); - // Done this way to make sure that table._next_primary_key is not incorrectly set to 1. - - for( int i = 3; i < 5; ++i ) { - table.emplace( payer, [&]( auto& r ) { - auto itr = table.available_primary_key(); - r.id = itr; - r.sec = 1000 - static_cast(r.id); - }); - } - - uint64_t expected_key = 4; - for( const auto& r : table.get_index() ) - { - eosio_assert( r.primary_key() == expected_key, "idx128_autoincrement_test_part2 - unexpected primary key" ); - --expected_key; - } - eosio_assert( expected_key == static_cast(-1), "idx128_autoincrement_test_part2 - did not iterate through secondary index properly" ); - - auto itr = table.find(3); - eosio_assert( itr != table.end(), "idx128_autoincrement_test_part2 - could not find object with primary key of 3" ); - - table.emplace( payer, [&]( auto& r) { - r.id = 100; - r.sec = itr->sec; - }); - table.erase(itr); - - eosio_assert( table.available_primary_key() == 101, "idx128_autoincrement_test_part2 - next_primary_key was not correct after record update" ); -} - -void test_multi_index::idx256_general(uint64_t receiver, uint64_t code, uint64_t action) -{ - using namespace eosio; - using namespace _test_multi_index; - - typedef record_idx256 record; - - const uint64_t table_name = N(indextable5); - auto payer = receiver; - - print("Testing key256 secondary index.\n"); - multi_index > - > table( receiver, receiver ); - - auto fourtytwo = key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 42ULL); - //auto onetwothreefour = key256::make_from_word_sequence(1ULL, 2ULL, 3ULL, 4ULL); - auto onetwothreefour = key256{std::array{{0,1, 0,2, 0,3, 0,4}}}; - - table.emplace( payer, [&]( auto& o ) { - o.id = 1; - o.sec = fourtytwo; - }); - - table.emplace( payer, [&]( auto& o ) { - o.id = 2; - o.sec = onetwothreefour; - }); - - table.emplace( payer, [&]( auto& o ) { - o.id = 3; - o.sec = fourtytwo; - }); - - auto e = table.find( 2 ); - - print("Items sorted by primary key:\n"); - for( const auto& item : table ) { - print(" ID=", item.primary_key(), ", secondary=", item.sec, "\n"); - } - - { - auto itr = table.begin(); - eosio_assert( itr->primary_key() == 1 && itr->get_secondary() == fourtytwo, "idx256_general - primary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 2 && itr->get_secondary() == onetwothreefour, "idx256_general - primary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 3 && itr->get_secondary() == fourtytwo, "idx256_general - primary key sort" ); - ++itr; - eosio_assert( itr == table.end(), "idx256_general - primary key sort" ); - } - - auto secidx = table.get_index(); - - auto lower1 = secidx.lower_bound(key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 40ULL)); - print("First entry with a secondary key of at least 40 has ID=", lower1->id, ".\n"); - eosio_assert( lower1->id == 1, "idx256_general - lower_bound" ); - - auto lower2 = secidx.lower_bound(key256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 50ULL)); - print("First entry with a secondary key of at least 50 has ID=", lower2->id, ".\n"); - eosio_assert( lower2->id == 2, "idx256_general - lower_bound" ); - - if( table.iterator_to(*lower2) == e ) { - print("Previously found entry is the same as the one found earlier with a primary key value of 2.\n"); - } - - print("Items sorted by secondary key (key256):\n"); - for( const auto& item : secidx ) { - print(" ID=", item.primary_key(), ", secondary=", item.sec, "\n"); - } - - { - auto itr = secidx.begin(); - eosio_assert( itr->primary_key() == 1, "idx256_general - secondary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 3, "idx256_general - secondary key sort" ); - ++itr; - eosio_assert( itr->primary_key() == 2, "idx256_general - secondary key sort" ); - ++itr; - eosio_assert( itr == secidx.end(), "idx256_general - secondary key sort" ); - } - - auto upper = secidx.upper_bound(key256{std::array{{0, 0, 0, 42}}}); - - print("First entry with a secondary key greater than 42 has ID=", upper->id, ".\n"); - eosio_assert( upper->id == 2, "idx256_general - upper_bound" ); - eosio_assert( upper->id == secidx.get(onetwothreefour).id, "idx256_general - secondary index get" ); - - print("Removed entry with ID=", lower1->id, ".\n"); - secidx.erase( lower1 ); - - print("Items reverse sorted by primary key:\n"); - for( const auto& item : boost::make_iterator_range(table.rbegin(), table.rend()) ) { - print(" ID=", item.primary_key(), ", secondary=", item.sec, "\n"); - } - - { - auto itr = table.rbegin(); - eosio_assert( itr->primary_key() == 3 && itr->get_secondary() == fourtytwo, "idx256_general - primary key sort after remove" ); - ++itr; - eosio_assert( itr->primary_key() == 2 && itr->get_secondary() == onetwothreefour, "idx256_general - primary key sort after remove" ); - ++itr; - eosio_assert( itr == table.rend(), "idx256_general - primary key sort after remove" ); - } -} - -void test_multi_index::idx_double_general(uint64_t receiver, uint64_t code, uint64_t action) -{ - using namespace eosio; - using namespace _test_multi_index; - - typedef record_idx_double record; - - const uint64_t table_name = N(floattable1); - auto payer = receiver; - - print("Testing double secondary index.\n"); - multi_index > - > table( receiver, receiver ); - - auto secidx = table.get_index(); - - double tolerance = std::numeric_limits::epsilon(); - print("tolerance = ", tolerance, "\n"); - - for( uint64_t i = 1; i <= 10; ++i ) { - table.emplace( payer, [&]( auto& o ) { - o.id = i; - o.sec = 1.0 / (i * 1000000.0); - }); - } - - double expected_product = 1.0 / 1000000.0; - print( "expected_product = ", expected_product, "\n" ); - - uint64_t expected_key = 10; - for( const auto& obj : secidx ) { - eosio_assert( obj.primary_key() == expected_key, "idx_double_general - unexpected primary key" ); - - double prod = obj.sec * obj.id; - - print(" id = ", obj.id, ", sec = ", obj.sec, ", sec * id = ", prod, "\n"); - - eosio_assert( std::abs(prod - expected_product) <= tolerance, - "idx_double_general - product of secondary and id not equal to expected_product within tolerance" ); - - --expected_key; - } - eosio_assert( expected_key == 0, "idx_double_general - did not iterate through secondary index properly" ); - - { - auto itr = secidx.lower_bound( expected_product / 5.5 ); - eosio_assert( std::abs(1.0 / itr->sec - 5000000.0) <= tolerance, "idx_double_general - lower_bound" ); - - itr = secidx.upper_bound( expected_product / 5.0 ); - eosio_assert( std::abs(1.0 / itr->sec - 4000000.0) <= tolerance, "idx_double_general - upper_bound" ); - - } -} - -void test_multi_index::idx_long_double_general(uint64_t receiver, uint64_t code, uint64_t action) -{ - using namespace eosio; - using namespace _test_multi_index; - - typedef record_idx_long_double record; - - const uint64_t table_name = N(floattable2); - auto payer = receiver; - - print("Testing long double secondary index.\n"); - multi_index > - > table( receiver, receiver ); - - auto secidx = table.get_index(); - - long double tolerance = std::min( static_cast(std::numeric_limits::epsilon()), - std::numeric_limits::epsilon() * 1e7l ); - print("tolerance = ", tolerance, "\n"); - - long double f = 1.0l; - for( uint64_t i = 1; i <= 10; ++i, f += 1.0l ) { - table.emplace( payer, [&]( auto& o ) { - o.id = i; - o.sec = 1.0l / (i * 1000000.0l); - }); - } - - long double expected_product = 1.0l / 1000000.0l; - print( "expected_product = ", expected_product, "\n" ); - - uint64_t expected_key = 10; - for( const auto& obj : secidx ) { - eosio_assert( obj.primary_key() == expected_key, "idx_long_double_general - unexpected primary key" ); - - long double prod = obj.sec * obj.id; - - print(" id = ", obj.id, ", sec = ", obj.sec, ", sec * id = ", prod, "\n"); - - eosio_assert( std::abs(prod - expected_product) <= tolerance, - "idx_long_double_general - product of secondary and id not equal to expected_product within tolerance" ); - - --expected_key; - } - eosio_assert( expected_key == 0, "idx_long_double_general - did not iterate through secondary index properly" ); - - { - auto itr = secidx.lower_bound( expected_product / 5.5l ); - eosio_assert( std::abs(1.0l / itr->sec - 5000000.0l) <= tolerance, "idx_long_double_general - lower_bound" ); - - itr = secidx.upper_bound( expected_product / 5.0l ); - eosio_assert( std::abs(1.0l / itr->sec - 4000000.0l) <= tolerance, "idx_long_double_general - upper_bound" ); - - } -} - -void test_multi_index::idx64_pk_iterator_exceed_end(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto end_itr = table.end(); - // Should fail - ++end_itr; -} - -void test_multi_index::idx64_sk_iterator_exceed_end(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto end_itr = table.get_index().end(); - // Should fail - ++end_itr; -} - -void test_multi_index::idx64_pk_iterator_exceed_begin(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto begin_itr = table.begin(); - // Should fail - --begin_itr; -} - -void test_multi_index::idx64_sk_iterator_exceed_begin(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto begin_itr = table.get_index().begin(); - // Should fail - --begin_itr; -} - -void test_multi_index::idx64_pass_pk_ref_to_other_table(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table1 = _test_multi_index::idx64_table(receiver); - auto table2 = _test_multi_index::idx64_table(receiver); - - 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(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table1 = _test_multi_index::idx64_table(receiver); - auto table2 = _test_multi_index::idx64_table(receiver); - - 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(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto end_itr = table.end(); - // Should fail - table.iterator_to(*end_itr); -} - -void test_multi_index::idx64_pass_pk_end_itr_to_modify(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto end_itr = table.end(); - - auto payer = receiver; - // Should fail - table.modify(end_itr, payer, [](auto&){}); -} - -void test_multi_index::idx64_pass_pk_end_itr_to_erase(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto end_itr = table.end(); - - // Should fail - table.erase(end_itr); -} - -void test_multi_index::idx64_pass_sk_end_itr_to_iterator_to(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - 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(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - auto sec_index = table.get_index(); - auto end_itr = sec_index.end(); - - auto payer = receiver; - // Should fail - sec_index.modify(end_itr, payer, [](auto&){}); -} - - -void test_multi_index::idx64_pass_sk_end_itr_to_erase(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - 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(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - - 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 = receiver; - - // Should fail - table.modify(pk_itr, payer, [](auto& r){ - r.id = 1100; - }); -} - -void test_multi_index::idx64_run_out_of_avl_pk(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - - 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 = 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(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - - 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(uint64_t receiver, uint64_t code, uint64_t action) -{ - auto table = _test_multi_index::idx64_table(receiver); - - - 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"); -} - -#pragma GCC diagnostic pop diff --git a/contracts/test_ram_limit/CMakeLists.txt b/contracts/test_ram_limit/CMakeLists.txt deleted file mode 100644 index c7ee9939951..00000000000 --- a/contracts/test_ram_limit/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET test_ram_limit - INCLUDE_FOLDERS ${STANDARD_INCLUDE_FOLDERS} - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/test_ram_limit/test_ram_limit.abi b/contracts/test_ram_limit/test_ram_limit.abi deleted file mode 100644 index 9d3413b8b8e..00000000000 --- a/contracts/test_ram_limit/test_ram_limit.abi +++ /dev/null @@ -1,87 +0,0 @@ -{ - "____comment": "This file was generated by eosio-abigen. DO NOT EDIT - 2018-03-29T02:09:11", - "version": "eosio::abi/1.0", - "types": [{ - "new_type_name": "account_name", - "type": "name" - }], - "structs": [{ - "name": "setentry", - "base": "", - "fields": [{ - "name": "payer", - "type": "account_name" - },{ - "name": "from", - "type": "uint64" - },{ - "name": "to", - "type": "uint64" - },{ - "name": "size", - "type": "uint64" - } - ] - },{ - "name": "rmentry", - "base": "", - "fields": [{ - "name": "from", - "type": "uint64" - },{ - "name": "to", - "type": "uint64" - } - ] - },{ - "name": "printentry", - "base": "", - "fields": [{ - "name": "from", - "type": "uint64" - },{ - "name": "to", - "type": "uint64" - } - ] - },{ - "name": "test", - "base": "", - "fields": [{ - "name": "key", - "type": "uint64" - },{ - "name": "data", - "type": "int8[]" - } - ] - } - ], - "actions": [{ - "name": "setentry", - "type": "setentry", - "ricardian_contract": "" - },{ - "name": "rmentry", - "type": "rmentry", - "ricardian_contract": "" - },{ - "name": "printentry", - "type": "printentry", - "ricardian_contract": "" - } - ], - "tables": [{ - "name": "test.table", - "index_type": "i64", - "key_names": [ - "key" - ], - "key_types": [ - "uint64" - ], - "type": "test" - } - ], - "ricardian_clauses": [] -} diff --git a/contracts/tic_tac_toe/CMakeLists.txt b/contracts/tic_tac_toe/CMakeLists.txt deleted file mode 100644 index c98bfc2ae49..00000000000 --- a/contracts/tic_tac_toe/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET tic_tac_toe - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/contracts/tic_tac_toe/tic_tac_toe.abi b/contracts/tic_tac_toe/tic_tac_toe.abi deleted file mode 100644 index 35cf2033d0d..00000000000 --- a/contracts/tic_tac_toe/tic_tac_toe.abi +++ /dev/null @@ -1,116 +0,0 @@ -{ - "____comment": "This file was generated by eosio-abigen. DO NOT EDIT - 2018-07-06T13:38:01", - "version": "eosio::abi/1.0", - "types": [], - "structs": [{ - "name": "game", - "base": "", - "fields": [{ - "name": "challenger", - "type": "name" - },{ - "name": "host", - "type": "name" - },{ - "name": "turn", - "type": "name" - },{ - "name": "winner", - "type": "name" - },{ - "name": "board", - "type": "uint8[]" - } - ] - },{ - "name": "create", - "base": "", - "fields": [{ - "name": "challenger", - "type": "name" - },{ - "name": "host", - "type": "name" - } - ] - },{ - "name": "restart", - "base": "", - "fields": [{ - "name": "challenger", - "type": "name" - },{ - "name": "host", - "type": "name" - },{ - "name": "by", - "type": "name" - } - ] - },{ - "name": "close", - "base": "", - "fields": [{ - "name": "challenger", - "type": "name" - },{ - "name": "host", - "type": "name" - } - ] - },{ - "name": "move", - "base": "", - "fields": [{ - "name": "challenger", - "type": "name" - },{ - "name": "host", - "type": "name" - },{ - "name": "by", - "type": "name" - },{ - "name": "row", - "type": "uint16" - },{ - "name": "column", - "type": "uint16" - } - ] - } - ], - "actions": [{ - "name": "create", - "type": "create", - "ricardian_contract": "" - },{ - "name": "restart", - "type": "restart", - "ricardian_contract": "" - },{ - "name": "close", - "type": "close", - "ricardian_contract": "" - },{ - "name": "move", - "type": "move", - "ricardian_contract": "" - } - ], - "tables": [{ - "name": "games", - "index_type": "i64", - "key_names": [ - "challenger" - ], - "key_types": [ - "name" - ], - "type": "game" - } - ], - "ricardian_clauses": [], - "error_messages": [], - "abi_extensions": [] -} \ No newline at end of file diff --git a/contracts/tic_tac_toe/tic_tac_toe.cpp b/contracts/tic_tac_toe/tic_tac_toe.cpp deleted file mode 100644 index a6eb62eccf6..00000000000 --- a/contracts/tic_tac_toe/tic_tac_toe.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include "tic_tac_toe.hpp" - -using namespace eosio; - -/** - * @brief Check if cell is empty - * @param cell - value of the cell (should be either 0, 1, or 2) - * @return true if cell is empty - */ -bool is_empty_cell(const uint8_t& cell) { - return cell == 0; -} - -/** - * @brief Check for valid movement - * @detail Movement is considered valid if it is inside the board and done on empty cell - * @param row - the row of movement made by the player - * @param column - the column of movement made by the player - * @param board - the board on which the movement is being made - * @return true if movement is valid - */ -bool is_valid_movement(const uint16_t& row, const uint16_t& column, const vector& board) { - uint16_t board_width = tic_tac_toe::game::board_width; - uint16_t board_height = tic_tac_toe::game::board_height; - uint32_t movement_location = row * board_width + column; - bool is_valid = column < board_width && row < board_height && is_empty_cell(board[movement_location]); - return is_valid; -} - -/** - * @brief Get winner of the game - * @detail Winner of the game is the first player who made three consecutive aligned movement - * @param current_game - the game which we want to determine the winner of - * @return winner of the game (can be either none/ draw/ account name of host/ account name of challenger) - */ -account_name get_winner(const tic_tac_toe::game& current_game) { - auto& board = current_game.board; - - bool is_board_full = true; - - - - // Use bitwise AND operator to determine the consecutive values of each column, row and diagonal - // Since 3 == 0b11, 2 == 0b10, 1 = 0b01, 0 = 0b00 - vector consecutive_column(tic_tac_toe::game::board_width, 3 ); - vector consecutive_row(tic_tac_toe::game::board_height, 3 ); - uint32_t consecutive_diagonal_backslash = 3; - uint32_t consecutive_diagonal_slash = 3; - for (uint32_t i = 0; i < board.size(); i++) { - is_board_full &= !is_empty_cell(board[i]); - uint16_t row = uint16_t(i / tic_tac_toe::game::board_width); - uint16_t column = uint16_t(i % tic_tac_toe::game::board_width); - - // Calculate consecutive row and column value - consecutive_row[column] = consecutive_row[column] & board[i]; - consecutive_column[row] = consecutive_column[row] & board[i]; - // Calculate consecutive diagonal \ value - if (row == column) { - consecutive_diagonal_backslash = consecutive_diagonal_backslash & board[i]; - } - // Calculate consecutive diagonal / value - if ( row + column == tic_tac_toe::game::board_width - 1) { - consecutive_diagonal_slash = consecutive_diagonal_slash & board[i]; - } - } - - // Inspect the value of all consecutive row, column, and diagonal and determine winner - vector aggregate = { consecutive_diagonal_backslash, consecutive_diagonal_slash }; - aggregate.insert(aggregate.end(), consecutive_column.begin(), consecutive_column.end()); - aggregate.insert(aggregate.end(), consecutive_row.begin(), consecutive_row.end()); - for (auto value: aggregate) { - if (value == 1) { - return current_game.host; - } else if (value == 2) { - return current_game.challenger; - } - } - // Draw if the board is full, otherwise the winner is not determined yet - return is_board_full ? N(draw) : N(none); -} - -/** - * @brief Apply create action - */ -void tic_tac_toe::create(const account_name& challenger, const account_name& host) { - require_auth(host); - eosio_assert(challenger != host, "challenger shouldn't be the same as host"); - - // Check if game already exists - games existing_host_games(_self, host); - auto itr = existing_host_games.find( challenger ); - eosio_assert(itr == existing_host_games.end(), "game already exists"); - - existing_host_games.emplace(host, [&]( auto& g ) { - g.challenger = challenger; - g.host = host; - g.turn = host; - }); -} - -/** - * @brief Apply restart action - */ -void tic_tac_toe::restart(const account_name& challenger, const account_name& host, const account_name& by) { - require_auth(by); - - // Check if game exists - games existing_host_games(_self, host); - auto itr = existing_host_games.find( challenger ); - eosio_assert(itr != existing_host_games.end(), "game doesn't exists"); - - // Check if this game belongs to the action sender - eosio_assert(by == itr->host || by == itr->challenger, "this is not your game!"); - - // Reset game - existing_host_games.modify(itr, itr->host, []( auto& g ) { - g.reset_game(); - }); -} - -/** - * @brief Apply close action - */ -void tic_tac_toe::close(const account_name& challenger, const account_name& host) { - require_auth(host); - - // Check if game exists - games existing_host_games(_self, host); - auto itr = existing_host_games.find( challenger ); - eosio_assert(itr != existing_host_games.end(), "game doesn't exists"); - - // Remove game - existing_host_games.erase(itr); -} - -/** - * @brief Apply move action - */ -void tic_tac_toe::move(const account_name& challenger, const account_name& host, const account_name& by, const uint16_t& row, const uint16_t& column ) { - require_auth(by); - - // Check if game exists - games existing_host_games(_self, host); - auto itr = existing_host_games.find( challenger ); - eosio_assert(itr != existing_host_games.end(), "game doesn't exists"); - - // Check if this game hasn't ended yet - eosio_assert(itr->winner == N(none), "the game has ended!"); - // Check if this game belongs to the action sender - eosio_assert(by == itr->host || by == itr->challenger, "this is not your game!"); - // Check if this is the action sender's turn - eosio_assert(by == itr->turn, "it's not your turn yet!"); - - - // Check if user makes a valid movement - eosio_assert(is_valid_movement(row, column, itr->board), "not a valid movement!"); - - // Fill the cell, 1 for host, 2 for challenger - const uint8_t cell_value = itr->turn == itr->host ? 1 : 2; - const auto turn = itr->turn == itr->host ? itr->challenger : itr->host; - existing_host_games.modify(itr, itr->host, [&]( auto& g ) { - g.board[row * tic_tac_toe::game::board_width + column] = cell_value; - g.turn = turn; - g.winner = get_winner(g); - }); -} - - -EOSIO_ABI( tic_tac_toe, (create)(restart)(close)(move)) diff --git a/contracts/tic_tac_toe/tic_tac_toe.hpp b/contracts/tic_tac_toe/tic_tac_toe.hpp deleted file mode 100644 index f4f32982ff6..00000000000 --- a/contracts/tic_tac_toe/tic_tac_toe.hpp +++ /dev/null @@ -1,104 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ -#include - -/** - * @defgroup tictactoecontract Tic Tac Toe Contract - * @brief Defines the PvP tic tac toe contract example - * @ingroup examplecontract - * - * @details - * For the following tic-tac-toe game: - * - Each pair of player can have 2 unique game, one where player_1 become host and player_2 become challenger and vice versa - * - The game data is stored in the "host" scope and use the "challenger" as the key - * - * (0,0) coordinate is on the top left corner of the board - * @code - * (0,2) - * (0,0) - | o | x where - = empty cell - * - | x | - x = move by host - * (2,0) x | o | o o = move by challenger - * @endcode - * - * Board is represented with number: - * - 0 represents empty cell - * - 1 represents cell filled by host - * - 2 represents cell filled by challenger - * Therefore, assuming x is host, the above board will have the following representation: [0, 2, 1, 0, 1, 0, 1, 2, 2] inside the game object - * - * In order to deploy this contract: - * - Create an account called tic.tac.toe - * - Add tic.tac.toe key to your wallet - * - Set the contract on the tic.tac.toe account - * - * How to play the game: - * - Create a game using `create` action, with you as the host and other account as the challenger. - * - The first move needs to be done by the host, use the `move` action to make a move by specifying which row and column to fill. - * - Then ask the challenger to make a move, after that it's back to the host turn again, repeat until the winner is determined. - * - If you want to restart the game, use the `restart` action - * - If you want to clear the game from the database to save up some space after the game has ended, use the `close` action - * @{ - */ - -class tic_tac_toe : public eosio::contract { - public: - tic_tac_toe( account_name self ):contract(self){} - /** - * @brief Information related to a game - * @abi table games i64 - */ - struct game { - static const uint16_t board_width = 3; - static const uint16_t board_height = board_width; - game() { - initialize_board(); - } - account_name challenger; - account_name host; - account_name turn; // = account name of host/ challenger - account_name winner = N(none); // = none/ draw/ name of host/ name of challenger - std::vector board; - - // Initialize board with empty cell - void initialize_board() { - board = std::vector(board_width * board_height, 0); - } - - // Reset game - void reset_game() { - initialize_board(); - turn = host; - winner = N(none); - } - - auto primary_key() const { return challenger; } - EOSLIB_SERIALIZE( game, (challenger)(host)(turn)(winner)(board)) - }; - - /** - * @brief The table definition, used to store existing games and their current state - */ - typedef eosio::multi_index< N(games), game> games; - - /// @abi action - /// Create a new game - void create(const account_name& challenger, const account_name& host); - - /// @abi action - /// Restart a game - /// @param by the account who wants to restart the game - void restart(const account_name& challenger, const account_name& host, const account_name& by); - - /// @abi action - /// Close an existing game, and remove it from storage - void close(const account_name& challenger, const account_name& host); - - /// @abi action - /// Make movement - /// @param by the account who wants to make the move - void move(const account_name& challenger, const account_name& host, const account_name& by, const uint16_t& row, const uint16_t& column); - -}; -/// @} diff --git a/libraries/chain/CMakeLists.txt b/libraries/chain/CMakeLists.txt index 8f765f91ec1..3a3d8e66816 100644 --- a/libraries/chain/CMakeLists.txt +++ b/libraries/chain/CMakeLists.txt @@ -5,6 +5,53 @@ file(GLOB HEADERS "include/eosio/chain/*.hpp" "include/eosio/chain/webassembly/*.hpp" "${CMAKE_CURRENT_BINARY_DIR}/include/eosio/chain/core_symbol.hpp" ) +if(APPLE AND UNIX) + set(PLATFORM_TIMER_IMPL platform_timer_macos.cpp) +else() + try_run(POSIX_TIMER_TEST_RUN_RESULT POSIX_TIMER_TEST_COMPILE_RESULT ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/platform_timer_posix_test.c) + if(POSIX_TIMER_TEST_RUN_RESULT EQUAL 0) + set(PLATFORM_TIMER_IMPL platform_timer_posix.cpp) + else() + set(PLATFORM_TIMER_IMPL platform_timer_asio_fallback.cpp) + endif() +endif() + +if("wavm" IN_LIST EOSIO_WASM_RUNTIMES) + set(CHAIN_WAVM_SOURCES "webassembly/wavm.cpp") +endif() + +if("eos-vm-oc" IN_LIST EOSIO_WASM_RUNTIMES) + set(CHAIN_EOSVMOC_SOURCES webassembly/eos-vm-oc/code_cache.cpp + webassembly/eos-vm-oc/executor.cpp + webassembly/eos-vm-oc/memory.cpp + webassembly/eos-vm-oc/intrinsic.cpp + webassembly/eos-vm-oc/LLVMJIT.cpp + webassembly/eos-vm-oc/LLVMEmitIR.cpp + webassembly/eos-vm-oc/compile_monitor.cpp + webassembly/eos-vm-oc/compile_trampoline.cpp + webassembly/eos-vm-oc/ipc_helpers.cpp + webassembly/eos-vm-oc/gs_seg_helpers.c + webassembly/eos-vm-oc.cpp) + + if(LLVM_VERSION VERSION_LESS 7.1 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + enable_language(ASM-LLVMWAR) + list(APPEND CHAIN_EOSVMOC_SOURCES webassembly/eos-vm-oc/llvmWARshim.llvmwar) + else() + list(APPEND CHAIN_EOSVMOC_SOURCES webassembly/eos-vm-oc/llvmWARshim.cpp) + endif() + + llvm_map_components_to_libnames(LLVM_LIBS support core passes mcjit native orcjit) + include_directories(${LLVM_INCLUDE_DIRS}) + add_definitions(${LLVM_DEFINITIONS}) + + option(EOSVMOC_ENABLE_DEVELOPER_OPTIONS "enable developer options for EOS VM OC" OFF) +endif() + +if("eos-vm" IN_LIST EOSIO_WASM_RUNTIMES OR "eos-vm-jit" IN_LIST EOSIO_WASM_RUNTIMES) + set(CHAIN_EOSVM_SOURCES "webassembly/eos-vm.cpp") + set(CHAIN_EOSVM_LIBRARIES eos-vm) +endif() + ## SORT .cpp by most likely to change / break compile add_library( eosio_chain merkle.cpp @@ -41,27 +88,44 @@ add_library( eosio_chain webassembly/wavm.cpp webassembly/wabt.cpp + ${CHAIN_EOSVMOC_SOURCES} + ${CHAIN_EOSVM_SOURCES} # get_config.cpp # global_property_object.cpp # # contracts/chain_initializer.cpp - - - transaction_metadata.cpp + protocol_state_object.cpp + genesis_intrinsics.cpp + whitelisted_intrinsics.cpp + transaction_metadata.cpp + platform_timer_accuracy.cpp + ${PLATFORM_TIMER_IMPL} ${HEADERS} ) target_link_libraries( eosio_chain fc chainbase Logging IR WAST WASM Runtime - softfloat builtins wabt + softfloat builtins wabt ${CHAIN_EOSVM_LIBRARIES} ${LLVM_LIBS} ) target_include_directories( eosio_chain PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_BINARY_DIR}/include" "${CMAKE_CURRENT_SOURCE_DIR}/../wasm-jit/Include" + "${CMAKE_CURRENT_SOURCE_DIR}/libraries/eos-vm/include" "${CMAKE_SOURCE_DIR}/libraries/wabt" "${CMAKE_BINARY_DIR}/libraries/wabt" ) +if("eos-vm-oc" IN_LIST EOSIO_WASM_RUNTIMES) + target_link_libraries(eosio_chain "-Wl,-wrap=main") +endif() + +foreach(RUNTIME ${EOSIO_WASM_RUNTIMES}) + string(TOUPPER "${RUNTIME}" RUNTIMEUC) + string(REPLACE "-" "_" RUNTIMEUC ${RUNTIMEUC}) + target_compile_definitions(eosio_chain PUBLIC "EOSIO_${RUNTIMEUC}_RUNTIME_ENABLED") +endforeach() + + install( TARGETS eosio_chain RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} @@ -69,7 +133,7 @@ install( TARGETS eosio_chain ) install( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/eosio/chain/ DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/eosio/chain - FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" PATTERN "webassembly" EXCLUDE + FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" EXCLUDE ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/eosio/chain/core_symbol.hpp DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/eosio/chain) #if(MSVC) diff --git a/libraries/chain/apply_context.cpp b/libraries/chain/apply_context.cpp index 44a3970f230..5a35eafd29a 100644 --- a/libraries/chain/apply_context.cpp +++ b/libraries/chain/apply_context.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -48,10 +49,11 @@ void apply_context::exec_one( action_trace& trace ) global_action_sequence = p.global_action_sequence + 1; const auto& cfg = control.get_global_properties().configuration; + const account_metadata_object* receiver_account = nullptr; try { try { - const auto& a = control.get_account( receiver ); - privileged = a.privileged; + receiver_account = &db.get( receiver ); + privileged = receiver_account->is_privileged(); auto native = control.find_apply_handler( receiver, act.account, act.name ); if( native ) { if( trx_context.enforce_whiteblacklist && control.is_producing_block() ) { @@ -61,15 +63,15 @@ void apply_context::exec_one( action_trace& trace ) (*native)( *this ); } - if( a.code.size() > 0 - && !(act.account == config::system_account_name && act.name == N( setcode ) && + if( receiver_account->code_hash != digest_type() && + !(act.account == config::system_account_name && act.name == N( setcode ) && receiver == config::system_account_name) ) { if( trx_context.enforce_whiteblacklist && control.is_producing_block() ) { control.check_contract_list( receiver ); control.check_action_list( act.account, act.name ); } try { - control.get_wasm_interface().apply( a.code_version, a.code, *this ); + control.get_wasm_interface().apply( receiver_account->code_hash, receiver_account->vm_type, receiver_account->vm_version, *this ); } catch( const wasm_exit& ) {} } } FC_RETHROW_EXCEPTIONS( warn, "pending console output: ${console}", ("console", _pending_console_output.str()) ) @@ -82,13 +84,19 @@ void apply_context::exec_one( action_trace& trace ) r.global_sequence = next_global_sequence(); r.recv_sequence = next_recv_sequence( receiver ); - global_action_sequence = 0; - const auto& account_sequence = db.get(act.account); - r.code_sequence = account_sequence.code_sequence; // could be modified by action execution above - r.abi_sequence = account_sequence.abi_sequence; // could be modified by action execution above + const account_metadata_object* first_receiver_account = nullptr; + if( act.account == receiver ) { + first_receiver_account = receiver_account; + } else { + first_receiver_account = &db.get(act.account); + } + + r.code_sequence = first_receiver_account->code_sequence; // could be modified by action execution above + r.abi_sequence = first_receiver_account->abi_sequence; // could be modified by action execution above + - for( const auto& auth : act.authorization ) { + for( const auto& auth : act.authorization ) { r.auth_sequence[auth.actor] = next_auth_sequence( auth.actor ); } @@ -142,7 +150,7 @@ void apply_context::exec( action_trace& trace ) } /// exec() bool apply_context::is_account( const account_name& account )const { - return nullptr != db.find( account ); + return nullptr != db.find( account ); } void apply_context::require_authorization( const account_name& account ) { @@ -205,7 +213,7 @@ void apply_context::require_recipient( account_name recipient ) { * can better understand the security risk. */ void apply_context::execute_inline( action&& a ) { - auto* code = control.db().find(a.account); + auto* code = control.db().find(a.account); EOS_ASSERT( code != nullptr, action_validate_exception, "inline action's code account ${account} does not exist", ("account", a.account) ); @@ -222,7 +230,7 @@ void apply_context::execute_inline( action&& a ) { } for( const auto& auth : a.authorization ) { - auto* actor = control.db().find(auth.actor); + auto* actor = control.db().find(auth.actor); EOS_ASSERT( actor != nullptr, action_validate_exception, "inline action's authorizing actor ${account} does not exist", ("account", auth.actor) ); EOS_ASSERT( control.get_authorization_manager().find_permission(auth) != nullptr, action_validate_exception, @@ -279,7 +287,7 @@ void apply_context::execute_inline( action&& a ) { } void apply_context::execute_context_free_inline( action&& a ) { - auto* code = control.db().find(a.account); + auto* code = control.db().find(a.account); EOS_ASSERT( code != nullptr, action_validate_exception, "inline action's code account ${account} does not exist", ("account", a.account) ); @@ -715,14 +723,14 @@ uint64_t apply_context::next_global_sequence() { } uint64_t apply_context::next_recv_sequence( account_name receiver ) { - const auto& rs = db.get( receiver ); + const auto& rs = db.get( receiver ); db.modify( rs, [&]( auto& mrs ) { ++mrs.recv_sequence; }); return rs.recv_sequence; } uint64_t apply_context::next_auth_sequence( account_name actor ) { - const auto& rs = db.get( actor ); + const auto& rs = db.get( actor ); db.modify( rs, [&](auto& mrs ){ ++mrs.auth_sequence; }); diff --git a/libraries/chain/controller.cpp b/libraries/chain/controller.cpp index e9afa759c9f..50b3dd50deb 100644 --- a/libraries/chain/controller.cpp +++ b/libraries/chain/controller.cpp @@ -8,9 +8,12 @@ #include #include #include +#include #include #include #include +#include +#include #include #include @@ -40,7 +43,11 @@ using controller_index_set = index_set< block_summary_multi_index, transaction_multi_index, generated_transaction_multi_index, - table_id_multi_index + table_id_multi_index, + code_index, + account_index2, + account_metadata_index, + protocol_state_multi_index >; using contract_database_index_set = index_set< @@ -149,6 +156,7 @@ struct controller_impl { typedef pair handler_key; map< account_name, map > apply_handlers; + platform_timer timer; /** * Transactions that were undone by pop_block or abort_block, transactions @@ -191,7 +199,7 @@ struct controller_impl { cfg.reversible_cache_size ), blog( cfg.blocks_dir ), fork_db( cfg.state_dir ), - wasmif( cfg.wasm_runtime ), + wasmif( cfg.wasm_runtime, db ), resource_limits( db ), authorization( s, db ), conf( cfg ), @@ -425,8 +433,89 @@ struct controller_impl { } //*bos begin* - merge_msig_blacklist_into_conf(); - //*bos end* + merge_msig_blacklist_into_conf(); + //*bos end* + + // if new version need to do account_index code to code_index migration + const auto& db_code_index = db.get_index(); + ilog("code object size : ${s}", ("s", db_code_index.size())); + + // read db account index + const auto& db_accounts_index = db.get_index(); + // check if account index or code index empty + if (!db_code_index.empty()) return; + migrate_account_code(); + } + + void migrate_account_code() { + ilog("start migrating account index code to code index ..."); + const auto& db_accounts_index = db.get_index(); + size_t accounts_size = db_accounts_index.size(); + auto account_ptr = db_accounts_index.begin(); + while( account_ptr != db_accounts_index.end()) { + db.create([&](auto &a2) { + a2.name = account_ptr->name; + a2.creation_date = account_ptr->creation_date; + a2.abi.assign(account_ptr->abi.data(), account_ptr->abi.size()); + }); + + // read db account sequence index + const auto* db_account_seq_obj = db.find(account_ptr->name); + // write db account metadata index + db.create([&](auto &amo) { + amo.name = account_ptr->name; + amo.recv_sequence = db_account_seq_obj->recv_sequence; + amo.auth_sequence = db_account_seq_obj->auth_sequence; + amo.code_sequence = db_account_seq_obj->code_sequence; + amo.abi_sequence = db_account_seq_obj->abi_sequence; + amo.code_hash = account_ptr->code_version; + amo.last_code_update = account_ptr->last_code_update; + amo.flags = account_ptr->privileged; + amo.vm_type = account_ptr->vm_type; + amo.vm_version = account_ptr->vm_version; + }); + + // write db code index + const code_object* new_code_entry = db.find( + boost::make_tuple(account_ptr->code_version, account_ptr->vm_type, account_ptr->vm_version) ); + int64_t code_size = (int64_t)account_ptr->code.size(); + + if (new_code_entry) { + db.modify(*new_code_entry, [&](code_object& o) { + ++o.code_ref_count; + }); + } else { + db.create([&](code_object& o) { + o.code_hash = account_ptr->code_version; + o.code.assign(account_ptr->code.data(), code_size); + o.code_ref_count = 1; + o.first_block_used = 1; + o.vm_type = account_ptr->vm_type; + o.vm_version = account_ptr->vm_version; + }); + } + account_ptr++; + } + + // after migrate size + const auto& db_accounts_index2 = db.get_index(); + const auto& db_account_metadata_index = db.get_index(); + const auto& db_code_index_migrate = db.get_index(); + // check if migrate success + ilog("account object size : ${s}", ("s", accounts_size)); + ilog("migrate account object size : ${s}", ("s", db_accounts_index2.size())); + ilog("migrate account metadata object size : ${s}", ("s", db_account_metadata_index.size())); + ilog("migrate code object size : ${s}", ("s", db_code_index_migrate.size())); + + // remove all account objects and all account sequence + + + // write db protocol index + db.create([&](auto& pso ){ + for( const auto& i : genesis_intrinsics ) { + add_intrinsic_to_whitelist( pso.whitelisted_intrinsics, i ); + } + }); } void update_pbft_status() { @@ -654,6 +743,13 @@ struct controller_impl { } }); + // bos account_index migration + // if do not have section code_object, old version snapshot need to migrate account_index to account_index2 and code_index + // account_sequence_index to account_metadata_index + if (!snapshot->has_section() && !snapshot->has_section()) { + migrate_account_code(); + } + read_contract_tables_from_snapshot(snapshot); authorization.read_from_snapshot(snapshot); @@ -696,18 +792,18 @@ struct controller_impl { } void create_native_account( account_name name, const authority& owner, const authority& active, bool is_privileged = false ) { - db.create([&](auto& a) { + db.create([&](auto& a) { a.name = name; a.creation_date = conf.genesis.initial_timestamp; - a.privileged = is_privileged; if( name == config::system_account_name ) { a.set_abi(eosio_contract_abi(abi_def())); } }); - db.create([&](auto & a) { + db.create([&](auto & a) { a.name = name; - }); + a.set_privileged( is_privileged ); + }); const auto& owner_permission = authorization.create_permission(name, config::owner_name, 0, owner, conf.genesis.initial_timestamp ); @@ -739,6 +835,13 @@ struct controller_impl { db.create([&](auto& gpo ){ gpo.configuration = conf.genesis.initial_configuration; }); + + db.create([&](auto& pso ){ + for( const auto& i : genesis_intrinsics ) { + add_intrinsic_to_whitelist( pso.whitelisted_intrinsics, i ); + } + }); + db.create([](auto&){}); // *bos begin* @@ -988,8 +1091,9 @@ struct controller_impl { onerror( gtrx.sender_id, gtrx.packed_trx.data(), gtrx.packed_trx.size() ) ); etrx.expiration = self.pending_block_time() + fc::microseconds(999'999); // Round up to avoid appearing expired etrx.set_reference_block( self.head_block_id() ); + transaction_checktime_timer trx_timer(timer); - transaction_context trx_context( self, etrx, etrx.id(), start ); + transaction_context trx_context( self, etrx, etrx.id(), std::move(trx_timer), start); trx_context.deadline = deadline; trx_context.explicit_billed_cpu_time = explicit_billed_cpu_time; trx_context.billed_cpu_time_us = billed_cpu_time_us; @@ -1106,8 +1210,9 @@ struct controller_impl { in_trx_requiring_checks = true; uint32_t cpu_time_to_bill_us = billed_cpu_time_us; + transaction_checktime_timer trx_timer(timer); - transaction_context trx_context( self, dtrx, gtrx.trx_id ); + transaction_context trx_context( self, dtrx, gtrx.trx_id, std::move(trx_timer)); trx_context.leeway = fc::microseconds(0); // avoid stealing cpu resource trx_context.deadline = deadline; trx_context.explicit_billed_cpu_time = explicit_billed_cpu_time; @@ -1256,7 +1361,8 @@ struct controller_impl { } const signed_transaction& trn = trx->packed_trx->get_signed_transaction(); - transaction_context trx_context(self, trn, trx->id, start); + transaction_checktime_timer trx_timer(timer); + transaction_context trx_context(self, trn, trx->id, std::move(trx_timer), start); if ((bool)subjective_cpu_leeway && pending->_block_status == controller::block_status::incomplete) { trx_context.leeway = *subjective_cpu_leeway; } @@ -2589,9 +2695,9 @@ wasm_interface& controller::get_wasm_interface() { return my->wasmif; } -const account_object& controller::get_account( account_name name )const +const account_object2& controller::get_account( account_name name )const { try { - return my->db.get(name); + return my->db.get(name); } FC_CAPTURE_AND_RETHROW( (name) ) } unapplied_transactions_type& controller::get_unapplied_transactions() { diff --git a/libraries/chain/eosio_contract.cpp b/libraries/chain/eosio_contract.cpp index 03e0fed7f7f..3e925d175da 100644 --- a/libraries/chain/eosio_contract.cpp +++ b/libraries/chain/eosio_contract.cpp @@ -35,7 +35,7 @@ uint128_t transaction_id_to_sender_id( const transaction_id_type& tid ) { void validate_authority_precondition( const apply_context& context, const authority& auth ) { for(const auto& a : auth.accounts) { - auto* acct = context.db.find(a.permission.actor); + auto* acct = context.db.find(a.permission.actor); EOS_ASSERT( acct != nullptr, action_validate_exception, "account '${account}' does not exist", ("account", a.permission.actor) @@ -85,23 +85,23 @@ void apply_eosio_newaccount(apply_context& context) { EOS_ASSERT( name_str.size() <= 12, action_validate_exception, "account names can only be 12 chars long" ); // Check if the creator is privileged - const auto &creator = db.get(create.creator); - if( !creator.privileged ) { + const auto &creator = db.get(create.creator); + if( !creator.is_privileged() ) { EOS_ASSERT( name_str.find( "eosio." ) != 0, action_validate_exception, "only privileged accounts can have names that start with 'eosio.'" ); } - auto existing_account = db.find(create.name); + auto existing_account = db.find(create.name); EOS_ASSERT(existing_account == nullptr, account_name_exists_exception, "Cannot create account named ${name}, as that name is already taken", ("name", create.name)); - const auto& new_account = db.create([&](auto& a) { + const auto& new_account = db.create([&](auto& a) { a.name = create.name; a.creation_date = context.control.pending_block_time(); }); - db.create([&](auto& a) { + db.create([&](auto& a) { a.name = create.name; }); @@ -135,36 +135,63 @@ void apply_eosio_setcode(apply_context& context) { EOS_ASSERT( act.vmtype == 0, invalid_contract_vm_type, "code should be 0" ); EOS_ASSERT( act.vmversion == 0, invalid_contract_vm_version, "version should be 0" ); - fc::sha256 code_id; /// default ID == 0 + fc::sha256 code_hash; /// default is the all zeros hash - if( act.code.size() > 0 ) { - code_id = fc::sha256::hash( act.code.data(), (uint32_t)act.code.size() ); + int64_t code_size = (int64_t)act.code.size(); + + if( code_size > 0 ) { + code_hash = fc::sha256::hash( act.code.data(), (uint32_t)act.code.size() ); wasm_interface::validate(context.control, act.code); } - const auto& account = db.get(act.account); + const auto& account = db.get(act.account); + bool existing_code = (account.code_hash != digest_type()); - int64_t code_size = (int64_t)act.code.size(); - int64_t old_size = (int64_t)account.code.size() * config::setcode_ram_bytes_multiplier; + EOS_ASSERT( code_size > 0 || existing_code, set_exact_code, "contract is already cleared" ); + + int64_t old_size = 0; int64_t new_size = code_size * config::setcode_ram_bytes_multiplier; - EOS_ASSERT( account.code_version != code_id, set_exact_code, "contract is already running this version of code" ); + if( existing_code ) { + const code_object& old_code_entry = db.get(boost::make_tuple(account.code_hash, account.vm_type, account.vm_version)); + EOS_ASSERT( old_code_entry.code_hash != code_hash, set_exact_code, + "contract is already running this version of code" ); + old_size = (int64_t)old_code_entry.code.size() * config::setcode_ram_bytes_multiplier; + if( old_code_entry.code_ref_count == 1 ) { + db.remove(old_code_entry); + context.control.get_wasm_interface().code_block_num_last_used(account.code_hash, account.vm_type, account.vm_version, context.control.head_block_num() + 1); + } else { + db.modify(old_code_entry, [](code_object& o) { + --o.code_ref_count; + }); + } + } - db.modify( account, [&]( auto& a ) { - /** TODO: consider whether a microsecond level local timestamp is sufficient to detect code version changes*/ - // TODO: update setcode message to include the hash, then validate it in validate - a.last_code_update = context.control.pending_block_time(); - a.code_version = code_id; - if ( code_size > 0 ) { - a.code.assign(act.code.data(), code_size); + if( code_size > 0 ) { + const code_object* new_code_entry = db.find( + boost::make_tuple(code_hash, act.vmtype, act.vmversion) ); + if( new_code_entry ) { + db.modify(*new_code_entry, [&](code_object& o) { + ++o.code_ref_count; + }); } else { - a.code.resize(0); + db.create([&](code_object& o) { + o.code_hash = code_hash; + o.code.assign(act.code.data(), code_size); + o.code_ref_count = 1; + o.first_block_used = context.control.head_block_num() + 1; + o.vm_type = act.vmtype; + o.vm_version = act.vmversion; + }); } - }); + } - const auto& account_sequence = db.get(act.account); - db.modify( account_sequence, [&]( auto& aso ) { - aso.code_sequence += 1; + db.modify( account, [&]( auto& a ) { + a.code_sequence += 1; + a.code_hash = code_hash; + a.vm_type = act.vmtype; + a.vm_version = act.vmversion; + a.last_code_update = context.control.pending_block_time(); }); if (new_size != old_size) { @@ -178,7 +205,7 @@ void apply_eosio_setabi(apply_context& context) { context.require_authorization(act.account); - const auto& account = db.get(act.account); + const auto& account = db.get(act.account); int64_t abi_size = act.abi.size(); @@ -193,7 +220,7 @@ void apply_eosio_setabi(apply_context& context) { } }); - const auto& account_sequence = db.get(act.account); + const auto& account_sequence = db.get(act.account); db.modify( account_sequence, [&]( auto& aso ) { aso.abi_sequence += 1; }); @@ -215,7 +242,7 @@ void apply_eosio_updateauth(apply_context& context) { EOS_ASSERT( update.permission.to_string().find( "eosio." ) != 0, action_validate_exception, "Permission names that start with 'eosio.' are reserved" ); EOS_ASSERT(update.permission != update.parent, action_validate_exception, "Cannot set an authority as its own parent"); - db.get(update.account); + db.get(update.account); EOS_ASSERT(validate(update.auth), action_validate_exception, "Invalid authority: ${auth}", ("auth", update.auth)); if( update.permission == config::active_name ) @@ -308,10 +335,10 @@ void apply_eosio_linkauth(apply_context& context) { context.require_authorization(requirement.account); // only here to mark the single authority on this action as used auto& db = context.db; - const auto *account = db.find(requirement.account); + const auto *account = db.find(requirement.account); EOS_ASSERT(account != nullptr, account_query_exception, "Failed to retrieve account: ${account}", ("account", requirement.account)); // Redundant? - const auto *code = db.find(requirement.code); + const auto *code = db.find(requirement.code); EOS_ASSERT(code != nullptr, account_query_exception, "Failed to retrieve code for account: ${account}", ("account", requirement.code)); if( requirement.requirement != config::eosio_any_name ) { diff --git a/libraries/chain/genesis_intrinsics.cpp b/libraries/chain/genesis_intrinsics.cpp new file mode 100644 index 00000000000..1ce6dd0bbe9 --- /dev/null +++ b/libraries/chain/genesis_intrinsics.cpp @@ -0,0 +1,184 @@ +#include + +namespace eosio { namespace chain { + +const std::vector genesis_intrinsics = { + "__ashrti3", + "__lshlti3", + "__lshrti3", + "__ashlti3", + "__divti3", + "__udivti3", + "__modti3", + "__umodti3", + "__multi3", + "__addtf3", + "__subtf3", + "__multf3", + "__divtf3", + "__eqtf2", + "__netf2", + "__getf2", + "__gttf2", + "__lttf2", + "__letf2", + "__cmptf2", + "__unordtf2", + "__negtf2", + "__floatsitf", + "__floatunsitf", + "__floatditf", + "__floatunditf", + "__floattidf", + "__floatuntidf", + "__floatsidf", + "__extendsftf2", + "__extenddftf2", + "__fixtfti", + "__fixtfdi", + "__fixtfsi", + "__fixunstfti", + "__fixunstfdi", + "__fixunstfsi", + "__fixsfti", + "__fixdfti", + "__fixunssfti", + "__fixunsdfti", + "__trunctfdf2", + "__trunctfsf2", + "is_feature_active", + "activate_feature", + "get_resource_limits", + "set_resource_limits", + "set_proposed_producers", + "get_blockchain_parameters_packed", + "set_blockchain_parameters_packed", + "is_privileged", + "set_privileged", + "get_active_producers", + "db_idx64_store", + "db_idx64_remove", + "db_idx64_update", + "db_idx64_find_primary", + "db_idx64_find_secondary", + "db_idx64_lowerbound", + "db_idx64_upperbound", + "db_idx64_end", + "db_idx64_next", + "db_idx64_previous", + "db_idx128_store", + "db_idx128_remove", + "db_idx128_update", + "db_idx128_find_primary", + "db_idx128_find_secondary", + "db_idx128_lowerbound", + "db_idx128_upperbound", + "db_idx128_end", + "db_idx128_next", + "db_idx128_previous", + "db_idx256_store", + "db_idx256_remove", + "db_idx256_update", + "db_idx256_find_primary", + "db_idx256_find_secondary", + "db_idx256_lowerbound", + "db_idx256_upperbound", + "db_idx256_end", + "db_idx256_next", + "db_idx256_previous", + "db_idx_double_store", + "db_idx_double_remove", + "db_idx_double_update", + "db_idx_double_find_primary", + "db_idx_double_find_secondary", + "db_idx_double_lowerbound", + "db_idx_double_upperbound", + "db_idx_double_end", + "db_idx_double_next", + "db_idx_double_previous", + "db_idx_long_double_store", + "db_idx_long_double_remove", + "db_idx_long_double_update", + "db_idx_long_double_find_primary", + "db_idx_long_double_find_secondary", + "db_idx_long_double_lowerbound", + "db_idx_long_double_upperbound", + "db_idx_long_double_end", + "db_idx_long_double_next", + "db_idx_long_double_previous", + "db_store_i64", + "db_update_i64", + "db_remove_i64", + "db_get_i64", + "db_next_i64", + "db_previous_i64", + "db_find_i64", + "db_lowerbound_i64", + "db_upperbound_i64", + "db_end_i64", + "assert_recover_key", + "recover_key", + "assert_sha256", + "assert_sha1", + "assert_sha512", + "assert_ripemd160", + "sha1", + "sha256", + "sha512", + "ripemd160", + "check_transaction_authorization", + "check_permission_authorization", + "get_permission_last_used", + "get_account_creation_time", + "current_time", + "publication_time", + "abort", + "eosio_assert", + "eosio_assert_message", + "eosio_assert_code", + "eosio_exit", + "read_action_data", + "action_data_size", + "current_receiver", + "require_recipient", + "require_auth", + "require_auth2", + "has_auth", + "is_account", + "prints", + "prints_l", + "printi", + "printui", + "printi128", + "printui128", + "printsf", + "printdf", + "printqf", + "printn", + "printhex", + "read_transaction", + "transaction_size", + "expiration", + "tapos_block_prefix", + "tapos_block_num", + "get_action", + "send_inline", + "send_context_free_inline", + "send_deferred", + "cancel_deferred", + "get_context_free_data", + "memcpy", + "memmove", + "memcmp", + "memset", + "bpsig_action_time_seed", + "set_name_list_packed", + "set_guaranteed_minimum_resources", + "set_upgrade_parameters_packed", + "get_transaction_id", + "get_action_sequence", + "has_contract", + "get_contract_code" +}; + +} } // namespace eosio::chain diff --git a/libraries/chain/include/eosio/chain/account_object.hpp b/libraries/chain/include/eosio/chain/account_object.hpp index b995a8508a1..05e6e3c4a88 100644 --- a/libraries/chain/include/eosio/chain/account_object.hpp +++ b/libraries/chain/include/eosio/chain/account_object.hpp @@ -5,6 +5,7 @@ #pragma once #include #include +#include #include #include @@ -12,21 +13,79 @@ namespace eosio { namespace chain { - class account_object : public chainbase::object { - OBJECT_CTOR(account_object,(code)(abi)) + // old account + class account_object : public chainbase::object { + OBJECT_CTOR(account_object,(code)(abi)) + + id_type id; + account_name name; + uint8_t vm_type = 0; + uint8_t vm_version = 0; + bool privileged = false; + + time_point last_code_update; + digest_type code_version; + block_timestamp_type creation_date; + + shared_blob code; + shared_blob abi; + + void set_abi( const eosio::chain::abi_def& a ) { + abi.resize( fc::raw::pack_size( a ) ); + fc::datastream ds( abi.data(), abi.size() ); + fc::raw::pack( ds, a ); + } + + eosio::chain::abi_def get_abi()const { + eosio::chain::abi_def a; + EOS_ASSERT( abi.size() != 0, abi_not_found_exception, "No ABI set on account ${n}", ("n",name) ); + + fc::datastream ds( abi.data(), abi.size() ); + fc::raw::unpack( ds, a ); + return a; + } + }; + using account_id_type = account_object::id_type; + + struct by_name; + using account_index = chainbase::shared_multi_index_container< + account_object, + indexed_by< + ordered_unique, member>, + ordered_unique, member> + > + >; + + class account_sequence_object : public chainbase::object + { + OBJECT_CTOR(account_sequence_object); + + id_type id; + account_name name; + uint64_t recv_sequence = 0; + uint64_t auth_sequence = 0; + uint64_t code_sequence = 0; + uint64_t abi_sequence = 0; + }; + + struct by_name; + using account_sequence_index = chainbase::shared_multi_index_container< + account_sequence_object, + indexed_by< + ordered_unique, member>, + ordered_unique, member> + > + >; + + + // new account + class account_object2 : public chainbase::object { + OBJECT_CTOR(account_object2,(abi)) id_type id; - account_name name; - uint8_t vm_type = 0; - uint8_t vm_version = 0; - bool privileged = false; - - time_point last_code_update; - digest_type code_version; + account_name name; //< name should not be changed within a chainbase modifier lambda block_timestamp_type creation_date; - - shared_blob code; - shared_blob abi; + shared_blob abi; void set_abi( const eosio::chain::abi_def& a ) { abi.resize( fc::raw::pack_size( a ) ); @@ -43,35 +102,48 @@ namespace eosio { namespace chain { return a; } }; - using account_id_type = account_object::id_type; - struct by_name; - using account_index = chainbase::shared_multi_index_container< - account_object, + using account_index2 = chainbase::shared_multi_index_container< + account_object2, indexed_by< - ordered_unique, member>, - ordered_unique, member> + ordered_unique, member>, + ordered_unique, member> > >; - class account_sequence_object : public chainbase::object + class account_metadata_object : public chainbase::object { - OBJECT_CTOR(account_sequence_object); - - id_type id; - account_name name; - uint64_t recv_sequence = 0; - uint64_t auth_sequence = 0; - uint64_t code_sequence = 0; - uint64_t abi_sequence = 0; + OBJECT_CTOR(account_metadata_object); + + enum class flags_fields : uint32_t { + privileged = 1 + }; + + id_type id; + account_name name; //< name should not be changed within a chainbase modifier lambda + uint64_t recv_sequence = 0; + uint64_t auth_sequence = 0; + uint64_t code_sequence = 0; + uint64_t abi_sequence = 0; + digest_type code_hash; + time_point last_code_update; + uint32_t flags = 0; + uint8_t vm_type = 0; + uint8_t vm_version = 0; + + bool is_privileged()const { return has_field( flags, flags_fields::privileged ); } + + void set_privileged( bool privileged ) { + flags = set_field( flags, flags_fields::privileged, privileged ); + } }; struct by_name; - using account_sequence_index = chainbase::shared_multi_index_container< - account_sequence_object, + using account_metadata_index = chainbase::shared_multi_index_container< + account_metadata_object, indexed_by< - ordered_unique, member>, - ordered_unique, member> + ordered_unique, member>, + ordered_unique, member> > >; @@ -80,6 +152,13 @@ namespace eosio { namespace chain { CHAINBASE_SET_INDEX_TYPE(eosio::chain::account_object, eosio::chain::account_index) CHAINBASE_SET_INDEX_TYPE(eosio::chain::account_sequence_object, eosio::chain::account_sequence_index) - FC_REFLECT(eosio::chain::account_object, (name)(vm_type)(vm_version)(privileged)(last_code_update)(code_version)(creation_date)(code)(abi)) -FC_REFLECT(eosio::chain::account_sequence_object, (name)(recv_sequence)(auth_sequence)(code_sequence)(abi_sequence)) \ No newline at end of file +FC_REFLECT(eosio::chain::account_sequence_object, (name)(recv_sequence)(auth_sequence)(code_sequence)(abi_sequence)) + +CHAINBASE_SET_INDEX_TYPE(eosio::chain::account_object2, eosio::chain::account_index2) +CHAINBASE_SET_INDEX_TYPE(eosio::chain::account_metadata_object, eosio::chain::account_metadata_index) + + +FC_REFLECT(eosio::chain::account_object2, (name)(creation_date)(abi)) +FC_REFLECT(eosio::chain::account_metadata_object, (name)(recv_sequence)(auth_sequence)(code_sequence)(abi_sequence) + (code_hash)(last_code_update)(flags)(vm_type)(vm_version)) diff --git a/libraries/chain/include/eosio/chain/apply_context.hpp b/libraries/chain/include/eosio/chain/apply_context.hpp index 3909906dbd5..6272636deab 100644 --- a/libraries/chain/include/eosio/chain/apply_context.hpp +++ b/libraries/chain/include/eosio/chain/apply_context.hpp @@ -62,7 +62,7 @@ class apply_context { const T& get( int iterator ) { EOS_ASSERT( iterator != -1, invalid_table_iterator, "invalid iterator" ); EOS_ASSERT( iterator >= 0, table_operation_not_permitted, "dereference of end iterator" ); - EOS_ASSERT( iterator < _iterator_to_object.size(), invalid_table_iterator, "iterator out of range" ); + EOS_ASSERT( (size_t)iterator < _iterator_to_object.size(), invalid_table_iterator, "iterator out of range" ); auto result = _iterator_to_object[iterator]; EOS_ASSERT( result, table_operation_not_permitted, "dereference of deleted object" ); return *result; @@ -575,6 +575,11 @@ class apply_context { void add_ram_usage( account_name account, int64_t ram_delta ); void finalize_trace( action_trace& trace, const fc::time_point& start ); + bool is_context_free()const { return context_free; } + bool is_privileged()const { return privileged; } + action_name get_receiver()const { return receiver; } + const action& get_action()const { return act; } + /// Fields: public: diff --git a/libraries/chain/include/eosio/chain/code_object.hpp b/libraries/chain/include/eosio/chain/code_object.hpp new file mode 100644 index 00000000000..043d9855d9b --- /dev/null +++ b/libraries/chain/include/eosio/chain/code_object.hpp @@ -0,0 +1,40 @@ +#pragma once +#include +#include + +#include "multi_index_includes.hpp" + +namespace eosio { namespace chain { + + class code_object : public chainbase::object { + OBJECT_CTOR(code_object, (code)) + + id_type id; + digest_type code_hash; //< code_hash should not be changed within a chainbase modifier lambda + shared_blob code; + uint64_t code_ref_count; + uint32_t first_block_used; + uint8_t vm_type = 0; //< vm_type should not be changed within a chainbase modifier lambda + uint8_t vm_version = 0; //< vm_version should not be changed within a chainbase modifier lambda + }; + + struct by_code_hash; + using code_index = chainbase::shared_multi_index_container< + code_object, + indexed_by< + ordered_unique, member>, + ordered_unique, + composite_key< code_object, + member, + member, + member + > + > + > + >; + +} } // eosio::chain + +CHAINBASE_SET_INDEX_TYPE(eosio::chain::code_object, eosio::chain::code_index) + +FC_REFLECT(eosio::chain::code_object, (code_hash)(code)(code_ref_count)(first_block_used)(vm_type)(vm_version)) diff --git a/libraries/chain/include/eosio/chain/config.hpp b/libraries/chain/include/eosio/chain/config.hpp index cb294eecc7f..3f44522498b 100644 --- a/libraries/chain/include/eosio/chain/config.hpp +++ b/libraries/chain/include/eosio/chain/config.hpp @@ -55,6 +55,7 @@ static const uint32_t account_cpu_usage_average_window_ms = 24*60*60*1000l; static const uint32_t account_net_usage_average_window_ms = 24*60*60*1000l; static const uint32_t block_cpu_usage_average_window_ms = 60*1000l; static const uint32_t block_size_average_window_ms = 60*1000l; +const static uint32_t genesis_num_supported_key_types = 2; //const static uint64_t default_max_storage_size = 10 * 1024; //const static uint32_t default_max_trx_runtime = 10*1000; diff --git a/libraries/chain/include/eosio/chain/controller.hpp b/libraries/chain/include/eosio/chain/controller.hpp index ad827f54f73..cee256a5c09 100644 --- a/libraries/chain/include/eosio/chain/controller.hpp +++ b/libraries/chain/include/eosio/chain/controller.hpp @@ -33,7 +33,7 @@ namespace eosio { namespace chain { class upgrade_property_object; class global_property3_object; // *bos* class permission_object; - class account_object; + class account_object2; using resource_limits::resource_limits_manager; using apply_handler = std::function; using unapplied_transactions_type = map; @@ -182,7 +182,7 @@ namespace eosio { namespace chain { void set_my_signature_providers(std::map msp); - const account_object& get_account( account_name n )const; + const account_object2& get_account( account_name n )const; const global_property_object& get_global_properties()const; const dynamic_global_property_object& get_dynamic_global_properties()const; const resource_limits_manager& get_resource_limits_manager()const; diff --git a/libraries/chain/include/eosio/chain/exceptions.hpp b/libraries/chain/include/eosio/chain/exceptions.hpp index 65d9e8c0ce6..5c295192a1d 100644 --- a/libraries/chain/include/eosio/chain/exceptions.hpp +++ b/libraries/chain/include/eosio/chain/exceptions.hpp @@ -230,6 +230,8 @@ namespace eosio { namespace chain { 3060003, "Contract Table Query Exception" ) FC_DECLARE_DERIVED_EXCEPTION( contract_query_exception, database_exception, 3060004, "Contract Query Exception" ) + FC_DECLARE_DERIVED_EXCEPTION( bad_database_version_exception, database_exception, + 3060005, "Database is an unknown or unsupported version" ) FC_DECLARE_DERIVED_EXCEPTION( guard_exception, database_exception, 3060100, "Guard Exception" ) @@ -272,6 +274,7 @@ namespace eosio { namespace chain { 3080007, "Transaction exceeded the current greylisted account network usage limit" ) FC_DECLARE_DERIVED_EXCEPTION( greylist_cpu_usage_exceeded, resource_exhausted_exception, 3080008, "Transaction exceeded the current greylisted account CPU usage limit" ) + FC_DECLARE_DERIVED_EXCEPTION( leeway_deadline_exception, deadline_exception, 3081001, "Transaction reached the deadline set due to leeway on account CPU limits" ) @@ -482,6 +485,8 @@ namespace eosio { namespace chain { 3190003, "block log can not be found" ) FC_DECLARE_DERIVED_EXCEPTION( block_log_backup_dir_exist, block_log_exception, 3190004, "block log backup dir already exists" ) + FC_DECLARE_DERIVED_EXCEPTION( block_index_not_found, block_log_exception, + 3190005, "block index can not be found" ) FC_DECLARE_DERIVED_EXCEPTION( http_exception, chain_exception, 3200000, "http exception" ) diff --git a/libraries/chain/include/eosio/chain/generated_transaction_object.hpp b/libraries/chain/include/eosio/chain/generated_transaction_object.hpp index 24db926b4a8..be75b5efabf 100644 --- a/libraries/chain/include/eosio/chain/generated_transaction_object.hpp +++ b/libraries/chain/include/eosio/chain/generated_transaction_object.hpp @@ -3,6 +3,7 @@ * @copyright defined in eos/LICENSE */ #pragma once +#include #include #include diff --git a/libraries/chain/include/eosio/chain/genesis_intrinsics.hpp b/libraries/chain/include/eosio/chain/genesis_intrinsics.hpp new file mode 100644 index 00000000000..10eb4f8858a --- /dev/null +++ b/libraries/chain/include/eosio/chain/genesis_intrinsics.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include + +namespace eosio { namespace chain { + +extern const std::vector genesis_intrinsics; + +} } // namespace eosio::chain diff --git a/libraries/chain/include/eosio/chain/name.hpp b/libraries/chain/include/eosio/chain/name.hpp index 81c13145dde..52a100b5c00 100644 --- a/libraries/chain/include/eosio/chain/name.hpp +++ b/libraries/chain/include/eosio/chain/name.hpp @@ -56,8 +56,9 @@ namespace eosio { namespace chain { explicit operator string()const; string to_string() const { return string(*this); } + constexpr uint64_t to_uint64_t()const { return value; } - name& operator=( uint64_t v ) { + name& operator=( uint64_t v ) { value = v; return *this; } diff --git a/libraries/chain/include/eosio/chain/platform_timer.hpp b/libraries/chain/include/eosio/chain/platform_timer.hpp new file mode 100644 index 00000000000..ff48d4a19b1 --- /dev/null +++ b/libraries/chain/include/eosio/chain/platform_timer.hpp @@ -0,0 +1,61 @@ +#pragma once +#include +#include +#include + +#include + +#include + +#include + +namespace eosio { namespace chain { + +struct platform_timer { + platform_timer(); + ~platform_timer(); + + void start(fc::time_point tp); + void stop(); + + /* Sets a callback for when timer expires. Be aware this could might fire from a signal handling context and/or + on any particular thread. Only a single callback can be registered at once; trying to register more will + result in an exception. Setting to nullptr disables any current set callback */ + void set_expiration_callback(void(*func)(void*), void* user) { + bool expect_false = false; + while(!atomic_compare_exchange_strong(&_callback_variables_busy, &expect_false, true)) + expect_false = false; + auto reset_busy = fc::make_scoped_exit([this]() { + _callback_variables_busy.store(false, std::memory_order_release); + }); + EOS_ASSERT(!(func && _expiration_callback), misc_exception, "Setting a platform_timer callback when one already exists"); + + _expiration_callback = func; + _expiration_callback_data = user; + } + + std::atomic_bool expired = true; + + private: + struct impl; + constexpr static size_t fwd_size = 8; + fc::fwd my; + + void call_expiration_callback() { + bool expect_false = false; + if(atomic_compare_exchange_strong(&_callback_variables_busy, &expect_false, true)) { + void(*cb)(void*) = _expiration_callback; + void* cb_data = _expiration_callback_data; + if(cb) { + cb(cb_data); + } + _callback_variables_busy.store(false, std::memory_order_release); + } + } + + std::atomic_bool _callback_variables_busy = false; + void(*_expiration_callback)(void*) = nullptr; + void* _expiration_callback_data; +}; + +}} diff --git a/libraries/chain/include/eosio/chain/platform_timer_accuracy.hpp b/libraries/chain/include/eosio/chain/platform_timer_accuracy.hpp new file mode 100755 index 00000000000..cc83b6a554f --- /dev/null +++ b/libraries/chain/include/eosio/chain/platform_timer_accuracy.hpp @@ -0,0 +1,8 @@ +#pragma once + +namespace eosio { namespace chain { + +struct platform_timer; +void compute_and_print_timer_accuracy(platform_timer& t); + +}} \ No newline at end of file diff --git a/libraries/chain/include/eosio/chain/protocol_state_object.hpp b/libraries/chain/include/eosio/chain/protocol_state_object.hpp new file mode 100644 index 00000000000..317a11f5b6a --- /dev/null +++ b/libraries/chain/include/eosio/chain/protocol_state_object.hpp @@ -0,0 +1,41 @@ +#pragma once + +#include +#include +#include +#include +#include "multi_index_includes.hpp" + +namespace eosio { namespace chain { + +/** + * @class protocol_state_object + * @brief Maintains global state information about consensus protocol rules + * @ingroup object + * @ingroup implementation + */ +class protocol_state_object : public chainbase::object +{ + OBJECT_CTOR(protocol_state_object, (whitelisted_intrinsics)) + + id_type id; + whitelisted_intrinsics_type whitelisted_intrinsics; +}; + +using protocol_state_multi_index = chainbase::shared_multi_index_container< + protocol_state_object, + indexed_by< + ordered_unique, + BOOST_MULTI_INDEX_MEMBER(protocol_state_object, protocol_state_object::id_type, id) + > + > +>; + +}} + +CHAINBASE_SET_INDEX_TYPE(eosio::chain::protocol_state_object, eosio::chain::protocol_state_multi_index) + +FC_REFLECT(eosio::chain::protocol_state_object, + (whitelisted_intrinsics) +) + diff --git a/libraries/chain/include/eosio/chain/transaction_context.hpp b/libraries/chain/include/eosio/chain/transaction_context.hpp index b0327dafb18..0d627c6613b 100644 --- a/libraries/chain/include/eosio/chain/transaction_context.hpp +++ b/libraries/chain/include/eosio/chain/transaction_context.hpp @@ -1,10 +1,34 @@ #pragma once #include #include +#include #include namespace eosio { namespace chain { + struct transaction_checktime_timer { + public: + transaction_checktime_timer() = delete; + transaction_checktime_timer(const transaction_checktime_timer&) = delete; + transaction_checktime_timer(transaction_checktime_timer&&) = default; + ~transaction_checktime_timer(); + + void start(fc::time_point tp); + void stop(); + + /* Sets a callback for when timer expires. Be aware this could might fire from a signal handling context and/or + on any particular thread. Only a single callback can be registered at once; trying to register more will + result in an exception. Use nullptr to disable a previously set callback. */ + void set_expiration_callback(void(*func)(void*), void* user); + + std::atomic_bool& expired; + private: + platform_timer& _timer; + + transaction_checktime_timer(platform_timer& timer); + friend controller_impl; + }; + struct deadline_timer { deadline_timer(); ~deadline_timer(); @@ -27,7 +51,8 @@ namespace eosio { namespace chain { transaction_context( controller& c, const signed_transaction& t, const transaction_id_type& trx_id, - fc::time_point start = fc::time_point::now() ); + transaction_checktime_timer&& timer, + fc::time_point start = fc::time_point::now() ); void init_for_implicit_trx( uint64_t initial_net_usage = 0 ); @@ -103,7 +128,9 @@ namespace eosio { namespace chain { int64_t billed_cpu_time_us = 0; bool explicit_billed_cpu_time = false; - private: + transaction_checktime_timer transaction_timer; + + private: bool is_initialized = false; diff --git a/libraries/chain/include/eosio/chain/types.hpp b/libraries/chain/include/eosio/chain/types.hpp index 4cf8b055cd2..9a25de37898 100644 --- a/libraries/chain/include/eosio/chain/types.hpp +++ b/libraries/chain/include/eosio/chain/types.hpp @@ -8,7 +8,7 @@ #include -#include +#include #include #include #include @@ -77,6 +77,7 @@ namespace eosio { namespace chain { using fc::time_point; using fc::safe; using fc::flat_map; + using fc::flat_multimap; using fc::flat_set; using fc::static_variant; using fc::ecc::range_proof_type; @@ -95,6 +96,8 @@ namespace eosio { namespace chain { using shared_vector = boost::interprocess::vector>; template using shared_set = boost::interprocess::set, allocator>; + template + using shared_flat_multimap = boost::interprocess::flat_multimap< K, V, std::less, allocator< std::pair > >; /** * For bugs in boost interprocess we moved our blob data to shared_string @@ -151,7 +154,7 @@ namespace eosio { namespace chain { { null_object_type = 0, account_object_type, - account_sequence_object_type, + account_sequence_object_type, permission_object_type, permission_usage_object_type, permission_link_object_type, @@ -189,12 +192,63 @@ namespace eosio { namespace chain { account_history_object_type, ///< Defined by history_plugin action_history_object_type, ///< Defined by history_plugin reversible_block_object_type, - upgrade_property_object_type, + upgrade_property_object_type, global_property3_object_type, - OBJECT_TYPE_COUNT ///< Sentry value which contains the number of different object types + account_object2_type, + account_metadata_object_type, + code_object_type, + protocol_state_object_type, + OBJECT_TYPE_COUNT ///< Sentry value which contains the number of different object types }; - class account_object; + /** + * Important notes on using chainbase objects in EOSIO code: + * + * There are several constraints that need to be followed when using chainbase objects. + * Some of these constraints are due to the requirements imposed by the chainbase library, + * others are due to requirements to ensure determinism in the EOSIO chain library. + * + * Before listing the constraints, the "restricted field set" must be defined. + * + * Every chainbase object includes a field called id which has the type id_type. + * The id field is always included in the restricted field set. + * + * A field of a chainbase object is considered to be in the restricted field set if it is involved in the + * derivation of the key used for one of the indices in the chainbase multi-index unless its only involvement + * is through being included in composite_keys that end with the id field. + * + * So if the multi-index includes an index like the following + * ``` + * ordered_unique< tag, + * composite_key< generated_transaction_object, + * BOOST_MULTI_INDEX_MEMBER( generated_transaction_object, account_name, sender), + * BOOST_MULTI_INDEX_MEMBER( generated_transaction_object, uint128_t, sender_id) + * > + * > + * ``` + * both `sender` and `sender_id` fields are part of the restricted field set. + * + * On the other hand, an index like the following + * ``` + * ordered_unique< tag, + * composite_key< generated_transaction_object, + * BOOST_MULTI_INDEX_MEMBER( generated_transaction_object, time_point, expiration), + * BOOST_MULTI_INDEX_MEMBER( generated_transaction_object, generated_transaction_object::id_type, id) + * > + * > + * ``` + * would not by itself require the `expiration` field to be part of the restricted field set. + * + * The restrictions on usage of the chainbase objects within this code base are: + * + The chainbase object includes the id field discussed above. + * + The multi-index must include an ordered_unique index tagged with by_id that is based on the id field as the sole key. + * + No other types of indices other than ordered_unique are allowed. + * If an index is desired that does not enforce uniqueness, then use a composite key that ends with the id field. + * + When creating a chainbase object, the constructor lambda should never mutate the id field. + * + When modifying a chainbase object, the modifier lambda should never mutate any fields in the restricted field set. + */ + + class account_object2; class producer_object; using block_id_type = fc::sha256; @@ -211,6 +265,14 @@ namespace eosio { namespace chain { using uint128_t = unsigned __int128; using bytes = vector; + struct sha256_less { + bool operator()( const fc::sha256& lhs, const fc::sha256& rhs ) const { + return + std::tie(lhs._hash[0], lhs._hash[1], lhs._hash[2], lhs._hash[3]) < + std::tie(rhs._hash[0], rhs._hash[1], rhs._hash[2], rhs._hash[3]); + } + }; + /** * Extentions are prefixed with type and are a buffer that can be @@ -218,7 +280,128 @@ namespace eosio { namespace chain { */ typedef vector>> extensions_type; + /** + * emplace an extension into the extensions type such that it is properly ordered by extension id + * this assumes exts is already sorted by extension id + */ + inline auto emplace_extension( extensions_type& exts, uint16_t eid, vector&& data) { + auto insert_itr = std::upper_bound(exts.begin(), exts.end(), eid, [](uint16_t id, const auto& ext){ + return id < ext.first; + }); + + return exts.emplace(insert_itr, eid, std::move(data)); + } + + + template + class end_insert_iterator : public std::iterator< std::output_iterator_tag, void, void, void, void > + { + protected: + Container* container; + + public: + using container_type = Container; + + explicit end_insert_iterator( Container& c ) + :container(&c) + {} + + end_insert_iterator& operator=( typename Container::const_reference value ) { + container->insert( container->cend(), value ); + return *this; + } + + end_insert_iterator& operator*() { return *this; } + end_insert_iterator& operator++() { return *this; } + end_insert_iterator operator++(int) { return *this; } + }; + + template + inline end_insert_iterator end_inserter( Container& c ) { + return end_insert_iterator( c ); + } + + template + struct enum_hash + { + static_assert( std::is_enum::value, "enum_hash can only be used on enumeration types" ); + + using underlying_type = typename std::underlying_type::type; + + std::size_t operator()(T t) const + { + return std::hash{}( static_cast(t) ); + } + }; + // enum_hash needed to support old gcc compiler of Ubuntu 16.04 + + namespace detail { + struct extract_match { + bool enforce_unique = false; + }; + + template + struct decompose; + + template<> + struct decompose<> { + template + static auto extract( uint16_t id, const vector& data, ResultVariant& result ) + -> fc::optional + { + return {}; + } + }; + + template + struct decompose { + using head_t = T; + using tail_t = decompose< Rest... >; + + template + static auto extract( uint16_t id, const vector& data, ResultVariant& result ) + -> fc::optional + { + if( id == head_t::extension_id() ) { + result = fc::raw::unpack( data ); + return { extract_match{ head_t::enforce_unique() } }; + } + + return tail_t::template extract( id, data, result ); + } + }; + + template + struct is_any_of { + static constexpr bool value = std::disjunction_v...>; + }; + + template + constexpr bool is_any_of_v = is_any_of::value; + } + + template + static inline auto has_field( F flags, E field ) + -> std::enable_if_t< std::is_integral::value && std::is_unsigned::value && + std::is_enum::value && std::is_same< F, std::underlying_type_t >::value, bool> + { + return ( (flags & static_cast(field)) != 0 ); + } + + template + static inline auto set_field( F flags, E field, bool value = true ) + -> std::enable_if_t< std::is_integral::value && std::is_unsigned::value && + std::is_enum::value && std::is_same< F, std::underlying_type_t >::value, F > + { + if( value ) + return ( flags | static_cast(field) ); + else + return ( flags & ~static_cast(field) ); + } + + template struct overloaded : Ts... { using Ts::operator()...; }; + template overloaded(Ts...) -> overloaded; } } // eosio::chain -FC_REFLECT( eosio::chain::void_t, ) +FC_REFLECT_EMPTY( eosio::chain::void_t ) diff --git a/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp b/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp index b8bd39823b5..71ab4ab677f 100644 --- a/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp +++ b/libraries/chain/include/eosio/chain/wasm_eosio_injection.hpp @@ -37,7 +37,7 @@ namespace eosio { namespace chain { namespace wasm_injections { static void build_type_slots( Module& mod ) { // add the module types to the type_slots map - for ( int i=0; i < mod.types.size(); i++ ) { + for ( size_t i=0; i < mod.types.size(); i++ ) { std::vector type_slot_list = { static_cast(mod.types[i]->ret) }; for ( auto param : mod.types[i]->parameters ) type_slot_list.push_back( static_cast(param) ); @@ -55,11 +55,6 @@ namespace eosio { namespace chain { namespace wasm_injections { // get the next available index that is greater than the last exported function static void get_next_indices( Module& module, int& next_function_index, int& next_actual_index ) { - int exports = 0; - for ( auto exp : module.exports ) - if ( exp.kind == IR::ObjectKind::function ) - exports++; - next_function_index = module.functions.imports.size() + module.functions.defs.size() + registered_injected.size(); next_actual_index = next_injected_index++; } @@ -78,7 +73,7 @@ namespace eosio { namespace chain { namespace wasm_injections { injected_index_mapping.emplace( index, actual_index ); // shift all exported functions by 1 - for ( int i=0; i < module.exports.size(); i++ ) { + for ( size_t i=0; i < module.exports.size(); i++ ) { if ( module.exports[i].kind == IR::ObjectKind::function ) { module.exports[i].index++; } @@ -682,9 +677,6 @@ namespace eosio { namespace chain { namespace wasm_injections { }; struct pre_op_injectors : wasm_ops::op_types { - using call_t = wasm_ops::call ; - using call_indirect_t = wasm_ops::call_indirect ; - // float binops using f32_add_t = wasm_ops::f32_add >; using f32_sub_t = wasm_ops::f32_sub >; @@ -757,10 +749,17 @@ namespace eosio { namespace chain { namespace wasm_injections { using f64_convert_u_i64 = wasm_ops::f64_convert_u_i64 >; }; // pre_op_injectors + struct pre_op_full_injectors : pre_op_injectors { + using call_t = wasm_ops::call ; + using call_indirect_t = wasm_ops::call_indirect ; + }; struct post_op_injectors : wasm_ops::op_types { + using call_t = wasm_ops::call ; + }; + + struct post_op_full_injectors : post_op_injectors { using loop_t = wasm_ops::loop ; - using call_t = wasm_ops::call ; using grow_memory_t = wasm_ops::grow_memory ; }; @@ -779,7 +778,9 @@ namespace eosio { namespace chain { namespace wasm_injections { } }; - // inherit from this class and define your own injectors + // "full injection" gives checktime & depth counting along with softfloat injection. + // Otherwise you'll just get softfloat injection + template class wasm_binary_injection { using standard_module_injectors = module_injectors< max_memory_injection_visitor >; @@ -795,10 +796,11 @@ namespace eosio { namespace chain { namespace wasm_injections { void inject() { _module_injectors.inject( *_module ); // inject checktime first - injector_utils::add_import( *_module, u8"checktime", checktime_injection::chktm_idx ); + if constexpr (full_injection) + injector_utils::add_import( *_module, u8"checktime", checktime_injection::chktm_idx ); for ( auto& fd : _module->functions.defs ) { - wasm_ops::EOSIO_OperatorDecoderStream pre_decoder(fd.code); + wasm_ops::EOSIO_OperatorDecoderStream> pre_decoder(fd.code); wasm_ops::instruction_stream pre_code(fd.code.size()*2); while ( pre_decoder ) { @@ -816,12 +818,14 @@ namespace eosio { namespace chain { namespace wasm_injections { fd.code = pre_code.get(); } for ( auto& fd : _module->functions.defs ) { - wasm_ops::EOSIO_OperatorDecoderStream post_decoder(fd.code); + wasm_ops::EOSIO_OperatorDecoderStream> post_decoder(fd.code); wasm_ops::instruction_stream post_code(fd.code.size()*2); - wasm_ops::op_types<>::call_t chktm; - chktm.field = injector_utils::injected_index_mapping.find(checktime_injection::chktm_idx)->second; - chktm.pack(&post_code); + if constexpr (full_injection) { + wasm_ops::op_types<>::call_t chktm; + chktm.field = injector_utils::injected_index_mapping.find(checktime_injection::chktm_idx)->second; + chktm.pack(&post_code); + } while ( post_decoder ) { auto op = post_decoder.decodeOp(); @@ -840,8 +844,7 @@ namespace eosio { namespace chain { namespace wasm_injections { } private: IR::Module* _module; - static std::string op_string; - static standard_module_injectors _module_injectors; + standard_module_injectors _module_injectors; }; }}} // namespace wasm_constraints, chain, eosio diff --git a/libraries/chain/include/eosio/chain/wasm_interface.hpp b/libraries/chain/include/eosio/chain/wasm_interface.hpp index 7e6991996af..ea6f1c9b8a9 100644 --- a/libraries/chain/include/eosio/chain/wasm_interface.hpp +++ b/libraries/chain/include/eosio/chain/wasm_interface.hpp @@ -1,5 +1,6 @@ #pragma once #include +#include #include #include "Runtime/Linker.h" #include "Runtime/Runtime.h" @@ -9,7 +10,6 @@ namespace eosio { namespace chain { class apply_context; class wasm_runtime_interface; class controller; - struct wasm_exit { int32_t code = 0; }; @@ -17,31 +17,49 @@ namespace eosio { namespace chain { namespace webassembly { namespace common { class intrinsics_accessor; - struct root_resolver : Runtime::Resolver { - //when validating is true; only allow "env" imports. Otherwise allow any imports. This resolver is used - //in two cases: once by the generic validating code where we only want "env" to pass; and then second in the - //wavm runtime where we need to allow linkage to injected functions - root_resolver(bool validating = false) : validating(validating) {} - bool validating; + class root_resolver : public Runtime::Resolver { + public: + // The non-default constructor puts root_resolver in a mode where it does validation, i.e. only allows "env" imports. + // This mode is used by the generic validating code that runs during setcode, where we only want "env" to pass. + // The default constructor is used when no validation is required such as when the wavm runtime needs to + // allow linkage to the intrinsics and the injected functions. + + root_resolver() {} + + root_resolver( const whitelisted_intrinsics_type& whitelisted_intrinsics ) + :whitelisted_intrinsics(&whitelisted_intrinsics) + {} bool resolve(const string& mod_name, const string& export_name, IR::ObjectType type, - Runtime::ObjectInstance*& out) override { - try { - //protect access to "private" injected functions; so for now just simply allow "env" since injected functions - // are in a different module - if(validating && mod_name != "env") - EOS_ASSERT( false, wasm_exception, "importing from module that is not 'env': ${module}.${export}", ("module",mod_name)("export",export_name) ); - - // Try to resolve an intrinsic first. - if(Runtime::IntrinsicResolver::singleton.resolve(mod_name,export_name,type, out)) { - return true; - } - - EOS_ASSERT( false, wasm_exception, "${module}.${export} unresolveable", ("module",mod_name)("export",export_name) ); - return false; - } FC_CAPTURE_AND_RETHROW( (mod_name)(export_name) ) } + Runtime::ObjectInstance*& out) override + { try { + bool fail = false; + + if( whitelisted_intrinsics != nullptr ) { + // Protect access to "private" injected functions; so for now just simply allow "env" since injected + // functions are in a different module. + EOS_ASSERT( mod_name == "env", wasm_exception, + "importing from module that is not 'env': ${module}.${export}", + ("module",mod_name)("export",export_name) ); + + // Only consider imports that are in the whitelisted set of intrinsics + fail = !is_intrinsic_whitelisted( *whitelisted_intrinsics, export_name ); + } + + // Try to resolve an intrinsic first. + if( !fail && Runtime::IntrinsicResolver::singleton.resolve( mod_name, export_name, type, out ) ) { + return true; + } + + EOS_THROW( wasm_exception, "${module}.${export} unresolveable", + ("module",mod_name)("export",export_name) ); + return false; + } FC_CAPTURE_AND_RETHROW( (mod_name)(export_name) ) } + + protected: + const whitelisted_intrinsics_type* whitelisted_intrinsics = nullptr; }; } } @@ -56,14 +74,23 @@ namespace eosio { namespace chain { wabt }; - wasm_interface(vm_type vm); + wasm_interface(vm_type vm, const chainbase::database& d); ~wasm_interface(); + //call before dtor to skip what can be minutes of dtor overhead with some runtimes; can cause leaks + void indicate_shutting_down(); + //validates code -- does a WASM validation pass and checks the wasm against EOSIO specific constraints static void validate(const controller& control, const bytes& code); + //indicate that a particular code probably won't be used after given block_num + void code_block_num_last_used(const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version, const uint32_t& block_num); + + //indicate the current LIB. evicts old cache entries + void current_lib(const uint32_t lib); + //Calls apply or error on a given code - void apply(const digest_type& code_id, const shared_string& code, apply_context& context); + void apply(const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version, apply_context& context); //Immediately exits currently running wasm. UB is called when no wasm running void exit(); diff --git a/libraries/chain/include/eosio/chain/wasm_interface_private.hpp b/libraries/chain/include/eosio/chain/wasm_interface_private.hpp index c3af34d79ea..957d82ca38b 100644 --- a/libraries/chain/include/eosio/chain/wasm_interface_private.hpp +++ b/libraries/chain/include/eosio/chain/wasm_interface_private.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -20,16 +21,40 @@ using namespace eosio::chain::webassembly; using namespace IR; using namespace Runtime; +using boost::multi_index_container; + namespace eosio { namespace chain { struct wasm_interface_impl { - wasm_interface_impl(wasm_interface::vm_type vm) { + struct wasm_cache_entry { + digest_type code_hash; + uint32_t first_block_num_used; + uint32_t last_block_num_used; + std::unique_ptr module; + uint8_t vm_type = 0; + uint8_t vm_version = 0; + }; + struct by_hash; + struct by_first_block_num; + struct by_last_block_num; + + wasm_interface_impl(wasm_interface::vm_type vm, const chainbase::database& d) : db(d), wasm_runtime_time(vm) { +#ifdef EOSIO_WAVM_RUNTIME_ENABLED if(vm == wasm_interface::vm_type::wavm) runtime_interface = std::make_unique(); - else if(vm == wasm_interface::vm_type::wabt) +#endif + if(vm == wasm_interface::vm_type::wabt) runtime_interface = std::make_unique(); - else - EOS_THROW(wasm_exception, "wasm_interface_impl fall through"); + if(!runtime_interface) + EOS_THROW(wasm_exception, "${r} wasm runtime not supported on this platform and/or configuration", ("r", vm)); + } + + ~wasm_interface_impl() { + if(is_shutting_down) + for(wasm_cache_index::iterator it = wasm_instantiation_cache.begin(); it != wasm_instantiation_cache.end(); ++it) + wasm_instantiation_cache.modify(it, [](wasm_cache_entry& e) { + e.module.release(); + }); } std::vector parse_initial_memory(const Module& module) { @@ -50,51 +75,115 @@ namespace eosio { namespace chain { return mem_image; } - std::unique_ptr& get_instantiated_module( const digest_type& code_id, - const shared_string& code, - transaction_context& trx_context ) + void code_block_num_last_used(const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version, const uint32_t& block_num) { + wasm_cache_index::iterator it = wasm_instantiation_cache.find(boost::make_tuple(code_hash, vm_type, vm_version)); + if(it != wasm_instantiation_cache.end()) + wasm_instantiation_cache.modify(it, [block_num](wasm_cache_entry& e) { + e.last_block_num_used = block_num; + }); + } + + void current_lib(uint32_t lib) { + //anything last used before or on the LIB can be evicted + const auto first_it = wasm_instantiation_cache.get().begin(); + const auto last_it = wasm_instantiation_cache.get().upper_bound(lib); + wasm_instantiation_cache.get().erase(first_it, last_it); + } + + const std::unique_ptr& get_instantiated_module( const digest_type& code_hash, const uint8_t& vm_type, + const uint8_t& vm_version, transaction_context& trx_context ) { - auto it = instantiation_cache.find(code_id); - if(it == instantiation_cache.end()) { + wasm_cache_index::iterator it = wasm_instantiation_cache.find( + boost::make_tuple(code_hash, vm_type, vm_version) ); + const code_object* codeobject = nullptr; + if(it == wasm_instantiation_cache.end()) { + codeobject = &db.get(boost::make_tuple(code_hash, vm_type, vm_version)); + + it = wasm_instantiation_cache.emplace( wasm_interface_impl::wasm_cache_entry{ + .code_hash = code_hash, + .first_block_num_used = codeobject->first_block_used, + .last_block_num_used = UINT32_MAX, + .module = nullptr, + .vm_type = vm_type, + .vm_version = vm_version + } ).first; + } + + if(!it->module) { + if(!codeobject) + codeobject = &db.get(boost::make_tuple(code_hash, vm_type, vm_version)); + auto timer_pause = fc::make_scoped_exit([&](){ trx_context.resume_billing_timer(); }); trx_context.pause_billing_timer(); IR::Module module; + std::vector bytes = { + (const U8*)codeobject->code.data(), + (const U8*)codeobject->code.data() + codeobject->code.size()}; try { - Serialization::MemoryInputStream stream((const U8*)code.data(), code.size()); + Serialization::MemoryInputStream stream((const U8*)bytes.data(), + bytes.size()); WASM::serialize(stream, module); module.userSections.clear(); - } catch(const Serialization::FatalSerializationException& e) { + } catch (const Serialization::FatalSerializationException& e) { EOS_ASSERT(false, wasm_serialization_error, e.message.c_str()); - } catch(const IR::ValidationException& e) { + } catch (const IR::ValidationException& e) { EOS_ASSERT(false, wasm_serialization_error, e.message.c_str()); } - - wasm_injections::wasm_binary_injection injector(module); - injector.inject(); - - std::vector bytes; - try { - Serialization::ArrayOutputStream outstream; - WASM::serialize(outstream, module); - bytes = outstream.getBytes(); - } catch(const Serialization::FatalSerializationException& e) { - EOS_ASSERT(false, wasm_serialization_error, e.message.c_str()); - } catch(const IR::ValidationException& e) { - EOS_ASSERT(false, wasm_serialization_error, e.message.c_str()); + if (runtime_interface->inject_module(module)) { + try { + Serialization::ArrayOutputStream outstream; + WASM::serialize(outstream, module); + bytes = outstream.getBytes(); + } catch (const Serialization::FatalSerializationException& e) { + EOS_ASSERT(false, wasm_serialization_error, + e.message.c_str()); + } catch (const IR::ValidationException& e) { + EOS_ASSERT(false, wasm_serialization_error, + e.message.c_str()); + } } - it = instantiation_cache.emplace(code_id, runtime_interface->instantiate_module((const char*)bytes.data(), bytes.size(), parse_initial_memory(module))).first; + + wasm_instantiation_cache.modify(it, [&](auto& c) { + c.module = runtime_interface->instantiate_module((const char*)bytes.data(), bytes.size(), parse_initial_memory(module), code_hash, vm_type, vm_version); + }); } - return it->second; + return it->module; } + bool is_shutting_down = false; std::unique_ptr runtime_interface; - map> instantiation_cache; + + typedef boost::multi_index_container< + wasm_cache_entry, + indexed_by< + ordered_unique, + composite_key< wasm_cache_entry, + member, + member, + member + > + >, + ordered_non_unique, member>, + ordered_non_unique, member> + > + > wasm_cache_index; + wasm_cache_index wasm_instantiation_cache; + + const chainbase::database& db; + const wasm_interface::vm_type wasm_runtime_time; + }; +#define _ADD_PAREN_1(...) ((__VA_ARGS__)) _ADD_PAREN_2 +#define _ADD_PAREN_2(...) ((__VA_ARGS__)) _ADD_PAREN_1 +#define _ADD_PAREN_1_END +#define _ADD_PAREN_2_END +#define _WRAPPED_SEQ(SEQ) BOOST_PP_CAT(_ADD_PAREN_1 SEQ, _END) + #define _REGISTER_INTRINSIC_EXPLICIT(CLS, MOD, METHOD, WASM_SIG, NAME, SIG)\ - _REGISTER_WAVM_INTRINSIC(CLS, MOD, METHOD, WASM_SIG, NAME, SIG)\ + _REGISTER_WAVM_INTRINSIC(CLS, MOD, METHOD, WASM_SIG, NAME, SIG) \ _REGISTER_WABT_INTRINSIC(CLS, MOD, METHOD, WASM_SIG, NAME, SIG) #define _REGISTER_INTRINSIC4(CLS, MOD, METHOD, WASM_SIG, NAME, SIG)\ diff --git a/libraries/chain/include/eosio/chain/webassembly/runtime_interface.hpp b/libraries/chain/include/eosio/chain/webassembly/runtime_interface.hpp index 2a9b8119b67..2d05ec93b77 100644 --- a/libraries/chain/include/eosio/chain/webassembly/runtime_interface.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/runtime_interface.hpp @@ -2,6 +2,10 @@ #include #include +namespace IR { +struct Module; +} + namespace eosio { namespace chain { class apply_context; @@ -14,11 +18,13 @@ class 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; + public: + virtual bool inject_module(IR::Module& module) = 0; + virtual std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory, + const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version) = 0; - //immediately exit the currently running wasm_instantiated_module_interface. Yep, this assumes only one can possibly run at a time. - virtual void immediately_exit_currently_running_module() = 0; + //immediately exit the currently running wasm_instantiated_module_interface. Yep, this assumes only one can possibly run at a time. + virtual void immediately_exit_currently_running_module() = 0; virtual ~wasm_runtime_interface(); }; diff --git a/libraries/chain/include/eosio/chain/webassembly/wabt.hpp b/libraries/chain/include/eosio/chain/webassembly/wabt.hpp index 31456dc1dda..49cbfef05c1 100644 --- a/libraries/chain/include/eosio/chain/webassembly/wabt.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/wabt.hpp @@ -35,7 +35,7 @@ struct intrinsic_registrator { struct intrinsic_func_info { FuncSignature sig; intrinsic_fn func; - }; + }; static auto& get_map(){ static map> _map; @@ -50,7 +50,9 @@ struct intrinsic_registrator { class wabt_runtime : public eosio::chain::wasm_runtime_interface { public: wabt_runtime(); - std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) override; + bool inject_module(IR::Module&) override; + std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory, + const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version) override; void immediately_exit_currently_running_module() override; @@ -362,9 +364,9 @@ struct intrinsic_invoker_impl> { * @tparam Inputs - the remaining native parameters to transcribe */ template -struct intrinsic_invoker_impl, size_t, Inputs...>> { +struct intrinsic_invoker_impl, uint32_t, Inputs...>> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret(*)(wabt_apply_instance_vars&, array_ptr, size_t, Inputs..., const TypedValues&, int); + using then_type = Ret(*)(wabt_apply_instance_vars&, array_ptr, uint32_t, Inputs..., const TypedValues&, int); template static auto translate_one(wabt_apply_instance_vars& vars, Inputs... rest, const TypedValues& args, int offset) -> std::enable_if_t::value, Ret> { @@ -395,13 +397,13 @@ struct intrinsic_invoker_impl, size_t, Inputs...>> std::vector > copy(length > 0 ? length : 1); T* copy_ptr = ©[0]; memcpy( (void*)copy_ptr, (void*)base, length * sizeof(T) ); - Ret ret = Then(vars, static_cast>(copy_ptr), length, rest..., args, (uint32_t)offset - 2); + Ret ret = Then(vars, static_cast>(copy_ptr), length, rest..., args, (uint32_t)offset - 2); memcpy( (void*)base, (void*)copy_ptr, length * sizeof(T) ); return ret; } return Then(vars, static_cast>(base), length, rest..., args, (uint32_t)offset - 2); }; - + template static const auto fn() { return next_step::template fn>(); @@ -442,9 +444,9 @@ struct intrinsic_invoker_impl> { * @tparam Inputs - the remaining native parameters to transcribe */ template -struct intrinsic_invoker_impl, array_ptr, size_t, Inputs...>> { +struct intrinsic_invoker_impl, array_ptr, uint32_t, Inputs...>> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret(*)(wabt_apply_instance_vars&, array_ptr, array_ptr, size_t, Inputs..., const TypedValues&, int); + using then_type = Ret(*)(wabt_apply_instance_vars&, array_ptr, array_ptr, uint32_t, Inputs..., const TypedValues&, int); template static Ret translate_one(wabt_apply_instance_vars& vars, Inputs... rest, const TypedValues& args, int offset) { @@ -468,9 +470,9 @@ struct intrinsic_invoker_impl, array_ptr, size_t * @tparam Inputs - the remaining native parameters to transcribe */ template -struct intrinsic_invoker_impl, int, size_t>> { +struct intrinsic_invoker_impl, int, uint32_t>> { using next_step = intrinsic_invoker_impl>; - using then_type = Ret(*)(wabt_apply_instance_vars&, array_ptr, int, size_t, const TypedValues&, int); + using then_type = Ret(*)(wabt_apply_instance_vars&, array_ptr, int, uint32_t, const TypedValues&, int); template static Ret translate_one(wabt_apply_instance_vars& vars, const TypedValues& args, int offset) { @@ -525,7 +527,7 @@ struct intrinsic_invoker_impl> { memcpy( (void*)©, (void*)base, sizeof(T) ); Ret ret = Then(vars, ©, rest..., args, (uint32_t)offset - 1); memcpy( (void*)base, (void*)©, sizeof(T) ); - return ret; + return ret; } return Then(vars, base, rest..., args, (uint32_t)offset - 1); }; @@ -632,7 +634,7 @@ struct intrinsic_invoker_impl> { memcpy( (void*)©, (void*)base, sizeof(T) ); Ret ret = Then(vars, copy, rest..., args, (uint32_t)offset - 1); memcpy( (void*)base, (void*)©, sizeof(T) ); - return ret; + return ret; } return Then(vars, *base, rest..., args, (uint32_t)offset - 1); } @@ -686,23 +688,48 @@ struct intrinsic_function_invoker { template struct intrinsic_function_invoker_wrapper; +template +struct void_ret_wrapper { + using type = T; +}; + +template<> +struct void_ret_wrapper { + using type = char; +}; + +template +using void_ret_wrapper_t = typename void_ret_wrapper::type; + template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; diff --git a/libraries/chain/include/eosio/chain/webassembly/wavm.hpp b/libraries/chain/include/eosio/chain/webassembly/wavm.hpp index f619e318b3f..16ff8dd96cd 100644 --- a/libraries/chain/include/eosio/chain/webassembly/wavm.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/wavm.hpp @@ -20,17 +20,11 @@ class wavm_runtime : public eosio::chain::wasm_runtime_interface { public: wavm_runtime(); ~wavm_runtime(); - std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) override; + bool inject_module(IR::Module&) override; + std::unique_ptr instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory, + const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version) override; void immediately_exit_currently_running_module() override; - - struct runtime_guard { - runtime_guard(); - ~runtime_guard(); - }; - - private: - std::shared_ptr _runtime_guard; }; //This is a temporary hack for the single threaded implementation @@ -40,6 +34,119 @@ struct running_instance_context { }; extern running_instance_context the_running_instance_context; +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::f64; +}; +template<> +struct wasm_to_value_type { + static constexpr auto value = ValueType::i32; +}; +template<> +struct wasm_to_value_type { + static constexpr auto value = ValueType::i64; +}; + +template +constexpr auto wasm_to_value_type_v = wasm_to_value_type::value; + +template +struct wasm_to_rvalue_type; +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::f32; +}; +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::f64; +}; +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::i32; +}; +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::i64; +}; +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::none; +}; +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::i64; +}; +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::i64; +}; + +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::i32; +}; + +template<> +struct wasm_to_rvalue_type { + static constexpr auto value = ResultType::i32; +}; + + +template +constexpr auto wasm_to_rvalue_type_v = wasm_to_rvalue_type::value; + +template +struct is_reference_from_value { + static constexpr bool value = false; +}; + +template<> +struct is_reference_from_value { + static constexpr bool value = true; +}; + +template<> +struct is_reference_from_value { + static constexpr bool value = true; +}; + +template +constexpr bool is_reference_from_value_v = is_reference_from_value::value; + + + +struct void_type { +}; + +/** + * Forward declaration of provider for FunctionType given a desired C ABI signature + */ +template +struct wasm_function_type_provider; + +/** + * specialization to destructure return and arguments + */ +template +struct wasm_function_type_provider { + static const FunctionType *type() { + return FunctionType::get(wasm_to_rvalue_type_v, {wasm_to_value_type_v ...}); + } +}; + +#define __INTRINSIC_NAME(LABEL, SUFFIX) LABEL##SUFFIX +#define _INTRINSIC_NAME(LABEL, SUFFIX) __INTRINSIC_NAME(LABEL,SUFFIX) + +#ifdef EOSIO_WAVM_RUNTIME_ENABLED + /** * class to represent an in-wasm-memory array * it is a hint to the transcriber that the next parameter will @@ -51,13 +158,13 @@ template inline array_ptr array_ptr_impl (running_instance_context& ctx, U32 ptr, size_t length) { MemoryInstance* mem = ctx.memory; - if (!mem) + if (!mem) Runtime::causeException(Exception::Cause::accessViolation); size_t mem_total = IR::numBytesPerPage * Runtime::getMemoryNumPages(mem); if (ptr >= mem_total || length > (mem_total - ptr) / sizeof(T)) Runtime::causeException(Exception::Cause::accessViolation); - + T* ret_ptr = (T*)(getMemoryBaseAddress(mem) + ptr); return array_ptr((T*)(getMemoryBaseAddress(mem) + ptr)); @@ -182,114 +289,6 @@ inline auto convert_wasm_to_native(native_to_wasm_t val) { return T(val); } -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::f64; -}; -template<> -struct wasm_to_value_type { - static constexpr auto value = ValueType::i32; -}; -template<> -struct wasm_to_value_type { - static constexpr auto value = ValueType::i64; -}; - -template -constexpr auto wasm_to_value_type_v = wasm_to_value_type::value; - -template -struct wasm_to_rvalue_type; -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::f32; -}; -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::f64; -}; -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::i32; -}; -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::i64; -}; -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::none; -}; -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::i64; -}; -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::i64; -}; - -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::i32; -}; - -template<> -struct wasm_to_rvalue_type { - static constexpr auto value = ResultType::i32; -}; - - -template -constexpr auto wasm_to_rvalue_type_v = wasm_to_rvalue_type::value; - -template -struct is_reference_from_value { - static constexpr bool value = false; -}; - -template<> -struct is_reference_from_value { - static constexpr bool value = true; -}; - -template<> -struct is_reference_from_value { - static constexpr bool value = true; -}; - -template -constexpr bool is_reference_from_value_v = is_reference_from_value::value; - - - -struct void_type { -}; - -/** - * Forward declaration of provider for FunctionType given a desired C ABI signature - */ -template -struct wasm_function_type_provider; - -/** - * specialization to destructure return and arguments - */ -template -struct wasm_function_type_provider { - static const FunctionType *type() { - return FunctionType::get(wasm_to_rvalue_type_v, {wasm_to_value_type_v ...}); - } -}; - /** * Forward declaration of the invoker type which transcribes arguments to/from a native method * and injects the appropriate checks @@ -312,7 +311,12 @@ struct intrinsic_invoker_impl, std::tuple> { template static native_to_wasm_t invoke(Translated... translated) { - return convert_native_to_wasm(the_running_instance_context, Method(the_running_instance_context, translated...)); + try { + return convert_native_to_wasm(the_running_instance_context, Method(the_running_instance_context, translated...)); + } + catch(...) { + Platform::immediately_exit(std::current_exception()); + } } template @@ -331,7 +335,12 @@ struct intrinsic_invoker_impl, std::tuple template static void invoke(Translated... translated) { - Method(the_running_instance_context, translated...); + try { + Method(the_running_instance_context, translated...); + } + catch(...) { + Platform::immediately_exit(std::current_exception()); + } } template @@ -375,9 +384,9 @@ struct intrinsic_invoker_impl, std::tuple -struct intrinsic_invoker_impl, size_t, Inputs...>, std::tuple> { +struct intrinsic_invoker_impl, uint32_t, Inputs...>, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret(*)(running_instance_context&, array_ptr, size_t, Inputs..., Translated...); + using then_type = Ret(*)(running_instance_context&, array_ptr, uint32_t, Inputs..., Translated...); template static auto translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, I32 ptr, I32 size) -> std::enable_if_t::value, Ret> { @@ -406,7 +415,7 @@ struct intrinsic_invoker_impl, size_t, Inputs...>, std::vector > copy(length > 0 ? length : 1); T* copy_ptr = ©[0]; memcpy( (void*)copy_ptr, (void*)base, length * sizeof(T) ); - Ret ret = Then(ctx, static_cast>(copy_ptr), length, rest..., translated...); + Ret ret = Then(ctx, static_cast>(copy_ptr), length, rest..., translated...); memcpy( (void*)base, (void*)copy_ptr, length * sizeof(T) ); return ret; } @@ -454,9 +463,9 @@ struct intrinsic_invoker_impl, s * @tparam Translated - the list of transcribed wasm parameters */ template -struct intrinsic_invoker_impl, array_ptr, size_t, Inputs...>, std::tuple> { +struct intrinsic_invoker_impl, array_ptr, uint32_t, Inputs...>, std::tuple> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret(*)(running_instance_context&, array_ptr, array_ptr, size_t, Inputs..., Translated...); + using then_type = Ret(*)(running_instance_context&, array_ptr, array_ptr, uint32_t, Inputs..., Translated...); template static Ret translate_one(running_instance_context& ctx, Inputs... rest, Translated... translated, I32 ptr_t, I32 ptr_u, I32 size) { @@ -479,9 +488,9 @@ struct intrinsic_invoker_impl, array_ptr, size_t * @tparam Translated - the list of transcribed wasm parameters */ template -struct intrinsic_invoker_impl, int, size_t>, std::tuple<>> { +struct intrinsic_invoker_impl, int, uint32_t>, std::tuple<>> { using next_step = intrinsic_invoker_impl, std::tuple>; - using then_type = Ret(*)(running_instance_context&, array_ptr, int, size_t); + using then_type = Ret(*)(running_instance_context&, array_ptr, int, uint32_t); template static Ret translate_one(running_instance_context& ctx, I32 ptr, I32 value, I32 size) { @@ -673,44 +682,70 @@ struct intrinsic_function_invoker { } }; +template +struct void_ret_wrapper { + using type = T; +}; + +template<> +struct void_ret_wrapper { + using type = char; +}; + +template +using void_ret_wrapper_t = typename void_ret_wrapper::type; + template struct intrinsic_function_invoker_wrapper; template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; template struct intrinsic_function_invoker_wrapper { + static_assert( !(std::is_pointer_v && alignof(std::remove_pointer_t>) != 1) && + !(std::is_lvalue_reference_v && alignof(std::remove_reference_t>) != 1), + "intrinsics should only return a reference or pointer with single byte alignment"); using type = intrinsic_function_invoker; }; -#define _ADD_PAREN_1(...) ((__VA_ARGS__)) _ADD_PAREN_2 -#define _ADD_PAREN_2(...) ((__VA_ARGS__)) _ADD_PAREN_1 -#define _ADD_PAREN_1_END -#define _ADD_PAREN_2_END -#define _WRAPPED_SEQ(SEQ) BOOST_PP_CAT(_ADD_PAREN_1 SEQ, _END) +#define _REGISTER_WAVM_INTRINSIC(CLS, MOD, METHOD, WASM_SIG, NAME, SIG)\ + static Intrinsics::Function _INTRINSIC_NAME(__intrinsic_fn, __COUNTER__) (\ + MOD "." NAME,\ + eosio::chain::webassembly::wavm::wasm_function_type_provider::type(),\ + (void *)eosio::chain::webassembly::wavm::intrinsic_function_invoker_wrapper::type::fn<&CLS::METHOD>()\ + ); -#define __INTRINSIC_NAME(LABEL, SUFFIX) LABEL##SUFFIX -#define _INTRINSIC_NAME(LABEL, SUFFIX) __INTRINSIC_NAME(LABEL,SUFFIX) +#else #define _REGISTER_WAVM_INTRINSIC(CLS, MOD, METHOD, WASM_SIG, NAME, SIG)\ static Intrinsics::Function _INTRINSIC_NAME(__intrinsic_fn, __COUNTER__) (\ MOD "." NAME,\ eosio::chain::webassembly::wavm::wasm_function_type_provider::type(),\ - (void *)eosio::chain::webassembly::wavm::intrinsic_function_invoker_wrapper::type::fn<&CLS::METHOD>()\ - );\ + nullptr\ + ); +#endif } } } }// eosio::chain::webassembly::wavm diff --git a/libraries/chain/include/eosio/chain/whitelisted_intrinsics.hpp b/libraries/chain/include/eosio/chain/whitelisted_intrinsics.hpp new file mode 100644 index 00000000000..3997993d77c --- /dev/null +++ b/libraries/chain/include/eosio/chain/whitelisted_intrinsics.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include + +namespace eosio { namespace chain { + + using whitelisted_intrinsics_type = shared_flat_multimap; + + // TODO: Improve performance by using std::string_view when we switch to C++17. + + bool is_intrinsic_whitelisted( const whitelisted_intrinsics_type& whitelisted_intrinsics, const std::string& name ); + + void add_intrinsic_to_whitelist( whitelisted_intrinsics_type& whitelisted_intrinsics, const std::string& name ); + + void remove_intrinsic_from_whitelist( whitelisted_intrinsics_type& whitelisted_intrinsics, const std::string& name ); + + void reset_intrinsic_whitelist( whitelisted_intrinsics_type& whitelisted_intrinsics, + const std::set& s ); + + std::set convert_intrinsic_whitelist_to_set( const whitelisted_intrinsics_type& whitelisted_intrinsics ); + +} } // namespace eosio::chain diff --git a/libraries/chain/platform_timer_accuracy.cpp b/libraries/chain/platform_timer_accuracy.cpp new file mode 100755 index 00000000000..94a69c89440 --- /dev/null +++ b/libraries/chain/platform_timer_accuracy.cpp @@ -0,0 +1,69 @@ +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace eosio { namespace chain { + +namespace bacc = boost::accumulators; + +void compute_and_print_timer_accuracy(platform_timer& timer) { + static std::mutex m; + static bool once_is_enough; + + std::lock_guard guard(m); + + if(once_is_enough) + return; + + bacc::accumulator_set, float> samples; + + //keep longest first in list. You're effectively going to take test_intervals[0]*sizeof(test_intervals[0]) + //time to do the the test + int test_intervals[] = {50000, 10000, 5000, 1000, 500, 100, 50, 10}; + + for(int& interval : test_intervals) { + unsigned int loops = test_intervals[0]/interval; + + for(unsigned int i = 0; i < loops; ++i) { + auto start = std::chrono::high_resolution_clock::now(); + timer.start(fc::time_point(fc::time_point::now().time_since_epoch() + fc::microseconds(interval))); + while(!timer.expired) {} + auto end = std::chrono::high_resolution_clock::now(); + int timer_slop = std::chrono::duration_cast(end-start).count() - interval; + + //since more samples are run for the shorter expirations, weigh the longer expirations accordingly. This + //helps to make a few results more fair. Two such examples: AWS c4&i5 xen instances being rather stable + //down to 100us but then struggling with 50us and 10us. MacOS having performance that seems to correlate + //with expiry length; that is, long expirations have high error, short expirations have low error. + //That said, for these platforms, a tighter tolerance may possibly be achieved by taking performance + //metrics in mulitple bins and appliying the slop based on which bin a deadline resides in. Not clear + //if that's worth the extra complexity at this point. + samples(timer_slop, bacc::weight = interval/(float)test_intervals[0]); + } + } + + #define TIMER_STATS_FORMAT "min:${min}us max:${max}us mean:${mean}us stddev:${stddev}us" + #define TIMER_STATS \ + ("min", bacc::min(samples))("max", bacc::max(samples)) \ + ("mean", (int)bacc::mean(samples))("stddev", (int)sqrt(bacc::variance(samples))) + + ilog("Checktime timer accuracy: " TIMER_STATS_FORMAT, TIMER_STATS); + if(bacc::mean(samples) + sqrt(bacc::variance(samples))*2 > 250) + wlog("Checktime timer accuracy on this platform and hardware combination is poor; accuracy of subjective transaction deadline enforcement will suffer"); + + once_is_enough = true; +} + +}} diff --git a/libraries/chain/platform_timer_asio_fallback.cpp b/libraries/chain/platform_timer_asio_fallback.cpp new file mode 100644 index 00000000000..79bc975de50 --- /dev/null +++ b/libraries/chain/platform_timer_asio_fallback.cpp @@ -0,0 +1,92 @@ +#include +#include + +#include +#include //set_os_thread_name() + +#include + +#include +#include + +namespace eosio { namespace chain { + +//a thread is shared for all instances +static std::mutex timer_ref_mutex; +static unsigned refcount; +static std::thread checktime_thread; +static std::unique_ptr checktime_ios; + +struct platform_timer::impl { + std::unique_ptr timer; +}; + +platform_timer::platform_timer() { + static_assert(sizeof(impl) <= fwd_size); + + std::lock_guard guard(timer_ref_mutex); + + if(refcount++ == 0) { + std::promise p; + checktime_thread = std::thread([&p]() { + fc::set_os_thread_name("checktime"); + checktime_ios = std::make_unique(); + boost::asio::io_service::work work(*checktime_ios); + p.set_value(); + + checktime_ios->run(); + }); + p.get_future().get(); + } + + my->timer = std::make_unique(*checktime_ios); + + //compute_and_print_timer_accuracy(*this); +} + +platform_timer::~platform_timer() { + stop(); + if(std::lock_guard guard(timer_ref_mutex); --refcount == 0) { + checktime_ios->stop(); + checktime_thread.join(); + checktime_ios.reset(); + } +} + +void platform_timer::start(fc::time_point tp) { + if(tp == fc::time_point::maximum()) { + expired = 0; + return; + } + fc::microseconds x = tp.time_since_epoch() - fc::time_point::now().time_since_epoch(); + if(x.count() <= 0) + expired = 1; + else { +#if 0 + std::promise p; + checktime_ios->post([&p,this]() { + expired = 0; + p.set_value(); + }); + p.get_future().get(); +#endif + expired = 0; + my->timer->expires_after(std::chrono::microseconds((int)x.count())); + my->timer->async_wait([this](const boost::system::error_code& ec) { + if(ec) + return; + expired = 1; + call_expiration_callback(); + }); + } +} + +void platform_timer::stop() { + if(expired) + return; + + my->timer->cancel(); + expired = 1; +} + +}} diff --git a/libraries/chain/platform_timer_macos.cpp b/libraries/chain/platform_timer_macos.cpp new file mode 100755 index 00000000000..545a683bae0 --- /dev/null +++ b/libraries/chain/platform_timer_macos.cpp @@ -0,0 +1,110 @@ +#include +#include + +#include +#include +#include +#include //set_os_thread_name() + +#include +#include + +#include + +namespace eosio { namespace chain { + +//a kqueue & thread is shared for all platform_timer_macos instances +static std::mutex timer_ref_mutex; +static unsigned next_timerid; +static unsigned refcount; +static int kqueue_fd; +static std::thread kevent_thread; + +struct platform_timer::impl { + uint64_t timerid; + + constexpr static uint64_t quit_event_id = 1; +}; + +platform_timer::platform_timer() { + static_assert(sizeof(impl) <= fwd_size); + + std::lock_guard guard(timer_ref_mutex); + + if(refcount++ == 0) { + kqueue_fd = kqueue(); + + FC_ASSERT(kqueue_fd != -1, "failed to create kqueue"); + + //set up a EVFILT_USER which will be signaled to shut down the thread + struct kevent64_s quit_event; + EV_SET64(&quit_event, impl::quit_event_id, EVFILT_USER, EV_ADD|EV_ENABLE, NOTE_FFNOP, 0, 0, 0, 0); + FC_ASSERT(kevent64(kqueue_fd, &quit_event, 1, NULL, 0, KEVENT_FLAG_IMMEDIATE, NULL) == 0, "failed to create quit event"); + + kevent_thread = std::thread([]() { + fc::set_os_thread_name("checktime"); + while(true) { + struct kevent64_s anEvent; + int c = kevent64(kqueue_fd, NULL, 0, &anEvent, 1, 0, NULL); + + if(c == 1 && anEvent.filter == EVFILT_TIMER) { + platform_timer* self = (platform_timer*)anEvent.udata; + self->expired = 1; + self->call_expiration_callback(); + } + else if(c == 1 && anEvent.filter == EVFILT_USER) + return; + else if(c == -1 && errno == EINTR) + continue; + else if(c == -1) + return; //?? not much we can do now + } + }); + } + + my->timerid = next_timerid++; + + compute_and_print_timer_accuracy(*this); +} + +platform_timer::~platform_timer() { + stop(); + if(std::lock_guard guard(timer_ref_mutex); --refcount == 0) { + struct kevent64_s signal_quit_event; + EV_SET64(&signal_quit_event, impl::quit_event_id, EVFILT_USER, 0, NOTE_TRIGGER, 0, 0, 0, 0); + + if(kevent64(kqueue_fd, &signal_quit_event, 1, NULL, 0, KEVENT_FLAG_IMMEDIATE, NULL) != -1) + kevent_thread.join(); + close(kqueue_fd); + } +} + +void platform_timer::start(fc::time_point tp) { + if(tp == fc::time_point::maximum()) { + expired = 0; + return; + } + fc::microseconds x = tp.time_since_epoch() - fc::time_point::now().time_since_epoch(); + if(x.count() <= 0) + expired = 1; + else { + struct kevent64_s aTimerEvent; + EV_SET64(&aTimerEvent, my->timerid, EVFILT_TIMER, EV_ADD|EV_ENABLE|EV_ONESHOT, NOTE_USECONDS|NOTE_CRITICAL, (int)x.count(), (uint64_t)this, 0, 0); + + expired = 0; + if(kevent64(kqueue_fd, &aTimerEvent, 1, NULL, 0, KEVENT_FLAG_IMMEDIATE, NULL) != 0) + expired = 1; + } +} + +void platform_timer::stop() { + if(expired) + return; + + struct kevent64_s stop_timer_event; + EV_SET64(&stop_timer_event, my->timerid, EVFILT_TIMER, EV_DELETE, 0, 0, 0, 0, 0); + kevent64(kqueue_fd, &stop_timer_event, 1, NULL, 0, KEVENT_FLAG_IMMEDIATE, NULL); + expired = 1; +} + +}} diff --git a/libraries/chain/platform_timer_posix.cpp b/libraries/chain/platform_timer_posix.cpp new file mode 100644 index 00000000000..1575664ba59 --- /dev/null +++ b/libraries/chain/platform_timer_posix.cpp @@ -0,0 +1,80 @@ +#include +#include + +#include +#include +#include + +#include + +#include +#include + +namespace eosio { namespace chain { + +static_assert(std::atomic_bool::is_always_lock_free, "Only lock-free atomics AS-safe."); + +struct platform_timer::impl { + timer_t timerid; + + static void sig_handler(int, siginfo_t* si, void*) { + platform_timer* self = (platform_timer*)si->si_value.sival_ptr; + self->expired = 1; + self->call_expiration_callback(); + } +}; + +platform_timer::platform_timer() { + static_assert(sizeof(impl) <= fwd_size); + + static bool initialized; + static std::mutex initalized_mutex; + + if(std::lock_guard guard(initalized_mutex); !initialized) { + struct sigaction act; + sigemptyset(&act.sa_mask); + act.sa_sigaction = impl::sig_handler; + act.sa_flags = SA_SIGINFO; + FC_ASSERT(sigaction(SIGRTMIN, &act, NULL) == 0, "failed to aquire SIGRTMIN signal"); + initialized = true; + } + + struct sigevent se; + se.sigev_notify = SIGEV_SIGNAL; + se.sigev_signo = SIGRTMIN; + se.sigev_value.sival_ptr = (void*)this; + + FC_ASSERT(timer_create(CLOCK_REALTIME, &se, &my->timerid) == 0, "failed to create timer"); + + compute_and_print_timer_accuracy(*this); +} + +platform_timer::~platform_timer() { + timer_delete(my->timerid); +} + +void platform_timer::start(fc::time_point tp) { + if(tp == fc::time_point::maximum()) { + expired = 0; + return; + } + fc::microseconds x = tp.time_since_epoch() - fc::time_point::now().time_since_epoch(); + if(x.count() <= 0) + expired = 1; + else { + struct itimerspec enable = {{0, 0}, {0, (int)x.count()*1000}}; + expired = 0; + if(timer_settime(my->timerid, 0, &enable, NULL) != 0) + expired = 1; + } +} + +void platform_timer::stop() { + if(expired) + return; + struct itimerspec disable = {{0, 0}, {0, 0}}; + timer_settime(my->timerid, 0, &disable, NULL); + expired = 1; +} + +}} diff --git a/libraries/chain/platform_timer_posix_test.c b/libraries/chain/platform_timer_posix_test.c new file mode 100644 index 00000000000..c96ec92810a --- /dev/null +++ b/libraries/chain/platform_timer_posix_test.c @@ -0,0 +1,10 @@ +#include +#include +#include + +int main() { + struct itimerval enable = {{0, 0}, {0, 1000u}}; + if(setitimer(ITIMER_REAL, &enable, NULL)) + return 1; + return 0; +} \ No newline at end of file diff --git a/libraries/chain/protocol_state_object.cpp b/libraries/chain/protocol_state_object.cpp new file mode 100644 index 00000000000..14945a6ddda --- /dev/null +++ b/libraries/chain/protocol_state_object.cpp @@ -0,0 +1,54 @@ +#include + +namespace eosio { namespace chain { + +namespace detail { + +// snapshot_protocol_state_object +// snapshot_row_traits::to_snapshot_row( const protocol_state_object& value, +// const chainbase::database& db ) +// { +// snapshot_protocol_state_object res; +// +// res.activated_protocol_features.reserve( value.activated_protocol_features.size() ); +// for( const auto& v : value.activated_protocol_features ) { +// res.activated_protocol_features.emplace_back( v ); +// } +// +// res.preactivated_protocol_features.reserve( value.preactivated_protocol_features.size() ); +// for( const auto& v : value.preactivated_protocol_features ) { +// res.preactivated_protocol_features.emplace_back( v ); +// } +// +// res.whitelisted_intrinsics = convert_intrinsic_whitelist_to_set( value.whitelisted_intrinsics ); +// +// res.num_supported_key_types = value.num_supported_key_types; +// +// return res; +// } +// +// void +// snapshot_row_traits::from_snapshot_row( snapshot_protocol_state_object&& row, +// protocol_state_object& value, +// chainbase::database& db ) +// { +// value.activated_protocol_features.clear(); +// value.activated_protocol_features.reserve( row.activated_protocol_features.size() ); +// for( const auto& v : row.activated_protocol_features ) { +// value.activated_protocol_features.emplace_back( v ); +// } +// +// value.preactivated_protocol_features.clear(); +// value.preactivated_protocol_features.reserve( row.preactivated_protocol_features.size() ); +// for( const auto& v : row.preactivated_protocol_features ) { +// value.preactivated_protocol_features.emplace_back( v ); +// } +// +// reset_intrinsic_whitelist( value.whitelisted_intrinsics, row.whitelisted_intrinsics ); +// +// value.num_supported_key_types = row.num_supported_key_types; +// } +// +} + +}} diff --git a/libraries/chain/transaction_context.cpp b/libraries/chain/transaction_context.cpp index e2c8cd56c3b..619afb2ce19 100644 --- a/libraries/chain/transaction_context.cpp +++ b/libraries/chain/transaction_context.cpp @@ -146,16 +146,40 @@ namespace bacc = boost::accumulators; volatile sig_atomic_t deadline_timer::expired = 0; bool deadline_timer::initialized = false; + transaction_checktime_timer::transaction_checktime_timer(platform_timer& timer) + : expired(timer.expired), _timer(timer) { + expired = 0; + } + + void transaction_checktime_timer::start(fc::time_point tp) { + _timer.start(tp); + } + + void transaction_checktime_timer::stop() { + _timer.stop(); + } + + void transaction_checktime_timer::set_expiration_callback(void(*func)(void*), void* user) { + _timer.set_expiration_callback(func, user); + } + + transaction_checktime_timer::~transaction_checktime_timer() { + stop(); + _timer.set_expiration_callback(nullptr, nullptr); + } + transaction_context::transaction_context( controller& c, const signed_transaction& t, const transaction_id_type& trx_id, - fc::time_point s ) + transaction_checktime_timer&& tmr, + fc::time_point s ) :control(c) ,trx(t) ,id(trx_id) ,undo_session() ,trace(std::make_shared()) ,start(s) + ,transaction_timer(std::move(tmr)) ,net_usage(trace->net_usage) ,pseudo_start(s) { @@ -620,7 +644,7 @@ namespace bacc = boost::accumulators; const auto& auth_manager = control.get_authorization_manager(); for( const auto& a : trx.context_free_actions ) { - auto* code = db.find(a.account); + auto* code = db.find(a.account); EOS_ASSERT( code != nullptr, transaction_exception, "action's code account '${account}' does not exist", ("account", a.account) ); EOS_ASSERT( a.authorization.size() == 0, transaction_exception, @@ -631,12 +655,12 @@ namespace bacc = boost::accumulators; bool one_auth = false; for( const auto& a : trx.actions ) { - auto* code = db.find(a.account); + auto* code = db.find(a.account); EOS_ASSERT( code != nullptr, transaction_exception, "action's code account '${account}' does not exist", ("account", a.account) ); for( const auto& auth : a.authorization ) { one_auth = true; - auto* actor = db.find(auth.actor); + auto* actor = db.find(auth.actor); EOS_ASSERT( actor != nullptr, transaction_exception, "action's authorizing actor '${account}' does not exist", ("account", auth.actor) ); EOS_ASSERT( auth_manager.find_permission(auth) != nullptr, transaction_exception, diff --git a/libraries/chain/wasm_interface.cpp b/libraries/chain/wasm_interface.cpp index 6131f00f701..1b1320286fc 100644 --- a/libraries/chain/wasm_interface.cpp +++ b/libraries/chain/wasm_interface.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -25,10 +26,9 @@ #include namespace eosio { namespace chain { - using namespace webassembly; using namespace webassembly::common; - wasm_interface::wasm_interface(vm_type vm) : my( new wasm_interface_impl(vm) ) {} + wasm_interface::wasm_interface(vm_type vm, const chainbase::database& d) : my( new wasm_interface_impl(vm, d) ) {} wasm_interface::~wasm_interface() {} @@ -46,7 +46,9 @@ namespace eosio { namespace chain { wasm_validations::wasm_binary_validation validator(control, module); validator.validate(); - root_resolver resolver(true); + const auto& pso = control.db().get(); + + root_resolver resolver( pso.whitelisted_intrinsics ); LinkResult link_result = linkModule(module, resolver); //there are a couple opportunties for improvement here-- @@ -54,8 +56,20 @@ namespace eosio { namespace chain { //Hard: Kick off instantiation in a separate thread at this location } - void wasm_interface::apply( const digest_type& code_id, const shared_string& code, apply_context& context ) { - my->get_instantiated_module(code_id, code, context.trx_context)->apply(context); + void wasm_interface::indicate_shutting_down() { + my->is_shutting_down = true; + } + + void wasm_interface::code_block_num_last_used(const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version, const uint32_t& block_num) { + my->code_block_num_last_used(code_hash, vm_type, vm_version, block_num); + } + + void wasm_interface::current_lib(const uint32_t lib) { + my->current_lib(lib); + } + + void wasm_interface::apply( const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version, apply_context& context ) { + my->get_instantiated_module(code_hash, vm_type, vm_version, context.trx_context)->apply(context); } void wasm_interface::exit() { @@ -74,9 +88,8 @@ class context_aware_api { context_aware_api(apply_context& ctx, bool context_free = false ) :context(ctx) { - if( context.context_free ) + if( context.is_context_free() ) EOS_ASSERT( context_free, unaccessible_api, "only context free api's can be used in this context" ); - context.used_context_free_api |= !context_free; } void checktime() { @@ -93,10 +106,10 @@ class context_free_api : public context_aware_api { 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 */ - EOS_ASSERT( context.context_free, unaccessible_api, "this API may only be called from context_free apply" ); + EOS_ASSERT( context.is_context_free(), unaccessible_api, "this API may only be called from context_free apply" ); } - int get_context_free_data( uint32_t index, array_ptr buffer, size_t buffer_size )const { + int get_context_free_data( uint32_t index, array_ptr buffer, uint32_t buffer_size )const { return context.get_context_free_data( index, buffer, buffer_size ); } }; @@ -152,7 +165,7 @@ class privileged_api : public context_aware_api { context.control.get_resource_limits_manager().get_account_limits( account, ram_bytes, net_weight, cpu_weight, true); // *bos* add raw=true } - int64_t set_proposed_producers( array_ptr packed_producer_schedule, size_t datalen) { + int64_t set_proposed_producers( array_ptr packed_producer_schedule, uint32_t datalen) { datastream ds( packed_producer_schedule, datalen ); vector producers; fc::raw::unpack(ds, producers); @@ -168,7 +181,7 @@ class privileged_api : public context_aware_api { return context.control.set_proposed_producers( std::move(producers) ); } - uint32_t get_blockchain_parameters_packed( array_ptr packed_blockchain_parameters, size_t buffer_size) { + uint32_t get_blockchain_parameters_packed( array_ptr packed_blockchain_parameters, uint32_t buffer_size) { auto& gpo = context.control.get_global_properties(); auto s = fc::raw::pack_size( gpo.configuration ); @@ -182,7 +195,7 @@ class privileged_api : public context_aware_api { return 0; } - void set_blockchain_parameters_packed( array_ptr packed_blockchain_parameters, size_t datalen) { + void set_blockchain_parameters_packed( array_ptr packed_blockchain_parameters, uint32_t datalen) { datastream ds( packed_blockchain_parameters, datalen ); chain::chain_config cfg; fc::raw::unpack(ds, cfg); @@ -193,7 +206,7 @@ class privileged_api : public context_aware_api { }); } - void set_upgrade_parameters_packed( array_ptr packed_upgrade_parameters, size_t datalen) { + void set_upgrade_parameters_packed( array_ptr packed_upgrade_parameters, uint32_t datalen) { datastream ds( packed_upgrade_parameters, datalen ); uint32_t target_num; fc::raw::unpack(ds, target_num); @@ -210,7 +223,7 @@ class privileged_api : public context_aware_api { }); } - void set_pbft_parameters_packed( array_ptr packed_pbft_parameters, size_t datalen) { + void set_pbft_parameters_packed( array_ptr packed_pbft_parameters, uint32_t datalen) { datastream ds( packed_pbft_parameters, datalen ); chain::chain_config3 cfg; fc::raw::unpack(ds, cfg); @@ -222,7 +235,7 @@ class privileged_api : public context_aware_api { } // *bos begin* - void set_name_list_packed(int64_t list, int64_t action, array_ptr packed_name_list, size_t datalen) + void set_name_list_packed(int64_t list, int64_t action, array_ptr packed_name_list, uint32_t datalen) { int64_t lstbegin = static_cast(list_type::actor_blacklist_type ); int64_t lstend = static_cast(list_type::list_type_count); @@ -257,14 +270,14 @@ class privileged_api : public context_aware_api { // *bos end* - bool is_privileged( account_name n )const { - return context.db.get( n ).privileged; + bool is_privileged( account_name n )const { + return context.db.get( n ).is_privileged(); } void set_privileged( account_name n, bool is_priv ) { - const auto& a = context.db.get( n ); + const auto& a = context.db.get( n ); context.db.modify( a, [&]( auto& ma ){ - ma.privileged = is_priv; + ma.set_privileged( is_priv ); }); } @@ -276,23 +289,26 @@ class softfloat_api : public context_aware_api { softfloat_api( apply_context& ctx ) :context_aware_api(ctx, true) {} +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" // float binops float _eosio_f32_add( float a, float b ) { - float32_t ret = f32_add( to_softfloat32(a), to_softfloat32(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) ); + 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) ); + 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) ); + float32_t ret = ::f32_mul( to_softfloat32(a), to_softfloat32(b) ); return *reinterpret_cast(&ret); } +#pragma GCC diagnostic pop float _eosio_f32_min( float af, float bf ) { float32_t a = to_softfloat32(af); float32_t b = to_softfloat32(bf); @@ -305,7 +321,7 @@ class softfloat_api : public context_aware_api { if ( f32_sign_bit(a) != f32_sign_bit(b) ) { return f32_sign_bit(a) ? af : bf; } - return f32_lt(a,b) ? af : bf; + return ::f32_lt(a,b) ? af : bf; } float _eosio_f32_max( float af, float bf ) { float32_t a = to_softfloat32(af); @@ -319,12 +335,11 @@ class softfloat_api : public context_aware_api { if ( f32_sign_bit(a) != f32_sign_bit(b) ) { return f32_sign_bit(a) ? bf : af; } - return f32_lt( a, b ) ? 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 @@ -344,7 +359,7 @@ class softfloat_api : public context_aware_api { return from_softfloat32(a); } float _eosio_f32_sqrt( float a ) { - float32_t ret = f32_sqrt( to_softfloat32(a) ); + float32_t ret = ::f32_sqrt( to_softfloat32(a) ); return from_softfloat32(ret); } // ceil, floor, trunc and nearest are lifted from libc @@ -413,19 +428,19 @@ class softfloat_api : public context_aware_api { if (e >= 0x7f+23) return af; if (s) - y = f32_add( f32_sub( a, float32_t{inv_float_eps} ), float32_t{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, float32_t{inv_float_eps} ), float32_t{inv_float_eps} ); - if (f32_eq( y, {0} ) ) + y = ::f32_sub( ::f32_add( a, float32_t{inv_float_eps} ), float32_t{inv_float_eps} ); + if (::f32_eq( y, {0} ) ) return s ? -0.0f : 0.0f; return from_softfloat32(y); } // float relops - 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_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); @@ -433,7 +448,7 @@ class softfloat_api : public context_aware_api { return false; if (is_nan(b)) return false; - return !f32_le( a, b ); + return !::f32_le( a, b ); } bool _eosio_f32_ge( float af, float bf ) { float32_t a = to_softfloat32(af); @@ -442,24 +457,24 @@ class softfloat_api : public context_aware_api { return false; if (is_nan(b)) return false; - return !f32_lt( a, b ); + return !::f32_lt( a, b ); } // double binops double _eosio_f64_add( double a, double b ) { - float64_t ret = f64_add( to_softfloat64(a), to_softfloat64(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) ); + 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) ); + 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) ); + float64_t ret = ::f64_mul( to_softfloat64(a), to_softfloat64(b) ); return from_softfloat64(ret); } double _eosio_f64_min( double af, double bf ) { @@ -471,7 +486,7 @@ class softfloat_api : public context_aware_api { return bf; if (f64_sign_bit(a) != f64_sign_bit(b)) return f64_sign_bit(a) ? af : bf; - return f64_lt( a, b ) ? af : bf; + return ::f64_lt( a, b ) ? af : bf; } double _eosio_f64_max( double af, double bf ) { float64_t a = to_softfloat64(af); @@ -482,12 +497,11 @@ class softfloat_api : public context_aware_api { return bf; if (f64_sign_bit(a) != f64_sign_bit(b)) return f64_sign_bit(a) ? bf : af; - return f64_lt( a, b ) ? 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 @@ -508,7 +522,7 @@ class softfloat_api : public context_aware_api { return from_softfloat64(a); } double _eosio_f64_sqrt( double a ) { - float64_t ret = f64_sqrt( to_softfloat64(a) ); + float64_t ret = ::f64_sqrt( to_softfloat64(a) ); return from_softfloat64(ret); } // ceil, floor, trunc and nearest are lifted from libc @@ -517,22 +531,22 @@ class softfloat_api : public context_aware_api { float64_t ret; int e = a.v >> 52 & 0x7ff; float64_t y; - if (e >= 0x3ff+52 || f64_eq( a, { 0 } )) + if (e >= 0x3ff+52 || ::f64_eq( a, { 0 } )) 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, float64_t{inv_double_eps} ), float64_t{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, float64_t{inv_double_eps} ), float64_t{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 ? -0.0 : 1.0; //float64_t{0x8000000000000000} : float64_t{0xBE99999A3F800000}; //either -0.0 or 1 } - if (f64_lt( y, to_softfloat64(0) )) { - ret = f64_add( f64_add( a, y ), to_softfloat64(1) ); // 0xBE99999A3F800000 } ); // plus 1 + if (::f64_lt( y, to_softfloat64(0) )) { + ret = ::f64_add( ::f64_add( a, y ), to_softfloat64(1) ); // 0xBE99999A3F800000 } ); // plus 1 return from_softfloat64(ret); } - ret = f64_add( a, y ); + ret = ::f64_add( a, y ); return from_softfloat64(ret); } double _eosio_f64_floor( double af ) { @@ -548,17 +562,17 @@ class softfloat_api : public context_aware_api { 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 ); + 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 ); + 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)); + 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 ); + ret = ::f64_add( a, y ); return from_softfloat64(ret); } double _eosio_f64_trunc( double af ) { @@ -584,19 +598,19 @@ class softfloat_api : public context_aware_api { if ( e >= 0x3FF+52 ) return af; if ( s ) - y = f64_add( f64_sub( a, float64_t{inv_double_eps} ), float64_t{inv_double_eps} ); + 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} ) ) + 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_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); @@ -604,7 +618,7 @@ class softfloat_api : public context_aware_api { return false; if (is_nan(b)) return false; - return !f64_le( a, b ); + return !::f64_le( a, b ); } bool _eosio_f64_ge( double af, double bf ) { float64_t a = to_softfloat64(af); @@ -613,7 +627,7 @@ class softfloat_api : public context_aware_api { return false; if (is_nan(b)) return false; - return !f64_lt( a, b ); + return !::f64_lt( a, b ); } // float and double conversions @@ -732,14 +746,14 @@ class producer_api : public context_aware_api { public: using context_aware_api::context_aware_api; - int get_active_producers(array_ptr producers, size_t buffer_size) { + int get_active_producers(array_ptr producers, uint32_t buffer_size) { auto active_producers = context.get_active_producers(); size_t len = active_producers.size(); auto s = len * sizeof(chain::account_name); if( buffer_size == 0 ) return s; - auto copy_size = std::min( buffer_size, s ); + auto copy_size = std::min( static_cast(buffer_size), s ); memcpy( producers, active_producers.data(), copy_size ); return copy_size; @@ -755,8 +769,8 @@ class crypto_api : public context_aware_api { * no possible side effects other than "passing". */ void assert_recover_key( const fc::sha256& digest, - array_ptr sig, size_t siglen, - array_ptr pub, size_t publen ) { + array_ptr sig, uint32_t siglen, + array_ptr pub, uint32_t publen ) { fc::crypto::signature s; fc::crypto::public_key p; datastream ds( sig, siglen ); @@ -770,8 +784,8 @@ class crypto_api : public context_aware_api { } int recover_key( const fc::sha256& digest, - array_ptr sig, size_t siglen, - array_ptr pub, size_t publen ) { + array_ptr sig, uint32_t siglen, + array_ptr pub, uint32_t publen ) { fc::crypto::signature s; datastream ds( sig, siglen ); datastream pubds( pub, publen ); @@ -781,7 +795,7 @@ class crypto_api : public context_aware_api { return pubds.tellp(); } - template auto encode(char* data, size_t datalen) { + template auto encode(char* data, uint32_t datalen) { Encoder e; const size_t bs = eosio::chain::config::hashing_checktime_block_size; while ( datalen > bs ) { @@ -794,39 +808,39 @@ class crypto_api : public context_aware_api { return e.result(); } - void assert_sha256(array_ptr data, size_t datalen, const fc::sha256& hash_val) { + void assert_sha256(array_ptr data, uint32_t datalen, const fc::sha256& hash_val) { auto result = encode( data, datalen ); EOS_ASSERT( result == hash_val, crypto_api_exception, "hash mismatch" ); } - void assert_sha1(array_ptr data, size_t datalen, const fc::sha1& hash_val) { + void assert_sha1(array_ptr data, uint32_t datalen, const fc::sha1& hash_val) { auto result = encode( data, datalen ); EOS_ASSERT( result == hash_val, crypto_api_exception, "hash mismatch" ); } - void assert_sha512(array_ptr data, size_t datalen, const fc::sha512& hash_val) { + void assert_sha512(array_ptr data, uint32_t datalen, const fc::sha512& hash_val) { auto result = encode( data, datalen ); EOS_ASSERT( result == hash_val, crypto_api_exception, "hash mismatch" ); } - void assert_ripemd160(array_ptr data, size_t datalen, const fc::ripemd160& hash_val) { + void assert_ripemd160(array_ptr data, uint32_t datalen, const fc::ripemd160& hash_val) { auto result = encode( data, datalen ); EOS_ASSERT( result == hash_val, crypto_api_exception, "hash mismatch" ); } - void sha1(array_ptr data, size_t datalen, fc::sha1& hash_val) { + void sha1(array_ptr data, uint32_t datalen, fc::sha1& hash_val) { hash_val = encode( data, datalen ); } - void sha256(array_ptr data, size_t datalen, fc::sha256& hash_val) { + void sha256(array_ptr data, uint32_t datalen, fc::sha256& hash_val) { hash_val = encode( data, datalen ); } - void sha512(array_ptr data, size_t datalen, fc::sha512& hash_val) { + void sha512(array_ptr data, uint32_t datalen, fc::sha512& hash_val) { hash_val = encode( data, datalen ); } - void ripemd160(array_ptr data, size_t datalen, fc::ripemd160& hash_val) { + void ripemd160(array_ptr data, uint32_t datalen, fc::ripemd160& hash_val) { hash_val = encode( data, datalen ); } }; @@ -835,9 +849,9 @@ class permission_api : public context_aware_api { public: using context_aware_api::context_aware_api; - bool check_transaction_authorization( array_ptr trx_data, size_t trx_size, - array_ptr pubkeys_data, size_t pubkeys_size, - array_ptr perms_data, size_t perms_size + bool check_transaction_authorization( array_ptr trx_data, uint32_t trx_size, + array_ptr pubkeys_data, uint32_t pubkeys_size, + array_ptr perms_data, uint32_t perms_size ) { transaction trx = fc::raw::unpack( trx_data, trx_size ); @@ -865,8 +879,8 @@ class permission_api : public context_aware_api { } bool check_permission_authorization( account_name account, permission_name permission, - array_ptr pubkeys_data, size_t pubkeys_size, - array_ptr perms_data, size_t perms_size, + array_ptr pubkeys_data, uint32_t pubkeys_size, + array_ptr perms_data, uint32_t perms_size, uint64_t delay_us ) { @@ -902,21 +916,21 @@ class permission_api : public context_aware_api { }; int64_t get_account_creation_time( account_name account ) { - auto* acct = context.db.find(account); + auto* acct = context.db.find(account); EOS_ASSERT( acct != nullptr, action_validate_exception, "account '${account}' does not exist", ("account", account) ); return time_point(acct->creation_date).time_since_epoch().count(); } private: - void unpack_provided_keys( flat_set& keys, const char* pubkeys_data, size_t pubkeys_size ) { + void unpack_provided_keys( flat_set& keys, const char* pubkeys_data, uint32_t pubkeys_size ) { keys.clear(); if( pubkeys_size == 0 ) return; keys = fc::raw::unpack>( pubkeys_data, pubkeys_size ); } - void unpack_provided_permissions( flat_set& permissions, const char* perms_data, size_t perms_size ) { + void unpack_provided_permissions( flat_set& permissions, const char* perms_data, uint32_t perms_size ) { permissions.clear(); if( perms_size == 0 ) return; @@ -929,16 +943,16 @@ class authorization_api : public context_aware_api { public: using context_aware_api::context_aware_api; - void require_authorization( const account_name& account ) { + void require_auth( account_name account ) { context.require_authorization( account ); } - bool has_authorization( const account_name& account )const { + bool has_auth( account_name account )const { return context.has_authorization( account ); } - void require_authorization(const account_name& account, - const permission_name& permission) { + void require_auth2( account_name account, + permission_name permission) { context.require_authorization( account, permission ); } @@ -946,7 +960,7 @@ class authorization_api : public context_aware_api { context.require_recipient( recipient ); } - bool is_account( const account_name& account )const { + bool is_account( account_name account )const { return context.is_account( account ); } @@ -986,7 +1000,7 @@ class context_free_system_api : public context_aware_api { } } - void eosio_assert_message( bool condition, array_ptr msg, size_t msg_len ) { + void eosio_assert_message( bool condition, array_ptr msg, uint32_t msg_len ) { if( BOOST_UNLIKELY( !condition ) ) { const size_t sz = msg_len > max_assert_message ? max_assert_message : msg_len; std::string message( msg, sz ); @@ -1012,22 +1026,22 @@ class action_api : public context_aware_api { action_api( apply_context& ctx ) :context_aware_api(ctx,true){} - int read_action_data(array_ptr memory, size_t buffer_size) { - auto s = context.act.data.size(); + int read_action_data(array_ptr memory, uint32_t buffer_size) { + auto s = context.get_action().data.size(); if( buffer_size == 0 ) return s; - auto copy_size = std::min( buffer_size, s ); - memcpy( memory, context.act.data.data(), copy_size ); + auto copy_size = std::min( static_cast(buffer_size), s ); + memcpy( (char*)memory.value, context.get_action().data.data(), copy_size ); return copy_size; } int action_data_size() { - return context.act.data.size(); + return context.get_action().data.size(); } name current_receiver() { - return context.receiver; + return context.get_receiver(); } }; @@ -1040,11 +1054,11 @@ class console_api : public context_aware_api { // Kept as intrinsic rather than implementing on WASM side (using prints_l and strlen) because strlen is faster on native side. void prints(null_terminated_ptr str) { if ( !ignore ) { - context.console_append(str); + context.console_append( static_cast(str) ); } } - void prints_l(array_ptr str, size_t str_len ) { + void prints_l(array_ptr str, uint32_t str_len ) { if ( !ignore ) { context.console_append(string(str, str_len)); } @@ -1052,13 +1066,17 @@ class console_api : public context_aware_api { void printi(int64_t val) { if ( !ignore ) { - context.console_append(val); + std::ostringstream oss; + oss << val; + context.console_append( oss.str() ); } } void printui(uint64_t val) { if ( !ignore ) { - context.console_append(val); + std::ostringstream oss; + oss << val; + context.console_append( oss.str() ); } } @@ -1074,11 +1092,13 @@ class console_api : public context_aware_api { fc::uint128_t v(val_magnitude>>64, static_cast(val_magnitude) ); + string s; if( is_negative ) { - context.console_append("-"); + s += '-'; } + s += fc::variant(v).get_string(); - context.console_append(fc::variant(v).get_string()); + context.console_append( s ); } } @@ -1092,26 +1112,22 @@ class console_api : public context_aware_api { void printsf( float val ) { if ( !ignore ) { // Assumes float representation on native side is the same as on the WASM side - auto& console = context.get_console_stream(); - auto orig_prec = console.precision(); - - console.precision( std::numeric_limits::digits10 ); - context.console_append(val); - - console.precision( orig_prec ); + std::ostringstream oss; + oss.setf( std::ios::scientific, std::ios::floatfield ); + oss.precision( std::numeric_limits::digits10 ); + oss << val; + context.console_append( oss.str() ); } } void printdf( double val ) { if ( !ignore ) { // Assumes double representation on native side is the same as on the WASM side - auto& console = context.get_console_stream(); - auto orig_prec = console.precision(); - - console.precision( std::numeric_limits::digits10 ); - context.console_append(val); - - console.precision( orig_prec ); + std::ostringstream oss; + oss.setf( std::ios::scientific, std::ios::floatfield ); + oss.precision( std::numeric_limits::digits10 ); + oss << val; + context.console_append( oss.str() ); } } @@ -1129,30 +1145,33 @@ class console_api : public context_aware_api { */ if ( !ignore ) { - auto& console = context.get_console_stream(); - auto orig_prec = console.precision(); + std::ostringstream oss; + oss.setf( std::ios::scientific, std::ios::floatfield ); #ifdef __x86_64__ - console.precision( std::numeric_limits::digits10 ); + oss.precision( std::numeric_limits::digits10 ); extFloat80_t val_approx; f128M_to_extF80M(&val, &val_approx); - context.console_append( *(long double*)(&val_approx) ); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" + oss << *(long double*)(&val_approx); +#pragma GCC diagnostic pop #else - console.precision( std::numeric_limits::digits10 ); + oss.precision( std::numeric_limits::digits10 ); double val_approx = from_softfloat64( f128M_to_f64(&val) ); - context.console_append(val_approx); + oss << val_approx; #endif - console.precision( orig_prec ); + context.console_append( oss.str() ); } } - void printn(const name& value) { + void printn(name value) { if ( !ignore ) { context.console_append(value.to_string()); } } - void printhex(array_ptr data, size_t data_len ) { + void printhex(array_ptr data, uint32_t data_len ) { if ( !ignore ) { context.console_append(fc::to_hex(data, data_len)); } @@ -1164,10 +1183,10 @@ class console_api : public context_aware_api { #define DB_API_METHOD_WRAPPERS_SIMPLE_SECONDARY(IDX, TYPE)\ int db_##IDX##_store( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, const TYPE& secondary ) {\ - return context.IDX.store( scope, table, payer, id, secondary );\ + return context.IDX.store( scope, table, account_name(payer), id, secondary );\ }\ void db_##IDX##_update( int iterator, uint64_t payer, const TYPE& secondary ) {\ - return context.IDX.update( iterator, payer, secondary );\ + return context.IDX.update( iterator, account_name(payer), secondary );\ }\ void db_##IDX##_remove( int iterator ) {\ return context.IDX.remove( iterator );\ @@ -1195,45 +1214,45 @@ class console_api : public context_aware_api { } #define DB_API_METHOD_WRAPPERS_ARRAY_SECONDARY(IDX, ARR_SIZE, ARR_ELEMENT_TYPE)\ - int db_##IDX##_store( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, array_ptr data, size_t data_len) {\ + int db_##IDX##_store( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, array_ptr data, uint32_t data_len) {\ EOS_ASSERT( data_len == ARR_SIZE,\ db_api_exception,\ "invalid size of secondary key array for " #IDX ": given ${given} bytes but expected ${expected} bytes",\ ("given",data_len)("expected",ARR_SIZE) );\ - return context.IDX.store(scope, table, payer, id, data.value);\ + return context.IDX.store(scope, table, account_name(payer), id, data.value);\ }\ - void db_##IDX##_update( int iterator, uint64_t payer, array_ptr data, size_t data_len ) {\ + void db_##IDX##_update( int iterator, uint64_t payer, array_ptr data, uint32_t data_len ) {\ EOS_ASSERT( data_len == ARR_SIZE,\ db_api_exception,\ "invalid size of secondary key array for " #IDX ": given ${given} bytes but expected ${expected} bytes",\ ("given",data_len)("expected",ARR_SIZE) );\ - return context.IDX.update(iterator, payer, data.value);\ + return context.IDX.update(iterator, account_name(payer), data.value);\ }\ void db_##IDX##_remove( int iterator ) {\ return context.IDX.remove(iterator);\ }\ - int db_##IDX##_find_secondary( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, size_t data_len, uint64_t& primary ) {\ + int db_##IDX##_find_secondary( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, uint32_t data_len, uint64_t& primary ) {\ EOS_ASSERT( data_len == ARR_SIZE,\ db_api_exception,\ "invalid size of secondary key array for " #IDX ": given ${given} bytes but expected ${expected} bytes",\ ("given",data_len)("expected",ARR_SIZE) );\ return context.IDX.find_secondary(code, scope, table, data, primary);\ }\ - int db_##IDX##_find_primary( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, size_t data_len, uint64_t primary ) {\ + int db_##IDX##_find_primary( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, uint32_t data_len, uint64_t primary ) {\ EOS_ASSERT( data_len == ARR_SIZE,\ db_api_exception,\ "invalid size of secondary key array for " #IDX ": given ${given} bytes but expected ${expected} bytes",\ ("given",data_len)("expected",ARR_SIZE) );\ return context.IDX.find_primary(code, scope, table, data.value, primary);\ }\ - int db_##IDX##_lowerbound( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, size_t data_len, uint64_t& primary ) {\ + int db_##IDX##_lowerbound( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, uint32_t data_len, uint64_t& primary ) {\ EOS_ASSERT( data_len == ARR_SIZE,\ db_api_exception,\ "invalid size of secondary key array for " #IDX ": given ${given} bytes but expected ${expected} bytes",\ ("given",data_len)("expected",ARR_SIZE) );\ return context.IDX.lowerbound_secondary(code, scope, table, data.value, primary);\ }\ - int db_##IDX##_upperbound( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, size_t data_len, uint64_t& primary ) {\ + int db_##IDX##_upperbound( uint64_t code, uint64_t scope, uint64_t table, array_ptr data, uint32_t data_len, uint64_t& primary ) {\ EOS_ASSERT( data_len == ARR_SIZE,\ db_api_exception,\ "invalid size of secondary key array for " #IDX ": given ${given} bytes but expected ${expected} bytes",\ @@ -1253,11 +1272,11 @@ class console_api : public context_aware_api { #define DB_API_METHOD_WRAPPERS_FLOAT_SECONDARY(IDX, TYPE)\ int db_##IDX##_store( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, const TYPE& secondary ) {\ EOS_ASSERT( !softfloat_api::is_nan( secondary ), transaction_exception, "NaN is not an allowed value for a secondary key" );\ - return context.IDX.store( scope, table, payer, id, secondary );\ + return context.IDX.store( scope, table, account_name(payer), id, secondary );\ }\ void db_##IDX##_update( int iterator, uint64_t payer, const TYPE& secondary ) {\ EOS_ASSERT( !softfloat_api::is_nan( secondary ), transaction_exception, "NaN is not an allowed value for a secondary key" );\ - return context.IDX.update( iterator, payer, secondary );\ + return context.IDX.update( iterator, account_name(payer), secondary );\ }\ void db_##IDX##_remove( int iterator ) {\ return context.IDX.remove( iterator );\ @@ -1291,16 +1310,16 @@ class database_api : public context_aware_api { public: using context_aware_api::context_aware_api; - int db_store_i64( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, array_ptr buffer, size_t buffer_size ) { - return context.db_store_i64( scope, table, payer, id, buffer, buffer_size ); + int db_store_i64( uint64_t scope, uint64_t table, uint64_t payer, uint64_t id, array_ptr buffer, uint32_t buffer_size ) { + return context.db_store_i64( name(scope), name(table), account_name(payer), id, buffer, buffer_size ); } - void db_update_i64( int itr, uint64_t payer, array_ptr buffer, size_t buffer_size ) { - context.db_update_i64( itr, payer, buffer, buffer_size ); + void db_update_i64( int itr, uint64_t payer, array_ptr buffer, uint32_t buffer_size ) { + context.db_update_i64( itr, account_name(payer), buffer, buffer_size ); } void db_remove_i64( int itr ) { context.db_remove_i64( itr ); } - int db_get_i64( int itr, array_ptr buffer, size_t buffer_size ) { + int db_get_i64( int itr, array_ptr buffer, uint32_t buffer_size ) { return context.db_get_i64( itr, buffer, buffer_size ); } int db_next_i64( int itr, uint64_t& primary ) { @@ -1310,16 +1329,16 @@ class database_api : public context_aware_api { return context.db_previous_i64(itr, primary); } int db_find_i64( uint64_t code, uint64_t scope, uint64_t table, uint64_t id ) { - return context.db_find_i64( code, scope, table, id ); + return context.db_find_i64( name(code), name(scope), name(table), id ); } int db_lowerbound_i64( uint64_t code, uint64_t scope, uint64_t table, uint64_t id ) { - return context.db_lowerbound_i64( code, scope, table, id ); + return context.db_lowerbound_i64( name(code), name(scope), name(table), id ); } int db_upperbound_i64( uint64_t code, uint64_t scope, uint64_t table, uint64_t id ) { - return context.db_upperbound_i64( code, scope, table, id ); + return context.db_upperbound_i64( name(code), name(scope), name(table), id ); } int db_end_i64( uint64_t code, uint64_t scope, uint64_t table ) { - return context.db_end_i64( code, scope, table ); + return context.db_end_i64( name(code), name(scope), name(table) ); } DB_API_METHOD_WRAPPERS_SIMPLE_SECONDARY(idx64, uint64_t) @@ -1334,17 +1353,17 @@ class memory_api : public context_aware_api { memory_api( apply_context& ctx ) :context_aware_api(ctx,true){} - char* memcpy( array_ptr dest, array_ptr src, size_t length) { - EOS_ASSERT((std::abs((ptrdiff_t)dest.value - (ptrdiff_t)src.value)) >= length, + char* memcpy( array_ptr dest, array_ptr src, uint32_t length) { + EOS_ASSERT((size_t)(std::abs((ptrdiff_t)dest.value - (ptrdiff_t)src.value)) >= length, overlapping_memory_error, "memcpy can only accept non-aliasing pointers"); return (char *)::memcpy(dest, src, length); } - char* memmove( array_ptr dest, array_ptr src, size_t length) { + char* memmove( array_ptr dest, array_ptr src, uint32_t length) { return (char *)::memmove(dest, src, length); } - int memcmp( array_ptr dest, array_ptr src, size_t length) { + int memcmp( array_ptr dest, array_ptr src, uint32_t length) { int ret = ::memcmp(dest, src, length); if(ret < 0) return -1; @@ -1353,7 +1372,7 @@ class memory_api : public context_aware_api { return 0; } - char* memset( array_ptr dest, int value, size_t length ) { + char* memset( array_ptr dest, int value, uint32_t length ) { return (char *)::memset( dest, value, length ); } }; @@ -1362,7 +1381,7 @@ class transaction_api : public context_aware_api { public: using context_aware_api::context_aware_api; - void send_inline( array_ptr data, size_t data_len ) { + void send_inline( array_ptr data, uint32_t data_len ) { //TODO: Why is this limit even needed? And why is it not consistently checked on actions in input or deferred transactions EOS_ASSERT( data_len < context.control.get_global_properties().configuration.max_inline_action_size, inline_action_too_big, "inline action too big" ); @@ -1372,7 +1391,7 @@ class transaction_api : public context_aware_api { context.execute_inline(std::move(act)); } - void send_context_free_inline( array_ptr data, size_t data_len ) { + void send_context_free_inline( array_ptr data, uint32_t data_len ) { //TODO: Why is this limit even needed? And why is it not consistently checked on actions in input or deferred transactions EOS_ASSERT( data_len < context.control.get_global_properties().configuration.max_inline_action_size, inline_action_too_big, "inline action too big" ); @@ -1382,7 +1401,7 @@ class transaction_api : public context_aware_api { context.execute_context_free_inline(std::move(act)); } - void send_deferred( const uint128_t& sender_id, account_name payer, array_ptr data, size_t data_len, uint32_t replace_existing) { + void send_deferred( const uint128_t& sender_id, account_name payer, array_ptr data, uint32_t data_len, uint32_t replace_existing) { transaction trx; fc::raw::unpack(data, data_len, trx); context.schedule_deferred_transaction(sender_id, payer, std::move(trx), replace_existing); @@ -1400,13 +1419,13 @@ class context_free_transaction_api : public context_aware_api { context_free_transaction_api( apply_context& ctx ) :context_aware_api(ctx,true){} - int read_transaction( array_ptr data, size_t buffer_size ) { + int read_transaction( array_ptr data, uint32_t buffer_size ) { bytes trx = context.get_packed_transaction(); auto s = trx.size(); if( buffer_size == 0) return s; - auto copy_size = std::min( buffer_size, s ); + auto copy_size = std::min( static_cast(buffer_size), s ); memcpy( data, trx.data(), copy_size ); return copy_size; @@ -1425,17 +1444,21 @@ class context_free_transaction_api : public context_aware_api { } bool has_contract(account_name name){ - const auto accnt = context.db.find( name ); + const auto accnt = context.db.find( name ); EOS_ASSERT( accnt != nullptr, action_validate_exception, "account '${account}' does not exist", ("account", name) ); - return accnt->code.size() > 0; + return accnt->code_hash != digest_type(); } void get_contract_code(account_name name, fc::sha256& code ) { - const auto accnt = context.db.find( name ); + const auto accnt = context.db.find( name ); EOS_ASSERT( accnt != nullptr, action_validate_exception, "account '${account}' does not exist", ("account", name) ); - if( accnt->code.size() > 0) { - code = fc::sha256::hash( accnt->code.data(), accnt->code.size() ); + auto vm_type = accnt->vm_type; + auto vm_version = accnt->vm_version; + auto code_hash = accnt->code_hash; + const code_object *codeobject = &context.db.get(boost::make_tuple(code_hash, vm_type, vm_version)); + if( codeobject->code_hash != digest_type()) { + code = fc::sha256::hash( codeobject->code.data(), codeobject->code.size() ); } else { code = fc::sha256(); } @@ -1452,7 +1475,7 @@ class context_free_transaction_api : public context_aware_api { return context.trx_context.trx.ref_block_prefix; } - int get_action( uint32_t type, uint32_t index, array_ptr buffer, size_t buffer_size )const { + int get_action( uint32_t type, uint32_t index, array_ptr buffer, uint32_t buffer_size )const { return context.get_action( type, index, buffer, buffer_size ); } }; @@ -1729,7 +1752,7 @@ class action_seed_api : public context_aware_api { action_seed_api(apply_context& ctx) : context_aware_api(ctx) {} - int bpsig_action_time_seed(array_ptr sig, size_t siglen) { + int bpsig_action_time_seed(array_ptr sig, uint32_t siglen) { auto data = action_timestamp(); fc::sha256::encoder encoder; encoder.write(reinterpret_cast(data.data()), data.size()* sizeof(uint32_t)); @@ -1794,58 +1817,59 @@ class action_seed_api : public context_aware_api { return vector{act_parts[0],act_parts[1], current_halves[0], current_halves[1]}; } }; + REGISTER_INTRINSICS(action_seed_api, -(bpsig_action_time_seed, int(int, int) ) + (bpsig_action_time_seed, int(int, int) ) ); REGISTER_INJECTED_INTRINSICS(call_depth_api, - (call_depth_assert, void() ) + (call_depth_assert, void() ) ); REGISTER_INTRINSICS(compiler_builtins, - (__ashlti3, void(int, int64_t, int64_t, int) ) - (__ashrti3, void(int, int64_t, int64_t, int) ) - (__lshlti3, void(int, int64_t, int64_t, int) ) - (__lshrti3, void(int, int64_t, int64_t, int) ) - (__divti3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__udivti3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__modti3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__umodti3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__multi3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__addtf3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__subtf3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__multf3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__divtf3, void(int, int64_t, int64_t, int64_t, int64_t) ) - (__eqtf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__netf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__getf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__gttf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__lttf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__letf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__cmptf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__unordtf2, int(int64_t, int64_t, int64_t, int64_t) ) - (__negtf2, void (int, int64_t, int64_t) ) - (__floatsitf, void (int, int) ) - (__floatunsitf, void (int, int) ) - (__floatditf, void (int, int64_t) ) - (__floatunditf, void (int, int64_t) ) - (__floattidf, double (int64_t, int64_t) ) - (__floatuntidf, double (int64_t, int64_t) ) - (__floatsidf, double(int) ) - (__extendsftf2, void(int, float) ) - (__extenddftf2, void(int, double) ) - (__fixtfti, void(int, int64_t, int64_t) ) - (__fixtfdi, int64_t(int64_t, int64_t) ) - (__fixtfsi, int(int64_t, int64_t) ) - (__fixunstfti, void(int, int64_t, int64_t) ) - (__fixunstfdi, int64_t(int64_t, int64_t) ) - (__fixunstfsi, int(int64_t, int64_t) ) - (__fixsfti, void(int, float) ) - (__fixdfti, void(int, double) ) - (__fixunssfti, void(int, float) ) - (__fixunsdfti, void(int, double) ) - (__trunctfdf2, double(int64_t, int64_t) ) - (__trunctfsf2, float(int64_t, int64_t) ) + (__ashlti3, void(int, int64_t, int64_t, int) ) + (__ashrti3, void(int, int64_t, int64_t, int) ) + (__lshlti3, void(int, int64_t, int64_t, int) ) + (__lshrti3, void(int, int64_t, int64_t, int) ) + (__divti3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__udivti3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__modti3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__umodti3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__multi3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__addtf3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__subtf3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__multf3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__divtf3, void(int, int64_t, int64_t, int64_t, int64_t) ) + (__eqtf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__netf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__getf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__gttf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__lttf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__letf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__cmptf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__unordtf2, int(int64_t, int64_t, int64_t, int64_t) ) + (__negtf2, void (int, int64_t, int64_t) ) + (__floatsitf, void (int, int) ) + (__floatunsitf, void (int, int) ) + (__floatditf, void (int, int64_t) ) + (__floatunditf, void (int, int64_t) ) + (__floattidf, double (int64_t, int64_t) ) + (__floatuntidf, double (int64_t, int64_t) ) + (__floatsidf, double(int) ) + (__extendsftf2, void(int, float) ) + (__extenddftf2, void(int, double) ) + (__fixtfti, void(int, int64_t, int64_t) ) + (__fixtfdi, int64_t(int64_t, int64_t) ) + (__fixtfsi, int(int64_t, int64_t) ) + (__fixunstfti, void(int, int64_t, int64_t) ) + (__fixunstfdi, int64_t(int64_t, int64_t) ) + (__fixunstfsi, int(int64_t, int64_t) ) + (__fixsfti, void(int, float) ) + (__fixdfti, void(int, double) ) + (__fixunssfti, void(int, float) ) + (__fixunsdfti, void(int, double) ) + (__trunctfdf2, double(int64_t, int64_t) ) + (__trunctfsf2, float(int64_t, int64_t) ) ); REGISTER_INTRINSICS(privileged_api, @@ -1864,7 +1888,7 @@ REGISTER_INTRINSICS(privileged_api, ); REGISTER_INJECTED_INTRINSICS(transaction_context, - (checktime, void()) + (checktime, void() ) ); REGISTER_INTRINSICS(producer_api, @@ -1872,40 +1896,40 @@ REGISTER_INTRINSICS(producer_api, ); #define DB_SECONDARY_INDEX_METHODS_SIMPLE(IDX) \ - (db_##IDX##_store, int(int64_t,int64_t,int64_t,int64_t,int))\ - (db_##IDX##_remove, void(int))\ - (db_##IDX##_update, void(int,int64_t,int))\ - (db_##IDX##_find_primary, int(int64_t,int64_t,int64_t,int,int64_t))\ - (db_##IDX##_find_secondary, int(int64_t,int64_t,int64_t,int,int))\ - (db_##IDX##_lowerbound, int(int64_t,int64_t,int64_t,int,int))\ - (db_##IDX##_upperbound, int(int64_t,int64_t,int64_t,int,int))\ - (db_##IDX##_end, int(int64_t,int64_t,int64_t))\ - (db_##IDX##_next, int(int, int))\ - (db_##IDX##_previous, int(int, int)) + (db_##IDX##_store, int(int64_t,int64_t,int64_t,int64_t,int) )\ + (db_##IDX##_remove, void(int) )\ + (db_##IDX##_update, void(int,int64_t,int) )\ + (db_##IDX##_find_primary, int(int64_t,int64_t,int64_t,int,int64_t) )\ + (db_##IDX##_find_secondary, int(int64_t,int64_t,int64_t,int,int) )\ + (db_##IDX##_lowerbound, int(int64_t,int64_t,int64_t,int,int) )\ + (db_##IDX##_upperbound, int(int64_t,int64_t,int64_t,int,int) )\ + (db_##IDX##_end, int(int64_t,int64_t,int64_t) )\ + (db_##IDX##_next, int(int, int) )\ + (db_##IDX##_previous, int(int, int) ) #define DB_SECONDARY_INDEX_METHODS_ARRAY(IDX) \ - (db_##IDX##_store, int(int64_t,int64_t,int64_t,int64_t,int,int))\ - (db_##IDX##_remove, void(int))\ - (db_##IDX##_update, void(int,int64_t,int,int))\ - (db_##IDX##_find_primary, int(int64_t,int64_t,int64_t,int,int,int64_t))\ - (db_##IDX##_find_secondary, int(int64_t,int64_t,int64_t,int,int,int))\ - (db_##IDX##_lowerbound, int(int64_t,int64_t,int64_t,int,int,int))\ - (db_##IDX##_upperbound, int(int64_t,int64_t,int64_t,int,int,int))\ - (db_##IDX##_end, int(int64_t,int64_t,int64_t))\ - (db_##IDX##_next, int(int, int))\ - (db_##IDX##_previous, int(int, int)) + (db_##IDX##_store, int(int64_t,int64_t,int64_t,int64_t,int,int) )\ + (db_##IDX##_remove, void(int) )\ + (db_##IDX##_update, void(int,int64_t,int,int) )\ + (db_##IDX##_find_primary, int(int64_t,int64_t,int64_t,int,int,int64_t) )\ + (db_##IDX##_find_secondary, int(int64_t,int64_t,int64_t,int,int,int) )\ + (db_##IDX##_lowerbound, int(int64_t,int64_t,int64_t,int,int,int) )\ + (db_##IDX##_upperbound, int(int64_t,int64_t,int64_t,int,int,int) )\ + (db_##IDX##_end, int(int64_t,int64_t,int64_t) )\ + (db_##IDX##_next, int(int, int) )\ + (db_##IDX##_previous, int(int, int) ) REGISTER_INTRINSICS( database_api, - (db_store_i64, int(int64_t,int64_t,int64_t,int64_t,int,int)) - (db_update_i64, void(int,int64_t,int,int)) - (db_remove_i64, void(int)) - (db_get_i64, int(int, int, int)) - (db_next_i64, int(int, int)) - (db_previous_i64, int(int, int)) - (db_find_i64, int(int64_t,int64_t,int64_t,int64_t)) - (db_lowerbound_i64, int(int64_t,int64_t,int64_t,int64_t)) - (db_upperbound_i64, int(int64_t,int64_t,int64_t,int64_t)) - (db_end_i64, int(int64_t,int64_t,int64_t)) + (db_store_i64, int(int64_t,int64_t,int64_t,int64_t,int,int) ) + (db_update_i64, void(int,int64_t,int,int) ) + (db_remove_i64, void(int) ) + (db_get_i64, int(int, int, int) ) + (db_next_i64, int(int, int) ) + (db_previous_i64, int(int, int) ) + (db_find_i64, int(int64_t,int64_t,int64_t,int64_t) ) + (db_lowerbound_i64, int(int64_t,int64_t,int64_t,int64_t) ) + (db_upperbound_i64, int(int64_t,int64_t,int64_t,int64_t) ) + (db_end_i64, int(int64_t,int64_t,int64_t) ) DB_SECONDARY_INDEX_METHODS_SIMPLE(idx64) DB_SECONDARY_INDEX_METHODS_SIMPLE(idx128) @@ -1931,8 +1955,8 @@ REGISTER_INTRINSICS(crypto_api, REGISTER_INTRINSICS(permission_api, (check_transaction_authorization, int(int, int, int, int, int, int) ) (check_permission_authorization, int(int64_t, int64_t, int, int, int, int, int64_t) ) - (get_permission_last_used, int64_t(int64_t, int64_t) ) - (get_account_creation_time, int64_t(int64_t) ) + (get_permission_last_used, int64_t(int64_t, int64_t) ) + (get_account_creation_time, int64_t(int64_t) ) ); @@ -1952,15 +1976,15 @@ REGISTER_INTRINSICS(context_free_system_api, REGISTER_INTRINSICS(action_api, (read_action_data, int(int, int) ) (action_data_size, int() ) - (current_receiver, int64_t() ) + (current_receiver, int64_t() ) ); REGISTER_INTRINSICS(authorization_api, - (require_recipient, void(int64_t) ) - (require_authorization, void(int64_t), "require_auth", void(authorization_api::*)(const account_name&) ) - (require_authorization, void(int64_t, int64_t), "require_auth2", void(authorization_api::*)(const account_name&, const permission_name& permission) ) - (has_authorization, int(int64_t), "has_auth", bool(authorization_api::*)(const account_name&)const ) - (is_account, int(int64_t) ) + (require_recipient, void(int64_t) ) + (require_auth, void(int64_t) ) + (require_auth2, void(int64_t, int64_t) ) + (has_auth, int(int64_t) ) + (is_account, int(int64_t) ) ); REGISTER_INTRINSICS(console_api, @@ -1991,10 +2015,10 @@ REGISTER_INTRINSICS(context_free_transaction_api, ); REGISTER_INTRINSICS(transaction_api, - (send_inline, void(int, int) ) - (send_context_free_inline, void(int, int) ) + (send_inline, void(int, int) ) + (send_context_free_inline, void(int, int) ) (send_deferred, void(int, int64_t, int, int, int32_t) ) - (cancel_deferred, int(int) ) + (cancel_deferred, int(int) ) ); REGISTER_INTRINSICS(context_free_api, diff --git a/libraries/chain/webassembly/wabt.cpp b/libraries/chain/webassembly/wabt.cpp index 2d45fa4ee01..853960d312b 100644 --- a/libraries/chain/webassembly/wabt.cpp +++ b/libraries/chain/webassembly/wabt.cpp @@ -1,6 +1,7 @@ #include #include #include +#include //wabt includes #include @@ -28,7 +29,7 @@ class wabt_instantiated_module : public wasm_instantiated_module_interface { continue; _initial_globals.emplace_back(_env->GetGlobal(i), _env->GetGlobal(i)->typed_value); } - + if(_env->GetMemoryCount()) _initial_memory_configuration = _env->GetMemory(0)->page_limits; } @@ -46,13 +47,13 @@ class wabt_instantiated_module : public wasm_instantiated_module_interface { Memory* memory = this_run_vars.memory = _env->GetMemory(0); memory->page_limits = _initial_memory_configuration; memory->data.resize(_initial_memory_configuration.initial * WABT_PAGE_SIZE); - memset(memory->data.data(), 0, memory->data.size()); memcpy(memory->data.data(), _initial_memory.data(), _initial_memory.size()); + memset(memory->data.data() + _initial_memory.size(), 0, memory->data.size() - _initial_memory.size()); } - _params[0].set_i64(uint64_t(context.receiver)); - _params[1].set_i64(uint64_t(context.act.account)); - _params[2].set_i64(uint64_t(context.act.name)); + _params[0].set_i64(context.get_receiver().to_uint64_t()); + _params[1].set_i64(context.get_action().account.to_uint64_t()); + _params[2].set_i64(context.get_action().name.to_uint64_t()); ExecResult res = _executor.RunStartFunction(_instatiated_module); EOS_ASSERT( res.result == interp::Result::Ok, wasm_execution_error, "wabt start function failure (${s})", ("s", ResultToString(res.result)) ); @@ -73,7 +74,14 @@ class wabt_instantiated_module : public wasm_instantiated_module_interface { wabt_runtime::wabt_runtime() {} -std::unique_ptr wabt_runtime::instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) { +bool wabt_runtime::inject_module(IR::Module& module) { + wasm_injections::wasm_binary_injection injector(module); + injector.inject(); + return true; +} + +std::unique_ptr wabt_runtime::instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory, + const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version) { std::unique_ptr env = std::make_unique(); for(auto it = intrinsic_registrator::get_map().begin() ; it != intrinsic_registrator::get_map().end(); ++it) { interp::HostModule* host_module = env->AppendHostModule(it->first); @@ -92,7 +100,7 @@ std::unique_ptr wabt_runtime::instantiate_mo wabt::Result res = ReadBinaryInterp(env.get(), code_bytes, code_size, read_binary_options, &errors, &instantiated_module); EOS_ASSERT( Succeeded(res), wasm_execution_error, "Error building wabt interp: ${e}", ("e", wabt::FormatErrorsToString(errors, Location::Type::Binary)) ); - + return std::make_unique(std::move(env), initial_memory, instantiated_module); } diff --git a/libraries/chain/webassembly/wavm.cpp b/libraries/chain/webassembly/wavm.cpp index e614398c74e..a190445cb91 100644 --- a/libraries/chain/webassembly/wavm.cpp +++ b/libraries/chain/webassembly/wavm.cpp @@ -12,7 +12,8 @@ #include "Runtime/Linker.h" #include "Runtime/Intrinsics.h" -#include +#include +#include using namespace IR; using namespace Runtime; @@ -21,18 +22,61 @@ namespace eosio { namespace chain { namespace webassembly { namespace wavm { running_instance_context the_running_instance_context; +namespace detail { +struct wavm_runtime_initializer { + wavm_runtime_initializer() { + Runtime::init(); + } +}; + +using live_module_ref = std::list::iterator; + +struct wavm_live_modules { + live_module_ref add_live_module(ModuleInstance* module_instance) { + return live_modules.insert(live_modules.begin(), asObject(module_instance)); + } + + void remove_live_module(live_module_ref it) { + live_modules.erase(it); + run_wavm_garbage_collection(); + } + + void run_wavm_garbage_collection() { + //need to pass in a mutable list of root objects we want the garbage collector to retain + std::vector root; + std::copy(live_modules.begin(), live_modules.end(), std::back_inserter(root)); + Runtime::freeUnreferencedObjects(std::move(root)); + } + + std::list live_modules; +}; + +static wavm_live_modules the_wavm_live_modules; + +} + class wavm_instantiated_module : public wasm_instantiated_module_interface { public: wavm_instantiated_module(ModuleInstance* instance, std::unique_ptr module, std::vector initial_mem) : _initial_memory(initial_mem), _instance(instance), - _module(std::move(module)) - {} + _module_ref(detail::the_wavm_live_modules.add_live_module(instance)) + { + //The memory instance is reused across all wavm_instantiated_modules, but for wasm instances + // that didn't declare "memory", getDefaultMemory() won't see it. It would also be possible + // to say something like if(module->memories.size()) here I believe + if(getDefaultMemory(_instance)) + _initial_memory_config = module->memories.defs.at(0).type; + } + + ~wavm_instantiated_module() { + detail::the_wavm_live_modules.remove_live_module(_module_ref); + } void apply(apply_context& context) override { - vector args = {Value(uint64_t(context.receiver)), - Value(uint64_t(context.act.account)), - Value(uint64_t(context.act.name))}; + vector args = {Value(context.get_receiver().to_uint64_t()), + Value(context.get_action().account.to_uint64_t()), + Value(context.get_action().name.to_uint64_t())}; call("apply", args, context); } @@ -52,7 +96,7 @@ class wavm_instantiated_module : public wasm_instantiated_module_interface { 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); + resetMemory(default_mem, _initial_memory_config); char* memstart = &memoryRef(getDefaultMemory(_instance), 0); memcpy(memstart, _initial_memory.data(), _initial_memory.size()); @@ -78,37 +122,25 @@ class wavm_instantiated_module : public wasm_instantiated_module_interface { //naked pointer because ModuleInstance is opaque //_instance is deleted via WAVM's object garbage collection when wavm_rutime is deleted ModuleInstance* _instance; - std::unique_ptr _module; + detail::live_module_ref _module_ref; + MemoryType _initial_memory_config; }; - -wavm_runtime::runtime_guard::runtime_guard() { - // TODO clean this up - //check_wasm_opcode_dispositions(); - Runtime::init(); -} - -wavm_runtime::runtime_guard::~runtime_guard() { - Runtime::freeUnreferencedObjects({}); -} - -static weak_ptr __runtime_guard_ptr; -static std::mutex __runtime_guard_lock; - wavm_runtime::wavm_runtime() { - std::lock_guard l(__runtime_guard_lock); - if (__runtime_guard_ptr.use_count() == 0) { - _runtime_guard = std::make_shared(); - __runtime_guard_ptr = _runtime_guard; - } else { - _runtime_guard = __runtime_guard_ptr.lock(); - } + static detail::wavm_runtime_initializer the_wavm_runtime_initializer; } wavm_runtime::~wavm_runtime() { } -std::unique_ptr wavm_runtime::instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory) { +bool wavm_runtime::inject_module(IR::Module& module) { + wasm_injections::wasm_binary_injection injector(module); + injector.inject(); + return true; +} + +std::unique_ptr wavm_runtime::instantiate_module(const char* code_bytes, size_t code_size, std::vector initial_memory, + const digest_type& code_hash, const uint8_t& vm_type, const uint8_t& vm_version) { std::unique_ptr module = std::make_unique(); try { Serialization::MemoryInputStream stream((const U8*)code_bytes, code_size); @@ -119,19 +151,24 @@ std::unique_ptr wavm_runtime::instantiate_mo EOS_ASSERT(false, wasm_serialization_error, e.message.c_str()); } - eosio::chain::webassembly::common::root_resolver resolver; - LinkResult link_result = linkModule(*module, resolver); - ModuleInstance *instance = instantiateModule(*module, std::move(link_result.resolvedImports)); - EOS_ASSERT(instance != nullptr, wasm_exception, "Fail to Instantiate WAVM Module"); + try { + eosio::chain::webassembly::common::root_resolver resolver; + LinkResult link_result = linkModule(*module, resolver); + ModuleInstance *instance = instantiateModule(*module, std::move(link_result.resolvedImports)); + EOS_ASSERT(instance != nullptr, wasm_exception, "Fail to Instantiate WAVM Module"); - return std::make_unique(instance, std::move(module), initial_memory); + return std::make_unique(instance, std::move(module), initial_memory); + } + catch(const Runtime::Exception& e) { + EOS_THROW(wasm_execution_error, "Failed to stand up WAVM instance: ${m}", ("m", describeExceptionCause(e.cause))); + } } void wavm_runtime::immediately_exit_currently_running_module() { #ifdef _WIN32 throw wasm_exit(); #else - Platform::immediately_exit(); + Platform::immediately_exit(nullptr); #endif } diff --git a/libraries/chain/whitelisted_intrinsics.cpp b/libraries/chain/whitelisted_intrinsics.cpp new file mode 100644 index 00000000000..cd3974d1ce5 --- /dev/null +++ b/libraries/chain/whitelisted_intrinsics.cpp @@ -0,0 +1,104 @@ +#include +#include + +namespace eosio { namespace chain { + + template + bool find_intrinsic_helper( uint64_t h, const std::string& name, Iterator& itr, const Iterator& end ) { + for( ; itr != end && itr->first == h; ++itr ) { + if( itr->second.compare( 0, itr->second.size(), name.c_str(), name.size() ) == 0 ) { + return true; + } + } + + return false; + } + + whitelisted_intrinsics_type::iterator + find_intrinsic( whitelisted_intrinsics_type& whitelisted_intrinsics, uint64_t h, const std::string& name ) + { + auto itr = whitelisted_intrinsics.lower_bound( h ); + const auto end = whitelisted_intrinsics.end(); + + if( !find_intrinsic_helper( h, name, itr, end ) ) + return end; + + return itr; + } + + whitelisted_intrinsics_type::const_iterator + find_intrinsic( const whitelisted_intrinsics_type& whitelisted_intrinsics, uint64_t h, const std::string& name ) + { + auto itr = whitelisted_intrinsics.lower_bound( h ); + const auto end = whitelisted_intrinsics.end(); + + if( !find_intrinsic_helper( h, name, itr, end ) ) + return end; + + return itr; + } + + bool is_intrinsic_whitelisted( const whitelisted_intrinsics_type& whitelisted_intrinsics, const std::string& name ) + { + uint64_t h = static_cast( std::hash{}( name ) ); + auto itr = whitelisted_intrinsics.lower_bound( h ); + const auto end = whitelisted_intrinsics.end(); + + return find_intrinsic_helper( h, name, itr, end ); + } + + + void add_intrinsic_to_whitelist( whitelisted_intrinsics_type& whitelisted_intrinsics, const std::string& name ) + { + uint64_t h = static_cast( std::hash{}( name ) ); + auto itr = find_intrinsic( whitelisted_intrinsics, h, name ); + EOS_ASSERT( itr == whitelisted_intrinsics.end(), database_exception, + "cannot add intrinsic '${name}' since it already exists in the whitelist", + ("name", name) + ); + + whitelisted_intrinsics.emplace( std::piecewise_construct, + std::forward_as_tuple( h ), + std::forward_as_tuple( name.c_str(), name.size(), + whitelisted_intrinsics.get_allocator() ) + ); + } + + void remove_intrinsic_from_whitelist( whitelisted_intrinsics_type& whitelisted_intrinsics, const std::string& name ) + { + uint64_t h = static_cast( std::hash{}( name ) ); + auto itr = find_intrinsic( whitelisted_intrinsics, h, name ); + EOS_ASSERT( itr != whitelisted_intrinsics.end(), database_exception, + "cannot remove intrinsic '${name}' since it does not exist in the whitelist", + ("name", name) + ); + + whitelisted_intrinsics.erase( itr ); + } + + void reset_intrinsic_whitelist( whitelisted_intrinsics_type& whitelisted_intrinsics, + const std::set& s ) + { + whitelisted_intrinsics.clear(); + + for( const auto& name : s ) { + uint64_t h = static_cast( std::hash{}( name ) ); + whitelisted_intrinsics.emplace( std::piecewise_construct, + std::forward_as_tuple( h ), + std::forward_as_tuple( name.c_str(), name.size(), + whitelisted_intrinsics.get_allocator() ) + ); + } + } + + std::set convert_intrinsic_whitelist_to_set( const whitelisted_intrinsics_type& whitelisted_intrinsics ) { + std::set s; + + for( const auto& p : whitelisted_intrinsics ) { + s.emplace( p.second.c_str(), p.second.size() ); + } + + return s; + } + +} } diff --git a/libraries/fc b/libraries/fc index 5ac1fd76872..ac3bee8650b 160000 --- a/libraries/fc +++ b/libraries/fc @@ -1 +1 @@ -Subproject commit 5ac1fd7687261511c4a6a1866c5ade4b867390f8 +Subproject commit ac3bee8650b9090a1a66366392fd882cfe7931c8 diff --git a/libraries/testing/CMakeLists.txt b/libraries/testing/CMakeLists.txt index eaf9bf87502..b03c85760d1 100644 --- a/libraries/testing/CMakeLists.txt +++ b/libraries/testing/CMakeLists.txt @@ -11,11 +11,9 @@ target_link_libraries( eosio_testing eosio_chain fc chainbase Logging IR WAST WA target_include_directories( eosio_testing PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_BINARY_DIR}/include" "${CMAKE_CURRENT_SOURCE_DIR}/../wasm-jit/Include" - "${CMAKE_BINARY_DIR}/contracts" + "${CMAKE_BINARY_DIR}/unittests/include" ) -add_dependencies( eosio_testing eosio.bios ) - if(MSVC) set_source_files_properties( db_init.cpp db_block.cpp database.cpp block_log.cpp PROPERTIES COMPILE_FLAGS "/bigobj" ) endif(MSVC) diff --git a/libraries/testing/include/eosio/testing/tester.hpp b/libraries/testing/include/eosio/testing/tester.hpp index 5a9db207780..2df1be62360 100644 --- a/libraries/testing/include/eosio/testing/tester.hpp +++ b/libraries/testing/include/eosio/testing/tester.hpp @@ -240,7 +240,7 @@ namespace eosio { namespace testing { auto get_resolver() { return [this]( const account_name& name ) -> optional { try { - const auto& accnt = control->db().get( name ); + const auto& accnt = control->db().get( name ); abi_def abi; if( abi_serializer::to_abi( accnt.abi, abi )) { return abi_serializer( abi, abi_serializer_max_time ); diff --git a/libraries/testing/tester.cpp b/libraries/testing/tester.cpp index a632cb40643..5eaf21de416 100644 --- a/libraries/testing/tester.cpp +++ b/libraries/testing/tester.cpp @@ -5,10 +5,10 @@ #include #include -#include -#include #include +#include + eosio::chain::asset core_from_string(const std::string& s) { return eosio::chain::asset::from_string(s + " " CORE_SYMBOL_NAME); } @@ -826,9 +826,9 @@ namespace eosio { namespace testing { } void base_tester::push_genesis_block() { - set_code(config::system_account_name, eosio_bios_wast); + set_code(config::system_account_name, contracts::eosio_bios_wasm()); - set_abi(config::system_account_name, eosio_bios_abi); + set_abi(config::system_account_name, contracts::eosio_bios_abi().data()); //produce_block(); } diff --git a/libraries/wasm-jit/CMakeLists.txt b/libraries/wasm-jit/CMakeLists.txt index c06e45b5252..8fcdec4e9ce 100644 --- a/libraries/wasm-jit/CMakeLists.txt +++ b/libraries/wasm-jit/CMakeLists.txt @@ -36,6 +36,7 @@ include_directories(${WAVM_INCLUDE_DIR}) # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") # endif() +set(CMAKE_CXX_STANDARD 11) option(WAVM_METRICS_OUTPUT "controls printing the timings of some operations to stdout" OFF) if(WAVM_METRICS_OUTPUT) add_definitions("-DWAVM_METRICS_OUTPUT=1") @@ -66,11 +67,11 @@ endif() add_subdirectory(Include/Inline) -add_subdirectory(Source/Emscripten) +#add_subdirectory(Source/Emscripten) add_subdirectory(Source/IR) add_subdirectory(Source/Logging) add_subdirectory(Source/Platform) -add_subdirectory(Source/Programs) +#add_subdirectory(Source/Programs) add_subdirectory(Source/Runtime) add_subdirectory(Source/WASM) add_subdirectory(Source/WAST) diff --git a/libraries/wasm-jit/Include/Platform/Platform.h b/libraries/wasm-jit/Include/Platform/Platform.h index 8d8769d4834..edaeef071d8 100644 --- a/libraries/wasm-jit/Include/Platform/Platform.h +++ b/libraries/wasm-jit/Include/Platform/Platform.h @@ -134,7 +134,7 @@ namespace Platform Uptr& outTrapOperand, const std::function& thunk ); - PLATFORM_API void immediately_exit(); + PLATFORM_API [[noreturn]] void immediately_exit(std::exception_ptr except); // // Threading diff --git a/libraries/wasm-jit/Include/Runtime/Intrinsics.h b/libraries/wasm-jit/Include/Runtime/Intrinsics.h index fa3e6f2b8a0..e5d37f3b7d9 100644 --- a/libraries/wasm-jit/Include/Runtime/Intrinsics.h +++ b/libraries/wasm-jit/Include/Runtime/Intrinsics.h @@ -17,78 +17,6 @@ namespace Intrinsics private: const char* name; }; - - // The base class of Intrinsic globals. - struct Global - { - Runtime::GlobalInstance* global; - - RUNTIME_API Global(const char* inName,IR::GlobalType inType); - RUNTIME_API ~Global(); - - RUNTIME_API void reset(); - - protected: - void* value; - private: - const char* name; - IR::GlobalType globalType; - }; - - // A partially specialized template for Intrinsic globals: - // Provides access via implicit coercion to a value, and for mutable globals an assignment operator. - template - struct GenericGlobal : Global - { - typedef typename IR::ValueTypeInfo::Value Value; - - GenericGlobal(const char* inName,Value inValue) - : Global(inName,IR::GlobalType(type,isMutable)) { *(Value*)value = inValue; } - - operator Value() const { return *(Value*)value; } - void operator=(Value newValue) { *(Value*)value = newValue; } - }; - template - struct GenericGlobal : Global - { - typedef typename IR::ValueTypeInfo::Value Value; - - GenericGlobal(const char* inName,Value inValue) - : Global(inName,IR::GlobalType(type,false)) { *(Value*)value = inValue; } - - operator Value() const { return *(Value*)value; } - - void reset(Value inValue) - { - Global::reset(); - *(Value*)value = inValue; - } - }; - - // Intrinsic memories and tables - struct Memory - { - RUNTIME_API Memory(const char* inName,const IR::MemoryType& inType); - RUNTIME_API ~Memory(); - - operator Runtime::MemoryInstance*() const { return memory; } - - private: - const char* name; - Runtime::MemoryInstance* const memory; - }; - - struct Table - { - RUNTIME_API Table(const char* inName,const IR::TableType& inType); - RUNTIME_API ~Table(); - - operator Runtime::TableInstance*() const { return table; } - - private: - const char* name; - Runtime::TableInstance* const table; - }; // Finds an intrinsic object by name and type. RUNTIME_API Runtime::ObjectInstance* find(const std::string& name,const IR::ObjectType& type); diff --git a/libraries/wasm-jit/Include/Runtime/llvmWARshim.h b/libraries/wasm-jit/Include/Runtime/llvmWARshim.h new file mode 100644 index 00000000000..56f9e352cbe --- /dev/null +++ b/libraries/wasm-jit/Include/Runtime/llvmWARshim.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +namespace LLVMJIT { + +llvm::Value* CreateInBoundsGEPWAR(llvm::IRBuilder<>& irBuilder, llvm::Value* Ptr, llvm::Value* v1, llvm::Value* v2 = nullptr); + +} \ No newline at end of file diff --git a/libraries/wasm-jit/Source/Platform/POSIX.cpp b/libraries/wasm-jit/Source/Platform/POSIX.cpp index 4305381b39f..b6810e97480 100644 --- a/libraries/wasm-jit/Source/Platform/POSIX.cpp +++ b/libraries/wasm-jit/Source/Platform/POSIX.cpp @@ -176,6 +176,7 @@ namespace Platform THREAD_LOCAL Uptr* signalOperand = nullptr; THREAD_LOCAL bool isReentrantSignal = false; THREAD_LOCAL bool isCatchingSignals = false; + thread_local std::exception_ptr thrown_exception; void signalHandler(int signalNumber,siginfo_t* signalInfo,void*) { @@ -252,6 +253,7 @@ namespace Platform jmp_buf oldSignalReturnEnv; memcpy(&oldSignalReturnEnv,&signalReturnEnv,sizeof(jmp_buf)); const bool oldIsCatchingSignals = isCatchingSignals; + thrown_exception = nullptr; // Use setjmp to allow signals to jump back to this point. bool isReturningFromSignalHandler = sigsetjmp(signalReturnEnv,1); @@ -273,10 +275,14 @@ namespace Platform signalCallStack = nullptr; signalOperand = nullptr; + if(thrown_exception) + std::rethrow_exception(thrown_exception); + return signalType; } - void immediately_exit() { + void immediately_exit(std::exception_ptr except) { + thrown_exception = except; siglongjmp(signalReturnEnv,1); } diff --git a/libraries/wasm-jit/Source/Platform/Windows.cpp b/libraries/wasm-jit/Source/Platform/Windows.cpp index bc3c30fc46a..2c34c613b64 100644 --- a/libraries/wasm-jit/Source/Platform/Windows.cpp +++ b/libraries/wasm-jit/Source/Platform/Windows.cpp @@ -359,6 +359,10 @@ namespace Platform { errorUnless(SetEvent(reinterpret_cast(event))); } + + void immediately_exit(std::exception_ptr except) { + std::rethrow_exception(except); + } } #endif diff --git a/libraries/wasm-jit/Source/Programs/Assemble.cpp b/libraries/wasm-jit/Source/Programs/Assemble.cpp index a3328794ddd..60ca42cf0f9 100644 --- a/libraries/wasm-jit/Source/Programs/Assemble.cpp +++ b/libraries/wasm-jit/Source/Programs/Assemble.cpp @@ -7,7 +7,7 @@ int commandMain(int argc,char** argv) { if(argc < 3) { - std::cerr << "Usage: eosio-wast2wasm in.wast out.wasm [switches]" << std::endl; + std::cerr << "Usage: Assemble in.wast out.wasm [switches]" << std::endl; std::cerr << " -n|--omit-names\t\tOmits WAST function and local names from the output" << std::endl; return EXIT_FAILURE; } diff --git a/libraries/wasm-jit/Source/Programs/CMakeLists.txt b/libraries/wasm-jit/Source/Programs/CMakeLists.txt index 27a3aa427b4..260f4c1092c 100644 --- a/libraries/wasm-jit/Source/Programs/CMakeLists.txt +++ b/libraries/wasm-jit/Source/Programs/CMakeLists.txt @@ -1,7 +1,6 @@ -add_executable(eosio-wast2wasm Assemble.cpp CLI.h) -target_link_libraries(eosio-wast2wasm Logging IR WAST WASM) -set_target_properties(eosio-wast2wasm PROPERTIES FOLDER Programs) -INSTALL(TARGETS eosio-wast2wasm DESTINATION ${CMAKE_INSTALL_BINDIR}) +add_executable(Assemble Assemble.cpp CLI.h) +target_link_libraries(Assemble Logging IR WAST WASM) +set_target_properties(Assemble PROPERTIES FOLDER Programs) add_executable(Disassemble Disassemble.cpp CLI.h) target_link_libraries(Disassemble Logging IR WAST WASM) diff --git a/libraries/wasm-jit/Source/Runtime/CMakeLists.txt b/libraries/wasm-jit/Source/Runtime/CMakeLists.txt index 34a14336a86..e579860e46d 100644 --- a/libraries/wasm-jit/Source/Runtime/CMakeLists.txt +++ b/libraries/wasm-jit/Source/Runtime/CMakeLists.txt @@ -1,18 +1,32 @@ +if(LLVM_VERSION VERSION_LESS 7.1 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + enable_language(ASM-LLVMWAR) + set(LLVM_SHIM_FILE llvmWARshim.llvmwar) +else() + set(LLVM_SHIM_FILE llvmWARshim.cpp) +endif() set(Sources Intrinsics.cpp Linker.cpp - LLVMEmitIR.cpp - LLVMJIT.cpp LLVMJIT.h - Memory.cpp - ModuleInstance.cpp ObjectGC.cpp - Runtime.cpp RuntimePrivate.h - Table.cpp Threads.cpp WAVMIntrinsics.cpp ) + +if("wavm" IN_LIST EOSIO_WASM_RUNTIMES) + list(APPEND Sources + LLVMEmitIR.cpp + LLVMJIT.cpp + Memory.cpp + ModuleInstance.cpp + Runtime.cpp + Table.cpp + ${LLVM_SHIM_FILE} + ) + llvm_map_components_to_libnames(LLVM_LIBS support core passes mcjit native DebugInfoDWARF orcjit) +endif() + set(PublicHeaders ${WAVM_INCLUDE_DIR}/Runtime/Intrinsics.h ${WAVM_INCLUDE_DIR}/Runtime/Linker.h @@ -22,9 +36,6 @@ include_directories(${WAVM_INCLUDE_DIR}/Runtime) add_library(Runtime STATIC ${Sources} ${PublicHeaders}) -# Find an installed build of LLVM -find_package(LLVM 4.0 REQUIRED CONFIG) - # Include the LLVM headers include_directories(${LLVM_INCLUDE_DIRS}) add_definitions(${LLVM_DEFINITIONS}) @@ -34,7 +45,6 @@ add_definitions(-DRUNTIME_API=DLL_EXPORT) target_include_directories( Runtime PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../chain/include ) # Link against the LLVM libraries -llvm_map_components_to_libnames(LLVM_LIBS support core passes mcjit native DebugInfoDWARF) target_link_libraries(Runtime Platform Logging IR ${LLVM_LIBS}) install(TARGETS Runtime diff --git a/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp b/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp index f62fb477adb..11f5dc3a3f1 100644 --- a/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp +++ b/libraries/wasm-jit/Source/Runtime/Intrinsics.cpp @@ -11,9 +11,6 @@ namespace Intrinsics struct Singleton { std::map functionMap; - std::map variableMap; - std::map memoryMap; - std::map tableMap; Platform::Mutex* mutex; Singleton(): mutex(Platform::createMutex()) {} @@ -51,71 +48,6 @@ namespace Intrinsics delete function; } - Global::Global(const char* inName,IR::GlobalType inType) - : name(inName) - , globalType(inType) - { - global = Runtime::createGlobal(inType,Runtime::Value((I64)0)); - value = &global->value; - { - Platform::Lock lock(Singleton::get().mutex); - Singleton::get().variableMap[getDecoratedName(inName,inType)] = this; - } - } - - Global::~Global() - { - { - Platform::Lock Lock(Singleton::get().mutex); - Singleton::get().variableMap.erase(Singleton::get().variableMap.find(getDecoratedName(name,global->type))); - } - delete global; - } - - void Global::reset() - { - global = Runtime::createGlobal(globalType,Runtime::Value((I64)0)); - value = &global->value; - } - - Table::Table(const char* inName,const IR::TableType& type) - : name(inName) - , table(Runtime::createTable(type)) - { - if(!table) { Errors::fatal("failed to create intrinsic table"); } - - Platform::Lock lock(Singleton::get().mutex); - Singleton::get().tableMap[getDecoratedName(inName,type)] = this; - } - - Table::~Table() - { - { - Platform::Lock Lock(Singleton::get().mutex); - Singleton::get().tableMap.erase(Singleton::get().tableMap.find(getDecoratedName(name,table->type))); - } - delete table; - } - - Memory::Memory(const char* inName,const IR::MemoryType& type) - : name(inName) - , memory(Runtime::createMemory(type)) - { - if(!memory) { Errors::fatal("failed to create intrinsic memory"); } - - Platform::Lock lock(Singleton::get().mutex); - Singleton::get().memoryMap[getDecoratedName(inName,type)] = this; - } - - Memory::~Memory() - { - { - Platform::Lock Lock(Singleton::get().mutex); - Singleton::get().memoryMap.erase(Singleton::get().memoryMap.find(getDecoratedName(name,memory->type))); - } - delete memory; - } - Runtime::ObjectInstance* find(const std::string& name,const IR::ObjectType& type) { std::string decoratedName = getDecoratedName(name,type); @@ -131,20 +63,17 @@ namespace Intrinsics } case IR::ObjectKind::table: { - auto keyValue = Singleton::get().tableMap.find(decoratedName); - result = keyValue == Singleton::get().tableMap.end() ? nullptr : asObject((Runtime::TableInstance*)*keyValue->second); + result = nullptr; break; } case IR::ObjectKind::memory: { - auto keyValue = Singleton::get().memoryMap.find(decoratedName); - result = keyValue == Singleton::get().memoryMap.end() ? nullptr : asObject((Runtime::MemoryInstance*)*keyValue->second); + result = nullptr; break; } case IR::ObjectKind::global: { - auto keyValue = Singleton::get().variableMap.find(decoratedName); - result = keyValue == Singleton::get().variableMap.end() ? nullptr : asObject(keyValue->second->global); + result = nullptr; break; } default: Errors::unreachable(); @@ -158,9 +87,6 @@ namespace Intrinsics Platform::Lock lock(Singleton::get().mutex); std::vector result; for(auto mapIt : Singleton::get().functionMap) { result.push_back(mapIt.second->function); } - for(auto mapIt : Singleton::get().tableMap) { result.push_back((Runtime::TableInstance*)*mapIt.second); } - for(auto mapIt : Singleton::get().memoryMap) { result.push_back((Runtime::MemoryInstance*)*mapIt.second); } - for(auto mapIt : Singleton::get().variableMap) { result.push_back(mapIt.second->global); } return result; } } diff --git a/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp b/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp index 5ca01bad510..bb567113ca7 100644 --- a/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp +++ b/libraries/wasm-jit/Source/Runtime/LLVMEmitIR.cpp @@ -3,6 +3,7 @@ #include "Inline/Timing.h" #include "IR/Operators.h" #include "IR/OperatorPrinter.h" +#include "Runtime/llvmWARshim.h" #include "Logging/Logging.h" #include "llvm/Support/raw_ostream.h" @@ -27,12 +28,6 @@ namespace LLVMJIT llvm::Constant* defaultTableMaxElementIndex; llvm::Constant* defaultMemoryBase; llvm::Constant* defaultMemoryEndOffset; - - llvm::DIBuilder diBuilder; - llvm::DICompileUnit* diCompileUnit; - llvm::DIFile* diModuleScope; - - llvm::DIType* diValueTypes[(Uptr)ValueType::num]; llvm::MDNode* likelyFalseBranchWeights; llvm::MDNode* likelyTrueBranchWeights; @@ -41,20 +36,7 @@ namespace LLVMJIT : module(inModule) , moduleInstance(inModuleInstance) , llvmModule(new llvm::Module("",context)) - , diBuilder(*llvmModule) { - diModuleScope = diBuilder.createFile("unknown","unknown"); - diCompileUnit = diBuilder.createCompileUnit(0xffff,diModuleScope,"WAVM",true,"",0); - - diValueTypes[(Uptr)ValueType::any] = nullptr; - diValueTypes[(Uptr)ValueType::i32] = diBuilder.createBasicType("i32",32,llvm::dwarf::DW_ATE_signed); - diValueTypes[(Uptr)ValueType::i64] = diBuilder.createBasicType("i64",64,llvm::dwarf::DW_ATE_signed); - diValueTypes[(Uptr)ValueType::f32] = diBuilder.createBasicType("f32",32,llvm::dwarf::DW_ATE_float); - diValueTypes[(Uptr)ValueType::f64] = diBuilder.createBasicType("f64",64,llvm::dwarf::DW_ATE_float); - #if ENABLE_SIMD_PROTOTYPE - diValueTypes[(Uptr)ValueType::v128] = diBuilder.createBasicType("v128",128,llvm::dwarf::DW_ATE_signed); - #endif - auto zeroAsMetadata = llvm::ConstantAsMetadata::get(emitLiteral(I32(0))); auto i32MaxAsMetadata = llvm::ConstantAsMetadata::get(emitLiteral(I32(INT32_MAX))); likelyFalseBranchWeights = llvm::MDTuple::getDistinct(context,{llvm::MDString::get(context,"branch_weights"),zeroAsMetadata,i32MaxAsMetadata}); @@ -218,57 +200,27 @@ namespace LLVMJIT // Bounds checks and converts a memory operation I32 address operand to a LLVM pointer. llvm::Value* coerceByteIndexToPointer(llvm::Value* byteIndex,U32 offset,llvm::Type* memoryType) { - if(HAS_64BIT_ADDRESS_SPACE) - { - // On a 64 bit runtime, if the address is 32-bits, zext it to 64-bits. - // This is crucial for security, as LLVM will otherwise implicitly sign extend it to 64-bits in the GEP below, - // interpreting it as a signed offset and allowing access to memory outside the sandboxed memory range. - // There are no 'far addresses' in a 32 bit runtime. - if(sizeof(Uptr) != 4) { byteIndex = irBuilder.CreateZExt(byteIndex,llvmI64Type); } - - // Add the offset to the byte index. - if(offset) - { - byteIndex = irBuilder.CreateAdd(byteIndex,irBuilder.CreateZExt(emitLiteral(offset),llvmI64Type)); - } - // If HAS_64BIT_ADDRESS_SPACE, the memory has enough virtual address space allocated to - // ensure that any 32-bit byte index + 32-bit offset will fall within the virtual address sandbox, - // so no explicit bounds check is necessary. - } - else - { - // Add the offset to the byte index using a LLVM intrinsic that returns a carry bit if the add overflowed. - llvm::Value* overflowed = emitLiteral(false); - if(offset) - { - auto offsetByteIndexWithOverflow = irBuilder.CreateCall( - getLLVMIntrinsic({llvmI32Type},llvm::Intrinsic::uadd_with_overflow), - {byteIndex,emitLiteral(U32(offset))} - ); - byteIndex = irBuilder.CreateExtractValue(offsetByteIndexWithOverflow,{0}); - overflowed = irBuilder.CreateExtractValue(offsetByteIndexWithOverflow,{1}); - } + // On a 64 bit runtime, if the address is 32-bits, zext it to 64-bits. + // This is crucial for security, as LLVM will otherwise implicitly sign extend it to 64-bits in the GEP below, + // interpreting it as a signed offset and allowing access to memory outside the sandboxed memory range. + // There are no 'far addresses' in a 32 bit runtime. + byteIndex = irBuilder.CreateZExt(byteIndex,llvmI64Type); - // Check that the offset didn't overflow, and that the final byte index is within the virtual address space - // allocated for the memory. - emitConditionalTrapIntrinsic( - irBuilder.CreateOr( - overflowed, - irBuilder.CreateICmpUGT( - byteIndex, - irBuilder.CreateSub( - moduleContext.defaultMemoryEndOffset, - emitLiteral(Uptr(memoryType->getPrimitiveSizeInBits() / 8) - 1) - ) - ) - ), - "wavmIntrinsics.accessViolationTrap",FunctionType::get(),{}); + // Add the offset to the byte index. + if(offset) + { + byteIndex = irBuilder.CreateAdd(byteIndex,irBuilder.CreateZExt(emitLiteral(offset),llvmI64Type)); } + // If HAS_64BIT_ADDRESS_SPACE, the memory has enough virtual address space allocated to + // ensure that any 32-bit byte index + 32-bit offset will fall within the virtual address sandbox, + // so no explicit bounds check is necessary. + + // Cast the pointer to the appropriate type. - auto bytePointer = irBuilder.CreateInBoundsGEP(moduleContext.defaultMemoryBase,byteIndex); - + auto bytePointer = CreateInBoundsGEPWAR(irBuilder, moduleContext.defaultMemoryBase, byteIndex); + return irBuilder.CreatePointerCast(bytePointer,memoryType->getPointerTo()); } @@ -685,7 +637,7 @@ namespace LLVMJIT "wavmIntrinsics.indirectCallIndexOutOfBounds",FunctionType::get(),{}); // Load the type for this table entry. - auto functionTypePointerPointer = irBuilder.CreateInBoundsGEP(moduleContext.defaultTablePointer,{functionIndexZExt,emitLiteral((U32)0)}); + auto functionTypePointerPointer = CreateInBoundsGEPWAR(irBuilder, moduleContext.defaultTablePointer, functionIndexZExt, emitLiteral((U32)0)); auto functionTypePointer = irBuilder.CreateLoad(functionTypePointerPointer); auto llvmCalleeType = emitLiteralPointer(calleeType,llvmI8PtrType); @@ -700,7 +652,7 @@ namespace LLVMJIT ); // Call the function loaded from the table. - auto functionPointerPointer = irBuilder.CreateInBoundsGEP(moduleContext.defaultTablePointer,{functionIndexZExt,emitLiteral((U32)1)}); + auto functionPointerPointer = CreateInBoundsGEPWAR(irBuilder, moduleContext.defaultTablePointer, functionIndexZExt, emitLiteral((U32)1)); auto functionPointer = irBuilder.CreateLoad(irBuilder.CreatePointerCast(functionPointerPointer,functionPointerType)); auto result = irBuilder.CreateCall(functionPointer,llvm::ArrayRef(llvmArgs,calleeType->parameters.size())); @@ -990,461 +942,6 @@ namespace LLVMJIT EMIT_INT_UNARY_OP(trunc_s_f64,emitRuntimeIntrinsic("wavmIntrinsics.floatToSignedInt",FunctionType::get(asResultType(type),{ValueType::f64}),{operand})) EMIT_INT_UNARY_OP(trunc_u_f32,emitRuntimeIntrinsic("wavmIntrinsics.floatToUnsignedInt",FunctionType::get(asResultType(type),{ValueType::f32}),{operand})) EMIT_INT_UNARY_OP(trunc_u_f64,emitRuntimeIntrinsic("wavmIntrinsics.floatToUnsignedInt",FunctionType::get(asResultType(type),{ValueType::f64}),{operand})) - - #if ENABLE_SIMD_PROTOTYPE - llvm::Value* emitAnyTrue(llvm::Value* boolVector) - { - const Uptr numLanes = boolVector->getType()->getVectorNumElements(); - llvm::Value* result = nullptr; - for(Uptr laneIndex = 0;laneIndex < numLanes;++laneIndex) - { - llvm::Value* scalar = irBuilder.CreateExtractElement(boolVector,laneIndex); - result = result ? irBuilder.CreateOr(result,scalar) : scalar; - } - return result; - } - llvm::Value* emitAllTrue(llvm::Value* boolVector) - { - const Uptr numLanes = boolVector->getType()->getVectorNumElements(); - llvm::Value* result = nullptr; - for(Uptr laneIndex = 0;laneIndex < numLanes;++laneIndex) - { - llvm::Value* scalar = irBuilder.CreateExtractElement(boolVector,laneIndex); - result = result ? irBuilder.CreateAnd(result,scalar) : scalar; - } - return result; - } - - llvm::Value* unimplemented() - { - Errors::unreachable(); - } - - #define EMIT_SIMD_SPLAT(vectorType,coerceScalar,numLanes) \ - void vectorType##_splat(NoImm) \ - { \ - auto scalar = pop(); \ - push(irBuilder.CreateVectorSplat(numLanes,coerceScalar)); \ - } - EMIT_SIMD_SPLAT(i8x16,irBuilder.CreateTrunc(scalar,llvmI8Type),16) - EMIT_SIMD_SPLAT(i16x8,irBuilder.CreateTrunc(scalar,llvmI16Type),8) - EMIT_SIMD_SPLAT(i32x4,scalar,4) - EMIT_SIMD_SPLAT(i64x2,scalar,2) - EMIT_SIMD_SPLAT(f32x4,scalar,4) - EMIT_SIMD_SPLAT(f64x2,scalar,2) - - EMIT_STORE_OP(v128,store,value->getType(),4,identityConversion) - EMIT_LOAD_OP(v128,load,llvmI64x2Type,4,identityConversion) - - #define EMIT_SIMD_BINARY_OP(name,llvmType,emitCode) \ - void name(NoImm) \ - { \ - auto right = irBuilder.CreateBitCast(pop(),llvmType); SUPPRESS_UNUSED(right); \ - auto left = irBuilder.CreateBitCast(pop(),llvmType); SUPPRESS_UNUSED(left); \ - push(emitCode); \ - } - #define EMIT_SIMD_UNARY_OP(name,llvmType,emitCode) \ - void name(NoImm) \ - { \ - auto operand = irBuilder.CreateBitCast(pop(),llvmType); SUPPRESS_UNUSED(operand); \ - push(emitCode); \ - } - #define EMIT_SIMD_INT_BINARY_OP(name,emitCode) \ - EMIT_SIMD_BINARY_OP(i8x16##_##name,llvmI8x16Type,emitCode) \ - EMIT_SIMD_BINARY_OP(i16x8##_##name,llvmI16x8Type,emitCode) \ - EMIT_SIMD_BINARY_OP(i32x4##_##name,llvmI32x4Type,emitCode) \ - EMIT_SIMD_BINARY_OP(i64x2##_##name,llvmI64x2Type,emitCode) - #define EMIT_SIMD_FP_BINARY_OP(name,emitCode) \ - EMIT_SIMD_BINARY_OP(f32x4##_##name,llvmF32x4Type,emitCode) \ - EMIT_SIMD_BINARY_OP(f64x2##_##name,llvmF64x2Type,emitCode) - #define EMIT_SIMD_INT_UNARY_OP(name,emitCode) \ - EMIT_SIMD_UNARY_OP(i8x16##_##name,llvmI8x16Type,emitCode) \ - EMIT_SIMD_UNARY_OP(i16x8##_##name,llvmI16x8Type,emitCode) \ - EMIT_SIMD_UNARY_OP(i32x4##_##name,llvmI32x4Type,emitCode) \ - EMIT_SIMD_UNARY_OP(i64x2##_##name,llvmI64x2Type,emitCode) - #define EMIT_SIMD_FP_UNARY_OP(name,emitCode) \ - EMIT_SIMD_UNARY_OP(f32x4##_##name,llvmF32x4Type,emitCode) \ - EMIT_SIMD_UNARY_OP(f64x2##_##name,llvmF64x2Type,emitCode) - EMIT_SIMD_INT_BINARY_OP(add,irBuilder.CreateAdd(left,right)) - EMIT_SIMD_INT_BINARY_OP(sub,irBuilder.CreateSub(left,right)) - - EMIT_SIMD_INT_BINARY_OP(shl,irBuilder.CreateShl(left,right)) - EMIT_SIMD_INT_BINARY_OP(shr_s,irBuilder.CreateAShr(left,right)) - EMIT_SIMD_INT_BINARY_OP(shr_u,irBuilder.CreateLShr(left,right)) - EMIT_SIMD_INT_BINARY_OP(mul,irBuilder.CreateMul(left,right)) - EMIT_SIMD_INT_BINARY_OP(div_s,irBuilder.CreateSDiv(left,right)) - EMIT_SIMD_INT_BINARY_OP(div_u,irBuilder.CreateUDiv(left,right)) - - EMIT_SIMD_INT_BINARY_OP(eq,irBuilder.CreateICmpEQ(left,right)) - EMIT_SIMD_INT_BINARY_OP(ne,irBuilder.CreateICmpNE(left,right)) - EMIT_SIMD_INT_BINARY_OP(lt_s,irBuilder.CreateICmpSLT(left,right)) - EMIT_SIMD_INT_BINARY_OP(lt_u,irBuilder.CreateICmpULT(left,right)) - EMIT_SIMD_INT_BINARY_OP(le_s,irBuilder.CreateICmpSLE(left,right)) - EMIT_SIMD_INT_BINARY_OP(le_u,irBuilder.CreateICmpULE(left,right)) - EMIT_SIMD_INT_BINARY_OP(gt_s,irBuilder.CreateICmpSGT(left,right)) - EMIT_SIMD_INT_BINARY_OP(gt_u,irBuilder.CreateICmpUGT(left,right)) - EMIT_SIMD_INT_BINARY_OP(ge_s,irBuilder.CreateICmpSGE(left,right)) - EMIT_SIMD_INT_BINARY_OP(ge_u,irBuilder.CreateICmpUGE(left,right)) - - EMIT_SIMD_INT_UNARY_OP(neg,irBuilder.CreateNeg(operand)) - - EMIT_SIMD_BINARY_OP(i8x16_add_saturate_s,llvmI8x16Type,unimplemented()) - EMIT_SIMD_BINARY_OP(i8x16_add_saturate_u,llvmI16x8Type,unimplemented()) - EMIT_SIMD_BINARY_OP(i8x16_sub_saturate_s,llvmI8x16Type,unimplemented()) - EMIT_SIMD_BINARY_OP(i8x16_sub_saturate_u,llvmI16x8Type,unimplemented()) - EMIT_SIMD_BINARY_OP(i16x8_add_saturate_s,llvmI8x16Type,unimplemented()) - EMIT_SIMD_BINARY_OP(i16x8_add_saturate_u,llvmI16x8Type,unimplemented()) - EMIT_SIMD_BINARY_OP(i16x8_sub_saturate_s,llvmI8x16Type,unimplemented()) - EMIT_SIMD_BINARY_OP(i16x8_sub_saturate_u,llvmI16x8Type,unimplemented()) - - EMIT_SIMD_UNARY_OP(i32x4_trunc_s_f32x4_sat,llvmF32x4Type,unimplemented()); - EMIT_SIMD_UNARY_OP(i32x4_trunc_u_f32x4_sat,llvmF32x4Type,unimplemented()); - EMIT_SIMD_UNARY_OP(i64x2_trunc_s_f64x2_sat,llvmF64x2Type,unimplemented()); - EMIT_SIMD_UNARY_OP(i64x2_trunc_u_f64x2_sat,llvmF64x2Type,unimplemented()); - - EMIT_SIMD_FP_BINARY_OP(add,irBuilder.CreateFAdd(left,right)) - EMIT_SIMD_FP_BINARY_OP(sub,irBuilder.CreateFSub(left,right)) - EMIT_SIMD_FP_BINARY_OP(mul,irBuilder.CreateFMul(left,right)) - EMIT_SIMD_FP_BINARY_OP(div,irBuilder.CreateFDiv(left,right)) - - EMIT_SIMD_FP_BINARY_OP(eq,irBuilder.CreateFCmpOEQ(left,right)) - EMIT_SIMD_FP_BINARY_OP(ne,irBuilder.CreateFCmpUNE(left,right)) - EMIT_SIMD_FP_BINARY_OP(lt,irBuilder.CreateFCmpOLT(left,right)) - EMIT_SIMD_FP_BINARY_OP(le,irBuilder.CreateFCmpOLE(left,right)) - EMIT_SIMD_FP_BINARY_OP(gt,irBuilder.CreateFCmpOGT(left,right)) - EMIT_SIMD_FP_BINARY_OP(ge,irBuilder.CreateFCmpOGE(left,right)) - EMIT_SIMD_FP_BINARY_OP(min,unimplemented()); - EMIT_SIMD_FP_BINARY_OP(max,unimplemented()); - - EMIT_SIMD_FP_UNARY_OP(neg,irBuilder.CreateFNeg(operand)) - EMIT_SIMD_FP_UNARY_OP(abs,irBuilder.CreateCall(getLLVMIntrinsic({operand->getType()},llvm::Intrinsic::fabs),llvm::ArrayRef({operand}))) - EMIT_SIMD_FP_UNARY_OP(sqrt,irBuilder.CreateCall(getLLVMIntrinsic({operand->getType()},llvm::Intrinsic::sqrt),llvm::ArrayRef({operand}))) - - EMIT_SIMD_UNARY_OP(f32x4_convert_s_i32x4,llvmI32x4Type,irBuilder.CreateSIToFP(operand,llvmF32x4Type)); - EMIT_SIMD_UNARY_OP(f32x4_convert_u_i32x4,llvmI32x4Type,irBuilder.CreateUIToFP(operand,llvmF32x4Type)); - EMIT_SIMD_UNARY_OP(f64x2_convert_s_i64x2,llvmI64x2Type,irBuilder.CreateSIToFP(operand,llvmF64x2Type)); - EMIT_SIMD_UNARY_OP(f64x2_convert_u_i64x2,llvmI64x2Type,irBuilder.CreateUIToFP(operand,llvmF64x2Type)); - - EMIT_SIMD_UNARY_OP(i8x16_any_true,llvmI8x16Type,emitAnyTrue(operand)) - EMIT_SIMD_UNARY_OP(i16x8_any_true,llvmI16x8Type,emitAnyTrue(operand)) - EMIT_SIMD_UNARY_OP(i32x4_any_true,llvmI32x4Type,emitAnyTrue(operand)) - EMIT_SIMD_UNARY_OP(i64x2_any_true,llvmI64x2Type,emitAnyTrue(operand)) - - EMIT_SIMD_UNARY_OP(i8x16_all_true,llvmI8x16Type,emitAllTrue(operand)) - EMIT_SIMD_UNARY_OP(i16x8_all_true,llvmI16x8Type,emitAllTrue(operand)) - EMIT_SIMD_UNARY_OP(i32x4_all_true,llvmI32x4Type,emitAllTrue(operand)) - EMIT_SIMD_UNARY_OP(i64x2_all_true,llvmI64x2Type,emitAllTrue(operand)) - - void v128_and(NoImm) - { - auto right = pop(); - auto left = irBuilder.CreateBitCast(pop(),right->getType()); - push(irBuilder.CreateAnd(left,right)); - } - void v128_or(NoImm) - { - auto right = pop(); - auto left = irBuilder.CreateBitCast(pop(),right->getType()); - push(irBuilder.CreateOr(left,right)); - } - void v128_xor(NoImm) - { - auto right = pop(); - auto left = irBuilder.CreateBitCast(pop(),right->getType()); - push(irBuilder.CreateXor(left,right)); - } - void v128_not(NoImm) - { - auto operand = pop(); - push(irBuilder.CreateNot(operand)); - } - - #define EMIT_SIMD_EXTRACT_LANE_OP(name,llvmType,numLanes,coerceScalar) \ - void name(LaneIndexImm imm) \ - { \ - auto operand = irBuilder.CreateBitCast(pop(),llvmType); \ - auto scalar = irBuilder.CreateExtractElement(operand,imm.laneIndex); \ - push(coerceScalar); \ - } - EMIT_SIMD_EXTRACT_LANE_OP(i8x16_extract_lane_s,llvmI8x16Type,16,irBuilder.CreateSExt(scalar,llvmI32Type)) - EMIT_SIMD_EXTRACT_LANE_OP(i8x16_extract_lane_u,llvmI8x16Type,16,irBuilder.CreateZExt(scalar,llvmI32Type)) - EMIT_SIMD_EXTRACT_LANE_OP(i16x8_extract_lane_s,llvmI16x8Type,8,irBuilder.CreateSExt(scalar,llvmI32Type)) - EMIT_SIMD_EXTRACT_LANE_OP(i16x8_extract_lane_u,llvmI16x8Type,8,irBuilder.CreateZExt(scalar,llvmI32Type)) - EMIT_SIMD_EXTRACT_LANE_OP(i32x4_extract_lane,llvmI32x4Type,4,scalar) - EMIT_SIMD_EXTRACT_LANE_OP(i64x2_extract_lane,llvmI64x2Type,2,scalar) - - EMIT_SIMD_EXTRACT_LANE_OP(f32x4_extract_lane,llvmF32x4Type,4,scalar) - EMIT_SIMD_EXTRACT_LANE_OP(f64x2_extract_lane,llvmF64x2Type,2,scalar) - - #define EMIT_SIMD_REPLACE_LANE_OP(typePrefix,llvmType,numLanes,coerceScalar) \ - void typePrefix##_replace_lane(LaneIndexImm imm) \ - { \ - auto vector = irBuilder.CreateBitCast(pop(),llvmType); \ - auto scalar = pop(); \ - push(irBuilder.CreateInsertElement(vector,coerceScalar,imm.laneIndex)); \ - } - - EMIT_SIMD_REPLACE_LANE_OP(i8x16,llvmI8x16Type,16,irBuilder.CreateTrunc(scalar,llvmI8Type)) - EMIT_SIMD_REPLACE_LANE_OP(i16x8,llvmI16x8Type,8,irBuilder.CreateTrunc(scalar,llvmI16Type)) - EMIT_SIMD_REPLACE_LANE_OP(i32x4,llvmI32x4Type,4,scalar) - EMIT_SIMD_REPLACE_LANE_OP(i64x2,llvmI64x2Type,2,scalar) - - EMIT_SIMD_REPLACE_LANE_OP(f32x4,llvmF32x4Type,4,scalar) - EMIT_SIMD_REPLACE_LANE_OP(f64x2,llvmF64x2Type,2,scalar) - - void v8x16_shuffle(ShuffleImm<16> imm) - { - auto right = irBuilder.CreateBitCast(pop(),llvmI8x16Type); - auto left = irBuilder.CreateBitCast(pop(),llvmI8x16Type); - unsigned int laneIndices[16]; - for(Uptr laneIndex = 0;laneIndex < 16;++laneIndex) - { - laneIndices[laneIndex] = imm.laneIndices[laneIndex]; - } - push(irBuilder.CreateShuffleVector(left,right,llvm::ArrayRef(laneIndices,16))); - } - - void v128_const(LiteralImm imm) - { - push(llvm::ConstantVector::get({emitLiteral(imm.value.u64[0]),emitLiteral(imm.value.u64[1])})); - } - - void v128_bitselect(NoImm) - { - auto mask = irBuilder.CreateBitCast(pop(),llvmI64x2Type); - auto falseValue = irBuilder.CreateBitCast(pop(),llvmI64x2Type); - auto trueValue = irBuilder.CreateBitCast(pop(),llvmI64x2Type); - push(irBuilder.CreateOr( - irBuilder.CreateAnd(trueValue,mask), - irBuilder.CreateAnd(falseValue,irBuilder.CreateNot(mask)) - )); - } - #endif - - #if ENABLE_THREADING_PROTOTYPE - void is_lock_free(NoImm) - { - auto numBytes = pop(); - push(emitRuntimeIntrinsic( - "wavmIntrinsics.isLockFree", - FunctionType::get(ResultType::i32,{ValueType::i32}), - {numBytes})); - } - void wake(AtomicLoadOrStoreImm<2>) - { - auto numWaiters = pop(); - auto address = pop(); - auto defaultMemoryObjectAsI64 = emitLiteral(reinterpret_cast(moduleContext.moduleInstance->defaultMemory)); - push(emitRuntimeIntrinsic( - "wavmIntrinsics.wake", - FunctionType::get(ResultType::i32,{ValueType::i32,ValueType::i32,ValueType::i64}), - {address,numWaiters,defaultMemoryObjectAsI64})); - } - void i32_wait(AtomicLoadOrStoreImm<2>) - { - auto timeout = pop(); - auto expectedValue = pop(); - auto address = pop(); - auto defaultMemoryObjectAsI64 = emitLiteral(reinterpret_cast(moduleContext.moduleInstance->defaultMemory)); - push(emitRuntimeIntrinsic( - "wavmIntrinsics.wait", - FunctionType::get(ResultType::i32,{ValueType::i32,ValueType::i32,ValueType::f64,ValueType::i64}), - {address,expectedValue,timeout,defaultMemoryObjectAsI64})); - } - void i64_wait(AtomicLoadOrStoreImm<3>) - { - auto timeout = pop(); - auto expectedValue = pop(); - auto address = pop(); - auto defaultMemoryObjectAsI64 = emitLiteral(reinterpret_cast(moduleContext.moduleInstance->defaultMemory)); - push(emitRuntimeIntrinsic( - "wavmIntrinsics.wait", - FunctionType::get(ResultType::i32,{ValueType::i32,ValueType::i64,ValueType::f64,ValueType::i64}), - {address,expectedValue,timeout,defaultMemoryObjectAsI64})); - } - - void launch_thread(LaunchThreadImm) - { - WAVM_ASSERT_THROW(moduleContext.moduleInstance->defaultTable); - auto errorFunctionIndex = pop(); - auto argument = pop(); - auto functionIndex = pop(); - auto defaultTableAsI64 = emitLiteral(reinterpret_cast(moduleContext.moduleInstance->defaultTable)); - emitRuntimeIntrinsic( - "wavmIntrinsics.launchThread", - FunctionType::get(ResultType::none,{ValueType::i32,ValueType::i32,ValueType::i32,ValueType::i64}), - {functionIndex,argument,errorFunctionIndex,defaultTableAsI64}); - } - - void trapIfMisalignedAtomic(llvm::Value* address,U32 naturalAlignmentLog2) - { - if(naturalAlignmentLog2 > 0) - { - emitConditionalTrapIntrinsic( - irBuilder.CreateICmpNE( - typedZeroConstants[(Uptr)ValueType::i32], - irBuilder.CreateAnd(address,emitLiteral((U32(1) << naturalAlignmentLog2) - 1))), - "wavmIntrinsics.misalignedAtomicTrap", - FunctionType::get(ResultType::none,{ValueType::i32}), - {address}); - } - } - - EMIT_UNARY_OP(i32,extend_s_i8,irBuilder.CreateSExt(irBuilder.CreateTrunc(operand,llvmI8Type),llvmI32Type)) - EMIT_UNARY_OP(i32,extend_s_i16,irBuilder.CreateSExt(irBuilder.CreateTrunc(operand,llvmI16Type),llvmI32Type)) - EMIT_UNARY_OP(i64,extend_s_i8,irBuilder.CreateSExt(irBuilder.CreateTrunc(operand,llvmI8Type),llvmI64Type)) - EMIT_UNARY_OP(i64,extend_s_i16,irBuilder.CreateSExt(irBuilder.CreateTrunc(operand,llvmI16Type),llvmI64Type)) - - #define EMIT_ATOMIC_LOAD_OP(valueTypeId,name,llvmMemoryType,naturalAlignmentLog2,conversionOp) \ - void valueTypeId##_##name(AtomicLoadOrStoreImm imm) \ - { \ - auto byteIndex = pop(); \ - trapIfMisalignedAtomic(byteIndex,naturalAlignmentLog2); \ - auto pointer = coerceByteIndexToPointer(byteIndex,imm.offset,llvmMemoryType); \ - auto load = irBuilder.CreateLoad(pointer); \ - load->setAlignment(1<setVolatile(true); \ - load->setAtomic(llvm::AtomicOrdering::SequentiallyConsistent); \ - push(conversionOp(load,asLLVMType(ValueType::valueTypeId))); \ - } - #define EMIT_ATOMIC_STORE_OP(valueTypeId,name,llvmMemoryType,naturalAlignmentLog2,conversionOp) \ - void valueTypeId##_##name(AtomicLoadOrStoreImm imm) \ - { \ - auto value = pop(); \ - auto byteIndex = pop(); \ - trapIfMisalignedAtomic(byteIndex,naturalAlignmentLog2); \ - auto pointer = coerceByteIndexToPointer(byteIndex,imm.offset,llvmMemoryType); \ - auto memoryValue = conversionOp(value,llvmMemoryType); \ - auto store = irBuilder.CreateStore(memoryValue,pointer); \ - store->setVolatile(true); \ - store->setAlignment(1<setAtomic(llvm::AtomicOrdering::SequentiallyConsistent); \ - } - EMIT_ATOMIC_LOAD_OP(i32,atomic_load,llvmI32Type,2,identityConversion) - EMIT_ATOMIC_LOAD_OP(i64,atomic_load,llvmI64Type,3,identityConversion) - EMIT_ATOMIC_LOAD_OP(f32,atomic_load,llvmF32Type,2,identityConversion) - EMIT_ATOMIC_LOAD_OP(f64,atomic_load,llvmF64Type,3,identityConversion) - - EMIT_ATOMIC_LOAD_OP(i32,atomic_load8_s,llvmI8Type,0,irBuilder.CreateSExt) - EMIT_ATOMIC_LOAD_OP(i32,atomic_load8_u,llvmI8Type,0,irBuilder.CreateZExt) - EMIT_ATOMIC_LOAD_OP(i32,atomic_load16_s,llvmI16Type,1,irBuilder.CreateSExt) - EMIT_ATOMIC_LOAD_OP(i32,atomic_load16_u,llvmI16Type,1,irBuilder.CreateZExt) - EMIT_ATOMIC_LOAD_OP(i64,atomic_load8_s,llvmI8Type,0,irBuilder.CreateSExt) - EMIT_ATOMIC_LOAD_OP(i64,atomic_load8_u,llvmI8Type,0,irBuilder.CreateZExt) - EMIT_ATOMIC_LOAD_OP(i64,atomic_load16_s,llvmI16Type,1,irBuilder.CreateSExt) - EMIT_ATOMIC_LOAD_OP(i64,atomic_load16_u,llvmI16Type,1,irBuilder.CreateZExt) - EMIT_ATOMIC_LOAD_OP(i64,atomic_load32_s,llvmI32Type,2,irBuilder.CreateSExt) - EMIT_ATOMIC_LOAD_OP(i64,atomic_load32_u,llvmI32Type,2,irBuilder.CreateZExt) - - EMIT_ATOMIC_STORE_OP(i32,atomic_store,llvmI32Type,2,identityConversion) - EMIT_ATOMIC_STORE_OP(i64,atomic_store,llvmI64Type,3,identityConversion) - EMIT_ATOMIC_STORE_OP(f32,atomic_store,llvmF32Type,2,identityConversion) - EMIT_ATOMIC_STORE_OP(f64,atomic_store,llvmF64Type,3,identityConversion) - - EMIT_ATOMIC_STORE_OP(i32,atomic_store8,llvmI8Type,0,irBuilder.CreateTrunc) - EMIT_ATOMIC_STORE_OP(i32,atomic_store16,llvmI16Type,1,irBuilder.CreateTrunc) - EMIT_ATOMIC_STORE_OP(i64,atomic_store8,llvmI8Type,0,irBuilder.CreateTrunc) - EMIT_ATOMIC_STORE_OP(i64,atomic_store16,llvmI16Type,1,irBuilder.CreateTrunc) - EMIT_ATOMIC_STORE_OP(i64,atomic_store32,llvmI32Type,2,irBuilder.CreateTrunc) - - #define EMIT_ATOMIC_CMPXCHG(valueTypeId,name,llvmMemoryType,naturalAlignmentLog2,memoryToValueConversion,valueToMemoryConversion) \ - void valueTypeId##_##name(AtomicLoadOrStoreImm imm) \ - { \ - auto replacementValue = valueToMemoryConversion(pop(),llvmMemoryType); \ - auto expectedValue = valueToMemoryConversion(pop(),llvmMemoryType); \ - auto byteIndex = pop(); \ - trapIfMisalignedAtomic(byteIndex,naturalAlignmentLog2); \ - auto pointer = coerceByteIndexToPointer(byteIndex,imm.offset,llvmMemoryType); \ - auto atomicCmpXchg = irBuilder.CreateAtomicCmpXchg( \ - pointer, \ - expectedValue, \ - replacementValue, \ - llvm::AtomicOrdering::SequentiallyConsistent, \ - llvm::AtomicOrdering::SequentiallyConsistent); \ - atomicCmpXchg->setVolatile(true); \ - auto previousValue = irBuilder.CreateExtractValue(atomicCmpXchg,{0}); \ - push(memoryToValueConversion(previousValue,asLLVMType(ValueType::valueTypeId))); \ - } - - EMIT_ATOMIC_CMPXCHG(i32,atomic_rmw8_u_cmpxchg,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_CMPXCHG(i32,atomic_rmw16_u_cmpxchg,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_CMPXCHG(i32,atomic_rmw_cmpxchg,llvmI32Type,2,identityConversion,identityConversion) - - EMIT_ATOMIC_CMPXCHG(i64,atomic_rmw8_u_cmpxchg,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_CMPXCHG(i64,atomic_rmw16_u_cmpxchg,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_CMPXCHG(i64,atomic_rmw32_u_cmpxchg,llvmI32Type,2,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_CMPXCHG(i64,atomic_rmw_cmpxchg,llvmI64Type,3,identityConversion,identityConversion) - - #define EMIT_ATOMIC_RMW(valueTypeId,name,rmwOpId,llvmMemoryType,naturalAlignmentLog2,memoryToValueConversion,valueToMemoryConversion) \ - void valueTypeId##_##name(AtomicLoadOrStoreImm imm) \ - { \ - auto value = valueToMemoryConversion(pop(),llvmMemoryType); \ - auto byteIndex = pop(); \ - trapIfMisalignedAtomic(byteIndex,naturalAlignmentLog2); \ - auto pointer = coerceByteIndexToPointer(byteIndex,imm.offset,llvmMemoryType); \ - auto atomicRMW = irBuilder.CreateAtomicRMW( \ - llvm::AtomicRMWInst::BinOp::rmwOpId, \ - pointer, \ - value, \ - llvm::AtomicOrdering::SequentiallyConsistent); \ - atomicRMW->setVolatile(true); \ - push(memoryToValueConversion(atomicRMW,asLLVMType(ValueType::valueTypeId))); \ - } - - EMIT_ATOMIC_RMW(i32,atomic_rmw8_u_xchg,Xchg,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw16_u_xchg,Xchg,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw_xchg,Xchg,llvmI32Type,2,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i64,atomic_rmw8_u_xchg,Xchg,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw16_u_xchg,Xchg,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw32_u_xchg,Xchg,llvmI32Type,2,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw_xchg,Xchg,llvmI64Type,3,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i32,atomic_rmw8_u_add,Add,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw16_u_add,Add,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw_add,Add,llvmI32Type,2,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i64,atomic_rmw8_u_add,Add,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw16_u_add,Add,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw32_u_add,Add,llvmI32Type,2,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw_add,Add,llvmI64Type,3,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i32,atomic_rmw8_u_sub,Sub,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw16_u_sub,Sub,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw_sub,Sub,llvmI32Type,2,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i64,atomic_rmw8_u_sub,Sub,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw16_u_sub,Sub,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw32_u_sub,Sub,llvmI32Type,2,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw_sub,Sub,llvmI64Type,3,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i32,atomic_rmw8_u_and,And,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw16_u_and,And,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw_and,And,llvmI32Type,2,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i64,atomic_rmw8_u_and,And,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw16_u_and,And,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw32_u_and,And,llvmI32Type,2,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw_and,And,llvmI64Type,3,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i32,atomic_rmw8_u_or,Or,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw16_u_or,Or,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw_or,Or,llvmI32Type,2,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i64,atomic_rmw8_u_or,Or,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw16_u_or,Or,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw32_u_or,Or,llvmI32Type,2,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw_or,Or,llvmI64Type,3,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i32,atomic_rmw8_u_xor,Xor,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw16_u_xor,Xor,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i32,atomic_rmw_xor,Xor,llvmI32Type,2,identityConversion,identityConversion) - - EMIT_ATOMIC_RMW(i64,atomic_rmw8_u_xor,Xor,llvmI8Type,0,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw16_u_xor,Xor,llvmI16Type,1,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw32_u_xor,Xor,llvmI32Type,2,irBuilder.CreateZExt,irBuilder.CreateTrunc) - EMIT_ATOMIC_RMW(i64,atomic_rmw_xor,Xor,llvmI64Type,3,identityConversion,identityConversion) - #endif }; // A do-nothing visitor used to decode past unreachable operators (but supporting logging, and passing the end operator through). @@ -1481,22 +978,6 @@ namespace LLVMJIT void EmitFunctionContext::emit() { - // Create debug info for the function. - llvm::SmallVector diFunctionParameterTypes; - for(auto parameterType : functionType->parameters) { diFunctionParameterTypes.push_back(moduleContext.diValueTypes[(Uptr)parameterType]); } - auto diFunctionType = moduleContext.diBuilder.createSubroutineType(moduleContext.diBuilder.getOrCreateTypeArray(diFunctionParameterTypes)); - diFunction = moduleContext.diBuilder.createFunction( - moduleContext.diModuleScope, - functionInstance->debugName, - llvmFunction->getName(), - moduleContext.diModuleScope, - 0, - diFunctionType, - false, - true, - 0); - llvmFunction->setSubprogram(diFunction); - // Create the return basic block, and push the root control context for the function. auto returnBlock = llvm::BasicBlock::Create(context,"return",llvmFunction); auto returnPHI = createPHI(returnBlock,functionType->ret); @@ -1544,10 +1025,8 @@ namespace LLVMJIT OperatorDecoderStream decoder(functionDef.code); UnreachableOpVisitor unreachableOpVisitor(*this); OperatorPrinter operatorPrinter(module,functionDef); - Uptr opIndex = 0; while(decoder && controlStack.size()) { - irBuilder.SetCurrentDebugLocation(llvm::DILocation::get(context,(unsigned int)opIndex++,0,diFunction)); if(ENABLE_LOGGING) { logOperator(decoder.decodeOpWithoutConsume(operatorPrinter)); @@ -1624,9 +1103,6 @@ namespace LLVMJIT // Compile each function in the module. for(Uptr functionDefIndex = 0;functionDefIndex < module.functions.defs.size();++functionDefIndex) { EmitFunctionContext(*this,module,module.functions.defs[functionDefIndex],moduleInstance->functionDefs[functionDefIndex],functionDefs[functionDefIndex]).emit(); } - - // Finalize the debug info. - diBuilder.finalize(); Timing::logRatePerSecond("Emitted LLVM IR",emitTimer,(F64)llvmModule->size(),"functions"); diff --git a/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp b/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp index ba5354c5d22..6e7c7ef7124 100644 --- a/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp +++ b/libraries/wasm-jit/Source/Runtime/LLVMJIT.cpp @@ -5,6 +5,14 @@ #include "RuntimePrivate.h" #include "IR/Validate.h" +#if LLVM_VERSION_MAJOR == 7 +namespace llvm { namespace orc { + using LegacyRTDyldObjectLinkingLayer = RTDyldObjectLinkingLayer; + template + using LegacyIRCompileLayer = IRCompileLayer; +}} +#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 @@ -21,9 +29,34 @@ #define PRINT_DISASSEMBLY 0 #endif -#if PRINT_DISASSEMBLY #include "llvm-c/Disassembler.h" -#endif +void disassembleFunction(U8* bytes,Uptr numBytes) +{ + LLVMDisasmContextRef disasmRef = LLVMCreateDisasm(llvm::sys::getProcessTriple().c_str(),nullptr,0,nullptr,nullptr); + + U8* nextByte = bytes; + Uptr numBytesRemaining = numBytes; + while(numBytesRemaining) + { + char instructionBuffer[256]; + const Uptr numInstructionBytes = LLVMDisasmInstruction( + disasmRef, + nextByte, + numBytesRemaining, + reinterpret_cast(nextByte), + instructionBuffer, + sizeof(instructionBuffer) + ); + if(numInstructionBytes == 0 || numInstructionBytes > numBytesRemaining) + break; + numBytesRemaining -= numInstructionBytes; + nextByte += numInstructionBytes; + + printf("\t\t%s\n",instructionBuffer); + }; + + LLVMDisasmDispose(disasmRef); +} namespace LLVMJIT { @@ -40,15 +73,6 @@ namespace LLVMJIT llvm::Type* llvmVoidType; llvm::Type* llvmBoolType; llvm::Type* llvmI8PtrType; - - #if ENABLE_SIMD_PROTOTYPE - llvm::Type* llvmI8x16Type; - llvm::Type* llvmI16x8Type; - llvm::Type* llvmI32x4Type; - llvm::Type* llvmI64x2Type; - llvm::Type* llvmF32x4Type; - llvm::Type* llvmF64x2Type; - #endif llvm::Constant* typedZeroConstants[(Uptr)ValueType::num]; @@ -94,40 +118,23 @@ namespace LLVMJIT , codeSection({0}) , readOnlySection({0}) , readWriteSection({0}) - , hasRegisteredEHFrames(false) {} virtual ~UnitMemoryManager() override { - // Deregister the exception handling frame info. - if(hasRegisteredEHFrames) - { - hasRegisteredEHFrames = false; - llvm::RTDyldMemoryManager::deregisterEHFrames(ehFramesAddr,ehFramesLoadAddr,ehFramesNumBytes); - } - // Decommit the image pages, but leave them reserved to catch any references to them that might erroneously remain. if(numAllocatedImagePages) Platform::decommitVirtualPages(imageBaseAddress,numAllocatedImagePages); } - void registerEHFrames(U8* addr, U64 loadAddr,uintptr_t numBytes) override - { - llvm::RTDyldMemoryManager::registerEHFrames(addr,loadAddr,numBytes); - hasRegisteredEHFrames = true; - ehFramesAddr = addr; - ehFramesLoadAddr = loadAddr; - ehFramesNumBytes = numBytes; - } - void deregisterEHFrames(U8* addr, U64 loadAddr,uintptr_t numBytes) override - { - llvm::RTDyldMemoryManager::deregisterEHFrames(addr,loadAddr,numBytes); - } - virtual bool needsToReserveAllocationSpace() override { return true; } virtual void reserveAllocationSpace(uintptr_t numCodeBytes,U32 codeAlignment,uintptr_t numReadOnlyBytes,U32 readOnlyAlignment,uintptr_t numReadWriteBytes,U32 readWriteAlignment) override { + //in llvm7+ it's signaling unwinding frames as being R/W on macos. This appears to be due to Mach-O not supporting read-only data sections? + //Let's only clutch in this safety guard for Linux +#ifndef __APPLE__ if(numReadWriteBytes) Runtime::causeException(Exception::Cause::outOfMemory); +#endif // Calculate the number of pages to be used by each section. codeSection.numPages = shrAndRoundUp(numCodeBytes,Platform::getPageSizeLog2()); readOnlySection.numPages = shrAndRoundUp(numReadOnlyBytes,Platform::getPageSizeLog2()); @@ -162,11 +169,6 @@ namespace LLVMJIT if(readWriteSection.numPages && !Platform::setVirtualPageAccess(readWriteSection.baseAddress,readWriteSection.numPages,Platform::MemoryAccess::ReadWrite)) { return false; } return true; } - virtual void invalidateInstructionCache() - { - // Invalidate the instruction cache for the whole image. - llvm::sys::Memory::InvalidateInstructionCache(imageBaseAddress,numAllocatedImagePages << Platform::getPageSizeLog2()); - } U8* getImageBaseAddress() const { return imageBaseAddress; } @@ -186,11 +188,6 @@ namespace LLVMJIT Section readOnlySection; Section readWriteSection; - bool hasRegisteredEHFrames; - U8* ehFramesAddr; - U64 ehFramesLoadAddr; - Uptr ehFramesNumBytes; - U8* allocateBytes(Uptr numBytes,Uptr alignment,Section& section) { WAVM_ASSERT_THROW(section.baseAddress); @@ -221,69 +218,48 @@ namespace LLVMJIT { JITUnit(bool inShouldLogMetrics = true) : shouldLogMetrics(inShouldLogMetrics) - #ifdef _WIN32 - , pdataCopy(nullptr) - #endif { - objectLayer = llvm::make_unique(NotifyLoadedFunctor(this),NotifyFinalizedFunctor(this)); + objectLayer = llvm::make_unique(ES,[](llvm::orc::VModuleKey K) { + return llvm::orc::LegacyRTDyldObjectLinkingLayer::Resources{ + std::make_shared(), std::make_shared() + }; + }, + [](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj, const llvm::RuntimeDyld::LoadedObjectInfo &o) { + //nothing to do + }, + [this](llvm::orc::VModuleKey, const llvm::object::ObjectFile &Obj, const llvm::RuntimeDyld::LoadedObjectInfo &o) { + for(auto symbolSizePair : llvm::object::computeSymbolSizes(Obj)) { + auto symbol = symbolSizePair.first; + auto name = symbol.getName(); + auto address = symbol.getAddress(); + if(symbol.getType() && symbol.getType().get() == llvm::object::SymbolRef::ST_Function && name && address) { + Uptr loadedAddress = Uptr(*address); + auto symbolSection = symbol.getSection(); + if(symbolSection) + loadedAddress += (Uptr)o.getSectionLoadAddress(*symbolSection.get()); + //printf(">>> %s 0x%lX\n", symbolSizePair.first.getName()->data(), loadedAddress); + std::map offsetToOpIndexMap; + notifySymbolLoaded(name->data(), loadedAddress, 0, std::move(offsetToOpIndexMap)); + //disassembleFunction((U8*)loadedAddress, symbolSizePair.second); + } + } + } + ); objectLayer->setProcessAllSections(true); compileLayer = llvm::make_unique(*objectLayer,llvm::orc::SimpleCompiler(*targetMachine)); } - ~JITUnit() - { - if(handleIsValid) - compileLayer->removeModuleSet(handle); - #ifdef _WIN64 - if(pdataCopy) { Platform::deregisterSEHUnwindInfo(reinterpret_cast(pdataCopy)); } - #endif - } void compile(llvm::Module* llvmModule); virtual void notifySymbolLoaded(const char* name,Uptr baseAddress,Uptr numBytes,std::map&& offsetToOpIndexMap) = 0; private: - - // Functor that receives notifications when an object produced by the JIT is loaded. - struct NotifyLoadedFunctor - { - JITUnit* jitUnit; - NotifyLoadedFunctor(JITUnit* inJITUnit): jitUnit(inJITUnit) {} - void operator()( - const llvm::orc::ObjectLinkingLayerBase::ObjSetHandleT& objectSetHandle, - const std::vector>>& objectSet, - const std::vector>& loadedObjects - ); - }; - - // Functor that receives notifications when an object produced by the JIT is finalized. - struct NotifyFinalizedFunctor - { - JITUnit* jitUnit; - NotifyFinalizedFunctor(JITUnit* inJITUnit): jitUnit(inJITUnit) {} - void operator()(const llvm::orc::ObjectLinkingLayerBase::ObjSetHandleT& objectSetHandle); - }; - typedef llvm::orc::ObjectLinkingLayer ObjectLayer; - typedef llvm::orc::IRCompileLayer CompileLayer; + typedef llvm::orc::LegacyIRCompileLayer CompileLayer; - UnitMemoryManager memoryManager; - std::unique_ptr objectLayer; + llvm::orc::ExecutionSession ES; + std::unique_ptr objectLayer; std::unique_ptr compileLayer; - CompileLayer::ModuleSetHandleT handle; - bool handleIsValid = false; bool shouldLogMetrics; - - struct LoadedObject - { - llvm::object::ObjectFile* object; - llvm::RuntimeDyld::LoadedObjectInfo* loadedObject; - }; - - std::vector loadedObjects; - - #ifdef _WIN32 - U8* pdataCopy; - #endif }; // The JIT compilation unit for a WebAssembly module instance. @@ -296,13 +272,6 @@ namespace LLVMJIT JITModule(ModuleInstance* inModuleInstance): moduleInstance(inModuleInstance) {} ~JITModule() override { - // Delete the module's symbols, and remove them from the global address-to-symbol map. - Platform::Lock addressToSymbolMapLock(addressToSymbolMapMutex); - for(auto symbol : functionDefSymbols) - { - addressToSymbolMap.erase(addressToSymbolMap.find(symbol->baseAddress + symbol->numBytes)); - delete symbol; - } } void notifySymbolLoaded(const char* name,Uptr baseAddress,Uptr numBytes,std::map&& offsetToOpIndexMap) override @@ -314,14 +283,7 @@ namespace LLVMJIT WAVM_ASSERT_THROW(moduleInstance); WAVM_ASSERT_THROW(functionDefIndex < moduleInstance->functionDefs.size()); FunctionInstance* functionInstance = moduleInstance->functionDefs[functionDefIndex]; - auto symbol = new JITSymbol(functionInstance,baseAddress,numBytes,std::move(offsetToOpIndexMap)); - functionDefSymbols.push_back(symbol); functionInstance->nativeFunction = reinterpret_cast(baseAddress); - - { - Platform::Lock addressToSymbolMapLock(addressToSymbolMapMutex); - addressToSymbolMap[baseAddress + numBytes] = symbol; - } } } }; @@ -337,212 +299,15 @@ namespace LLVMJIT void notifySymbolLoaded(const char* name,Uptr baseAddress,Uptr numBytes,std::map&& offsetToOpIndexMap) override { - #if defined(_WIN32) && !defined(_WIN64) - WAVM_ASSERT_THROW(!strcmp(name,"_invokeThunk")); - #else - WAVM_ASSERT_THROW(!strcmp(name,"invokeThunk")); - #endif +#ifndef __APPLE__ + const char thunkPrefix[] = "invokeThunk"; +#else + const char thunkPrefix[] = "_invokeThunk"; +#endif + WAVM_ASSERT_THROW(!strcmp(name,thunkPrefix)); symbol = new JITSymbol(functionType,baseAddress,numBytes,std::move(offsetToOpIndexMap)); } }; - - // Used to override LLVM's default behavior of looking up unresolved symbols in DLL exports. - struct NullResolver : llvm::JITSymbolResolver - { - static NullResolver singleton; - virtual llvm::JITSymbol findSymbol(const std::string& name) override; - virtual llvm::JITSymbol findSymbolInLogicalDylib(const std::string& name) override; - }; - - static std::map runtimeSymbolMap = - { - #ifdef _WIN32 - // the LLVM X86 code generator calls __chkstk when allocating more than 4KB of stack space - {"__chkstk","__chkstk"}, - #ifndef _WIN64 - {"__aullrem","_aullrem"}, - {"__allrem","_allrem"}, - {"__aulldiv","_aulldiv"}, - {"__alldiv","_alldiv"}, - #endif - #endif - #ifdef __arm__ - {"__aeabi_uidiv","__aeabi_uidiv"}, - {"__aeabi_idiv","__aeabi_idiv"}, - {"__aeabi_idivmod","__aeabi_idivmod"}, - {"__aeabi_uldiv","__aeabi_uldiv"}, - {"__aeabi_uldivmod","__aeabi_uldivmod"}, - {"__aeabi_unwind_cpp_pr0","__aeabi_unwind_cpp_pr0"}, - {"__aeabi_unwind_cpp_pr1","__aeabi_unwind_cpp_pr1"}, - #endif - }; - - NullResolver NullResolver::singleton; - llvm::JITSymbol NullResolver::findSymbol(const std::string& name) - { - // Allow some intrinsics used by LLVM - auto runtimeSymbolNameIt = runtimeSymbolMap.find(name); - if(runtimeSymbolNameIt != runtimeSymbolMap.end()) - { - const char* lookupName = runtimeSymbolNameIt->second; - void *addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(lookupName); - if(!addr) { Errors::fatalf("LLVM generated code references undefined external symbol: %s\n",lookupName); } - return llvm::JITSymbol(reinterpret_cast(addr),llvm::JITSymbolFlags::None); - } - - Errors::fatalf("LLVM generated code references disallowed external symbol: %s\n",name.c_str()); - } - llvm::JITSymbol NullResolver::findSymbolInLogicalDylib(const std::string& name) { return llvm::JITSymbol(nullptr); } - - void JITUnit::NotifyLoadedFunctor::operator()( - const llvm::orc::ObjectLinkingLayerBase::ObjSetHandleT& objectSetHandle, - const std::vector>>& objectSet, - const std::vector>& loadedObjects - ) - { - WAVM_ASSERT_THROW(objectSet.size() == loadedObjects.size()); - for(Uptr objectIndex = 0;objectIndex < loadedObjects.size();++objectIndex) - { - llvm::object::ObjectFile* object = objectSet[objectIndex].get()->getBinary(); - llvm::RuntimeDyld::LoadedObjectInfo* loadedObject = loadedObjects[objectIndex].get(); - - // Make a copy of the loaded object info for use by the finalizer. - jitUnit->loadedObjects.push_back({object,loadedObject}); - - #ifdef _WIN64 - // On Windows, look for .pdata and .xdata sections containing information about how to unwind the stack. - // This needs to be done before the below emitAndFinalize call, which will incorrectly apply relocations to the unwind info. - - // Find the pdata section. - llvm::object::SectionRef pdataSection; - for(auto section : object->sections()) - { - llvm::StringRef sectionName; - if(!section.getName(sectionName)) - { - if(sectionName == ".pdata") { pdataSection = section; break; } - } - } - - // Pass the pdata section to the platform to register unwind info. - if(pdataSection.getObject()) - { - const Uptr imageBaseAddress = reinterpret_cast(jitUnit->memoryManager.getImageBaseAddress()); - const Uptr pdataSectionLoadAddress = (Uptr)loadedObject->getSectionLoadAddress(pdataSection); - - // The LLVM COFF dynamic loader doesn't handle the image-relative relocations used by the pdata section, - // and overwrites those values with o: https://github.com/llvm-mirror/llvm/blob/e84d8c12d5157a926db15976389f703809c49aa5/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h#L96 - // This works around that by making a copy of the pdata section and doing the pdata relocations manually. - jitUnit->pdataCopy = new U8[pdataSection.getSize()]; - memcpy(jitUnit->pdataCopy,reinterpret_cast(pdataSectionLoadAddress),pdataSection.getSize()); - - for(auto pdataRelocIt : pdataSection.relocations()) - { - // Only handle type 3 (IMAGE_REL_AMD64_ADDR32NB). - if(pdataRelocIt.getType() != 3) { Errors::unreachable(); } - - const auto symbol = pdataRelocIt.getSymbol(); - const U64 symbolAddress = symbol->getAddress().get(); - const llvm::object::section_iterator symbolSection = symbol->getSection().get(); - U32* valueToRelocate = (U32*)(jitUnit->pdataCopy + pdataRelocIt.getOffset()); - const U64 relocatedValue64 = - + (symbolAddress - symbolSection->getAddress()) - + loadedObject->getSectionLoadAddress(*symbolSection) - + *valueToRelocate - - imageBaseAddress; - if(relocatedValue64 > UINT32_MAX) { Errors::unreachable(); } - *valueToRelocate = (U32)relocatedValue64; - } - - Platform::registerSEHUnwindInfo(imageBaseAddress,reinterpret_cast(jitUnit->pdataCopy),pdataSection.getSize()); - } - #endif - } - - } - - #if PRINT_DISASSEMBLY - void disassembleFunction(U8* bytes,Uptr numBytes) - { - LLVMDisasmContextRef disasmRef = LLVMCreateDisasm(llvm::sys::getProcessTriple().c_str(),nullptr,0,nullptr,nullptr); - - U8* nextByte = bytes; - Uptr numBytesRemaining = numBytes; - while(numBytesRemaining) - { - char instructionBuffer[256]; - const Uptr numInstructionBytes = LLVMDisasmInstruction( - disasmRef, - nextByte, - numBytesRemaining, - reinterpret_cast(nextByte), - instructionBuffer, - sizeof(instructionBuffer) - ); - WAVM_ASSERT_THROW(numInstructionBytes > 0); - WAVM_ASSERT_THROW(numInstructionBytes <= numBytesRemaining); - numBytesRemaining -= numInstructionBytes; - nextByte += numInstructionBytes; - - Log::printf(Log::Category::debug,"\t\t%s\n",instructionBuffer); - }; - - LLVMDisasmDispose(disasmRef); - } - #endif - - void JITUnit::NotifyFinalizedFunctor::operator()(const llvm::orc::ObjectLinkingLayerBase::ObjSetHandleT& objectSetHandle) - { - for(Uptr objectIndex = 0;objectIndex < jitUnit->loadedObjects.size();++objectIndex) - { - llvm::object::ObjectFile* object = jitUnit->loadedObjects[objectIndex].object; - llvm::RuntimeDyld::LoadedObjectInfo* loadedObject = jitUnit->loadedObjects[objectIndex].loadedObject; - - // Create a DWARF context to interpret the debug information in this compilation unit. - auto dwarfContext = llvm::make_unique(*object,loadedObject); - - // Iterate over the functions in the loaded object. - for(auto symbolSizePair : llvm::object::computeSymbolSizes(*object)) - { - auto symbol = symbolSizePair.first; - auto name = symbol.getName(); - auto address = symbol.getAddress(); - if( symbol.getType() && symbol.getType().get() == llvm::object::SymbolRef::ST_Function - && name - && address) - { - // Compute the address the functions was loaded at. - WAVM_ASSERT_THROW(*address <= UINTPTR_MAX); - Uptr loadedAddress = Uptr(*address); - auto symbolSection = symbol.getSection(); - if(symbolSection) - { - loadedAddress += (Uptr)loadedObject->getSectionLoadAddress(*symbolSection.get()); - } - - // Get the DWARF line info for this symbol, which maps machine code addresses to WebAssembly op indices. - llvm::DILineInfoTable lineInfoTable = dwarfContext->getLineInfoForAddressRange(loadedAddress,symbolSizePair.second); - std::map offsetToOpIndexMap; - for(auto lineInfo : lineInfoTable) { offsetToOpIndexMap.emplace(U32(lineInfo.first - loadedAddress),lineInfo.second.Line); } - - #if PRINT_DISASSEMBLY - Log::printf(Log::Category::error,"Disassembly for function %s\n",name.get().data()); - disassembleFunction(reinterpret_cast(loadedAddress),Uptr(symbolSizePair.second)); - #endif - - // Notify the JIT unit that the symbol was loaded. - WAVM_ASSERT_THROW(symbolSizePair.second <= UINTPTR_MAX); - jitUnit->notifySymbolLoaded( - name->data(),loadedAddress, - Uptr(symbolSizePair.second), - std::move(offsetToOpIndexMap) - ); - } - } - } - - jitUnit->loadedObjects.clear(); - } static Uptr printedModuleId = 0; @@ -585,29 +350,15 @@ namespace LLVMJIT for(auto functionIt = llvmModule->begin();functionIt != llvmModule->end();++functionIt) { fpm->run(*functionIt); } delete fpm; - - if(shouldLogMetrics) - { - Timing::logRatePerSecond("Optimized LLVM module",optimizationTimer,(F64)llvmModule->size(),"functions"); - } if(DUMP_OPTIMIZED_MODULE) { printModule(llvmModule,"llvmOptimizedDump"); } // Pass the module to the JIT compiler. Timing::Timer machineCodeTimer; - handle = compileLayer->addModuleSet( - std::vector{llvmModule}, - &memoryManager, - &NullResolver::singleton); - handleIsValid = true; - compileLayer->emitAndFinalize(handle); - - if(shouldLogMetrics) - { - Timing::logRatePerSecond("Generated machine code",machineCodeTimer,(F64)llvmModule->size(),"functions"); - } - - delete llvmModule; + llvm::orc::VModuleKey K = ES.allocateVModule(); + std::unique_ptr mod(llvmModule); + WAVM_ASSERT_THROW(!compileLayer->addModule(K, std::move(mod))); + WAVM_ASSERT_THROW(!compileLayer->emitAndFinalize(K)); } void instantiateModule(const IR::Module& module,ModuleInstance* moduleInstance) @@ -632,11 +383,11 @@ namespace LLVMJIT bool getFunctionIndexFromExternalName(const char* externalName,Uptr& outFunctionDefIndex) { - #if defined(_WIN32) && !defined(_WIN64) - const char wasmFuncPrefix[] = "_wasmFunc"; - #else - const char wasmFuncPrefix[] = "wasmFunc"; - #endif +#ifndef __APPLE__ + const char wasmFuncPrefix[] = "wasmFunc"; +#else + const char wasmFuncPrefix[] = "_wasmFunc"; +#endif const Uptr numPrefixChars = sizeof(wasmFuncPrefix) - 1; if(!strncmp(externalName,wasmFuncPrefix,numPrefixChars)) { @@ -756,19 +507,9 @@ namespace LLVMJIT llvm::sys::DynamicLibrary::LoadLibraryPermanently(nullptr); auto targetTriple = llvm::sys::getProcessTriple(); - #ifdef __APPLE__ - // Didn't figure out exactly why, but this works around a problem with the MacOS dynamic loader. Without it, - // our symbols can't be found in the JITed object file. - targetTriple += "-elf"; - #endif + targetMachine = llvm::EngineBuilder().selectTarget( - llvm::Triple(targetTriple),"","", - #if defined(_WIN32) && !defined(_WIN64) - // Use SSE2 instead of the FPU on x86 for more control over how intermediate results are rounded. - llvm::SmallVector({"+sse2"}) - #else - llvm::SmallVector() - #endif + llvm::Triple(targetTriple),"","",llvm::SmallVector() ); llvmI8Type = llvm::Type::getInt8Ty(context); @@ -780,15 +521,6 @@ namespace LLVMJIT llvmVoidType = llvm::Type::getVoidTy(context); llvmBoolType = llvm::Type::getInt1Ty(context); llvmI8PtrType = llvmI8Type->getPointerTo(); - - #if ENABLE_SIMD_PROTOTYPE - llvmI8x16Type = llvm::VectorType::get(llvmI8Type,16); - llvmI16x8Type = llvm::VectorType::get(llvmI16Type,8); - llvmI32x4Type = llvm::VectorType::get(llvmI32Type,4); - llvmI64x2Type = llvm::VectorType::get(llvmI64Type,2); - llvmF32x4Type = llvm::VectorType::get(llvmF32Type,4); - llvmF64x2Type = llvm::VectorType::get(llvmF64Type,2); - #endif llvmResultTypes[(Uptr)ResultType::none] = llvm::Type::getVoidTy(context); llvmResultTypes[(Uptr)ResultType::i32] = llvmI32Type; @@ -796,19 +528,11 @@ namespace LLVMJIT llvmResultTypes[(Uptr)ResultType::f32] = llvmF32Type; llvmResultTypes[(Uptr)ResultType::f64] = llvmF64Type; - #if ENABLE_SIMD_PROTOTYPE - llvmResultTypes[(Uptr)ResultType::v128] = llvmI64x2Type; - #endif - // Create zero constants of each type. typedZeroConstants[(Uptr)ValueType::any] = nullptr; typedZeroConstants[(Uptr)ValueType::i32] = emitLiteral((U32)0); typedZeroConstants[(Uptr)ValueType::i64] = emitLiteral((U64)0); typedZeroConstants[(Uptr)ValueType::f32] = emitLiteral((F32)0.0f); typedZeroConstants[(Uptr)ValueType::f64] = emitLiteral((F64)0.0); - - #if ENABLE_SIMD_PROTOTYPE - typedZeroConstants[(Uptr)ValueType::v128] = llvm::ConstantVector::get({typedZeroConstants[(Uptr)ValueType::i64],typedZeroConstants[(Uptr)ValueType::i64]}); - #endif } } diff --git a/libraries/wasm-jit/Source/Runtime/LLVMJIT.h b/libraries/wasm-jit/Source/Runtime/LLVMJIT.h index afadb6053e4..d77a6b00de2 100644 --- a/libraries/wasm-jit/Source/Runtime/LLVMJIT.h +++ b/libraries/wasm-jit/Source/Runtime/LLVMJIT.h @@ -5,31 +5,13 @@ #include "RuntimePrivate.h" #include "Intrinsics.h" -#ifdef _WIN32 - #pragma warning(push) - #pragma warning (disable:4267) - #pragma warning (disable:4800) - #pragma warning (disable:4291) - #pragma warning (disable:4244) - #pragma warning (disable:4351) - #pragma warning (disable:4065) - #pragma warning (disable:4624) - #pragma warning (disable:4245) // conversion from 'int' to 'unsigned int', signed/unsigned mismatch - #pragma warning(disable:4146) // unary minus operator applied to unsigned type, result is still unsigned - #pragma warning(disable:4458) // declaration of 'x' hides class member - #pragma warning(disable:4510) // default constructor could not be generated - #pragma warning(disable:4610) // struct can never be instantiated - user defined constructor required - #pragma warning(disable:4324) // structure was padded due to alignment specifier - #pragma warning(disable:4702) // unreachable code -#endif - #include "llvm/Analysis/Passes.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" #include "llvm/ExecutionEngine/RTDyldMemoryManager.h" #include "llvm/ExecutionEngine/Orc/CompileUtils.h" #include "llvm/ExecutionEngine/Orc/IRCompileLayer.h" #include "llvm/ExecutionEngine/Orc/LambdaResolver.h" -#include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h" +#include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h" #include "llvm/IR/DataLayout.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/IRBuilder.h" @@ -49,19 +31,14 @@ #include "llvm/Support/DynamicLibrary.h" #include "llvm/Transforms/Scalar.h" #include "llvm/IR/DIBuilder.h" -#include "llvm/DebugInfo/DIContext.h" -#include "llvm/DebugInfo/DWARF/DWARFContext.h" +#include "llvm/Transforms/InstCombine/InstCombine.h" +#include "llvm/Transforms/Utils.h" +#include "llvm/ExecutionEngine/Orc/NullResolver.h" +#include "llvm/ExecutionEngine/Orc/Core.h" #include #include #include -#ifdef _WIN32 - #undef and - #undef or - #undef xor - #pragma warning(pop) -#endif - namespace LLVMJIT { // The global LLVM context. diff --git a/libraries/wasm-jit/Source/Runtime/Linker.cpp b/libraries/wasm-jit/Source/Runtime/Linker.cpp index 5675e44e36e..0e73cefbdad 100644 --- a/libraries/wasm-jit/Source/Runtime/Linker.cpp +++ b/libraries/wasm-jit/Source/Runtime/Linker.cpp @@ -12,6 +12,20 @@ namespace Runtime { RUNTIME_API IntrinsicResolver IntrinsicResolver::singleton; + bool isA(ObjectInstance* object,const ObjectType& type) + { + if(type.kind != object->kind) { return false; } + + switch(type.kind) + { + case ObjectKind::function: return asFunctionType(type) == asFunction(object)->type; + case ObjectKind::global: return asGlobalType(type) == asGlobal(object)->type; + case ObjectKind::table: return isSubset(asTableType(type),asTable(object)->type); + case ObjectKind::memory: return isSubset(asMemoryType(type),asMemory(object)->type); + default: Errors::unreachable(); + } + } + bool IntrinsicResolver::resolve(const std::string& moduleName,const std::string& exportName,ObjectType type,ObjectInstance*& outObject) { // Make sure the wavmIntrinsics module can't be directly imported. diff --git a/libraries/wasm-jit/Source/Runtime/Runtime.cpp b/libraries/wasm-jit/Source/Runtime/Runtime.cpp index 7508a6caf87..2de03ef7801 100644 --- a/libraries/wasm-jit/Source/Runtime/Runtime.cpp +++ b/libraries/wasm-jit/Source/Runtime/Runtime.cpp @@ -40,20 +40,6 @@ namespace Runtime throw Exception {cause,describeCallStack(callStack)}; } - bool isA(ObjectInstance* object,const ObjectType& type) - { - if(type.kind != object->kind) { return false; } - - switch(type.kind) - { - case ObjectKind::function: return asFunctionType(type) == asFunction(object)->type; - case ObjectKind::global: return asGlobalType(type) == asGlobal(object)->type; - case ObjectKind::table: return isSubset(asTableType(type),asTable(object)->type); - case ObjectKind::memory: return isSubset(asMemoryType(type),asMemory(object)->type); - default: Errors::unreachable(); - } - } - [[noreturn]] void handleHardwareTrap(Platform::HardwareTrapType trapType,Platform::CallStack&& trapCallStack,Uptr trapOperand) { std::cerr << "handle hardware trap\n"; diff --git a/libraries/wasm-jit/Source/Runtime/WAVMIntrinsics.cpp b/libraries/wasm-jit/Source/Runtime/WAVMIntrinsics.cpp index a8d1fe80c71..9e38eeebea0 100644 --- a/libraries/wasm-jit/Source/Runtime/WAVMIntrinsics.cpp +++ b/libraries/wasm-jit/Source/Runtime/WAVMIntrinsics.cpp @@ -8,6 +8,16 @@ namespace Runtime { + static void causeIntrensicException(Exception::Cause cause) { + try { + Platform::immediately_exit(std::make_exception_ptr(Exception{cause, std::vector()})); + } + catch (...) { + Platform::immediately_exit(std::current_exception()); + } + __builtin_unreachable(); + } + template Float quietNaN(Float value) { @@ -104,11 +114,11 @@ namespace Runtime { if(sourceValue != sourceValue) { - causeException(Exception::Cause::invalidFloatOperation); + causeIntrensicException(Exception::Cause::invalidFloatOperation); } else if(sourceValue >= maxValue || (isMinInclusive ? sourceValue <= minValue : sourceValue < minValue)) { - causeException(Exception::Cause::integerDivideByZeroOrIntegerOverflow); + causeIntrensicException(Exception::Cause::integerDivideByZeroOrIntegerOverflow); } return (Dest)sourceValue; } @@ -125,45 +135,51 @@ namespace Runtime DEFINE_INTRINSIC_FUNCTION0(wavmIntrinsics,divideByZeroOrIntegerOverflowTrap,divideByZeroOrIntegerOverflowTrap,none) { - causeException(Exception::Cause::integerDivideByZeroOrIntegerOverflow); + causeIntrensicException(Exception::Cause::integerDivideByZeroOrIntegerOverflow); } DEFINE_INTRINSIC_FUNCTION0(wavmIntrinsics,unreachableTrap,unreachableTrap,none) { - causeException(Exception::Cause::reachedUnreachable); + causeIntrensicException(Exception::Cause::reachedUnreachable); } DEFINE_INTRINSIC_FUNCTION0(wavmIntrinsics,accessViolationTrap,accessViolationTrap,none) { - causeException(Exception::Cause::accessViolation); + causeIntrensicException(Exception::Cause::accessViolation); } DEFINE_INTRINSIC_FUNCTION3(wavmIntrinsics,indirectCallSignatureMismatch,indirectCallSignatureMismatch,none,i32,index,i64,expectedSignatureBits,i64,tableBits) { - TableInstance* table = reinterpret_cast(tableBits); - void* elementValue = table->baseAddress[index].value; - const FunctionType* actualSignature = table->baseAddress[index].type; - const FunctionType* expectedSignature = reinterpret_cast((Uptr)expectedSignatureBits); - std::string ipDescription = ""; - LLVMJIT::describeInstructionPointer(reinterpret_cast(elementValue),ipDescription); - Log::printf(Log::Category::debug,"call_indirect signature mismatch: expected %s at index %u but got %s (%s)\n", - asString(expectedSignature).c_str(), - index, - actualSignature ? asString(actualSignature).c_str() : "nullptr", - ipDescription.c_str() - ); - causeException(elementValue == nullptr ? Exception::Cause::undefinedTableElement : Exception::Cause::indirectCallSignatureMismatch); + try { + TableInstance* table = reinterpret_cast(tableBits); + void* elementValue = table->baseAddress[index].value; + const FunctionType* actualSignature = table->baseAddress[index].type; + const FunctionType* expectedSignature = reinterpret_cast((Uptr)expectedSignatureBits); + std::string ipDescription = ""; + LLVMJIT::describeInstructionPointer(reinterpret_cast(elementValue),ipDescription); + Log::printf(Log::Category::debug,"call_indirect signature mismatch: expected %s at index %u but got %s (%s)\n", + asString(expectedSignature).c_str(), + index, + actualSignature ? asString(actualSignature).c_str() : "nullptr", + ipDescription.c_str() + ); + causeIntrensicException(elementValue == nullptr ? Exception::Cause::undefinedTableElement : Exception::Cause::indirectCallSignatureMismatch); + } + catch (...) { + Platform::immediately_exit(std::current_exception()); + } } DEFINE_INTRINSIC_FUNCTION0(wavmIntrinsics,indirectCallIndexOutOfBounds,indirectCallIndexOutOfBounds,none) { - causeException(Exception::Cause::undefinedTableElement); + causeIntrensicException(Exception::Cause::undefinedTableElement); } DEFINE_INTRINSIC_FUNCTION2(wavmIntrinsics,_growMemory,growMemory,i32,i32,deltaPages,i64,memoryBits) { MemoryInstance* memory = reinterpret_cast(memoryBits); - WAVM_ASSERT_THROW(memory); + if(!memory) + causeIntrensicException(Exception::Cause::outOfMemory); const Iptr numPreviousMemoryPages = growMemory(memory,(Uptr)deltaPages); if(numPreviousMemoryPages + (Uptr)deltaPages > IR::maxMemoryPages) { return -1; } else { return (I32)numPreviousMemoryPages; } @@ -172,7 +188,8 @@ namespace Runtime DEFINE_INTRINSIC_FUNCTION1(wavmIntrinsics,_currentMemory,currentMemory,i32,i64,memoryBits) { MemoryInstance* memory = reinterpret_cast(memoryBits); - WAVM_ASSERT_THROW(memory); + if(!memory) + causeIntrensicException(Exception::Cause::outOfMemory); Uptr numMemoryPages = getMemoryNumPages(memory); if(numMemoryPages > UINT32_MAX) { numMemoryPages = UINT32_MAX; } return (U32)numMemoryPages; diff --git a/libraries/wasm-jit/Source/Runtime/llvmWARshim.cpp b/libraries/wasm-jit/Source/Runtime/llvmWARshim.cpp new file mode 100644 index 00000000000..723ea39a029 --- /dev/null +++ b/libraries/wasm-jit/Source/Runtime/llvmWARshim.cpp @@ -0,0 +1,12 @@ +#include "Runtime/llvmWARshim.h" + +namespace LLVMJIT { + +llvm::Value* CreateInBoundsGEPWAR(llvm::IRBuilder<>& irBuilder, llvm::Value* Ptr, llvm::Value* v1, llvm::Value* v2) { + if(!v2) + return irBuilder.CreateInBoundsGEP(Ptr, v1); + else + return irBuilder.CreateInBoundsGEP(Ptr, {v1, v2}); +} + +} \ No newline at end of file diff --git a/libraries/wasm-jit/Source/Runtime/llvmWARshim.llvmwar b/libraries/wasm-jit/Source/Runtime/llvmWARshim.llvmwar new file mode 100644 index 00000000000..723ea39a029 --- /dev/null +++ b/libraries/wasm-jit/Source/Runtime/llvmWARshim.llvmwar @@ -0,0 +1,12 @@ +#include "Runtime/llvmWARshim.h" + +namespace LLVMJIT { + +llvm::Value* CreateInBoundsGEPWAR(llvm::IRBuilder<>& irBuilder, llvm::Value* Ptr, llvm::Value* v1, llvm::Value* v2) { + if(!v2) + return irBuilder.CreateInBoundsGEP(Ptr, v1); + else + return irBuilder.CreateInBoundsGEP(Ptr, {v1, v2}); +} + +} \ No newline at end of file diff --git a/libraries/wasm-jit/Test/Benchmark/Benchmark.wast b/libraries/wasm-jit/Test/Benchmark/Benchmark.wast deleted file mode 100644 index 99494027e47..00000000000 --- a/libraries/wasm-jit/Test/Benchmark/Benchmark.wast +++ /dev/null @@ -1,111128 +0,0 @@ -(module - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$iiiiiii (func (param i32 i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiiiiiiii (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$viiiii (func (param i32 i32 i32 i32 i32))) - (type $FUNCSIG$viiiiii (func (param i32 i32 i32 i32 i32 i32))) - (type $FUNCSIG$iiiiid (func (param i32 i32 i32 i32 f64) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiiiiiii (func (param i32 i32 i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iiiiiid (func (param i32 i32 i32 i32 i32 f64) (result i32))) - (type $FUNCSIG$i (func (result i32))) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "___dso_handle" (global $___dso_handle$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_pthread_cond_wait" (func $_pthread_cond_wait (param i32 i32) (result i32))) - (import "env" "_pthread_key_create" (func $_pthread_key_create (param i32 i32) (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___assert_fail" (func $___assert_fail (param i32 i32 i32 i32))) - (import "env" "___cxa_allocate_exception" (func $___cxa_allocate_exception (param i32) (result i32))) - (import "env" "__ZSt18uncaught_exceptionv" (func $__ZSt18uncaught_exceptionv (result i32))) - (import "env" "_strftime_l" (func $_strftime_l (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "_pthread_getspecific" (func $_pthread_getspecific (param i32) (result i32))) - (import "env" "_pthread_once" (func $_pthread_once (param i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "_pthread_setspecific" (func $_pthread_setspecific (param i32 i32) (result i32))) - (import "env" "___cxa_atexit" (func $___cxa_atexit (param i32 i32 i32) (result i32))) - (import "env" "___cxa_throw" (func $___cxa_throw (param i32 i32 i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "___syscall145" (func $___syscall145 (param i32 i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256)) - (import "env" "table" (table 469 anyfunc)) - (import "env" "memoryBase" (global $memoryBase i32)) - (import "env" "tableBase" (global $tableBase i32)) - (global $STACKTOP (mut i32) (get_global $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (get_global $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (get_global $tempDoublePtr$asm2wasm$import)) - (global $___dso_handle (mut i32) (get_global $___dso_handle$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $nan (mut f64) (get_global $nan$asm2wasm$import)) - (global $inf (mut f64) (get_global $inf$asm2wasm$import)) - (global $tempRet0 (mut i32) (i32.const 0)) - (elem (get_global $tableBase) $b0 $__ZNKSt3__28time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPK2tmcc $__ZNKSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPK2tmcc $__ZNKSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe $__ZNKSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIcS3_NS_9allocatorIcEEEE $__ZNKSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe $__ZNKSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIwS3_NS_9allocatorIwEEEE $b0 $b1 $___stdio_write $___stdio_seek $___stdio_read $___stdout_write $_sn_write $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE6setbufEPwi $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPci $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKci $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE6setbufEPwi $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE6xsgetnEPwi $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE6xsputnEPKwi $__ZNSt3__211__stdoutbufIcE6xsputnEPKci $__ZNSt3__211__stdoutbufIwE6xsputnEPKwi $__ZNKSt3__27collateIcE7do_hashEPKcS3_ $__ZNKSt3__27collateIwE7do_hashEPKwS3_ $__ZNKSt3__28messagesIwE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE $__ZNKSt3__28messagesIwE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE $__ZNKSt3__25ctypeIcE10do_toupperEPcPKc $__ZNKSt3__25ctypeIcE10do_tolowerEPcPKc $__ZNKSt3__25ctypeIcE9do_narrowEcc $__ZNKSt3__25ctypeIwE5do_isEtw $__ZNKSt3__25ctypeIwE10do_toupperEPwPKw $__ZNKSt3__25ctypeIwE10do_tolowerEPwPKw $__ZNKSt3__25ctypeIwE9do_narrowEwc $__ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv $_do_read $b1 $b1 $b1 $b1 $b1 $b2 $__ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib $__ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib $__ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib $b3 $__ZNKSt3__29money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEce $__ZNKSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwe $b3 $b4 $__ZNSt3__28ios_baseD2Ev $__ZNSt3__28ios_baseD0Ev $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEED2Ev $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEED0Ev $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEED2Ev $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEED0Ev $__ZNSt3__213basic_istreamIwNS_11char_traitsIwEEED1Ev $__ZNSt3__213basic_istreamIwNS_11char_traitsIwEEED0Ev $__ZTv0_n12_NSt3__213basic_istreamIwNS_11char_traitsIwEEED1Ev $__ZTv0_n12_NSt3__213basic_istreamIwNS_11char_traitsIwEEED0Ev $__ZNSt3__213basic_istreamIwNS_11char_traitsIwEEED1Ev $__ZNSt3__213basic_istreamIwNS_11char_traitsIwEEED0Ev $__ZTv0_n12_NSt3__213basic_istreamIwNS_11char_traitsIwEEED1Ev $__ZTv0_n12_NSt3__213basic_istreamIwNS_11char_traitsIwEEED0Ev $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEED1Ev $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEED0Ev $__ZTv0_n12_NSt3__213basic_ostreamIwNS_11char_traitsIwEEED1Ev $__ZTv0_n12_NSt3__213basic_ostreamIwNS_11char_traitsIwEEED0Ev $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEED1Ev $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEED0Ev $__ZTv0_n12_NSt3__213basic_ostreamIwNS_11char_traitsIwEEED1Ev $__ZTv0_n12_NSt3__213basic_ostreamIwNS_11char_traitsIwEEED0Ev $__ZNSt3__211__stdoutbufIcED0Ev $__ZNSt3__211__stdoutbufIwED0Ev $__ZNSt3__211__stdoutbufIcED0Ev $__ZNSt3__211__stdoutbufIwED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__26locale5facet16__on_zero_sharedEv $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__27codecvtIwc11__mbstate_tED2Ev $__ZNSt3__27codecvtIwc11__mbstate_tED0Ev $__ZNSt3__26locale5__impD2Ev $__ZNSt3__26locale5__impD0Ev $__ZNSt3__25ctypeIcED2Ev $__ZNSt3__25ctypeIcED0Ev $__ZNSt3__28numpunctIcED2Ev $__ZNSt3__28numpunctIcED0Ev $__ZNSt3__28numpunctIwED2Ev $__ZNSt3__28numpunctIwED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev $_cleanup_522 $_cleanup_522 $__ZNSt3__28ios_base4InitD2Ev $__ZNSt3__26locale2id6__initEv $__ZNSt3__217__call_once_proxyINS_5tupleIJONS_12_GLOBAL__N_111__fake_bindEEEEEEvPv $___cxx_global_array_dtor $___cxx_global_array_dtor_61 $___cxx_global_array_dtor_109 $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev $___cxx_global_array_dtor_46 $___cxx_global_array_dtor_85 $___cxx_global_array_dtor_112 $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev $_free $__ZN10__cxxabiv112_GLOBAL__N_19destruct_EPv $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b4 $b5 $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE $__ZNSt3__210__stdinbufIcE5imbueERKNS_6localeE $__ZNSt3__210__stdinbufIwE5imbueERKNS_6localeE $__ZNSt3__211__stdoutbufIcE5imbueERKNS_6localeE $__ZNSt3__211__stdoutbufIwE5imbueERKNS_6localeE $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIcLb1EE16do_negative_signEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIcLb1EE16do_negative_signEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_negative_signEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv $__ZNKSt3__210moneypunctIwLb1EE16do_negative_signEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE $__ZNKSt3__28numpunctIcE11do_groupingEv $__ZNKSt3__28numpunctIcE11do_truenameEv $__ZNKSt3__28numpunctIcE12do_falsenameEv $__ZNKSt3__28numpunctIwE11do_groupingEv $__ZNKSt3__28numpunctIwE11do_truenameEv $__ZNKSt3__28numpunctIwE12do_falsenameEv $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b5 $b6 $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRb $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRl $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRx $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRt $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRy $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRf $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRe $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRe $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRb $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRl $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRx $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRt $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRy $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRf $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRe $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRe $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcx $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcy $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwx $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwy $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm $__ZNKSt3__29money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEcRKNS_12basic_stringIcS3_NS_9allocatorIcEEEE $__ZNKSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwRKNS_12basic_stringIwS3_NS_9allocatorIwEEEE $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b6 $b7 $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcd $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEce $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwd $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwe $b7 $b7 $b7 $b8 $___stdio_close $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9underflowEv $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEE5uflowEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9underflowEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE5uflowEv $__ZNSt3__210__stdinbufIcE9underflowEv $__ZNSt3__210__stdinbufIcE5uflowEv $__ZNSt3__210__stdinbufIwE9underflowEv $__ZNSt3__210__stdinbufIwE5uflowEv $__ZNSt3__211__stdoutbufIwE4syncEv $__ZNSt3__211__stdoutbufIwE4syncEv $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13do_date_orderEv $__ZNKSt3__220__time_get_c_storageIcE7__weeksEv $__ZNKSt3__220__time_get_c_storageIcE8__monthsEv $__ZNKSt3__220__time_get_c_storageIcE7__am_pmEv $__ZNKSt3__220__time_get_c_storageIcE3__cEv $__ZNKSt3__220__time_get_c_storageIcE3__rEv $__ZNKSt3__220__time_get_c_storageIcE3__xEv $__ZNKSt3__220__time_get_c_storageIcE3__XEv $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13do_date_orderEv $__ZNKSt3__220__time_get_c_storageIwE7__weeksEv $__ZNKSt3__220__time_get_c_storageIwE8__monthsEv $__ZNKSt3__220__time_get_c_storageIwE7__am_pmEv $__ZNKSt3__220__time_get_c_storageIwE3__cEv $__ZNKSt3__220__time_get_c_storageIwE3__rEv $__ZNKSt3__220__time_get_c_storageIwE3__xEv $__ZNKSt3__220__time_get_c_storageIwE3__XEv $__ZNKSt3__210moneypunctIcLb1EE16do_thousands_sepEv $__ZNKSt3__210moneypunctIcLb1EE16do_thousands_sepEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNKSt3__210moneypunctIcLb1EE16do_thousands_sepEv $__ZNKSt3__210moneypunctIcLb1EE16do_thousands_sepEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNKSt3__210moneypunctIwLb1EE16do_thousands_sepEv $__ZNKSt3__210moneypunctIwLb1EE16do_thousands_sepEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNKSt3__210moneypunctIwLb1EE16do_thousands_sepEv $__ZNKSt3__210moneypunctIwLb1EE16do_thousands_sepEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNKSt3__27codecvtIDsc11__mbstate_tE13do_max_lengthEv $__ZNKSt3__27codecvtIwc11__mbstate_tE11do_encodingEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNKSt3__27codecvtIwc11__mbstate_tE13do_max_lengthEv $__ZNKSt3__28numpunctIcE16do_decimal_pointEv $__ZNKSt3__28numpunctIcE16do_thousands_sepEv $__ZNKSt3__28numpunctIwE16do_decimal_pointEv $__ZNKSt3__28numpunctIwE16do_thousands_sepEv $__ZNKSt3__27codecvtIcc11__mbstate_tE16do_always_noconvEv $__ZNKSt3__27codecvtIcc11__mbstate_tE16do_always_noconvEv $__ZNKSt3__27codecvtIcc11__mbstate_tE16do_always_noconvEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv $__ZNKSt3__27codecvtIDsc11__mbstate_tE13do_max_lengthEv $__ZNKSt9bad_alloc4whatEv $b8 $b8 $b8 $b9 $b10 $__ZL25default_terminate_handlerv $__ZN10__cxxabiv112_GLOBAL__N_110construct_Ev $b10 $b11 $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc $__ZNKSt3__27codecvtIDic11__mbstate_tE6do_outERS1_PKDiS5_RS5_PcS7_RS7_ $__ZNKSt3__27codecvtIDic11__mbstate_tE5do_inERS1_PKcS5_RS5_PDiS7_RS7_ $__ZNKSt3__27codecvtIwc11__mbstate_tE6do_outERS1_PKwS5_RS5_PcS7_RS7_ $__ZNKSt3__27codecvtIwc11__mbstate_tE5do_inERS1_PKcS5_RS5_PwS7_RS7_ $__ZNKSt3__27codecvtIcc11__mbstate_tE6do_outERS1_PKcS5_RS5_PcS7_RS7_ $__ZNKSt3__27codecvtIcc11__mbstate_tE6do_outERS1_PKcS5_RS5_PcS7_RS7_ $__ZNKSt3__27codecvtIDsc11__mbstate_tE6do_outERS1_PKDsS5_RS5_PcS7_RS7_ $__ZNKSt3__27codecvtIDsc11__mbstate_tE5do_inERS1_PKcS5_RS5_PDsS7_RS7_ $b11 $b11 $b11 $b11 $b11 $b12 $__ZNKSt3__25ctypeIcE8do_widenEPKcS3_Pc $__ZNKSt3__25ctypeIwE5do_isEPKwS3_Pt $__ZNKSt3__25ctypeIwE10do_scan_isEtPKwS3_ $__ZNKSt3__25ctypeIwE11do_scan_notEtPKwS3_ $__ZNKSt3__25ctypeIwE8do_widenEPKcS3_Pw $b12 $b12 $b13 $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE7seekoffExNS_8ios_base7seekdirEj $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE7seekoffExNS_8ios_base7seekdirEj $__ZNKSt3__28messagesIcE6do_getEiiiRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE $__ZNKSt3__28messagesIwE6do_getEiiiRKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE $__ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib $__ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib $__ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib $b14 $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj $__ZNSt3__210__stdinbufIcE9pbackfailEi $__ZNSt3__210__stdinbufIwE9pbackfailEj $__ZNSt3__211__stdoutbufIcE8overflowEi $__ZNSt3__211__stdoutbufIwE8overflowEj $__ZNKSt3__25ctypeIcE10do_toupperEc $__ZNKSt3__25ctypeIcE10do_tolowerEc $__ZNKSt3__25ctypeIcE8do_widenEc $__ZNKSt3__25ctypeIwE10do_toupperEw $__ZNKSt3__25ctypeIwE10do_tolowerEw $__ZNKSt3__25ctypeIwE8do_widenEc $b14 $b15 $__ZNKSt3__27collateIcE10do_compareEPKcS3_S3_S3_ $__ZNKSt3__27collateIwE10do_compareEPKwS3_S3_S3_ $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcb $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcl $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcm $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPKv $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwb $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwl $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwm $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPKv $__ZNKSt3__27codecvtIDsc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_ $__ZNKSt3__27codecvtIDic11__mbstate_tE9do_lengthERS1_PKcS5_j $__ZNKSt3__27codecvtIwc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_ $__ZNKSt3__27codecvtIwc11__mbstate_tE9do_lengthERS1_PKcS5_j $__ZNKSt3__25ctypeIcE9do_narrowEPKcS3_cPc $__ZNKSt3__25ctypeIwE9do_narrowEPKwS3_cPc $__ZNKSt3__27codecvtIDsc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_ $__ZNKSt3__27codecvtIcc11__mbstate_tE9do_lengthERS1_PKcS5_j $__ZNKSt3__27codecvtIDsc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_ $__ZNKSt3__27codecvtIDsc11__mbstate_tE9do_lengthERS1_PKcS5_j $b15 $b15 $b15 $b15 $b15 $b15 $b15 $b15 $b15 $b15 $b15 $b16 $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI11__mbstate_tEEj $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI11__mbstate_tEEj $__ZNKSt3__27collateIcE12do_transformEPKcS3_ $__ZNKSt3__27collateIwE12do_transformEPKwS3_ $__ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi $__ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi $__ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi) - (data (get_global $memoryBase) "\b8%\00\00\b43\00\00\10\04\00\00\00\00\00\00\90%\00\00\de3\00\00\b8%\00\00\f03\00\00\10\04\00\00\00\00\00\00\90%\00\00\1a4\00\00\90%\00\00K4\00\00\f8%\00\00|4\00\00\00\00\00\00\01\00\00\00\00\04\00\00\03\f4\ff\ff\f8%\00\00\ab4\00\00\00\00\00\00\01\00\00\00\18\04\00\00\03\f4\ff\ff\f8%\00\00\da4\00\00\00\00\00\00\01\00\00\00\00\04\00\00\03\f4\ff\ff\f8%\00\00\t5\00\00\00\00\00\00\01\00\00\00\18\04\00\00\03\f4\ff\ff\b8%\00\0085\00\00(\04\00\00\00\00\00\00\b8%\00\00v5\00\000\04\00\00\00\00\00\00\b8%\00\00\8e5\00\00(\04\00\00\00\00\00\00\b8%\00\00\a75\00\000\04\00\00\00\00\00\00\b8%\00\00\c05\00\00\e8\04\00\00\00\00\00\00\b8%\00\00\d45\00\008\t\00\00\00\00\00\00\b8%\00\00\ea5\00\00\e8\04\00\00\00\00\00\00\f8%\00\00\fe5\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00(\05\00\00\00\00\00\00\f8%\00\00B6\00\00\00\00\00\00\01\00\00\00@\05\00\00\00\00\00\00\90%\00\00X6\00\00\f8%\00\00\976\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00h\05\00\00\00\00\00\00\f8%\00\00\db6\00\00\00\00\00\00\01\00\00\00@\05\00\00\00\00\00\00\f8%\00\00\f16\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\a0\05\00\00\00\00\00\00\f8%\00\0057\00\00\00\00\00\00\01\00\00\00\b8\05\00\00\00\00\00\00\90%\00\00K7\00\00\f8%\00\00w7\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\e0\05\00\00\00\00\00\00\f8%\00\00\bb7\00\00\00\00\00\00\01\00\00\00\b8\05\00\00\00\00\00\00\f8%\00\00\d17\00\00\00\00\00\00\03\00\00\00\e8\04\00\00\02\00\00\00 \06\00\00\02\00\00\00(\06\00\00\00\08\00\00\90%\00\00\168\00\00\90%\00\00)8\00\00\f8%\00\00\8b9\00\00\00\00\00\00\03\00\00\00\e8\04\00\00\02\00\00\00 \06\00\00\02\00\00\00X\06\00\00\00\08\00\00\90%\00\00\d09\00\00\f8%\00\00\f29\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\80\06\00\00\00\08\00\00\90%\00\007:\00\00\f8%\00\00L:\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\80\06\00\00\00\08\00\00\f8%\00\00\91:\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\c8\06\00\00\02\00\00\00\90%\00\00\ad:\00\00\f8%\00\00\c2:\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\c8\06\00\00\02\00\00\00\f8%\00\00\de:\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\c8\06\00\00\02\00\00\00\f8%\00\00\fa:\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\c8\06\00\00\02\00\00\00\f8%\00\00\16;\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00P\07\00\00\00\00\00\00\90%\00\00\\;\00\00\f8%\00\00\84;\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00x\07\00\00\00\00\00\00\90%\00\00\ca;\00\00\f8%\00\00\ee;\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\a0\07\00\00\00\00\00\00\90%\00\004<\00\00\f8%\00\00S<\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\c8\07\00\00\00\00\00\00\90%\00\00\99<\00\00\f8%\00\00\b2<\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\f0\07\00\00\02\00\00\00\90%\00\00\c7<\00\00\f8%\00\00\df<\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\f0\07\00\00\02\00\00\00\b8%\00\00\f4<\00\00(\08\00\00\00\00\00\00\f8%\00\00\16=\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00H\08\00\00\02\00\00\00\90%\00\009=\00\00\b8%\00\00P=\00\00(\08\00\00\00\00\00\00\f8%\00\00s=\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00H\08\00\00\02\00\00\00\f8%\00\00\95=\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00H\08\00\00\02\00\00\00\f8%\00\00\b7=\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00H\08\00\00\02\00\00\00\b8%\00\00\da=\00\00\e8\04\00\00\00\00\00\00\f8%\00\00\f0=\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\f0\08\00\00\02\00\00\00\90%\00\00\02>\00\00\f8%\00\00\17>\00\00\00\00\00\00\02\00\00\00\e8\04\00\00\02\00\00\00\f0\08\00\00\02\00\00\00\b8%\00\00)>\00\00\e8\04\00\00\00\00\00\00\b8%\00\00I>\00\00\e8\04\00\00\00\00\00\00\90%\00\00\c2>\00\00\90%\00\00\e2@\00\00\b8%\00\00\c0@\00\00h\t\00\00\00\00\00\00\b8%\00\00m@\00\00H\t\00\00\00\00\00\00\b8%\00\00\92@\00\00x\t\00\00\00\00\00\00\90%\00\00\b3@\00\00\b8%\00\00\a8A\00\00@\t\00\00\00\00\00\00\b8%\00\00\e8A\00\00h\t\00\00\00\00\00\00\b8%\00\00\c4A\00\00\90\t\00\00\00\00\00\00\b8%\00\00\nB\00\00H\t\00\00\00\00\00\00\02\00\00\c0\03\00\00\c0\04\00\00\c0\05\00\00\c0\06\00\00\c0\07\00\00\c0\08\00\00\c0\t\00\00\c0\n\00\00\c0\0b\00\00\c0\0c\00\00\c0\0d\00\00\c0\0e\00\00\c0\0f\00\00\c0\10\00\00\c0\11\00\00\c0\12\00\00\c0\13\00\00\c0\14\00\00\c0\15\00\00\c0\16\00\00\c0\17\00\00\c0\18\00\00\c0\19\00\00\c0\1a\00\00\c0\1b\00\00\c0\1c\00\00\c0\1d\00\00\c0\1e\00\00\c0\1f\00\00\c0\00\00\00\b3\01\00\00\c3\02\00\00\c3\03\00\00\c3\04\00\00\c3\05\00\00\c3\06\00\00\c3\07\00\00\c3\08\00\00\c3\t\00\00\c3\n\00\00\c3\0b\00\00\c3\0c\00\00\c3\0d\00\00\d3\0e\00\00\c3\0f\00\00\c3\00\00\0c\bb\01\00\0c\c3\02\00\0c\c3\03\00\0c\c3\04\00\0c\d3\90\n\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\98R\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\0b\00\00\t\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\02\00\00\00\a0R\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00x\0b\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\02\00\00\00\a8V\00\00\00\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00x\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\'\00\00d\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00\0b\00\00\00\0c\00\00\00\0d\00\00\00\0e\00\00\00\0f\00\00\00\10\00\00\00\11\00\00\00\12\00\00\00\13\00\00\00\14\00\00\00\15\00\00\00\16\00\00\00\17\00\00\00\18\00\00\00\19\00\00\00\1a\00\00\00\1b\00\00\00\1c\00\00\00\1d\00\00\00\1e\00\00\00\1f\00\00\00 \00\00\00!\00\00\00\"\00\00\00#\00\00\00$\00\00\00%\00\00\00&\00\00\00\'\00\00\00(\00\00\00)\00\00\00*\00\00\00+\00\00\00,\00\00\00-\00\00\00.\00\00\00/\00\00\000\00\00\001\00\00\002\00\00\003\00\00\004\00\00\005\00\00\006\00\00\007\00\00\008\00\00\009\00\00\00:\00\00\00;\00\00\00<\00\00\00=\00\00\00>\00\00\00?\00\00\00@\00\00\00a\00\00\00b\00\00\00c\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00h\00\00\00i\00\00\00j\00\00\00k\00\00\00l\00\00\00m\00\00\00n\00\00\00o\00\00\00p\00\00\00q\00\00\00r\00\00\00s\00\00\00t\00\00\00u\00\00\00v\00\00\00w\00\00\00x\00\00\00y\00\00\00z\00\00\00[\00\00\00\\\00\00\00]\00\00\00^\00\00\00_\00\00\00`\00\00\00a\00\00\00b\00\00\00c\00\00\00d\00\00\00e\00\00\00f\00\00\00g\00\00\00h\00\00\00i\00\00\00j\00\00\00k\00\00\00l\00\00\00m\00\00\00n\00\00\00o\00\00\00p\00\00\00q\00\00\00r\00\00\00s\00\00\00t\00\00\00u\00\00\00v\00\00\00w\00\00\00x\00\00\00y\00\00\00z\00\00\00{\00\00\00|\00\00\00}\00\00\00~\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00h\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00\0b\00\00\00\0c\00\00\00\0d\00\00\00\0e\00\00\00\0f\00\00\00\10\00\00\00\11\00\00\00\12\00\00\00\13\00\00\00\14\00\00\00\15\00\00\00\16\00\00\00\17\00\00\00\18\00\00\00\19\00\00\00\1a\00\00\00\1b\00\00\00\1c\00\00\00\1d\00\00\00\1e\00\00\00\1f\00\00\00 \00\00\00!\00\00\00\"\00\00\00#\00\00\00$\00\00\00%\00\00\00&\00\00\00\'\00\00\00(\00\00\00)\00\00\00*\00\00\00+\00\00\00,\00\00\00-\00\00\00.\00\00\00/\00\00\000\00\00\001\00\00\002\00\00\003\00\00\004\00\00\005\00\00\006\00\00\007\00\00\008\00\00\009\00\00\00:\00\00\00;\00\00\00<\00\00\00=\00\00\00>\00\00\00?\00\00\00@\00\00\00A\00\00\00B\00\00\00C\00\00\00D\00\00\00E\00\00\00F\00\00\00G\00\00\00H\00\00\00I\00\00\00J\00\00\00K\00\00\00L\00\00\00M\00\00\00N\00\00\00O\00\00\00P\00\00\00Q\00\00\00R\00\00\00S\00\00\00T\00\00\00U\00\00\00V\00\00\00W\00\00\00X\00\00\00Y\00\00\00Z\00\00\00[\00\00\00\\\00\00\00]\00\00\00^\00\00\00_\00\00\00`\00\00\00A\00\00\00B\00\00\00C\00\00\00D\00\00\00E\00\00\00F\00\00\00G\00\00\00H\00\00\00I\00\00\00J\00\00\00K\00\00\00L\00\00\00M\00\00\00N\00\00\00O\00\00\00P\00\00\00Q\00\00\00R\00\00\00S\00\00\00T\00\00\00U\00\00\00V\00\00\00W\00\00\00X\00\00\00Y\00\00\00Z\00\00\00{\00\00\00|\00\00\00}\00\00\00~\00\00\00\7f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\00\00\00\10\04\00\00\01\00\00\00\02\00\00\00\00\00\00\00(\04\00\00\03\00\00\00\04\00\00\00\01\00\00\00\06\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\07\00\00\00\04\00\00\00\05\00\00\00\01\00\00\00\08\00\00\00\02\00\00\00\00\00\00\000\04\00\00\05\00\00\00\06\00\00\00\02\00\00\00\t\00\00\00\02\00\00\00\02\00\00\00\06\00\00\00\07\00\00\00\n\00\00\00\08\00\00\00\t\00\00\00\03\00\00\00\0b\00\00\00\04\00\00\00\08\00\00\00\00\00\00\008\04\00\00\07\00\00\00\08\00\00\00\f8\ff\ff\ff\f8\ff\ff\ff8\04\00\00\t\00\00\00\n\00\00\00\08\00\00\00\00\00\00\00P\04\00\00\0b\00\00\00\0c\00\00\00\f8\ff\ff\ff\f8\ff\ff\ffP\04\00\00\0d\00\00\00\0e\00\00\00\04\00\00\00\00\00\00\00h\04\00\00\0f\00\00\00\10\00\00\00\fc\ff\ff\ff\fc\ff\ff\ffh\04\00\00\11\00\00\00\12\00\00\00\04\00\00\00\00\00\00\00\80\04\00\00\13\00\00\00\14\00\00\00\fc\ff\ff\ff\fc\ff\ff\ff\80\04\00\00\15\00\00\00\16\00\00\00\00\00\00\00\98\04\00\00\03\00\00\00\17\00\00\00\03\00\00\00\06\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\07\00\00\00\n\00\00\00\0b\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\a8\04\00\00\05\00\00\00\18\00\00\00\04\00\00\00\t\00\00\00\02\00\00\00\02\00\00\00\06\00\00\00\07\00\00\00\n\00\00\00\0c\00\00\00\0d\00\00\00\06\00\00\00\0b\00\00\00\04\00\00\00\00\00\00\00\b8\04\00\00\03\00\00\00\19\00\00\00\05\00\00\00\06\00\00\00\01\00\00\00\01\00\00\00\0e\00\00\00\03\00\00\00\07\00\00\00\04\00\00\00\05\00\00\00\01\00\00\00\0c\00\00\00\07\00\00\00\00\00\00\00\c8\04\00\00\05\00\00\00\1a\00\00\00\06\00\00\00\t\00\00\00\02\00\00\00\02\00\00\00\0f\00\00\00\07\00\00\00\n\00\00\00\08\00\00\00\t\00\00\00\03\00\00\00\0d\00\00\00\08\00\00\00\00\00\00\00\d8\04\00\00\1b\00\00\00\1c\00\00\00\1d\00\00\00\01\00\00\00\03\00\00\00\0e\00\00\00\00\00\00\00\f8\04\00\00\1e\00\00\00\1f\00\00\00\1d\00\00\00\02\00\00\00\04\00\00\00\0f\00\00\00\00\00\00\00\08\05\00\00 \00\00\00!\00\00\00\1d\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00\0b\00\00\00\00\00\00\00H\05\00\00\"\00\00\00#\00\00\00\1d\00\00\00\0c\00\00\00\0d\00\00\00\0e\00\00\00\0f\00\00\00\10\00\00\00\11\00\00\00\12\00\00\00\13\00\00\00\14\00\00\00\15\00\00\00\16\00\00\00\00\00\00\00\80\05\00\00$\00\00\00%\00\00\00\1d\00\00\00\03\00\00\00\04\00\00\00\17\00\00\00\05\00\00\00\18\00\00\00\01\00\00\00\02\00\00\00\06\00\00\00\00\00\00\00\c0\05\00\00&\00\00\00\'\00\00\00\1d\00\00\00\07\00\00\00\08\00\00\00\19\00\00\00\t\00\00\00\1a\00\00\00\03\00\00\00\04\00\00\00\n\00\00\00\00\00\00\00\f8\05\00\00(\00\00\00)\00\00\00\1d\00\00\00\10\00\00\00\1b\00\00\00\1c\00\00\00\1d\00\00\00\1e\00\00\00\1f\00\00\00\01\00\00\00\f8\ff\ff\ff\f8\05\00\00\11\00\00\00\12\00\00\00\13\00\00\00\14\00\00\00\15\00\00\00\16\00\00\00\17\00\00\00\00\00\00\000\06\00\00*\00\00\00+\00\00\00\1d\00\00\00\18\00\00\00 \00\00\00!\00\00\00\"\00\00\00#\00\00\00$\00\00\00\02\00\00\00\f8\ff\ff\ff0\06\00\00\19\00\00\00\1a\00\00\00\1b\00\00\00\1c\00\00\00\1d\00\00\00\1e\00\00\00\1f\00\00\00%\00\00\00H\00\00\00:\00\00\00%\00\00\00M\00\00\00:\00\00\00%\00\00\00S\00\00\00%\00\00\00m\00\00\00/\00\00\00%\00\00\00d\00\00\00/\00\00\00%\00\00\00y\00\00\00%\00\00\00Y\00\00\00-\00\00\00%\00\00\00m\00\00\00-\00\00\00%\00\00\00d\00\00\00%\00\00\00I\00\00\00:\00\00\00%\00\00\00M\00\00\00:\00\00\00%\00\00\00S\00\00\00 \00\00\00%\00\00\00p\00\00\00%\00\00\00H\00\00\00:\00\00\00%\00\00\00M\00\00\00%\00\00\00H\00\00\00:\00\00\00%\00\00\00M\00\00\00:\00\00\00%\00\00\00S\00\00\00S\00\00\00u\00\00\00n\00\00\00d\00\00\00a\00\00\00y\00\00\00\00\00\00\00M\00\00\00o\00\00\00n\00\00\00d\00\00\00a\00\00\00y\00\00\00\00\00\00\00T\00\00\00u\00\00\00e\00\00\00s\00\00\00d\00\00\00a\00\00\00y\00\00\00\00\00\00\00W\00\00\00e\00\00\00d\00\00\00n\00\00\00e\00\00\00s\00\00\00d\00\00\00a\00\00\00y\00\00\00\00\00\00\00T\00\00\00h\00\00\00u\00\00\00r\00\00\00s\00\00\00d\00\00\00a\00\00\00y\00\00\00\00\00\00\00F\00\00\00r\00\00\00i\00\00\00d\00\00\00a\00\00\00y\00\00\00\00\00\00\00S\00\00\00a\00\00\00t\00\00\00u\00\00\00r\00\00\00d\00\00\00a\00\00\00y\00\00\00\00\00\00\00S\00\00\00u\00\00\00n\00\00\00\00\00\00\00M\00\00\00o\00\00\00n\00\00\00\00\00\00\00T\00\00\00u\00\00\00e\00\00\00\00\00\00\00W\00\00\00e\00\00\00d\00\00\00\00\00\00\00T\00\00\00h\00\00\00u\00\00\00\00\00\00\00F\00\00\00r\00\00\00i\00\00\00\00\00\00\00S\00\00\00a\00\00\00t\00\00\00\00\00\00\00J\00\00\00a\00\00\00n\00\00\00u\00\00\00a\00\00\00r\00\00\00y\00\00\00\00\00\00\00F\00\00\00e\00\00\00b\00\00\00r\00\00\00u\00\00\00a\00\00\00r\00\00\00y\00\00\00\00\00\00\00M\00\00\00a\00\00\00r\00\00\00c\00\00\00h\00\00\00\00\00\00\00A\00\00\00p\00\00\00r\00\00\00i\00\00\00l\00\00\00\00\00\00\00M\00\00\00a\00\00\00y\00\00\00\00\00\00\00J\00\00\00u\00\00\00n\00\00\00e\00\00\00\00\00\00\00J\00\00\00u\00\00\00l\00\00\00y\00\00\00\00\00\00\00A\00\00\00u\00\00\00g\00\00\00u\00\00\00s\00\00\00t\00\00\00\00\00\00\00S\00\00\00e\00\00\00p\00\00\00t\00\00\00e\00\00\00m\00\00\00b\00\00\00e\00\00\00r\00\00\00\00\00\00\00O\00\00\00c\00\00\00t\00\00\00o\00\00\00b\00\00\00e\00\00\00r\00\00\00\00\00\00\00N\00\00\00o\00\00\00v\00\00\00e\00\00\00m\00\00\00b\00\00\00e\00\00\00r\00\00\00\00\00\00\00D\00\00\00e\00\00\00c\00\00\00e\00\00\00m\00\00\00b\00\00\00e\00\00\00r\00\00\00\00\00\00\00J\00\00\00a\00\00\00n\00\00\00\00\00\00\00F\00\00\00e\00\00\00b\00\00\00\00\00\00\00M\00\00\00a\00\00\00r\00\00\00\00\00\00\00A\00\00\00p\00\00\00r\00\00\00\00\00\00\00J\00\00\00u\00\00\00n\00\00\00\00\00\00\00J\00\00\00u\00\00\00l\00\00\00\00\00\00\00A\00\00\00u\00\00\00g\00\00\00\00\00\00\00S\00\00\00e\00\00\00p\00\00\00\00\00\00\00O\00\00\00c\00\00\00t\00\00\00\00\00\00\00N\00\00\00o\00\00\00v\00\00\00\00\00\00\00D\00\00\00e\00\00\00c\00\00\00\00\00\00\00A\00\00\00M\00\00\00\00\00\00\00P\00\00\00M\00\00\00\00\00\00\00%\00\00\00a\00\00\00 \00\00\00%\00\00\00b\00\00\00 \00\00\00%\00\00\00d\00\00\00 \00\00\00%\00\00\00H\00\00\00:\00\00\00%\00\00\00M\00\00\00:\00\00\00%\00\00\00S\00\00\00 \00\00\00%\00\00\00Y\00\00\00\00\00\00\00%\00\00\00I\00\00\00:\00\00\00%\00\00\00M\00\00\00:\00\00\00%\00\00\00S\00\00\00 \00\00\00%\00\00\00p\00\00\00\00\00\00\00%\00\00\00m\00\00\00/\00\00\00%\00\00\00d\00\00\00/\00\00\00%\00\00\00y\00\00\00\00\00\00\00%\00\00\00H\00\00\00:\00\00\00%\00\00\00M\00\00\00:\00\00\00%\00\00\00S\00\00\00\00\00\00\00\00\00\00\00`\06\00\00,\00\00\00-\00\00\00\1d\00\00\00\01\00\00\00\00\00\00\00\88\06\00\00.\00\00\00/\00\00\00\1d\00\00\00\02\00\00\00\00\00\00\00\a8\06\00\000\00\00\001\00\00\00\1d\00\00\00 \00\00\00!\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00\n\00\00\00\"\00\00\00\0b\00\00\00\0c\00\00\00\00\00\00\00\d0\06\00\002\00\00\003\00\00\00\1d\00\00\00#\00\00\00$\00\00\00\0d\00\00\00\0e\00\00\00\0f\00\00\00\10\00\00\00%\00\00\00\11\00\00\00\12\00\00\00\00\00\00\00\f0\06\00\004\00\00\005\00\00\00\1d\00\00\00&\00\00\00\'\00\00\00\13\00\00\00\14\00\00\00\15\00\00\00\16\00\00\00(\00\00\00\17\00\00\00\18\00\00\00\00\00\00\00\10\07\00\006\00\00\007\00\00\00\1d\00\00\00)\00\00\00*\00\00\00\19\00\00\00\1a\00\00\00\1b\00\00\00\1c\00\00\00+\00\00\00\1d\00\00\00\1e\00\00\00\00\00\00\000\07\00\008\00\00\009\00\00\00\1d\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00X\07\00\00:\00\00\00;\00\00\00\1d\00\00\00\05\00\00\00\06\00\00\00\00\00\00\00\80\07\00\00<\00\00\00=\00\00\00\1d\00\00\00\01\00\00\00%\00\00\00\00\00\00\00\a8\07\00\00>\00\00\00?\00\00\00\1d\00\00\00\02\00\00\00&\00\00\00\00\00\00\00\d0\07\00\00@\00\00\00A\00\00\00\1d\00\00\00\10\00\00\00\03\00\00\00\1f\00\00\00\00\00\00\00\f8\07\00\00B\00\00\00C\00\00\00\1d\00\00\00\11\00\00\00\04\00\00\00 \00\00\00\00\00\00\00\18\08\00\00D\00\00\00E\00\00\00\1d\00\00\00\03\00\00\00\04\00\00\00\0b\00\00\00,\00\00\00-\00\00\00\0c\00\00\00.\00\00\00\00\00\00\00P\08\00\00D\00\00\00F\00\00\00\1d\00\00\00\03\00\00\00\04\00\00\00\0b\00\00\00,\00\00\00-\00\00\00\0c\00\00\00.\00\00\00\00\00\00\00\80\08\00\00G\00\00\00H\00\00\00\1d\00\00\00\05\00\00\00\06\00\00\00\0d\00\00\00/\00\00\000\00\00\00\0e\00\00\001\00\00\00\00\00\00\00\c0\08\00\00I\00\00\00J\00\00\00\1d\00\00\00\00\00\00\00\d0\08\00\00K\00\00\00L\00\00\00\1d\00\00\00\t\00\00\00\12\00\00\00\n\00\00\00\13\00\00\00\0b\00\00\00\01\00\00\00\14\00\00\00\0f\00\00\00\00\00\00\00\18\t\00\00M\00\00\00N\00\00\00\1d\00\00\002\00\00\003\00\00\00!\00\00\00\"\00\00\00#\00\00\00\00\00\00\00(\t\00\00O\00\00\00P\00\00\00\1d\00\00\004\00\00\005\00\00\00$\00\00\00%\00\00\00&\00\00\00t\00\00\00r\00\00\00u\00\00\00e\00\00\00\00\00\00\00f\00\00\00a\00\00\00l\00\00\00s\00\00\00e\00\00\00\00\00\00\00\00\00\00\00\e8\04\00\00D\00\00\00Q\00\00\00\1d\00\00\00\00\00\00\00\f8\08\00\00D\00\00\00R\00\00\00\1d\00\00\00\15\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\0c\00\00\00\16\00\00\00\0d\00\00\00\17\00\00\00\0e\00\00\00\05\00\00\00\18\00\00\00\10\00\00\00\00\00\00\00`\08\00\00D\00\00\00S\00\00\00\1d\00\00\00\07\00\00\00\08\00\00\00\11\00\00\006\00\00\007\00\00\00\12\00\00\008\00\00\00\00\00\00\00\a0\08\00\00D\00\00\00T\00\00\00\1d\00\00\00\t\00\00\00\n\00\00\00\13\00\00\009\00\00\00:\00\00\00\14\00\00\00;\00\00\00\00\00\00\00(\08\00\00D\00\00\00U\00\00\00\1d\00\00\00\03\00\00\00\04\00\00\00\0b\00\00\00,\00\00\00-\00\00\00\0c\00\00\00.\00\00\00\01\00\00\00\00\00\00\00H\t\00\00V\00\00\00W\00\00\00X\00\00\00Y\00\00\00\19\00\00\00\05\00\00\00\01\00\00\00\05\00\00\00\00\00\00\00X\t\00\00V\00\00\00Z\00\00\00X\00\00\00Y\00\00\00\19\00\00\00\06\00\00\00\02\00\00\00\06\00\00\00\ef@\00\00\00\00\00\00\80\t\00\00[\00\00\00\\\00\00\00<\00\00\00\00\00\00\00\b0\t\00\00V\00\00\00]\00\00\00X\00\00\00Y\00\00\00\19\00\00\00\07\00\00\00\03\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\03 \02 \02 \02 \02 \02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\02\00\01`\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\08\d8\08\d8\08\d8\08\d8\08\d8\08\d8\08\d8\08\d8\08\d8\08\d8\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\08\d5\08\d5\08\d5\08\d5\08\d5\08\d5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\08\c5\04\c0\04\c0\04\c0\04\c0\04\c0\04\c0\08\d6\08\d6\08\d6\08\d6\08\d6\08\d6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\08\c6\04\c0\04\c0\04\c0\04\c0\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00result: \00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\01\02\03\04\05\06\07\08\t\ff\ff\ff\ff\ff\ff\ff\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#\ff\ff\ff\ff\ff\ff\n\0b\0c\0d\0e\0f\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\"#\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\01\02\04\07\03\06\05\00\11\00\n\00\11\11\11\00\00\00\00\05\00\00\00\00\00\00\t\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\0f\n\11\11\11\03\n\07\00\01\13\t\0b\0b\00\00\t\06\0b\00\00\0b\00\06\11\00\00\00\11\11\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\n\n\11\11\11\00\n\00\00\02\00\t\0b\00\00\00\t\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\04\0d\00\00\00\00\t\0e\00\00\00\00\00\0e\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\00\0f\00\00\00\00\t\10\00\00\00\00\00\10\00\00\10\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\n\00\00\00\00\t\0b\00\00\00\00\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\000123456789ABCDEF-+ 0X0x\00T!\"\19\0d\01\02\03\11K\1c\0c\10\04\0b\1d\12\1e\'hnopqb \05\06\0f\13\14\15\1a\08\16\07($\17\18\t\n\0e\1b\1f%#\83\82}&*+<=>?CGJMXYZ[\\]^_`acdefgijklrstyz{|\00Illegal byte sequence\00Domain error\00Result not representable\00Not a tty\00Permission denied\00Operation not permitted\00No such file or directory\00No such process\00File exists\00Value too large for data type\00No space left on device\00Out of memory\00Resource busy\00Interrupted system call\00Resource temporarily unavailable\00Invalid seek\00Cross-device link\00Read-only file system\00Directory not empty\00Connection reset by peer\00Operation timed out\00Connection refused\00Host is down\00Host is unreachable\00Address in use\00Broken pipe\00I/O error\00No such device or address\00Block device required\00No such device\00Not a directory\00Is a directory\00Text file busy\00Exec format error\00Invalid argument\00Argument list too long\00Symbolic link loop\00Filename too long\00Too many open files in system\00No file descriptors available\00Bad file descriptor\00No child process\00Bad address\00File too large\00Too many links\00No locks available\00Resource deadlock would occur\00State not recoverable\00Previous owner died\00Operation canceled\00Function not implemented\00No message of desired type\00Identifier removed\00Device not a stream\00No data available\00Device timeout\00Out of streams resources\00Link has been severed\00Protocol error\00Bad message\00File descriptor in bad state\00Not a socket\00Destination address required\00Message too large\00Protocol wrong type for socket\00Protocol not available\00Protocol not supported\00Socket type not supported\00Not supported\00Protocol family not supported\00Address family not supported by protocol\00Address not available\00Network is down\00Network unreachable\00Connection reset by network\00Connection aborted\00No buffer space available\00Socket is connected\00Socket not connected\00Cannot send after socket shutdown\00Operation already in progress\00Operation in progress\00Stale file handle\00Remote I/O error\00Quota exceeded\00No medium found\00Wrong medium type\00No error information\00\00(null)\00-0X+0X 0X-0x+0x 0x\00inf\00INF\00NAN\00.\00infinity\00nan\00POSIX\00NSt3__29basic_iosIcNS_11char_traitsIcEEEE\00NSt3__28ios_baseE\00NSt3__29basic_iosIwNS_11char_traitsIwEEEE\00NSt3__215basic_streambufIcNS_11char_traitsIcEEEE\00NSt3__215basic_streambufIwNS_11char_traitsIwEEEE\00NSt3__213basic_istreamIcNS_11char_traitsIcEEEE\00NSt3__213basic_istreamIwNS_11char_traitsIwEEEE\00NSt3__213basic_ostreamIcNS_11char_traitsIcEEEE\00NSt3__213basic_ostreamIwNS_11char_traitsIwEEEE\00NSt3__210__stdinbufIcEE\00unsupported locale for standard input\00NSt3__210__stdinbufIwEE\00NSt3__211__stdoutbufIcEE\00NSt3__211__stdoutbufIwEE\00NSt3__27collateIcEE\00NSt3__26locale5facetE\00NSt3__27collateIwEE\00NSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE\00NSt3__29__num_getIcEE\00NSt3__214__num_get_baseE\000123456789abcdefABCDEFxX+-pPiInN\00C\00%p\00NSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE\00NSt3__29__num_getIwEE\00NSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE\00NSt3__29__num_putIcEE\00NSt3__214__num_put_baseE\00%\00\00\00\00\00l\00ll\00L\00%p\00\00\00\00NSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE\00NSt3__29__num_putIwEE\00NSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE\00NSt3__29time_baseE\00NSt3__220__time_get_c_storageIcEE\00%H:%M:%S%m/%d/%y%Y-%m-%d%I:%M:%S %p%H:%M%H:%M:%SSunday\00Monday\00Tuesday\00Wednesday\00Thursday\00Friday\00Saturday\00Sun\00Mon\00Tue\00Wed\00Thu\00Fri\00Sat\00January\00February\00March\00April\00May\00June\00July\00August\00September\00October\00November\00December\00Jan\00Feb\00Mar\00Apr\00Jun\00Jul\00Aug\00Sep\00Oct\00Nov\00Dec\00AM\00PM\00%a %b %d %H:%M:%S %Y\00%I:%M:%S %p\00%m/%d/%y\00%H:%M:%S\00NSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE\00NSt3__220__time_get_c_storageIwEE\00NSt3__28time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE\00NSt3__210__time_putE\00NSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE\00NSt3__210moneypunctIcLb0EEE\00NSt3__210money_baseE\00NSt3__210moneypunctIcLb1EEE\00NSt3__210moneypunctIwLb0EEE\00NSt3__210moneypunctIwLb1EEE\00NSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEE\00NSt3__211__money_getIcEE\000123456789\00%Lf\00NSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEE\00NSt3__211__money_getIwEE\000123456789\00NSt3__29money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEE\00NSt3__211__money_putIcEE\00%.0Lf\00NSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEE\00NSt3__211__money_putIwEE\00NSt3__28messagesIcEE\00NSt3__213messages_baseE\00NSt3__28messagesIwEE\00NSt3__216__narrow_to_utf8ILj32EEE\00NSt3__27codecvtIDic11__mbstate_tEE\00NSt3__212codecvt_baseE\00NSt3__217__widen_from_utf8ILj32EEE\00NSt3__27codecvtIcc11__mbstate_tEE\00NSt3__27codecvtIwc11__mbstate_tEE\00NSt3__27codecvtIDsc11__mbstate_tEE\00NSt3__26locale5__impE\00NSt3__25ctypeIcEE\00NSt3__210ctype_baseE\00NSt3__25ctypeIwEE\00NSt3__28numpunctIcEE\00true\00false\00NSt3__28numpunctIwEE\00!\"vector length_error\"\00C:\\Program Files\\Emscripten\\emscripten\\incoming\\system\\include\\libcxx\\vector\00NSt3__214__shared_countE\00!\"basic_string length_error\"\00C:\\Program Files\\Emscripten\\emscripten\\incoming\\system\\include\\libcxx\\string\00__throw_length_error\00!\"allocator::allocate::bad_alloc\"\00C:\\Program Files\\Emscripten\\emscripten\\incoming\\system\\include\\libcxx\\memory\00allocate\00cannot zero out thread value for __cxa_get_globals()\00cannot create pthread key for __cxa_get_globals()\00pthread_once failure in __cxa_get_globals_fast()\00N10__cxxabiv120__si_class_type_infoE\00N10__cxxabiv116__shim_type_infoE\00St9type_info\00N10__cxxabiv117__class_type_infoE\00St9exception\00uncaught\00terminating with %s exception of type %s: %s\00terminating with %s exception of type %s\00terminating with %s foreign exception\00terminating\00terminate_handler unexpectedly returned\00St9bad_alloc\00std::bad_alloc\00N10__cxxabiv119__pointer_type_infoE\00N10__cxxabiv117__pbase_type_infoE\00N10__cxxabiv121__vmi_class_type_infoE") - (export "_main" (func $_main)) - (export "___udivdi3" (func $___udivdi3)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "_fflush" (func $_fflush)) - (export "___cxa_is_pointer_type" (func $___cxa_is_pointer_type)) - (export "_memset" (func $_memset)) - (export "_memcpy" (func $_memcpy)) - (export "___muldi3" (func $___muldi3)) - (export "___uremdi3" (func $___uremdi3)) - (export "_i64Subtract" (func $_i64Subtract)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (export "_i64Add" (func $_i64Add)) - (export "_pthread_self" (func $_pthread_self)) - (export "_pthread_mutex_unlock" (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv)) - (export "_pthread_cond_broadcast" (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv)) - (export "___errno_location" (func $___errno_location)) - (export "___muldsi3" (func $___muldsi3)) - (export "___cxa_can_catch" (func $___cxa_can_catch)) - (export "_free" (func $_free)) - (export "_memmove" (func $_memmove)) - (export "_malloc" (func $_malloc)) - (export "_pthread_mutex_lock" (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv)) - (export "__GLOBAL__I_000101" (func $__GLOBAL__I_000101)) - (export "__GLOBAL__sub_I_iostream_cpp" (func $runPostSets)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_iiiiiiii" (func $dynCall_iiiiiiii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_viiiii" (func $dynCall_viiiii)) - (export "dynCall_iiiiiid" (func $dynCall_iiiiiid)) - (export "dynCall_vi" (func $dynCall_vi)) - (export "dynCall_vii" (func $dynCall_vii)) - (export "dynCall_iiiiiii" (func $dynCall_iiiiiii)) - (export "dynCall_iiiiid" (func $dynCall_iiiiid)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_viii" (func $dynCall_viii)) - (export "dynCall_v" (func $dynCall_v)) - (export "dynCall_iiiiiiiii" (func $dynCall_iiiiiiiii)) - (export "dynCall_iiiii" (func $dynCall_iiiii)) - (export "dynCall_viiiiii" (func $dynCall_viiiiii)) - (export "dynCall_iii" (func $dynCall_iii)) - (export "dynCall_iiiiii" (func $dynCall_iiiiii)) - (export "dynCall_viiii" (func $dynCall_viiii)) - (func $___floatscan (param $0 i32) (param $1 i32) (param $2 i32) (result f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 f64) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 f64) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 f64) - (local $27 i32) - (local $28 i32) - (local $29 f64) - (local $30 f64) - (set_local $24 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 512) - ) - ) - (set_local $12 - (get_local $24) - ) - (block $label$break$L4 - (block $__rjti$13 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-case1 $switch-default - (get_local $1) - ) - ) - (set_local $18 - (i32.const 24) - ) - (set_local $21 - (i32.const -149) - ) - (br $__rjti$13) - ) - (set_local $18 - (i32.const 53) - ) - (set_local $21 - (i32.const -1074) - ) - (br $__rjti$13) - ) - (set_local $18 - (i32.const 53) - ) - (set_local $21 - (i32.const -1074) - ) - (br $__rjti$13) - ) - (set_local $7 - (f64.const 0) - ) - (br $label$break$L4) - ) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 100) - ) - ) - (loop $do-in - (br_if $do-in - (call $_isspace - (tee_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - ) - ) - ) - (block $label$break$L13 - (block $switch-default6 - (block $switch-case4 - (br_table $switch-case4 $switch-default6 $switch-case4 $switch-default6 - (i32.sub - (get_local $1) - (i32.const 43) - ) - ) - ) - (set_local $17 - (i32.sub - (i32.const 1) - (i32.shl - (i32.eq - (get_local $1) - (i32.const 45) - ) - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $1 - (i32.load8_u - (get_local $1) - ) - ) - (br $label$break$L13) - ) - (block - (set_local $1 - (call $___shgetc - (get_local $0) - ) - ) - (br $label$break$L13) - ) - ) - ) - (set_local $17 - (i32.const 1) - ) - ) - (set_local $4 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (if - (i32.ne - (i32.or - (get_local $1) - (i32.const 32) - ) - (i32.load8_s - (i32.add - (get_local $4) - (i32.const 13217) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $4) - ) - (br $while-out) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 7) - ) - (set_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - ) - (br_if $while-in - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.const 8) - ) - ) - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $4) - ) - ) - ) - (block $__rjto$12 - (block $__rjti$12 - (block $switch-default76 - (block $switch-case11 - (block $switch-case10 - (br_table $switch-case11 $switch-default76 $switch-default76 $switch-default76 $switch-default76 $switch-case10 $switch-default76 - (i32.sub - (get_local $1) - (i32.const 3) - ) - ) - ) - (br $__rjto$12) - ) - (br $__rjti$12) - ) - (if - (i32.and - (tee_local $5 - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (i32.gt_u - (get_local $1) - (i32.const 3) - ) - ) - (if - (i32.eq - (get_local $1) - (i32.const 8) - ) - (br $__rjto$12) - (br $__rjti$12) - ) - ) - (block $label$break$L34 - (if - (i32.eqz - (get_local $1) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $4 - (i32.const 0) - ) - (loop $while-in14 - (if - (i32.ne - (i32.or - (get_local $1) - (i32.const 32) - ) - (i32.load8_s - (i32.add - (get_local $4) - (i32.const 13226) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $4) - ) - (br $label$break$L34) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 2) - ) - (set_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - ) - (br_if $while-in14 - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.const 3) - ) - ) - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $4) - ) - ) - ) - ) - ) - (block $switch-default75 - (block $switch-case74 - (block $switch-case22 - (br_table $switch-case74 $switch-default75 $switch-default75 $switch-case22 $switch-default75 - (get_local $1) - ) - ) - (if - (i32.eq - (tee_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 40) - ) - (set_local $2 - (i32.const 1) - ) - (block - (if - (i32.eqz - (i32.load - (get_local $11) - ) - ) - (block - (set_local $7 - (get_global $nan) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - (set_local $7 - (get_global $nan) - ) - (br $label$break$L4) - ) - ) - (loop $while-in19 - (block $while-out18 - (if - (i32.eqz - (i32.or - (i32.lt_u - (i32.add - (tee_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const -48) - ) - (i32.const 10) - ) - (i32.lt_u - (i32.add - (get_local $1) - (i32.const -65) - ) - (i32.const 26) - ) - ) - ) - (if - (i32.eqz - (i32.or - (i32.eq - (get_local $1) - (i32.const 95) - ) - (i32.lt_u - (i32.add - (get_local $1) - (i32.const -97) - ) - (i32.const 26) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $2) - ) - (br $while-out18) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in19) - ) - ) - (if - (i32.eq - (get_local $3) - (i32.const 41) - ) - (block - (set_local $7 - (get_global $nan) - ) - (br $label$break$L4) - ) - ) - (if - (i32.eqz - (tee_local $2 - (i32.eqz - (i32.load - (get_local $11) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eqz - (get_local $5) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 22) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - (br $label$break$L4) - ) - ) - (if - (i32.eqz - (get_local $1) - ) - (block - (set_local $7 - (get_global $nan) - ) - (br $label$break$L4) - ) - ) - (loop $while-in21 - (set_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (if - (i32.eqz - (get_local $2) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - ) - (br_if $while-in21 - (get_local $1) - ) - (set_local $7 - (get_global $nan) - ) - (br $label$break$L4) - ) - ) - (block $do-once23 - (if - (i32.eq - (get_local $3) - (i32.const 48) - ) - (block - (if - (i32.ne - (i32.or - (tee_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 32) - ) - (i32.const 120) - ) - (block - (if - (i32.eqz - (i32.load - (get_local $11) - ) - ) - (block - (set_local $1 - (i32.const 48) - ) - (br $do-once23) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - (set_local $1 - (i32.const 48) - ) - (br $do-once23) - ) - ) - (set_local $3 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $10 - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 0) - ) - (block i32 - (set_local $10 - (call $___shgetc - (get_local $0) - ) - ) - (i32.const 0) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $label$continue$L94 - (block $label$break$L94 - (block $switch25 - (block $switch-default28 - (block $switch-case27 - (block $switch-case26 - (br_table $switch-case26 $switch-default28 $switch-case27 $switch-default28 - (i32.sub - (get_local $10) - (i32.const 46) - ) - ) - ) - (br $__rjti$1) - ) - (br $switch25) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $16 - (i32.const 0) - ) - (set_local $15 - (i32.const 0) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $13 - (f64.const 1) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - (br $label$break$L94) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $10 - (i32.load8_u - (get_local $1) - ) - ) - (set_local $3 - (i32.const 1) - ) - (br $label$continue$L94) - ) - (block - (set_local $10 - (call $___shgetc - (get_local $0) - ) - ) - (set_local $3 - (i32.const 1) - ) - (br $label$continue$L94) - ) - ) - ) - ) - (br $__rjto$1) - ) - (if - (i32.eq - (tee_local $10 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 48) - ) - (block - (set_local $8 - (i32.const 0) - ) - (set_local $16 - (i32.const 0) - ) - (loop $while-in30 - (set_local $10 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (set_local $8 - (call $_i64Add - (get_local $8) - (get_local $16) - (i32.const -1) - (i32.const -1) - ) - ) - (set_local $16 - (get_global $tempRet0) - ) - (br_if $while-in30 - (i32.eq - (get_local $10) - (i32.const 48) - ) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $3 - (i32.const 1) - ) - (set_local $15 - (i32.const 1) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $13 - (f64.const 1) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - ) - ) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $16 - (i32.const 0) - ) - (set_local $15 - (i32.const 1) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $13 - (f64.const 1) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - ) - ) - ) - (loop $while-in32 - (block $while-out31 - (set_local $19 - (i32.or - (get_local $10) - (i32.const 32) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.lt_u - (tee_local $14 - (i32.add - (get_local $10) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (br_if $while-out31 - (i32.eqz - (i32.or - (tee_local $22 - (i32.eq - (get_local $10) - (i32.const 46) - ) - ) - (i32.lt_u - (i32.add - (get_local $19) - (i32.const -97) - ) - (i32.const 6) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (get_local $22) - ) - ) - (if - (get_local $15) - (block - (set_local $10 - (i32.const 46) - ) - (br $while-out31) - ) - (block - (set_local $8 - (get_local $5) - ) - (set_local $16 - (get_local $4) - ) - (set_local $15 - (i32.const 1) - ) - ) - ) - (br $__rjto$0) - ) - (set_local $3 - (if i32 - (i32.gt_s - (get_local $10) - (i32.const 57) - ) - (i32.add - (get_local $19) - (i32.const -87) - ) - (get_local $14) - ) - ) - (block $do-once33 - (set_local $20 - (if f64 - (i32.or - (i32.lt_s - (get_local $4) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $4) - ) - (i32.lt_u - (get_local $5) - (i32.const 8) - ) - ) - ) - (block f64 - (set_local $1 - (i32.add - (get_local $3) - (i32.shl - (get_local $1) - (i32.const 4) - ) - ) - ) - (get_local $13) - ) - (block f64 - (if - (i32.or - (i32.lt_s - (get_local $4) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $4) - ) - (i32.lt_u - (get_local $5) - (i32.const 14) - ) - ) - ) - (block - (set_local $20 - (tee_local $13 - (f64.mul - (get_local $13) - (f64.const 0.0625) - ) - ) - ) - (set_local $7 - (f64.add - (get_local $7) - (f64.mul - (get_local $13) - (f64.convert_s/i32 - (get_local $3) - ) - ) - ) - ) - (br $do-once33) - ) - ) - (if f64 - (i32.or - (get_local $9) - (i32.eqz - (get_local $3) - ) - ) - (get_local $13) - (block f64 - (set_local $9 - (i32.const 1) - ) - (set_local $7 - (f64.add - (get_local $7) - (f64.mul - (get_local $13) - (f64.const 0.5) - ) - ) - ) - (get_local $13) - ) - ) - ) - ) - ) - ) - (set_local $5 - (call $_i64Add - (get_local $5) - (get_local $4) - (i32.const 1) - (i32.const 0) - ) - ) - (set_local $4 - (get_global $tempRet0) - ) - (set_local $3 - (i32.const 1) - ) - (set_local $13 - (get_local $20) - ) - ) - (if - (i32.lt_u - (tee_local $10 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block - (i32.store - (get_local $6) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (set_local $10 - (i32.load8_u - (get_local $10) - ) - ) - (br $while-in32) - ) - (block - (set_local $10 - (call $___shgetc - (get_local $0) - ) - ) - (br $while-in32) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $3) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.eqz - (i32.load - (get_local $11) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - ) - (if - (get_local $2) - (if - (i32.eqz - (get_local $1) - ) - (block - (i32.store - (get_local $6) - (i32.add - (tee_local $0 - (i32.load - (get_local $6) - ) - ) - (i32.const -1) - ) - ) - (if - (get_local $15) - (i32.store - (get_local $6) - (i32.add - (get_local $0) - (i32.const -2) - ) - ) - ) - ) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - ) - (set_local $7 - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.const 0) - ) - ) - (br $label$break$L4) - ) - ) - (if - (i32.or - (i32.lt_s - (get_local $4) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $4) - ) - (i32.lt_u - (get_local $5) - (i32.const 8) - ) - ) - ) - (block - (set_local $3 - (get_local $5) - ) - (set_local $9 - (get_local $4) - ) - (loop $while-in36 - (set_local $1 - (i32.shl - (get_local $1) - (i32.const 4) - ) - ) - (set_local $3 - (call $_i64Add - (get_local $3) - (get_local $9) - (i32.const 1) - (i32.const 0) - ) - ) - (br_if $while-in36 - (i32.or - (i32.lt_s - (tee_local $9 - (get_global $tempRet0) - ) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $9) - ) - (i32.lt_u - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (i32.or - (get_local $10) - (i32.const 32) - ) - (i32.const 112) - ) - (if i32 - (i32.and - (i32.eqz - (tee_local $3 - (call $_scanexp - (get_local $0) - (get_local $2) - ) - ) - ) - (i32.eq - (tee_local $9 - (get_global $tempRet0) - ) - (i32.const -2147483648) - ) - ) - (block i32 - (if - (i32.eqz - (get_local $2) - ) - (block - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - (br $label$break$L4) - ) - ) - (if i32 - (i32.load - (get_local $11) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - (set_local $2 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $2 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (block i32 - (set_local $2 - (get_local $9) - ) - (get_local $3) - ) - ) - (if i32 - (i32.load - (get_local $11) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - (set_local $2 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $2 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (call $_i64Add - (call $_i64Add - (call $_bitshift64Shl - (if i32 - (tee_local $3 - (i32.eqz - (get_local $15) - ) - ) - (get_local $5) - (get_local $8) - ) - (if i32 - (get_local $3) - (get_local $4) - (get_local $16) - ) - (i32.const 2) - ) - (get_global $tempRet0) - (i32.const -32) - (i32.const -1) - ) - (get_global $tempRet0) - (get_local $0) - (get_local $2) - ) - ) - (if - (i32.eqz - (get_local $1) - ) - (block - (set_local $7 - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.const 0) - ) - ) - (br $label$break$L4) - ) - ) - (if - (i32.or - (i32.gt_s - (tee_local $2 - (get_global $tempRet0) - ) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $2) - ) - (i32.gt_u - (get_local $0) - (i32.sub - (i32.const 0) - (get_local $21) - ) - ) - ) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 34) - ) - (set_local $7 - (f64.mul - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.const 1797693134862315708145274e284) - ) - (f64.const 1797693134862315708145274e284) - ) - ) - (br $label$break$L4) - ) - ) - (if - (i32.or - (i32.lt_s - (get_local $2) - (tee_local $4 - (i32.shr_s - (i32.shl - (i32.lt_s - (tee_local $3 - (i32.add - (get_local $21) - (i32.const -106) - ) - ) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.and - (i32.eq - (get_local $2) - (get_local $4) - ) - (i32.lt_u - (get_local $0) - (get_local $3) - ) - ) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 34) - ) - (set_local $7 - (f64.mul - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.const 2.2250738585072014e-308) - ) - (f64.const 2.2250738585072014e-308) - ) - ) - (br $label$break$L4) - ) - ) - (if - (i32.gt_s - (get_local $1) - (i32.const -1) - ) - (loop $while-in38 - (set_local $1 - (i32.xor - (tee_local $4 - (i32.or - (tee_local $3 - (i32.eqz - (f64.ge - (get_local $7) - (f64.const 0.5) - ) - ) - ) - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (i32.const 1) - ) - ) - (set_local $7 - (f64.add - (get_local $7) - (if f64 - (get_local $3) - (get_local $7) - (f64.add - (get_local $7) - (f64.const -1) - ) - ) - ) - ) - (set_local $0 - (call $_i64Add - (get_local $0) - (get_local $2) - (i32.const -1) - (i32.const -1) - ) - ) - (set_local $2 - (get_global $tempRet0) - ) - (br_if $while-in38 - (i32.gt_s - (get_local $4) - (i32.const -1) - ) - ) - (set_local $3 - (get_local $0) - ) - ) - (set_local $3 - (get_local $0) - ) - ) - (set_local $0 - (call $_i64Add - (get_local $3) - (get_local $2) - (call $_i64Subtract - (i32.const 32) - (i32.const 0) - (get_local $21) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $21) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (get_global $tempRet0) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (if - (i32.or - (i32.gt_s - (i32.const 0) - (tee_local $2 - (get_global $tempRet0) - ) - ) - (i32.and - (i32.eqz - (get_local $2) - ) - (i32.gt_u - (get_local $18) - (get_local $0) - ) - ) - ) - (if - (i32.lt_s - (get_local $0) - (i32.const 0) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - (set_local $0 - (get_local $18) - ) - ) - (br_if $__rjti$3 - (i32.lt_s - (get_local $0) - (i32.const 53) - ) - ) - (set_local $2 - (get_local $0) - ) - (set_local $13 - (f64.convert_s/i32 - (get_local $17) - ) - ) - (set_local $20 - (f64.const 0) - ) - (br $__rjto$3) - ) - (set_local $2 - (get_local $0) - ) - (set_local $13 - (tee_local $20 - (f64.convert_s/i32 - (get_local $17) - ) - ) - ) - (set_local $20 - (call $_copysignl - (call $_scalbn - (f64.const 1) - (i32.sub - (i32.const 84) - (get_local $0) - ) - ) - (get_local $20) - ) - ) - ) - (if - (f64.eq - (tee_local $7 - (f64.sub - (f64.add - (f64.mul - (get_local $13) - (if f64 - (tee_local $0 - (i32.and - (i32.eqz - (i32.and - (get_local $1) - (i32.const 1) - ) - ) - (i32.and - (f64.ne - (get_local $7) - (f64.const 0) - ) - (i32.lt_s - (get_local $2) - (i32.const 32) - ) - ) - ) - ) - (f64.const 0) - (get_local $7) - ) - ) - (f64.add - (get_local $20) - (f64.mul - (get_local $13) - (f64.convert_u/i32 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - ) - ) - ) - (get_local $20) - ) - ) - (f64.const 0) - ) - (i32.store - (call $___errno_location) - (i32.const 34) - ) - ) - (set_local $7 - (call $_scalbnl - (get_local $7) - (get_local $3) - ) - ) - (br $label$break$L4) - ) - (set_local $1 - (get_local $3) - ) - ) - ) - (set_local $28 - (i32.sub - (i32.const 0) - (tee_local $27 - (i32.add - (get_local $21) - (get_local $18) - ) - ) - ) - ) - (set_local $4 - (i32.const 0) - ) - (block $__rjto$6 - (block $__rjti$6 - (loop $label$continue$L184 - (block $label$break$L184 - (block $switch39 - (block $switch-default42 - (block $switch-case41 - (block $switch-case40 - (br_table $switch-case40 $switch-default42 $switch-case41 $switch-default42 - (i32.sub - (get_local $1) - (i32.const 46) - ) - ) - ) - (br $__rjti$6) - ) - (br $switch39) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $10 - (i32.const 0) - ) - (br $label$break$L184) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $1 - (i32.load8_u - (get_local $1) - ) - ) - (set_local $4 - (i32.const 1) - ) - (br $label$continue$L184) - ) - (block - (set_local $1 - (call $___shgetc - (get_local $0) - ) - ) - (set_local $4 - (i32.const 1) - ) - (br $label$continue$L184) - ) - ) - ) - ) - (br $__rjto$6) - ) - (if - (i32.eq - (tee_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 48) - ) - (block - (set_local $3 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (loop $while-in44 - (set_local $3 - (call $_i64Add - (get_local $3) - (get_local $8) - (i32.const -1) - (i32.const -1) - ) - ) - (set_local $8 - (get_global $tempRet0) - ) - (br_if $while-in44 - (i32.eq - (tee_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 48) - ) - ) - (set_local $4 - (i32.const 1) - ) - (set_local $10 - (i32.const 1) - ) - ) - ) - (block - (set_local $3 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $10 - (i32.const 1) - ) - ) - ) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (block $do-once50 - (block $__rjti$11 - (block $__rjti$10 - (block $__rjti$9 - (block $__rjti$8 - (block $__rjti$7 - (if - (i32.or - (tee_local $23 - (i32.eq - (get_local $1) - (i32.const 46) - ) - ) - (i32.lt_u - (tee_local $22 - (i32.add - (get_local $1) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (block - (set_local $25 - (i32.add - (get_local $12) - (i32.const 496) - ) - ) - (set_local $19 - (get_local $1) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $1 - (get_local $3) - ) - (set_local $3 - (get_local $8) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $15 - (i32.const 0) - ) - (set_local $16 - (i32.const 0) - ) - (loop $label$continue$L205 - (block $label$break$L205 - (block $do-once46 - (if - (get_local $23) - (if - (get_local $10) - (br $label$break$L205) - (block - (set_local $1 - (get_local $5) - ) - (set_local $3 - (get_local $9) - ) - (set_local $10 - (i32.const 1) - ) - ) - ) - (block - (set_local $14 - (call $_i64Add - (get_local $5) - (get_local $9) - (i32.const 1) - (i32.const 0) - ) - ) - (set_local $9 - (get_global $tempRet0) - ) - (set_local $23 - (i32.ne - (get_local $19) - (i32.const 48) - ) - ) - (if - (i32.ge_s - (get_local $15) - (i32.const 125) - ) - (block - (if - (i32.eqz - (get_local $23) - ) - (block - (set_local $5 - (get_local $14) - ) - (br $do-once46) - ) - ) - (i32.store - (get_local $25) - (i32.or - (i32.load - (get_local $25) - ) - (i32.const 1) - ) - ) - (set_local $5 - (get_local $14) - ) - (br $do-once46) - ) - ) - (set_local $4 - (i32.add - (get_local $12) - (i32.shl - (get_local $15) - (i32.const 2) - ) - ) - ) - (if - (get_local $8) - (set_local $22 - (i32.add - (i32.add - (get_local $19) - (i32.const -48) - ) - (i32.mul - (i32.load - (get_local $4) - ) - (i32.const 10) - ) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $22) - ) - (set_local $5 - (get_local $14) - ) - (set_local $4 - (i32.const 1) - ) - (if - (tee_local $19 - (i32.eq - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (i32.const 9) - ) - ) - (set_local $8 - (i32.const 0) - ) - ) - (set_local $15 - (i32.add - (get_local $19) - (get_local $15) - ) - ) - (if - (get_local $23) - (set_local $16 - (get_local $14) - ) - ) - ) - ) - ) - (if - (i32.or - (tee_local $23 - (i32.eq - (tee_local $14 - (if i32 - (i32.lt_u - (tee_local $14 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $11) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (get_local $14) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $14) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 46) - ) - ) - (i32.lt_u - (tee_local $22 - (i32.add - (get_local $14) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (block - (set_local $19 - (get_local $14) - ) - (br $label$continue$L205) - ) - (block - (set_local $19 - (get_local $1) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $4) - ) - (set_local $1 - (get_local $8) - ) - (br $__rjti$7) - ) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $4 - (i32.ne - (get_local $4) - (i32.const 0) - ) - ) - (set_local $1 - (get_local $8) - ) - (br $__rjti$8) - ) - (block - (set_local $14 - (get_local $1) - ) - (set_local $19 - (get_local $3) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $22 - (get_local $8) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $23 - (get_local $4) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $15 - (i32.const 0) - ) - (set_local $16 - (i32.const 0) - ) - ) - ) - ) - (set_local $3 - (if i32 - (tee_local $4 - (i32.eqz - (get_local $10) - ) - ) - (get_local $5) - (get_local $19) - ) - ) - (set_local $4 - (if i32 - (get_local $4) - (get_local $9) - (get_local $22) - ) - ) - (if - (i32.eqz - (i32.and - (i32.eq - (i32.or - (get_local $14) - (i32.const 32) - ) - (i32.const 101) - ) - (tee_local $8 - (i32.ne - (get_local $23) - (i32.const 0) - ) - ) - ) - ) - (if - (i32.gt_s - (get_local $14) - (i32.const -1) - ) - (block - (set_local $2 - (get_local $3) - ) - (set_local $3 - (get_local $4) - ) - (set_local $4 - (get_local $8) - ) - (br $__rjti$8) - ) - (block - (set_local $2 - (get_local $3) - ) - (set_local $3 - (get_local $4) - ) - (br $__rjti$9) - ) - ) - ) - (set_local $0 - (call $_i64Add - (tee_local $0 - (if i32 - (i32.and - (i32.eqz - (tee_local $8 - (call $_scanexp - (get_local $0) - (get_local $2) - ) - ) - ) - (i32.eq - (tee_local $10 - (get_global $tempRet0) - ) - (i32.const -2147483648) - ) - ) - (block i32 - (if - (i32.eqz - (get_local $2) - ) - (block - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - (br $do-once50) - ) - ) - (if i32 - (i32.load - (get_local $11) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - (set_local $2 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $2 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (block i32 - (set_local $2 - (get_local $10) - ) - (get_local $8) - ) - ) - ) - (get_local $2) - (get_local $3) - (get_local $4) - ) - ) - (set_local $3 - (get_global $tempRet0) - ) - (set_local $2 - (get_local $15) - ) - (br $__rjti$11) - ) - (if - (i32.load - (get_local $11) - ) - (block - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - (br_if $__rjti$10 - (i32.eqz - (get_local $4) - ) - ) - (set_local $0 - (get_local $2) - ) - (set_local $2 - (get_local $15) - ) - (br $__rjti$11) - ) - (block - (set_local $8 - (get_local $4) - ) - (br $__rjti$9) - ) - ) - (br $do-once50) - ) - (br_if $__rjti$10 - (i32.eqz - (get_local $8) - ) - ) - (set_local $0 - (get_local $2) - ) - (set_local $2 - (get_local $15) - ) - (br $__rjti$11) - ) - (i32.store - (call $___errno_location) - (i32.const 22) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - (br $do-once50) - ) - (if - (i32.eqz - (tee_local $4 - (i32.load - (get_local $12) - ) - ) - ) - (block - (set_local $7 - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.const 0) - ) - ) - (br $do-once50) - ) - ) - (if - (i32.and - (i32.or - (i32.lt_s - (get_local $9) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $9) - ) - (i32.lt_u - (get_local $5) - (i32.const 10) - ) - ) - ) - (i32.and - (i32.eq - (get_local $0) - (get_local $5) - ) - (i32.eq - (get_local $3) - (get_local $9) - ) - ) - ) - (if - (i32.or - (i32.gt_u - (get_local $18) - (i32.const 30) - ) - (i32.eqz - (i32.shr_u - (get_local $4) - (get_local $18) - ) - ) - ) - (block - (set_local $7 - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.convert_u/i32 - (get_local $4) - ) - ) - ) - (br $do-once50) - ) - ) - ) - (if - (i32.or - (i32.gt_s - (get_local $3) - (tee_local $5 - (i32.shr_s - (i32.shl - (i32.lt_s - (tee_local $4 - (i32.div_s - (get_local $21) - (i32.const -2) - ) - ) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.and - (i32.eq - (get_local $3) - (get_local $5) - ) - (i32.gt_u - (get_local $0) - (get_local $4) - ) - ) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 34) - ) - (set_local $7 - (f64.mul - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.const 1797693134862315708145274e284) - ) - (f64.const 1797693134862315708145274e284) - ) - ) - (br $do-once50) - ) - ) - (if - (i32.or - (i32.lt_s - (get_local $3) - (tee_local $5 - (i32.shr_s - (i32.shl - (i32.lt_s - (tee_local $4 - (i32.add - (get_local $21) - (i32.const -106) - ) - ) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.and - (i32.eq - (get_local $3) - (get_local $5) - ) - (i32.lt_u - (get_local $0) - (get_local $4) - ) - ) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 34) - ) - (set_local $7 - (f64.mul - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.const 2.2250738585072014e-308) - ) - (f64.const 2.2250738585072014e-308) - ) - ) - (br $do-once50) - ) - ) - (if - (get_local $1) - (block - (if - (i32.lt_s - (get_local $1) - (i32.const 9) - ) - (block - (set_local $3 - (i32.load - (tee_local $5 - (i32.add - (get_local $12) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - ) - (set_local $4 - (get_local $1) - ) - (loop $while-in53 - (set_local $1 - (i32.mul - (get_local $3) - (i32.const 10) - ) - ) - (if - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.const 9) - ) - (block - (set_local $3 - (get_local $1) - ) - (br $while-in53) - ) - ) - ) - (i32.store - (get_local $5) - (get_local $1) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - (if - (i32.lt_s - (get_local $16) - (i32.const 9) - ) - (if - (i32.and - (i32.le_s - (get_local $16) - (get_local $0) - ) - (i32.lt_s - (get_local $0) - (i32.const 18) - ) - ) - (block - (if - (i32.eq - (get_local $0) - (i32.const 9) - ) - (block - (set_local $7 - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.convert_u/i32 - (i32.load - (get_local $12) - ) - ) - ) - ) - (br $do-once50) - ) - ) - (if - (i32.lt_s - (get_local $0) - (i32.const 9) - ) - (block - (set_local $7 - (f64.div - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.convert_u/i32 - (i32.load - (get_local $12) - ) - ) - ) - (f64.convert_s/i32 - (i32.load - (i32.add - (i32.shl - (i32.sub - (i32.const 0) - (get_local $0) - ) - (i32.const 2) - ) - (i32.const 6280) - ) - ) - ) - ) - ) - (br $do-once50) - ) - ) - (if - (i32.or - (i32.gt_s - (tee_local $1 - (i32.add - (i32.add - (get_local $18) - (i32.const 27) - ) - (i32.mul - (get_local $0) - (i32.const -3) - ) - ) - ) - (i32.const 30) - ) - (i32.eqz - (i32.shr_u - (tee_local $3 - (i32.load - (get_local $12) - ) - ) - (get_local $1) - ) - ) - ) - (block - (set_local $7 - (f64.mul - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (f64.convert_u/i32 - (get_local $3) - ) - ) - (f64.convert_s/i32 - (i32.load - (i32.add - (i32.shl - (get_local $0) - (i32.const 2) - ) - (i32.const 6208) - ) - ) - ) - ) - ) - (br $do-once50) - ) - ) - ) - ) - ) - (set_local $0 - (if i32 - (tee_local $1 - (i32.rem_s - (get_local $0) - (i32.const 9) - ) - ) - (block i32 - (set_local $9 - (i32.load - (i32.add - (i32.shl - (i32.sub - (i32.const 0) - (tee_local $4 - (if i32 - (i32.gt_s - (get_local $0) - (i32.const -1) - ) - (get_local $1) - (i32.add - (get_local $1) - (i32.const 9) - ) - ) - ) - ) - (i32.const 2) - ) - (i32.const 6280) - ) - ) - ) - (if - (get_local $2) - (block - (set_local $16 - (i32.div_s - (i32.const 1000000000) - (get_local $9) - ) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (loop $while-in55 - (set_local $8 - (i32.add - (i32.div_u - (tee_local $10 - (i32.load - (tee_local $15 - (i32.add - (get_local $12) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - ) - ) - (get_local $9) - ) - (get_local $3) - ) - ) - (i32.store - (get_local $15) - (get_local $8) - ) - (set_local $3 - (i32.mul - (i32.rem_u - (get_local $10) - (get_local $9) - ) - (get_local $16) - ) - ) - (set_local $8 - (i32.and - (i32.eq - (get_local $5) - (get_local $1) - ) - (i32.eqz - (get_local $8) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (if - (get_local $8) - (set_local $0 - (i32.add - (get_local $0) - (i32.const -9) - ) - ) - ) - (if - (get_local $8) - (set_local $1 - (i32.and - (get_local $5) - (i32.const 127) - ) - ) - ) - (br_if $while-in55 - (i32.ne - (get_local $5) - (get_local $2) - ) - ) - ) - (if - (get_local $3) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (get_local $3) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - ) - (block - (set_local $1 - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - ) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $4 - (i32.add - (i32.sub - (i32.const 9) - (get_local $4) - ) - (get_local $0) - ) - ) - (get_local $2) - ) - (block i32 - (set_local $1 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $4 - (get_local $0) - ) - (get_local $2) - ) - ) - ) - (loop $label$continue$L284 - (block $label$break$L284 - (set_local $16 - (i32.lt_s - (get_local $4) - (i32.const 18) - ) - ) - (set_local $15 - (i32.eq - (get_local $4) - (i32.const 18) - ) - ) - (set_local $10 - (i32.add - (get_local $12) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - (loop $while-in57 - (if - (i32.eqz - (get_local $16) - ) - (block - (if - (i32.eqz - (get_local $15) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $label$break$L284) - ) - ) - (if - (i32.ge_u - (i32.load - (get_local $10) - ) - (i32.const 9007199) - ) - (block - (set_local $3 - (i32.const 18) - ) - (br $label$break$L284) - ) - ) - ) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 127) - ) - ) - (loop $while-in59 - (set_local $3 - (call $_i64Add - (call $_bitshift64Shl - (i32.load - (tee_local $14 - (i32.add - (get_local $12) - (i32.shl - (tee_local $8 - (i32.and - (get_local $5) - (i32.const 127) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 0) - (i32.const 29) - ) - (get_global $tempRet0) - (get_local $3) - (i32.const 0) - ) - ) - (set_local $3 - (if i32 - (i32.or - (i32.gt_u - (tee_local $5 - (get_global $tempRet0) - ) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $5) - ) - (i32.gt_u - (get_local $3) - (i32.const 1000000000) - ) - ) - ) - (block i32 - (set_local $9 - (call $___udivdi3 - (get_local $3) - (get_local $5) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (set_local $5 - (call $___uremdi3 - (get_local $3) - (get_local $5) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (get_local $9) - ) - (block i32 - (set_local $5 - (get_local $3) - ) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $5) - ) - (if - (i32.eqz - (i32.or - (i32.ne - (get_local $8) - (i32.and - (i32.add - (get_local $0) - (i32.const 127) - ) - (i32.const 127) - ) - ) - (tee_local $9 - (i32.eq - (get_local $8) - (get_local $1) - ) - ) - ) - ) - (set_local $0 - (if i32 - (get_local $5) - (get_local $0) - (get_local $8) - ) - ) - ) - (if - (get_local $9) - (set_local $5 - (get_local $3) - ) - (block - (set_local $5 - (i32.add - (get_local $8) - (i32.const -1) - ) - ) - (br $while-in59) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const -29) - ) - ) - (br_if $while-in57 - (i32.eqz - (get_local $5) - ) - ) - (set_local $3 - (get_local $2) - ) - ) - (if - (i32.eq - (tee_local $1 - (i32.and - (i32.add - (get_local $1) - (i32.const 127) - ) - (i32.const 127) - ) - ) - (get_local $0) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $12) - (i32.shl - (i32.and - (i32.add - (get_local $0) - (i32.const 126) - ) - (i32.const 127) - ) - (i32.const 2) - ) - ) - ) - (i32.or - (i32.load - (get_local $2) - ) - (i32.load - (i32.add - (get_local $12) - (i32.shl - (tee_local $0 - (i32.and - (i32.add - (get_local $0) - (i32.const 127) - ) - (i32.const 127) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (get_local $5) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 9) - ) - ) - (br $label$continue$L284) - ) - ) - (block $__rjto$5 - (block $__rjti$5 - (loop $label$continue$L302 - (block $label$break$L302 - (set_local $4 - (i32.and - (i32.add - (get_local $0) - (i32.const 1) - ) - (i32.const 127) - ) - ) - (set_local $15 - (i32.add - (get_local $12) - (i32.shl - (i32.and - (i32.add - (get_local $0) - (i32.const 127) - ) - (i32.const 127) - ) - (i32.const 2) - ) - ) - ) - (loop $while-in61 - (set_local $9 - (i32.eq - (get_local $3) - (i32.const 18) - ) - ) - (set_local $16 - (if i32 - (i32.gt_s - (get_local $3) - (i32.const 27) - ) - (i32.const 9) - (i32.const 1) - ) - ) - (set_local $8 - (i32.xor - (get_local $9) - (i32.const 1) - ) - ) - (loop $while-in63 - (block $__rjto$4 - (block $__rjti$4 - (br_if $__rjti$4 - (tee_local $10 - (i32.eq - (tee_local $5 - (i32.and - (get_local $1) - (i32.const 127) - ) - ) - (get_local $0) - ) - ) - ) - (br_if $__rjti$4 - (i32.lt_u - (tee_local $14 - (i32.load - (i32.add - (get_local $12) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - ) - (i32.const 9007199) - ) - ) - (br_if $__rjto$4 - (i32.gt_u - (get_local $14) - (i32.const 9007199) - ) - ) - (br_if $__rjti$4 - (i32.eq - (tee_local $14 - (i32.and - (i32.add - (get_local $1) - (i32.const 1) - ) - (i32.const 127) - ) - ) - (get_local $0) - ) - ) - (br_if $__rjti$4 - (i32.lt_u - (tee_local $14 - (i32.load - (i32.add - (get_local $12) - (i32.shl - (get_local $14) - (i32.const 2) - ) - ) - ) - ) - (i32.const 254740991) - ) - ) - (if - (i32.eqz - (i32.or - (i32.gt_u - (get_local $14) - (i32.const 254740991) - ) - (get_local $8) - ) - ) - (block - (set_local $3 - (get_local $5) - ) - (br $label$break$L302) - ) - ) - (br $__rjto$4) - ) - (br_if $__rjti$5 - (get_local $9) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (get_local $16) - ) - ) - (if - (i32.eq - (get_local $1) - (get_local $0) - ) - (block - (set_local $1 - (get_local $0) - ) - (br $while-in63) - ) - ) - ) - (set_local $10 - (i32.add - (i32.shl - (i32.const 1) - (get_local $16) - ) - (i32.const -1) - ) - ) - (set_local $14 - (i32.shr_u - (i32.const 1000000000) - (get_local $16) - ) - ) - (set_local $5 - (get_local $1) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $8 - (get_local $1) - ) - (loop $while-in67 - (set_local $1 - (i32.add - (i32.shr_u - (tee_local $22 - (i32.load - (tee_local $19 - (i32.add - (get_local $12) - (i32.shl - (get_local $8) - (i32.const 2) - ) - ) - ) - ) - ) - (get_local $16) - ) - (get_local $9) - ) - ) - (i32.store - (get_local $19) - (get_local $1) - ) - (set_local $9 - (i32.mul - (i32.and - (get_local $22) - (get_local $10) - ) - (get_local $14) - ) - ) - (set_local $1 - (i32.and - (i32.eq - (get_local $8) - (get_local $5) - ) - (i32.eqz - (get_local $1) - ) - ) - ) - (set_local $8 - (i32.and - (i32.add - (get_local $8) - (i32.const 1) - ) - (i32.const 127) - ) - ) - (if - (get_local $1) - (set_local $3 - (i32.add - (get_local $3) - (i32.const -9) - ) - ) - ) - (set_local $1 - (if i32 - (get_local $1) - (get_local $8) - (get_local $5) - ) - ) - (if - (i32.ne - (get_local $8) - (get_local $0) - ) - (block - (set_local $5 - (get_local $1) - ) - (br $while-in67) - ) - ) - ) - (br_if $while-in61 - (i32.eqz - (get_local $9) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $1) - ) - (block - (i32.store - (get_local $15) - (i32.or - (i32.load - (get_local $15) - ) - (i32.const 1) - ) - ) - (br $while-in61) - ) - ) - ) - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (get_local $9) - ) - (set_local $0 - (get_local $4) - ) - (br $label$continue$L302) - ) - ) - (br $__rjto$5) - ) - (if - (get_local $10) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (i32.add - (get_local $4) - (i32.const -1) - ) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $3 - (get_local $0) - ) - (set_local $0 - (get_local $4) - ) - ) - (set_local $3 - (get_local $5) - ) - ) - ) - (set_local $7 - (f64.convert_u/i32 - (i32.load - (i32.add - (get_local $12) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $4 - (i32.and - (i32.add - (get_local $1) - (i32.const 1) - ) - (i32.const 127) - ) - ) - (get_local $0) - ) - (i32.store - (i32.add - (get_local $12) - (i32.shl - (i32.add - (tee_local $3 - (i32.and - (i32.add - (get_local $1) - (i32.const 2) - ) - (i32.const 127) - ) - ) - (i32.const -1) - ) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $3 - (get_local $0) - ) - ) - (set_local $13 - (f64.mul - (tee_local $20 - (f64.convert_s/i32 - (get_local $17) - ) - ) - (f64.add - (f64.mul - (get_local $7) - (f64.const 1e9) - ) - (f64.convert_u/i32 - (i32.load - (i32.add - (get_local $12) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_s - (if i32 - (tee_local $4 - (i32.lt_s - (tee_local $5 - (i32.sub - (tee_local $8 - (i32.add - (get_local $2) - (i32.const 53) - ) - ) - (get_local $21) - ) - ) - (get_local $18) - ) - ) - (tee_local $18 - (if i32 - (i32.lt_s - (get_local $5) - (i32.const 0) - ) - (i32.const 0) - (get_local $5) - ) - ) - (get_local $18) - ) - (i32.const 53) - ) - (block - (set_local $26 - (tee_local $29 - (call $_copysignl - (call $_scalbn - (f64.const 1) - (i32.sub - (i32.const 105) - (get_local $18) - ) - ) - (get_local $13) - ) - ) - ) - (set_local $7 - (tee_local $30 - (call $_fmodl - (get_local $13) - (call $_scalbn - (f64.const 1) - (i32.sub - (i32.const 53) - (get_local $18) - ) - ) - ) - ) - ) - (set_local $13 - (f64.add - (get_local $29) - (f64.sub - (get_local $13) - (get_local $30) - ) - ) - ) - ) - (block - (set_local $26 - (f64.const 0) - ) - (set_local $7 - (f64.const 0) - ) - ) - ) - (set_local $0 - (get_local $4) - ) - (block $do-once68 - (if - (i32.ne - (tee_local $9 - (i32.and - (i32.add - (get_local $1) - (i32.const 2) - ) - (i32.const 127) - ) - ) - (get_local $3) - ) - (block - (block $do-once70 - (set_local $7 - (if f64 - (i32.lt_u - (tee_local $9 - (i32.load - (i32.add - (get_local $12) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (i32.const 500000000) - ) - (block f64 - (if - (i32.eqz - (get_local $9) - ) - (br_if $do-once70 - (i32.eq - (i32.and - (i32.add - (get_local $1) - (i32.const 3) - ) - (i32.const 127) - ) - (get_local $3) - ) - ) - ) - (f64.add - (f64.mul - (get_local $20) - (f64.const 0.25) - ) - (get_local $7) - ) - ) - (block f64 - (if - (i32.gt_u - (get_local $9) - (i32.const 500000000) - ) - (block - (set_local $7 - (f64.add - (f64.mul - (get_local $20) - (f64.const 0.75) - ) - (get_local $7) - ) - ) - (br $do-once70) - ) - ) - (if f64 - (i32.eq - (i32.and - (i32.add - (get_local $1) - (i32.const 3) - ) - (i32.const 127) - ) - (get_local $3) - ) - (f64.add - (f64.mul - (get_local $20) - (f64.const 0.5) - ) - (get_local $7) - ) - (f64.add - (f64.mul - (get_local $20) - (f64.const 0.75) - ) - (get_local $7) - ) - ) - ) - ) - ) - ) - (br_if $do-once68 - (i32.le_s - (i32.sub - (i32.const 53) - (get_local $18) - ) - (i32.const 1) - ) - ) - (br_if $do-once68 - (f64.ne - (call $_fmodl - (get_local $7) - (f64.const 1) - ) - (f64.const 0) - ) - ) - (set_local $7 - (f64.add - (get_local $7) - (f64.const 1) - ) - ) - ) - ) - ) - (set_local $13 - (f64.sub - (f64.add - (get_local $13) - (get_local $7) - ) - (get_local $26) - ) - ) - (block $do-once72 - (if - (i32.gt_s - (i32.and - (get_local $8) - (i32.const 2147483647) - ) - (i32.sub - (i32.const -2) - (get_local $27) - ) - ) - (block - (if - (f64.ge - (f64.abs - (get_local $13) - ) - (f64.const 9007199254740992) - ) - (block - (if - (i32.and - (get_local $4) - (i32.eq - (get_local $18) - (get_local $5) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (set_local $13 - (f64.mul - (get_local $13) - (f64.const 0.5) - ) - ) - ) - ) - (if - (i32.le_s - (i32.add - (get_local $2) - (i32.const 50) - ) - (get_local $28) - ) - (br_if $do-once72 - (i32.eqz - (i32.and - (f64.ne - (get_local $7) - (f64.const 0) - ) - (i32.ne - (get_local $0) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 34) - ) - ) - ) - ) - (set_local $7 - (call $_scalbnl - (get_local $13) - (get_local $2) - ) - ) - ) - (br $label$break$L4) - ) - (if - (i32.load - (get_local $11) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 22) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (set_local $7 - (f64.const 0) - ) - (br $label$break$L4) - ) - (if - (i32.eqz - (tee_local $0 - (i32.eqz - (i32.load - (get_local $11) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.and - (i32.ne - (get_local $2) - (i32.const 0) - ) - (i32.gt_u - (get_local $1) - (i32.const 3) - ) - ) - (loop $do-in78 - (if - (i32.eqz - (get_local $0) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -1) - ) - ) - ) - (br_if $do-in78 - (i32.gt_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.const 3) - ) - ) - ) - ) - ) - (set_local $7 - (f64.mul - (f64.convert_s/i32 - (get_local $17) - ) - (get_global $inf) - ) - ) - ) - (set_global $STACKTOP - (get_local $24) - ) - (get_local $7) - ) - (func $_malloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (set_local $13 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $18 - (get_local $13) - ) - (block $do-once - (if - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block - (if - (i32.and - (tee_local $12 - (i32.shr_u - (tee_local $6 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $14 - (i32.shr_u - (tee_local $5 - (if i32 - (i32.lt_u - (get_local $0) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (set_local $7 - (i32.load - (tee_local $1 - (i32.add - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (tee_local $3 - (i32.add - (i32.shl - (tee_local $4 - (i32.add - (i32.xor - (i32.and - (get_local $12) - (i32.const 1) - ) - (i32.const 1) - ) - (get_local $14) - ) - ) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (get_local $7) - ) - (i32.store - (i32.const 17664) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - ) - (get_local $5) - ) - (block - (i32.store - (get_local $0) - (get_local $3) - ) - (i32.store - (get_local $2) - (get_local $7) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (get_local $5) - (i32.or - (tee_local $0 - (i32.shl - (get_local $4) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $5) - (get_local $0) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (get_local $1) - ) - ) - ) - (if - (i32.gt_u - (get_local $5) - (tee_local $0 - (i32.load - (i32.const 17672) - ) - ) - ) - (block - (if - (get_local $12) - (block - (set_local $9 - (i32.and - (i32.shr_u - (tee_local $2 - (i32.add - (i32.and - (tee_local $2 - (i32.and - (i32.shl - (get_local $12) - (get_local $14) - ) - (i32.or - (tee_local $2 - (i32.shl - (i32.const 2) - (get_local $14) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (set_local $8 - (i32.load - (tee_local $7 - (i32.add - (tee_local $10 - (i32.load - (tee_local $2 - (i32.add - (tee_local $9 - (i32.add - (i32.shl - (tee_local $12 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $2) - (get_local $9) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $9) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - ) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (get_local $9) - (get_local $8) - ) - (block - (i32.store - (i32.const 17664) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $12) - ) - (i32.const -1) - ) - ) - ) - (set_local $4 - (get_local $0) - ) - ) - (block - (if - (i32.lt_u - (get_local $8) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 12) - ) - ) - ) - (get_local $10) - ) - (block - (i32.store - (get_local $0) - (get_local $9) - ) - (i32.store - (get_local $2) - (get_local $8) - ) - (set_local $4 - (i32.load - (i32.const 17672) - ) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (get_local $10) - (i32.or - (get_local $5) - (i32.const 3) - ) - ) - (i32.store offset=4 - (tee_local $9 - (i32.add - (get_local $10) - (get_local $5) - ) - ) - (i32.or - (tee_local $5 - (i32.sub - (i32.shl - (get_local $12) - (i32.const 3) - ) - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $9) - (get_local $5) - ) - (get_local $5) - ) - (if - (get_local $4) - (block - (set_local $12 - (i32.load - (i32.const 17684) - ) - ) - (set_local $4 - (i32.add - (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $4) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (if - (i32.and - (tee_local $2 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $2 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (set_local $3 - (get_local $2) - ) - (set_local $1 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17664) - (i32.or - (get_local $2) - (get_local $0) - ) - ) - (set_local $3 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (set_local $1 - (get_local $4) - ) - ) - ) - (i32.store - (get_local $3) - (get_local $12) - ) - (i32.store offset=12 - (get_local $1) - (get_local $12) - ) - (i32.store offset=8 - (get_local $12) - (get_local $1) - ) - (i32.store offset=12 - (get_local $12) - (get_local $4) - ) - ) - ) - (i32.store - (i32.const 17672) - (get_local $5) - ) - (i32.store - (i32.const 17684) - (get_local $9) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (get_local $7) - ) - ) - ) - (if - (tee_local $0 - (i32.load - (i32.const 17668) - ) - ) - (block - (set_local $3 - (i32.and - (i32.shr_u - (tee_local $0 - (i32.add - (i32.and - (get_local $0) - (i32.sub - (i32.const 0) - (get_local $0) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (set_local $4 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $1 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $0) - (get_local $3) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $3) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (set_local $3 - (get_local $1) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (tee_local $0 - (i32.load offset=16 - (get_local $3) - ) - ) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load offset=20 - (get_local $3) - ) - ) - ) - (block - (set_local $7 - (get_local $4) - ) - (set_local $9 - (get_local $1) - ) - (br $while-out) - ) - ) - ) - (if - (tee_local $7 - (i32.lt_u - (tee_local $3 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (get_local $4) - ) - ) - (set_local $4 - (get_local $3) - ) - ) - (set_local $3 - (get_local $0) - ) - (if - (get_local $7) - (set_local $1 - (get_local $0) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (get_local $9) - (tee_local $12 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (get_local $9) - (tee_local $10 - (i32.add - (get_local $9) - (get_local $5) - ) - ) - ) - (call $_abort) - ) - (set_local $6 - (i32.load offset=24 - (get_local $9) - ) - ) - (block $do-once4 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $9) - ) - ) - (get_local $9) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $9) - (i32.const 20) - ) - ) - ) - ) - ) - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - ) - ) - ) - (block - (set_local $8 - (i32.const 0) - ) - (br $do-once4) - ) - ) - ) - (loop $while-in7 - (if - (tee_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in7) - ) - ) - (if - (tee_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $12) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $8 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $4 - (i32.load offset=8 - (get_local $9) - ) - ) - (get_local $12) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - ) - (get_local $9) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $9) - ) - (block - (i32.store - (get_local $3) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $4) - ) - (set_local $8 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once8 - (if - (get_local $6) - (block - (if - (i32.eq - (get_local $9) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $9) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $8) - ) - (if - (i32.eqz - (get_local $8) - ) - (block - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (get_local $9) - ) - (i32.store - (get_local $0) - (get_local $8) - ) - (i32.store offset=20 - (get_local $6) - (get_local $8) - ) - ) - (br_if $do-once8 - (i32.eqz - (get_local $8) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $8) - (tee_local $0 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $8) - (get_local $6) - ) - (if - (tee_local $1 - (i32.load offset=16 - (get_local $9) - ) - ) - (if - (i32.lt_u - (get_local $1) - (get_local $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $8) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $8) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load offset=20 - (get_local $9) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $8) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $8) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $9) - (i32.or - (tee_local $0 - (i32.add - (get_local $7) - (get_local $5) - ) - ) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $9) - (get_local $0) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (get_local $9) - (i32.or - (get_local $5) - (i32.const 3) - ) - ) - (i32.store offset=4 - (get_local $10) - (i32.or - (get_local $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $10) - (get_local $7) - ) - (get_local $7) - ) - (if - (tee_local $0 - (i32.load - (i32.const 17672) - ) - ) - (block - (set_local $4 - (i32.load - (i32.const 17684) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (set_local $15 - (get_local $1) - ) - (set_local $2 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17664) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (set_local $15 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $4) - ) - (i32.store offset=12 - (get_local $2) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $2) - ) - (i32.store offset=12 - (get_local $4) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17672) - (get_local $7) - ) - (i32.store - (i32.const 17684) - (get_local $10) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - ) - (set_local $0 - (get_local $5) - ) - ) - ) - (set_local $0 - (get_local $5) - ) - ) - ) - (if - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (set_local $0 - (i32.const -1) - ) - (block - (set_local $4 - (i32.and - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if - (tee_local $15 - (i32.load - (i32.const 17668) - ) - ) - (block - (set_local $16 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $4) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $4) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $2) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (set_local $1 - (i32.sub - (i32.const 0) - (get_local $4) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (block $__rjti$2 - (if - (tee_local $3 - (i32.load - (i32.add - (i32.shl - (get_local $16) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - (block - (set_local $2 - (i32.const 0) - ) - (set_local $17 - (i32.shl - (get_local $4) - (if i32 - (i32.eq - (get_local $16) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $16) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $5 - (i32.sub - (tee_local $8 - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const -8) - ) - ) - (get_local $4) - ) - ) - (get_local $1) - ) - (if - (i32.eq - (get_local $8) - (get_local $4) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $2 - (get_local $3) - ) - (set_local $0 - (get_local $3) - ) - (br $__rjti$3) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $0 - (get_local $3) - ) - ) - ) - ) - (if - (i32.eqz - (i32.or - (i32.eqz - (tee_local $5 - (i32.load offset=20 - (get_local $3) - ) - ) - ) - (i32.eq - (get_local $5) - (tee_local $3 - (i32.load - (i32.add - (i32.add - (get_local $3) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $17) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $2 - (get_local $5) - ) - ) - (br_if $__rjti$2 - (tee_local $5 - (i32.eqz - (get_local $3) - ) - ) - ) - (set_local $17 - (i32.shl - (get_local $17) - (i32.xor - (get_local $5) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - (block - (set_local $2 - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (if - (i32.and - (i32.eqz - (get_local $2) - ) - (i32.eqz - (get_local $0) - ) - ) - (block - (if - (i32.eqz - (tee_local $2 - (i32.and - (get_local $15) - (i32.or - (tee_local $2 - (i32.shl - (i32.const 2) - (get_local $16) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - ) - ) - ) - (block - (set_local $0 - (get_local $4) - ) - (br $do-once) - ) - ) - (set_local $5 - (i32.and - (i32.shr_u - (tee_local $2 - (i32.add - (i32.and - (get_local $2) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (set_local $2 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $2) - (get_local $5) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $5) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - ) - (br_if $__rjti$3 - (get_local $2) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $__rjto$3) - ) - (loop $while-in16 - (if - (tee_local $5 - (i32.lt_u - (tee_local $3 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const -8) - ) - (get_local $4) - ) - ) - (get_local $1) - ) - ) - (set_local $1 - (get_local $3) - ) - ) - (if - (get_local $5) - (set_local $0 - (get_local $2) - ) - ) - (if - (tee_local $3 - (i32.load offset=16 - (get_local $2) - ) - ) - (block - (set_local $2 - (get_local $3) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (tee_local $2 - (i32.load offset=20 - (get_local $2) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - (if - (get_local $3) - (if - (i32.lt_u - (get_local $2) - (i32.sub - (i32.load - (i32.const 17672) - ) - (get_local $4) - ) - ) - (block - (if - (i32.lt_u - (get_local $3) - (tee_local $9 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (get_local $3) - (tee_local $8 - (i32.add - (get_local $3) - (get_local $4) - ) - ) - ) - (call $_abort) - ) - (set_local $10 - (i32.load offset=24 - (get_local $3) - ) - ) - (block $do-once17 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $3) - ) - ) - (get_local $3) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 20) - ) - ) - ) - ) - ) - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $do-once17) - ) - ) - ) - (loop $while-in20 - (if - (tee_local $5 - (i32.load - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $0 - (get_local $7) - ) - (br $while-in20) - ) - ) - (if - (tee_local $5 - (i32.load - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $0 - (get_local $7) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $9) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $6 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $7 - (i32.load offset=8 - (get_local $3) - ) - ) - (get_local $9) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $5 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - ) - (get_local $3) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $3) - ) - (block - (i32.store - (get_local $5) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $7) - ) - (set_local $6 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once21 - (if - (get_local $10) - (block - (if - (i32.eq - (get_local $3) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $3) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $6) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $10) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $10) - (i32.const 16) - ) - ) - ) - (get_local $3) - ) - (i32.store - (get_local $0) - (get_local $6) - ) - (i32.store offset=20 - (get_local $10) - (get_local $6) - ) - ) - (br_if $do-once21 - (i32.eqz - (get_local $6) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $6) - (tee_local $0 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $6) - (get_local $10) - ) - (if - (tee_local $1 - (i32.load offset=16 - (get_local $3) - ) - ) - (if - (i32.lt_u - (get_local $1) - (get_local $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $6) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $6) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load offset=20 - (get_local $3) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $6) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $6) - ) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.lt_u - (get_local $2) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $3) - (i32.or - (tee_local $0 - (i32.add - (get_local $2) - (get_local $4) - ) - ) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $3) - (get_local $0) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $8) - (get_local $2) - ) - (get_local $2) - ) - (set_local $0 - (i32.shr_u - (get_local $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.const 256) - ) - (block - (set_local $2 - (i32.add - (i32.shl - (get_local $0) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (set_local $14 - (get_local $1) - ) - (set_local $12 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17664) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (set_local $14 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (set_local $12 - (get_local $2) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $8) - ) - (i32.store offset=12 - (get_local $12) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $12) - ) - (i32.store offset=12 - (get_local $8) - (get_local $2) - ) - (br $do-once25) - ) - ) - (set_local $4 - (i32.add - (i32.shl - (tee_local $5 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $2) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $2) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $2) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $4 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $4) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - (i32.store offset=28 - (get_local $8) - (get_local $5) - ) - (i32.store offset=4 - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 17668) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $5) - ) - ) - ) - ) - (block - (i32.store - (i32.const 17668) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $4) - (get_local $8) - ) - (i32.store offset=24 - (get_local $8) - (get_local $4) - ) - (i32.store offset=12 - (get_local $8) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $8) - ) - (br $do-once25) - ) - ) - (set_local $5 - (i32.shl - (get_local $2) - (if i32 - (i32.eq - (get_local $5) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $4) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $2) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.shl - (get_local $5) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in28) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $4) - (get_local $8) - ) - (i32.store offset=24 - (get_local $8) - (get_local $0) - ) - (i32.store offset=12 - (get_local $8) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $8) - ) - (br $do-once25) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (tee_local $4 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 17680) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) - ) - ) - (block - (i32.store offset=12 - (get_local $4) - (get_local $8) - ) - (i32.store - (get_local $2) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $4) - ) - (i32.store offset=12 - (get_local $8) - (get_local $0) - ) - (i32.store offset=24 - (get_local $8) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - (set_local $0 - (get_local $4) - ) - ) - (set_local $0 - (get_local $4) - ) - ) - ) - (set_local $0 - (get_local $4) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (tee_local $1 - (i32.load - (i32.const 17672) - ) - ) - (get_local $0) - ) - (block - (set_local $3 - (i32.load - (i32.const 17684) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 17684) - (tee_local $1 - (i32.add - (get_local $3) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 17672) - (get_local $2) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $1) - (get_local $2) - ) - (get_local $2) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 17672) - (i32.const 0) - ) - (i32.store - (i32.const 17684) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $1) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $3) - (get_local $1) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $1 - (i32.load - (i32.const 17676) - ) - ) - (get_local $0) - ) - (block - (i32.store - (i32.const 17676) - (tee_local $2 - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 17688) - (tee_local $1 - (i32.add - (tee_local $3 - (i32.load - (i32.const 17688) - ) - ) - (get_local $0) - ) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 18136) - ) - ) - (block - (i32.store - (i32.const 18144) - (i32.const 4096) - ) - (i32.store - (i32.const 18140) - (i32.const 4096) - ) - (i32.store - (i32.const 18148) - (i32.const -1) - ) - (i32.store - (i32.const 18152) - (i32.const -1) - ) - (i32.store - (i32.const 18156) - (i32.const 0) - ) - (i32.store - (i32.const 18108) - (i32.const 0) - ) - (i32.store - (get_local $18) - (tee_local $1 - (i32.xor - (i32.and - (get_local $18) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - (i32.store - (i32.const 18136) - (get_local $1) - ) - ) - ) - (if - (i32.le_u - (tee_local $5 - (i32.and - (tee_local $8 - (i32.add - (tee_local $1 - (i32.load - (i32.const 18144) - ) - ) - (tee_local $14 - (i32.add - (get_local $0) - (i32.const 47) - ) - ) - ) - ) - (tee_local $6 - (i32.sub - (i32.const 0) - (get_local $1) - ) - ) - ) - ) - (get_local $0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (tee_local $3 - (i32.load - (i32.const 18104) - ) - ) - (if - (i32.or - (i32.le_u - (tee_local $1 - (i32.add - (tee_local $2 - (i32.load - (i32.const 18096) - ) - ) - (get_local $5) - ) - ) - (get_local $2) - ) - (i32.gt_u - (get_local $1) - (get_local $3) - ) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (set_local $12 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (block $__rjto$13 - (block $__rjti$13 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 18108) - ) - (i32.const 4) - ) - ) - (block - (block $label$break$L276 - (block $__rjti$5 - (block $__rjti$4 - (br_if $__rjti$4 - (i32.eqz - (tee_local $2 - (i32.load - (i32.const 17688) - ) - ) - ) - ) - (set_local $4 - (i32.const 18112) - ) - (loop $while-in32 - (block $while-out31 - (if - (i32.le_u - (tee_local $1 - (i32.load - (get_local $4) - ) - ) - (get_local $2) - ) - (br_if $while-out31 - (i32.gt_u - (i32.add - (get_local $1) - (i32.load - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - ) - ) - (get_local $2) - ) - ) - ) - (br_if $while-in32 - (tee_local $4 - (i32.load offset=8 - (get_local $4) - ) - ) - ) - (br $__rjti$4) - ) - ) - (if - (i32.lt_u - (tee_local $2 - (i32.and - (i32.sub - (get_local $8) - (i32.load - (i32.const 17676) - ) - ) - (get_local $6) - ) - ) - (i32.const 2147483647) - ) - (if - (i32.eq - (tee_local $1 - (call $_sbrk - (get_local $2) - ) - ) - (i32.add - (i32.load - (get_local $4) - ) - (i32.load - (get_local $3) - ) - ) - ) - (br_if $__rjti$13 - (i32.ne - (get_local $1) - (i32.const -1) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $2) - ) - (br $__rjti$5) - ) - ) - ) - (br $label$break$L276) - ) - (if - (i32.ne - (tee_local $1 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (set_local $2 - (if i32 - (i32.and - (tee_local $3 - (i32.add - (tee_local $4 - (i32.load - (i32.const 18140) - ) - ) - (i32.const -1) - ) - ) - (tee_local $2 - (get_local $1) - ) - ) - (i32.add - (i32.sub - (get_local $5) - (get_local $2) - ) - (i32.and - (i32.add - (get_local $3) - (get_local $2) - ) - (i32.sub - (i32.const 0) - (get_local $4) - ) - ) - ) - (get_local $5) - ) - ) - (set_local $6 - (i32.add - (tee_local $4 - (i32.load - (i32.const 18096) - ) - ) - (get_local $2) - ) - ) - (if - (i32.and - (i32.gt_u - (get_local $2) - (get_local $0) - ) - (i32.lt_u - (get_local $2) - (i32.const 2147483647) - ) - ) - (block - (if - (tee_local $3 - (i32.load - (i32.const 18104) - ) - ) - (br_if $label$break$L276 - (i32.or - (i32.le_u - (get_local $6) - (get_local $4) - ) - (i32.gt_u - (get_local $6) - (get_local $3) - ) - ) - ) - ) - (br_if $__rjti$13 - (i32.eq - (tee_local $3 - (call $_sbrk - (get_local $2) - ) - ) - (get_local $1) - ) - ) - (set_local $1 - (get_local $2) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L276) - ) - (set_local $4 - (i32.sub - (i32.const 0) - (get_local $1) - ) - ) - (if - (i32.and - (i32.gt_u - (get_local $12) - (get_local $1) - ) - (i32.and - (i32.lt_u - (get_local $1) - (i32.const 2147483647) - ) - (i32.ne - (get_local $3) - (i32.const -1) - ) - ) - ) - (if - (i32.lt_u - (tee_local $2 - (i32.and - (i32.add - (i32.sub - (get_local $14) - (get_local $1) - ) - (tee_local $2 - (i32.load - (i32.const 18144) - ) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - ) - (i32.const 2147483647) - ) - (if - (i32.eq - (call $_sbrk - (get_local $2) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (get_local $4) - ) - ) - (br $label$break$L276) - ) - (set_local $2 - (i32.add - (get_local $2) - (get_local $1) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - ) - (set_local $2 - (get_local $1) - ) - ) - (if - (i32.ne - (get_local $3) - (i32.const -1) - ) - (block - (set_local $1 - (get_local $3) - ) - (br $__rjti$13) - ) - ) - ) - (i32.store - (i32.const 18108) - (i32.or - (i32.load - (i32.const 18108) - ) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $5) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.lt_u - (tee_local $1 - (call $_sbrk - (get_local $5) - ) - ) - (tee_local $2 - (call $_sbrk - (i32.const 0) - ) - ) - ) - (i32.and - (i32.ne - (get_local $1) - (i32.const -1) - ) - (i32.ne - (get_local $2) - (i32.const -1) - ) - ) - ) - (br_if $__rjti$13 - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - ) - ) - ) - (br $__rjto$13) - ) - (i32.store - (i32.const 18096) - (tee_local $3 - (i32.add - (i32.load - (i32.const 18096) - ) - (get_local $2) - ) - ) - ) - (if - (i32.gt_u - (get_local $3) - (i32.load - (i32.const 18100) - ) - ) - (i32.store - (i32.const 18100) - (get_local $3) - ) - ) - (block $do-once38 - (if - (tee_local $6 - (i32.load - (i32.const 17688) - ) - ) - (block - (set_local $3 - (i32.const 18112) - ) - (block $__rjto$10 - (block $__rjti$10 - (loop $do-in41 - (br_if $__rjti$10 - (i32.eq - (get_local $1) - (i32.add - (tee_local $12 - (i32.load - (get_local $3) - ) - ) - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - (br_if $do-in41 - (tee_local $3 - (i32.load offset=8 - (get_local $3) - ) - ) - ) - ) - (br $__rjto$10) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (get_local $3) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (get_local $6) - (get_local $1) - ) - (i32.ge_u - (get_local $6) - (get_local $12) - ) - ) - (block - (i32.store - (get_local $5) - (i32.add - (get_local $4) - (get_local $2) - ) - ) - (set_local $3 - (i32.add - (get_local $6) - (tee_local $1 - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - ) - (set_local $1 - (i32.add - (i32.sub - (get_local $2) - (get_local $1) - ) - (i32.load - (i32.const 17676) - ) - ) - ) - (i32.store - (i32.const 17688) - (get_local $3) - ) - (i32.store - (i32.const 17676) - (get_local $1) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (get_local $3) - (get_local $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 17692) - (i32.load - (i32.const 18152) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (tee_local $4 - (i32.load - (i32.const 17680) - ) - ) - ) - (block - (i32.store - (i32.const 17680) - (get_local $1) - ) - (set_local $4 - (get_local $1) - ) - ) - ) - (set_local $12 - (i32.add - (get_local $1) - (get_local $2) - ) - ) - (set_local $3 - (i32.const 18112) - ) - (block $__rjto$11 - (block $__rjti$11 - (loop $while-in43 - (if - (i32.eq - (i32.load - (get_local $3) - ) - (get_local $12) - ) - (block - (set_local $5 - (get_local $3) - ) - (br $__rjti$11) - ) - ) - (br_if $while-in43 - (tee_local $3 - (i32.load offset=8 - (get_local $3) - ) - ) - ) - (set_local $4 - (i32.const 18112) - ) - ) - (br $__rjto$11) - ) - (if - (i32.and - (i32.load offset=12 - (get_local $3) - ) - (i32.const 8) - ) - (set_local $4 - (i32.const 18112) - ) - (block - (i32.store - (get_local $5) - (get_local $1) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (set_local $11 - (i32.add - (tee_local $8 - (i32.add - (get_local $1) - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - (get_local $0) - ) - ) - (set_local $5 - (i32.sub - (i32.sub - (tee_local $7 - (i32.add - (get_local $12) - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $12) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - (get_local $8) - ) - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.eq - (get_local $7) - (get_local $6) - ) - (block - (i32.store - (i32.const 17676) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17676) - ) - (get_local $5) - ) - ) - ) - (i32.store - (i32.const 17688) - (get_local $11) - ) - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - ) - (block - (if - (i32.eq - (get_local $7) - (i32.load - (i32.const 17684) - ) - ) - (block - (i32.store - (i32.const 17672) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17672) - ) - (get_local $5) - ) - ) - ) - (i32.store - (i32.const 17684) - (get_local $11) - ) - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $11) - (get_local $0) - ) - (get_local $0) - ) - (br $do-once44) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (tee_local $0 - (if i32 - (i32.eq - (i32.and - (tee_local $0 - (i32.load offset=4 - (get_local $7) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block i32 - (set_local $12 - (i32.and - (get_local $0) - (i32.const -8) - ) - ) - (set_local $1 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (block $label$break$L328 - (if - (i32.lt_u - (get_local $0) - (i32.const 256) - ) - (block - (set_local $3 - (i32.load offset=12 - (get_local $7) - ) - ) - (block $do-once47 - (if - (i32.ne - (tee_local $2 - (i32.load offset=8 - (get_local $7) - ) - ) - (tee_local $0 - (i32.add - (i32.shl - (get_local $1) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $2) - (get_local $4) - ) - (call $_abort) - ) - (br_if $do-once47 - (i32.eq - (i32.load offset=12 - (get_local $2) - ) - (get_local $7) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (get_local $2) - ) - (block - (i32.store - (i32.const 17664) - (i32.and - (i32.load - (i32.const 17664) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L328) - ) - ) - (block $do-once49 - (if - (i32.eq - (get_local $3) - (get_local $0) - ) - (set_local $19 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $3) - (get_local $4) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (block - (set_local $19 - (get_local $0) - ) - (br $do-once49) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $2) - (get_local $3) - ) - (i32.store - (get_local $19) - (get_local $2) - ) - ) - (block - (set_local $6 - (i32.load offset=24 - (get_local $7) - ) - ) - (block $do-once51 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $7) - ) - ) - (get_local $7) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (tee_local $2 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $1 - (i32.load - (get_local $2) - ) - ) - (set_local $0 - (get_local $2) - ) - (block - (set_local $10 - (i32.const 0) - ) - (br $do-once51) - ) - ) - ) - (loop $while-in54 - (if - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $2) - ) - (set_local $0 - (get_local $3) - ) - (br $while-in54) - ) - ) - (if - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $2) - ) - (set_local $0 - (get_local $3) - ) - (br $while-in54) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $4) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $10 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $3 - (i32.load offset=8 - (get_local $7) - ) - ) - (get_local $4) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - ) - (get_local $7) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (block - (i32.store - (get_local $2) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $3) - ) - (set_local $10 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (br_if $label$break$L328 - (i32.eqz - (get_local $6) - ) - ) - (block $do-once55 - (if - (i32.eq - (get_local $7) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $7) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $10) - ) - (br_if $do-once55 - (get_local $10) - ) - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L328) - ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (get_local $7) - ) - (i32.store - (get_local $0) - (get_local $10) - ) - (i32.store offset=20 - (get_local $6) - (get_local $10) - ) - ) - (br_if $label$break$L328 - (i32.eqz - (get_local $10) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $10) - (tee_local $1 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $10) - (get_local $6) - ) - (if - (tee_local $2 - (i32.load - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $2) - (get_local $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $10) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $10) - ) - ) - ) - ) - (br_if $label$break$L328 - (i32.eqz - (tee_local $0 - (i32.load offset=4 - (get_local $0) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $10) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $10) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $12) - (get_local $5) - ) - ) - (i32.add - (get_local $7) - (get_local $12) - ) - ) - (get_local $7) - ) - ) - (i32.const 4) - ) - ) - (i32.and - (i32.load - (get_local $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $11) - (get_local $5) - ) - (get_local $5) - ) - (set_local $0 - (i32.shr_u - (get_local $5) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $5) - (i32.const 256) - ) - (block - (set_local $2 - (i32.add - (i32.shl - (get_local $0) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (block $do-once59 - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (block - (if - (i32.ge_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (block - (set_local $20 - (get_local $1) - ) - (set_local $9 - (get_local $0) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 17664) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (set_local $20 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (set_local $9 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $20) - (get_local $11) - ) - (i32.store offset=12 - (get_local $9) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $9) - ) - (i32.store offset=12 - (get_local $11) - (get_local $2) - ) - (br $do-once44) - ) - ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $3 - (block $do-once61 i32 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $5) - (i32.const 8) - ) - ) - (block i32 - (drop - (br_if $do-once61 - (i32.const 31) - (i32.gt_u - (get_local $5) - (i32.const 16777215) - ) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (get_local $5) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $2) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - (i32.store offset=28 - (get_local $11) - (get_local $3) - ) - (i32.store offset=4 - (tee_local $0 - (i32.add - (get_local $11) - (i32.const 16) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 17668) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $3) - ) - ) - ) - ) - (block - (i32.store - (i32.const 17668) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $2) - (get_local $11) - ) - (i32.store offset=24 - (get_local $11) - (get_local $2) - ) - (i32.store offset=12 - (get_local $11) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $11) - ) - (br $do-once44) - ) - ) - (set_local $3 - (i32.shl - (get_local $5) - (if i32 - (i32.eq - (get_local $3) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $3) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $2) - ) - ) - (block $__rjto$7 - (block $__rjti$7 - (block $__rjti$6 - (loop $while-in64 - (br_if $__rjti$7 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (br_if $__rjti$6 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $3 - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in64) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $2) - (get_local $11) - ) - (i32.store offset=24 - (get_local $11) - (get_local $0) - ) - (i32.store offset=12 - (get_local $11) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $11) - ) - (br $do-once44) - ) - ) - (br $__rjto$7) - ) - (if - (i32.and - (i32.ge_u - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 17680) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) - ) - ) - (block - (i32.store offset=12 - (get_local $3) - (get_local $11) - ) - (i32.store - (get_local $2) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $3) - ) - (i32.store offset=12 - (get_local $11) - (get_local $0) - ) - (i32.store offset=24 - (get_local $11) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (if - (i32.le_u - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (get_local $6) - ) - (br_if $while-out65 - (i32.gt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.load offset=4 - (get_local $4) - ) - ) - ) - (get_local $6) - ) - ) - ) - (set_local $4 - (i32.load offset=8 - (get_local $4) - ) - ) - (br $while-in66) - ) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $3) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - (set_local $10 - (i32.add - (if i32 - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (if i32 - (i32.and - (get_local $5) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $5) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - (tee_local $9 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (tee_local $4 - (get_local $6) - ) - (get_local $4) - ) - (i32.const 8) - ) - ) - (i32.store - (i32.const 17688) - (tee_local $12 - (i32.add - (get_local $1) - (tee_local $5 - (if i32 - (i32.and - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $5) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (i32.const 17676) - (tee_local $5 - (i32.sub - (i32.add - (get_local $2) - (i32.const -40) - ) - (get_local $5) - ) - ) - ) - (i32.store offset=4 - (get_local $12) - (i32.or - (get_local $5) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (get_local $12) - (get_local $5) - ) - (i32.const 40) - ) - (i32.store - (i32.const 17692) - (i32.load - (i32.const 18152) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (i32.const 27) - ) - (i32.store - (get_local $10) - (i32.load - (i32.const 18112) - ) - ) - (i32.store offset=4 - (get_local $10) - (i32.load - (i32.const 18116) - ) - ) - (i32.store offset=8 - (get_local $10) - (i32.load - (i32.const 18120) - ) - ) - (i32.store offset=12 - (get_local $10) - (i32.load - (i32.const 18124) - ) - ) - (i32.store - (i32.const 18112) - (get_local $1) - ) - (i32.store - (i32.const 18116) - (get_local $2) - ) - (i32.store - (i32.const 18124) - (i32.const 0) - ) - (i32.store - (i32.const 18120) - (get_local $10) - ) - (set_local $1 - (i32.add - (get_local $4) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (get_local $1) - (i32.const 4) - ) - (get_local $3) - ) - ) - ) - (if - (i32.ne - (get_local $4) - (get_local $6) - ) - (block - (i32.store - (get_local $5) - (i32.and - (i32.load - (get_local $5) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $6) - (i32.or - (tee_local $5 - (i32.sub - (get_local $4) - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $4) - (get_local $5) - ) - (set_local $1 - (i32.shr_u - (get_local $5) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $5) - (i32.const 256) - ) - (block - (set_local $3 - (i32.add - (i32.shl - (get_local $1) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (if - (i32.and - (tee_local $2 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $1 - (i32.shl - (i32.const 1) - (get_local $1) - ) - ) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.load - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (set_local $11 - (get_local $2) - ) - (set_local $7 - (get_local $1) - ) - ) - ) - (block - (i32.store - (i32.const 17664) - (i32.or - (get_local $2) - (get_local $1) - ) - ) - (set_local $11 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $7 - (get_local $3) - ) - ) - ) - (i32.store - (get_local $11) - (get_local $6) - ) - (i32.store offset=12 - (get_local $7) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $7) - ) - (i32.store offset=12 - (get_local $6) - (get_local $3) - ) - (br $do-once38) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (tee_local $4 - (if i32 - (tee_local $1 - (i32.shr_u - (get_local $5) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $5) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $5) - (i32.add - (tee_local $1 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $1 - (i32.and - (i32.shr_u - (i32.add - (tee_local $2 - (i32.shl - (get_local $1) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $1) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $3) - ) - (tee_local $1 - (i32.and - (i32.shr_u - (i32.add - (tee_local $2 - (i32.shl - (get_local $2) - (get_local $1) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $2) - (get_local $1) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - (i32.store offset=28 - (get_local $6) - (get_local $4) - ) - (i32.store offset=20 - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $2 - (i32.load - (i32.const 17668) - ) - ) - (tee_local $1 - (i32.shl - (i32.const 1) - (get_local $4) - ) - ) - ) - ) - (block - (i32.store - (i32.const 17668) - (i32.or - (get_local $2) - (get_local $1) - ) - ) - (i32.store - (get_local $3) - (get_local $6) - ) - (i32.store offset=24 - (get_local $6) - (get_local $3) - ) - (i32.store offset=12 - (get_local $6) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $6) - ) - (br $do-once38) - ) - ) - (set_local $4 - (i32.shl - (get_local $5) - (if i32 - (i32.eq - (get_local $4) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $4) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $3) - ) - ) - (block $__rjto$9 - (block $__rjti$9 - (block $__rjti$8 - (loop $while-in70 - (br_if $__rjti$9 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $1) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (br_if $__rjti$8 - (i32.eqz - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (i32.add - (get_local $1) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $4 - (i32.shl - (get_local $4) - (i32.const 1) - ) - ) - (set_local $1 - (get_local $2) - ) - (br $while-in70) - ) - ) - (if - (i32.lt_u - (get_local $3) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $3) - (get_local $6) - ) - (i32.store offset=24 - (get_local $6) - (get_local $1) - ) - (i32.store offset=12 - (get_local $6) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $6) - ) - (br $do-once38) - ) - ) - (br $__rjto$9) - ) - (if - (i32.and - (i32.ge_u - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (i32.const 17680) - ) - ) - ) - (i32.ge_u - (get_local $1) - (get_local $2) - ) - ) - (block - (i32.store offset=12 - (get_local $4) - (get_local $6) - ) - (i32.store - (get_local $3) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $4) - ) - (i32.store offset=12 - (get_local $6) - (get_local $1) - ) - (i32.store offset=24 - (get_local $6) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (tee_local $3 - (i32.load - (i32.const 17680) - ) - ) - ) - (i32.lt_u - (get_local $1) - (get_local $3) - ) - ) - (i32.store - (i32.const 17680) - (get_local $1) - ) - ) - (i32.store - (i32.const 18112) - (get_local $1) - ) - (i32.store - (i32.const 18116) - (get_local $2) - ) - (i32.store - (i32.const 18124) - (i32.const 0) - ) - (i32.store - (i32.const 17700) - (i32.load - (i32.const 18136) - ) - ) - (i32.store - (i32.const 17696) - (i32.const -1) - ) - (set_local $4 - (i32.const 0) - ) - (loop $do-in - (i32.store offset=12 - (tee_local $3 - (i32.add - (i32.shl - (get_local $4) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (get_local $3) - ) - (i32.store offset=8 - (get_local $3) - (get_local $3) - ) - (br_if $do-in - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 17688) - (tee_local $3 - (i32.add - (get_local $1) - (tee_local $1 - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (i32.const 17676) - (tee_local $1 - (i32.sub - (i32.add - (get_local $2) - (i32.const -40) - ) - (get_local $1) - ) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (get_local $3) - (get_local $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 17692) - (i32.load - (i32.const 18152) - ) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $1 - (i32.load - (i32.const 17676) - ) - ) - (get_local $0) - ) - (block - (i32.store - (i32.const 17676) - (tee_local $2 - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 17688) - (tee_local $1 - (i32.add - (tee_local $3 - (i32.load - (i32.const 17688) - ) - ) - (get_local $0) - ) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (set_global $STACKTOP - (get_local $13) - ) - (i32.const 0) - ) - (func $_printf_core (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 f64) - (local $20 f64) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (set_local $25 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 624) - ) - ) - (set_local $21 - (i32.add - (get_local $25) - (i32.const 16) - ) - ) - (set_local $17 - (get_local $25) - ) - (set_local $38 - (i32.add - (get_local $25) - (i32.const 528) - ) - ) - (set_local $32 - (i32.ne - (get_local $0) - (i32.const 0) - ) - ) - (set_local $40 - (tee_local $24 - (i32.add - (tee_local $16 - (i32.add - (get_local $25) - (i32.const 536) - ) - ) - (i32.const 40) - ) - ) - ) - (set_local $41 - (i32.add - (get_local $16) - (i32.const 39) - ) - ) - (set_local $44 - (i32.add - (tee_local $39 - (i32.add - (get_local $25) - (i32.const 8) - ) - ) - (i32.const 4) - ) - ) - (set_local $45 - (i32.sub - (i32.const 0) - (tee_local $30 - (tee_local $22 - (i32.add - (get_local $25) - (i32.const 588) - ) - ) - ) - ) - ) - (set_local $34 - (i32.add - (tee_local $16 - (i32.add - (get_local $25) - (i32.const 576) - ) - ) - (i32.const 12) - ) - ) - (set_local $42 - (i32.add - (get_local $16) - (i32.const 11) - ) - ) - (set_local $46 - (i32.sub - (tee_local $31 - (get_local $34) - ) - (get_local $30) - ) - ) - (set_local $47 - (i32.sub - (i32.const -2) - (get_local $30) - ) - ) - (set_local $48 - (i32.add - (get_local $31) - (i32.const 2) - ) - ) - (set_local $50 - (i32.add - (tee_local $49 - (i32.add - (get_local $25) - (i32.const 24) - ) - ) - (i32.const 288) - ) - ) - (set_local $43 - (tee_local $33 - (i32.add - (get_local $22) - (i32.const 9) - ) - ) - ) - (set_local $35 - (i32.add - (get_local $22) - (i32.const 8) - ) - ) - (set_local $15 - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $16 - (i32.const 0) - ) - (block $label$break$L345 - (block $__rjti$9 - (loop $label$continue$L1 - (block $label$break$L1 - (if - (i32.gt_s - (get_local $15) - (i32.const -1) - ) - (set_local $15 - (if i32 - (i32.gt_s - (get_local $6) - (i32.sub - (i32.const 2147483647) - (get_local $15) - ) - ) - (block i32 - (i32.store - (call $___errno_location) - (i32.const 75) - ) - (i32.const -1) - ) - (i32.add - (get_local $6) - (get_local $15) - ) - ) - ) - ) - (br_if $__rjti$9 - (i32.eqz - (tee_local $11 - (i32.load8_s - (get_local $1) - ) - ) - ) - ) - (set_local $6 - (get_local $1) - ) - (block $label$break$L12 - (block $__rjti$1 - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.shr_s - (i32.shl - (get_local $11) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (set_local $11 - (get_local $6) - ) - (br $__rjti$1) - ) - (set_local $11 - (get_local $6) - ) - (set_local $5 - (get_local $6) - ) - (br $label$break$L9) - ) - (set_local $11 - (i32.load8_s - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L9) - ) - ) - (br $label$break$L12) - ) - (loop $while-in - (if - (i32.ne - (i32.load8_s offset=1 - (get_local $11) - ) - (i32.const 37) - ) - (block - (set_local $5 - (get_local $6) - ) - (br $label$break$L12) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br_if $while-in - (i32.eq - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 2) - ) - ) - ) - (i32.const 37) - ) - ) - (set_local $5 - (get_local $6) - ) - ) - ) - (set_local $6 - (i32.sub - (get_local $5) - (get_local $1) - ) - ) - (if - (get_local $32) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (get_local $6) - (get_local $0) - ) - ) - ) - ) - (if - (i32.ne - (get_local $5) - (get_local $1) - ) - (block - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - ) - (set_local $5 - (if i32 - (i32.lt_u - (tee_local $12 - (i32.add - (tee_local $13 - (i32.load8_s - (tee_local $10 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block i32 - (set_local $13 - (i32.load8_s - (tee_local $11 - (if i32 - (tee_local $5 - (i32.eq - (i32.load8_s offset=2 - (get_local $11) - ) - (i32.const 36) - ) - ) - (i32.add - (get_local $11) - (i32.const 3) - ) - (get_local $10) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $5) - ) - (set_local $12 - (i32.const -1) - ) - ) - (if i32 - (get_local $5) - (i32.const 1) - (get_local $16) - ) - ) - (block i32 - (set_local $12 - (i32.const -1) - ) - (set_local $11 - (get_local $10) - ) - (get_local $16) - ) - ) - ) - (block $label$break$L25 - (if - (i32.eq - (i32.and - (tee_local $7 - (i32.shr_s - (i32.shl - (get_local $13) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - (block - (set_local $16 - (get_local $13) - ) - (set_local $10 - (i32.const 0) - ) - (loop $while-in4 - (if - (i32.eqz - (i32.and - (i32.shl - (i32.const 1) - (i32.add - (get_local $7) - (i32.const -32) - ) - ) - (i32.const 75913) - ) - ) - (block - (set_local $13 - (get_local $16) - ) - (set_local $16 - (get_local $10) - ) - (br $label$break$L25) - ) - ) - (set_local $10 - (i32.or - (i32.shl - (i32.const 1) - (i32.add - (i32.shr_s - (i32.shl - (get_local $16) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -32) - ) - ) - (get_local $10) - ) - ) - (br_if $while-in4 - (i32.eq - (i32.and - (tee_local $7 - (tee_local $16 - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - ) - (set_local $13 - (get_local $16) - ) - (set_local $16 - (get_local $10) - ) - ) - ) - (set_local $16 - (i32.const 0) - ) - ) - ) - (block $do-once5 - (if - (i32.eq - (i32.and - (get_local $13) - (i32.const 255) - ) - (i32.const 42) - ) - (block - (set_local $5 - (block $__rjto$0 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.ge_u - (tee_local $10 - (i32.add - (i32.load8_s - (tee_local $13 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.load8_s offset=2 - (get_local $11) - ) - (i32.const 36) - ) - ) - (i32.store - (i32.add - (get_local $4) - (i32.shl - (get_local $10) - (i32.const 2) - ) - ) - (i32.const 10) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 3) - ) - ) - (set_local $13 - (i32.load - (i32.add - (get_local $3) - (i32.shl - (i32.add - (i32.load8_s - (get_local $13) - ) - (i32.const -48) - ) - (i32.const 3) - ) - ) - ) - ) - (br $__rjto$0 - (i32.const 1) - ) - ) - (if - (get_local $5) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (get_local $32) - ) - (block - (set_local $10 - (get_local $16) - ) - (set_local $16 - (i32.const 0) - ) - (set_local $11 - (get_local $13) - ) - (set_local $13 - (i32.const 0) - ) - (br $do-once5) - ) - ) - (set_local $10 - (i32.load - (tee_local $11 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (set_local $11 - (get_local $13) - ) - (set_local $13 - (get_local $10) - ) - (i32.const 0) - ) - ) - (set_local $16 - (if i32 - (i32.lt_s - (get_local $13) - (i32.const 0) - ) - (block i32 - (set_local $10 - (i32.or - (get_local $16) - (i32.const 8192) - ) - ) - (set_local $13 - (i32.sub - (i32.const 0) - (get_local $13) - ) - ) - (get_local $5) - ) - (block i32 - (set_local $10 - (get_local $16) - ) - (get_local $5) - ) - ) - ) - ) - (if - (i32.lt_u - (tee_local $10 - (i32.add - (i32.shr_s - (i32.shl - (get_local $13) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (set_local $13 - (i32.const 0) - ) - (loop $while-in8 - (set_local $13 - (i32.add - (i32.mul - (get_local $13) - (i32.const 10) - ) - (get_local $10) - ) - ) - (br_if $while-in8 - (i32.lt_u - (tee_local $10 - (i32.add - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - ) - (if - (i32.lt_s - (get_local $13) - (i32.const 0) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block - (set_local $10 - (get_local $16) - ) - (set_local $16 - (get_local $5) - ) - ) - ) - ) - (block - (set_local $10 - (get_local $16) - ) - (set_local $16 - (get_local $5) - ) - (set_local $13 - (i32.const 0) - ) - ) - ) - ) - ) - (block $label$break$L46 - (if - (i32.eq - (i32.load8_s - (get_local $11) - ) - (i32.const 46) - ) - (block - (if - (i32.ne - (tee_local $5 - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - ) - (i32.const 42) - ) - (block - (if - (i32.lt_u - (tee_local $8 - (i32.add - (get_local $5) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (set_local $11 - (get_local $7) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $7 - (get_local $8) - ) - ) - (block - (set_local $5 - (i32.const 0) - ) - (set_local $11 - (get_local $7) - ) - (br $label$break$L46) - ) - ) - (loop $while-in11 - (set_local $5 - (i32.add - (i32.mul - (get_local $5) - (i32.const 10) - ) - (get_local $7) - ) - ) - (br_if $while-in11 - (i32.lt_u - (tee_local $7 - (i32.add - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (br $label$break$L46) - ) - ) - ) - (if - (i32.lt_u - (tee_local $5 - (i32.add - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 2) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (if - (i32.eq - (i32.load8_s offset=3 - (get_local $11) - ) - (i32.const 36) - ) - (block - (i32.store - (i32.add - (get_local $4) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 10) - ) - (set_local $5 - (i32.load - (i32.add - (get_local $3) - (i32.shl - (i32.add - (i32.load8_s - (get_local $7) - ) - (i32.const -48) - ) - (i32.const 3) - ) - ) - ) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (br $label$break$L46) - ) - ) - ) - (if - (get_local $16) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $11 - (if i32 - (get_local $32) - (block i32 - (set_local $5 - (i32.load - (tee_local $11 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (get_local $7) - ) - (block i32 - (set_local $5 - (i32.const 0) - ) - (get_local $7) - ) - ) - ) - ) - (set_local $5 - (i32.const -1) - ) - ) - ) - (set_local $7 - (get_local $11) - ) - (set_local $8 - (i32.const 0) - ) - (loop $while-in13 - (if - (i32.gt_u - (tee_local $9 - (i32.add - (i32.load8_s - (get_local $7) - ) - (i32.const -65) - ) - ) - (i32.const 57) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $11 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (if - (i32.lt_u - (i32.add - (tee_local $9 - (i32.and - (tee_local $14 - (i32.load8_s - (i32.add - (i32.add - (i32.mul - (get_local $8) - (i32.const 58) - ) - (i32.const 10795) - ) - (get_local $9) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const -1) - ) - (i32.const 8) - ) - (block - (set_local $7 - (get_local $11) - ) - (set_local $8 - (get_local $9) - ) - (br $while-in13) - ) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $14) - (i32.const 255) - ) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $18 - (i32.gt_s - (get_local $12) - (i32.const -1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (if - (i32.eq - (i32.and - (get_local $14) - (i32.const 255) - ) - (i32.const 19) - ) - (if - (get_local $18) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - (br $__rjti$2) - ) - (block - (if - (get_local $18) - (block - (i32.store - (i32.add - (get_local $4) - (i32.shl - (get_local $12) - (i32.const 2) - ) - ) - (get_local $9) - ) - (set_local $14 - (i32.load offset=4 - (tee_local $12 - (i32.add - (get_local $3) - (i32.shl - (get_local $12) - (i32.const 3) - ) - ) - ) - ) - ) - (i32.store - (tee_local $9 - (get_local $17) - ) - (i32.load - (get_local $12) - ) - ) - (i32.store offset=4 - (get_local $9) - (get_local $14) - ) - (br $__rjti$2) - ) - ) - (if - (i32.eqz - (get_local $32) - ) - (block - (set_local $15 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg - (get_local $17) - (get_local $9) - (get_local $2) - ) - ) - ) - (br $__rjto$2) - ) - (if - (i32.eqz - (get_local $32) - ) - (block - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - ) - ) - (if - (i32.and - (i32.ne - (get_local $8) - (i32.const 0) - ) - (i32.eq - (i32.and - (tee_local $9 - (i32.load8_s - (get_local $7) - ) - ) - (i32.const 15) - ) - (i32.const 3) - ) - ) - (set_local $9 - (i32.and - (get_local $9) - (i32.const -33) - ) - ) - ) - (set_local $7 - (i32.and - (get_local $10) - (i32.const -65537) - ) - ) - (if - (i32.and - (get_local $10) - (i32.const 8192) - ) - (set_local $10 - (get_local $7) - ) - ) - (block $__rjto$8 - (block $__rjti$8 - (block $__rjti$7 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $switch-default120 - (block $switch-case42 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case34 - (block $switch-case33 - (block $switch-case29 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case42 $switch-default120 $switch-case40 $switch-default120 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case29 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case42 $switch-default120 $switch-case37 $switch-case34 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-case34 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case29 $switch-default120 - (i32.sub - (get_local $9) - (i32.const 65) - ) - ) - ) - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (get_local $8) - ) - ) - (i32.store - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (tee_local $1 - (i32.load - (get_local $17) - ) - ) - (get_local $15) - ) - (i32.store offset=4 - (get_local $1) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $15) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store16 - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store8 - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (tee_local $1 - (i32.load - (get_local $17) - ) - ) - (get_local $15) - ) - (i32.store offset=4 - (get_local $1) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $15) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $1 - (i32.or - (get_local $10) - (i32.const 8) - ) - ) - (if - (i32.le_u - (get_local $5) - (i32.const 8) - ) - (set_local $5 - (i32.const 8) - ) - ) - (set_local $9 - (i32.const 120) - ) - (br $__rjti$3) - ) - (set_local $1 - (get_local $10) - ) - (br $__rjti$3) - ) - (if - (i32.and - (i32.eqz - (tee_local $6 - (i32.load - (tee_local $1 - (get_local $17) - ) - ) - ) - ) - (i32.eqz - (tee_local $7 - (i32.load offset=4 - (get_local $1) - ) - ) - ) - ) - (set_local $7 - (get_local $24) - ) - (block - (set_local $1 - (get_local $24) - ) - (loop $while-in32 - (i32.store8 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.or - (i32.and - (get_local $6) - (i32.const 7) - ) - (i32.const 48) - ) - ) - (br_if $while-in32 - (i32.eqz - (i32.and - (i32.eqz - (tee_local $6 - (call $_bitshift64Lshr - (get_local $6) - (get_local $7) - (i32.const 3) - ) - ) - ) - (i32.eqz - (tee_local $7 - (get_global $tempRet0) - ) - ) - ) - ) - ) - (set_local $7 - (get_local $1) - ) - ) - ) - ) - (if - (i32.and - (get_local $10) - (i32.const 8) - ) - (block - (set_local $6 - (get_local $7) - ) - (set_local $1 - (get_local $10) - ) - (if - (i32.le_s - (get_local $5) - (tee_local $10 - (i32.sub - (get_local $40) - (get_local $7) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (br $__rjti$8) - ) - (block - (set_local $6 - (get_local $7) - ) - (set_local $1 - (get_local $10) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (br $__rjti$8) - ) - ) - ) - (set_local $1 - (i32.load - (tee_local $6 - (get_local $17) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.load offset=4 - (get_local $6) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (tee_local $7 - (get_local $17) - ) - (tee_local $1 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (get_local $1) - (get_local $6) - ) - ) - ) - (i32.store offset=4 - (get_local $7) - (tee_local $6 - (get_global $tempRet0) - ) - ) - (set_local $7 - (i32.const 1) - ) - (set_local $8 - (i32.const 11275) - ) - (br $__rjti$4) - ) - ) - (if - (i32.and - (get_local $10) - (i32.const 2048) - ) - (block - (set_local $7 - (i32.const 1) - ) - (set_local $8 - (i32.const 11276) - ) - (br $__rjti$4) - ) - (block - (set_local $7 - (tee_local $8 - (i32.and - (get_local $10) - (i32.const 1) - ) - ) - ) - (set_local $8 - (if i32 - (get_local $8) - (i32.const 11277) - (i32.const 11275) - ) - ) - (br $__rjti$4) - ) - ) - ) - (set_local $1 - (i32.load - (tee_local $6 - (get_local $17) - ) - ) - ) - (set_local $6 - (i32.load offset=4 - (get_local $6) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (br $__rjti$4) - ) - (i32.store8 - (get_local $41) - (i32.load - (get_local $17) - ) - ) - (set_local $1 - (get_local $41) - ) - (set_local $10 - (get_local $7) - ) - (set_local $9 - (i32.const 1) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (set_local $6 - (get_local $24) - ) - (br $__rjto$8) - ) - (set_local $6 - (call $_strerror - (i32.load - (call $___errno_location) - ) - ) - ) - (br $__rjti$5) - ) - (if - (i32.eqz - (tee_local $6 - (i32.load - (get_local $17) - ) - ) - ) - (set_local $6 - (i32.const 13177) - ) - ) - (br $__rjti$5) - ) - (i32.store - (get_local $39) - (i32.load - (get_local $17) - ) - ) - (i32.store - (get_local $44) - (i32.const 0) - ) - (i32.store - (get_local $17) - (get_local $39) - ) - (set_local $6 - (get_local $39) - ) - (set_local $7 - (i32.const -1) - ) - (br $__rjti$6) - ) - (set_local $6 - (i32.load - (get_local $17) - ) - ) - (if - (get_local $5) - (block - (set_local $7 - (get_local $5) - ) - (br $__rjti$6) - ) - (block - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (i32.const 0) - (get_local $10) - ) - (set_local $1 - (i32.const 0) - ) - (br $__rjti$7) - ) - ) - ) - (set_local $19 - (f64.load - (get_local $17) - ) - ) - (i32.store - (get_local $21) - (i32.const 0) - ) - (f64.store - (get_global $tempDoublePtr) - (get_local $19) - ) - (set_local $28 - (if i32 - (i32.lt_s - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - (i32.const 0) - ) - (block i32 - (set_local $19 - (f64.neg - (get_local $19) - ) - ) - (set_local $26 - (i32.const 1) - ) - (i32.const 13184) - ) - (if i32 - (i32.and - (get_local $10) - (i32.const 2048) - ) - (block i32 - (set_local $26 - (i32.const 1) - ) - (i32.const 13187) - ) - (block i32 - (set_local $26 - (tee_local $1 - (i32.and - (get_local $10) - (i32.const 1) - ) - ) - ) - (if i32 - (get_local $1) - (i32.const 13190) - (i32.const 13185) - ) - ) - ) - ) - ) - (f64.store - (get_global $tempDoublePtr) - (get_local $19) - ) - (block $do-once49 - (if - (i32.or - (i32.lt_u - (tee_local $1 - (i32.and - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - (i32.const 2146435072) - ) - ) - (i32.const 2146435072) - ) - (i32.and - (i32.eq - (get_local $1) - (i32.const 2146435072) - ) - (i32.const 0) - ) - ) - (block - (if - (tee_local $1 - (f64.ne - (tee_local $20 - (f64.mul - (call $_frexpl - (get_local $19) - (get_local $21) - ) - (f64.const 2) - ) - ) - (f64.const 0) - ) - ) - (i32.store - (get_local $21) - (i32.add - (i32.load - (get_local $21) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (tee_local $23 - (i32.or - (get_local $9) - (i32.const 32) - ) - ) - (i32.const 97) - ) - (block - (if - (tee_local $12 - (i32.and - (get_local $9) - (i32.const 32) - ) - ) - (set_local $28 - (i32.add - (get_local $28) - (i32.const 9) - ) - ) - ) - (if - (i32.eqz - (i32.or - (i32.gt_u - (get_local $5) - (i32.const 11) - ) - (i32.eqz - (tee_local $1 - (i32.sub - (i32.const 12) - (get_local $5) - ) - ) - ) - ) - ) - (block - (set_local $19 - (f64.const 8) - ) - (loop $while-in54 - (set_local $19 - (f64.mul - (get_local $19) - (f64.const 16) - ) - ) - (br_if $while-in54 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - ) - (set_local $20 - (if f64 - (i32.eq - (i32.load8_s - (get_local $28) - ) - (i32.const 45) - ) - (f64.neg - (f64.add - (get_local $19) - (f64.sub - (f64.neg - (get_local $20) - ) - (get_local $19) - ) - ) - ) - (f64.sub - (f64.add - (get_local $20) - (get_local $19) - ) - (get_local $19) - ) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $1 - (call $_fmt_u - (tee_local $1 - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load - (get_local $21) - ) - ) - (i32.const 0) - ) - (i32.sub - (i32.const 0) - (get_local $6) - ) - (get_local $6) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (get_local $34) - ) - ) - (get_local $34) - ) - (block - (i32.store8 - (get_local $42) - (i32.const 48) - ) - (set_local $1 - (get_local $42) - ) - ) - ) - (set_local $8 - (i32.or - (get_local $26) - (i32.const 2) - ) - ) - (i32.store8 - (i32.add - (get_local $1) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (get_local $6) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (tee_local $7 - (i32.add - (get_local $1) - (i32.const -2) - ) - ) - (i32.add - (get_local $9) - (i32.const 15) - ) - ) - (set_local $9 - (i32.lt_s - (get_local $5) - (i32.const 1) - ) - ) - (set_local $14 - (i32.eqz - (i32.and - (get_local $10) - (i32.const 8) - ) - ) - ) - (set_local $1 - (get_local $22) - ) - (loop $while-in56 - (i32.store8 - (get_local $1) - (i32.or - (i32.load8_u - (i32.add - (tee_local $6 - (i32.trunc_s/f64 - (get_local $20) - ) - ) - (i32.const 11259) - ) - ) - (get_local $12) - ) - ) - (set_local $20 - (f64.mul - (f64.sub - (get_local $20) - (f64.convert_s/i32 - (get_local $6) - ) - ) - (f64.const 16) - ) - ) - (set_local $1 - (block $do-once57 i32 - (if i32 - (i32.eq - (i32.sub - (tee_local $6 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (get_local $30) - ) - (i32.const 1) - ) - (block i32 - (drop - (br_if $do-once57 - (get_local $6) - (i32.and - (get_local $14) - (i32.and - (get_local $9) - (f64.eq - (get_local $20) - (f64.const 0) - ) - ) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 46) - ) - (i32.add - (get_local $1) - (i32.const 2) - ) - ) - (get_local $6) - ) - ) - ) - (br_if $while-in56 - (f64.ne - (get_local $20) - (f64.const 0) - ) - ) - ) - (set_local $6 - (get_local $7) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (tee_local $5 - (i32.add - (tee_local $9 - (if i32 - (i32.and - (i32.ne - (get_local $5) - (i32.const 0) - ) - (i32.lt_s - (i32.add - (get_local $47) - (get_local $1) - ) - (get_local $5) - ) - ) - (i32.sub - (i32.add - (get_local $48) - (get_local $5) - ) - (get_local $6) - ) - (i32.add - (i32.sub - (get_local $46) - (get_local $6) - ) - (get_local $1) - ) - ) - ) - (get_local $8) - ) - ) - (get_local $10) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $28) - (get_local $8) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $13) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 65536) - ) - ) - (set_local $1 - (i32.sub - (get_local $1) - (get_local $30) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $22) - (get_local $1) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (i32.sub - (get_local $9) - (i32.add - (get_local $1) - (tee_local $1 - (i32.sub - (get_local $31) - (get_local $6) - ) - ) - ) - ) - (i32.const 0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $7) - (get_local $1) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (if - (i32.ge_s - (get_local $5) - (get_local $13) - ) - (set_local $13 - (get_local $5) - ) - ) - (br $do-once49) - ) - ) - (if - (get_local $1) - (block - (i32.store - (get_local $21) - (tee_local $1 - (i32.add - (i32.load - (get_local $21) - ) - (i32.const -28) - ) - ) - ) - (set_local $20 - (f64.mul - (get_local $20) - (f64.const 268435456) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $21) - ) - ) - ) - (set_local $7 - (tee_local $6 - (if i32 - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (get_local $49) - (get_local $50) - ) - ) - ) - (loop $while-in60 - (i32.store - (get_local $7) - (tee_local $1 - (i32.trunc_s/f64 - (get_local $20) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (br_if $while-in60 - (f64.ne - (tee_local $20 - (f64.mul - (f64.sub - (get_local $20) - (f64.convert_u/i32 - (get_local $1) - ) - ) - (f64.const 1e9) - ) - ) - (f64.const 0) - ) - ) - ) - (if - (i32.gt_s - (tee_local $8 - (i32.load - (get_local $21) - ) - ) - (i32.const 0) - ) - (block - (set_local $1 - (get_local $6) - ) - (loop $while-in62 - (set_local $14 - (if i32 - (i32.gt_s - (get_local $8) - (i32.const 29) - ) - (i32.const 29) - (get_local $8) - ) - ) - (block $do-once63 - (if - (i32.ge_u - (tee_local $12 - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - (get_local $1) - ) - (block - (set_local $8 - (i32.const 0) - ) - (loop $while-in66 - (i32.store - (get_local $12) - (call $___uremdi3 - (tee_local $8 - (call $_i64Add - (call $_bitshift64Shl - (i32.load - (get_local $12) - ) - (i32.const 0) - (get_local $14) - ) - (get_global $tempRet0) - (get_local $8) - (i32.const 0) - ) - ) - (tee_local $18 - (get_global $tempRet0) - ) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (set_local $8 - (call $___udivdi3 - (get_local $8) - (get_local $18) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (br_if $while-in66 - (i32.ge_u - (tee_local $12 - (i32.add - (get_local $12) - (i32.const -4) - ) - ) - (get_local $1) - ) - ) - ) - (br_if $do-once63 - (i32.eqz - (get_local $8) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - (get_local $8) - ) - ) - ) - ) - (loop $while-in68 - (if - (i32.gt_u - (get_local $7) - (get_local $1) - ) - (if - (i32.eqz - (i32.load - (tee_local $8 - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - ) - ) - (block - (set_local $7 - (get_local $8) - ) - (br $while-in68) - ) - ) - ) - ) - (i32.store - (get_local $21) - (tee_local $8 - (i32.sub - (i32.load - (get_local $21) - ) - (get_local $14) - ) - ) - ) - (br_if $while-in62 - (i32.gt_s - (get_local $8) - (i32.const 0) - ) - ) - ) - ) - (set_local $1 - (get_local $6) - ) - ) - (set_local $18 - (if i32 - (i32.lt_s - (get_local $5) - (i32.const 0) - ) - (i32.const 6) - (get_local $5) - ) - ) - (if - (i32.lt_s - (get_local $8) - (i32.const 0) - ) - (block - (set_local $14 - (i32.add - (i32.div_s - (i32.add - (get_local $18) - (i32.const 25) - ) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (set_local $27 - (i32.eq - (get_local $23) - (i32.const 102) - ) - ) - (set_local $5 - (get_local $7) - ) - (loop $while-in70 - (if - (i32.gt_s - (tee_local $8 - (i32.sub - (i32.const 0) - (get_local $8) - ) - ) - (i32.const 9) - ) - (set_local $8 - (i32.const 9) - ) - ) - (block $do-once71 - (if - (i32.lt_u - (get_local $1) - (get_local $5) - ) - (block - (set_local $29 - (i32.add - (i32.shl - (i32.const 1) - (get_local $8) - ) - (i32.const -1) - ) - ) - (set_local $36 - (i32.shr_u - (i32.const 1000000000) - (get_local $8) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $12 - (get_local $1) - ) - (loop $while-in74 - (i32.store - (get_local $12) - (i32.add - (i32.shr_u - (tee_local $37 - (i32.load - (get_local $12) - ) - ) - (get_local $8) - ) - (get_local $7) - ) - ) - (set_local $7 - (i32.mul - (i32.and - (get_local $37) - (get_local $29) - ) - (get_local $36) - ) - ) - (br_if $while-in74 - (i32.lt_u - (tee_local $12 - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (get_local $5) - ) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - ) - (br_if $do-once71 - (i32.eqz - (get_local $7) - ) - ) - (i32.store - (get_local $5) - (get_local $7) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (i32.gt_s - (i32.shr_s - (i32.sub - (get_local $5) - (tee_local $7 - (if i32 - (get_local $27) - (get_local $6) - (get_local $1) - ) - ) - ) - (i32.const 2) - ) - (get_local $14) - ) - (set_local $5 - (i32.add - (get_local $7) - (i32.shl - (get_local $14) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $21) - (tee_local $8 - (i32.add - (i32.load - (get_local $21) - ) - (get_local $8) - ) - ) - ) - (br_if $while-in70 - (i32.lt_s - (get_local $8) - (i32.const 0) - ) - ) - (set_local $12 - (get_local $5) - ) - ) - ) - (set_local $12 - (get_local $7) - ) - ) - (set_local $27 - (get_local $6) - ) - (block $do-once75 - (if - (i32.lt_u - (get_local $1) - (get_local $12) - ) - (block - (set_local $5 - (i32.mul - (i32.shr_s - (i32.sub - (get_local $27) - (get_local $1) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once75 - (i32.lt_u - (tee_local $8 - (i32.load - (get_local $1) - ) - ) - (i32.const 10) - ) - ) - (set_local $7 - (i32.const 10) - ) - (loop $while-in78 - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br_if $while-in78 - (i32.ge_u - (get_local $8) - (tee_local $7 - (i32.mul - (get_local $7) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.const 0) - ) - ) - ) - (set_local $36 - (i32.eq - (get_local $23) - (i32.const 103) - ) - ) - (set_local $37 - (i32.ne - (get_local $18) - (i32.const 0) - ) - ) - (if - (i32.lt_s - (tee_local $7 - (i32.add - (i32.sub - (get_local $18) - (if i32 - (i32.ne - (get_local $23) - (i32.const 102) - ) - (get_local $5) - (i32.const 0) - ) - ) - (i32.shr_s - (i32.shl - (i32.and - (get_local $37) - (get_local $36) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (get_local $12) - (get_local $27) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (block - (set_local $7 - (i32.add - (i32.add - (get_local $6) - (i32.shl - (i32.div_s - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 9216) - ) - ) - (i32.const 9) - ) - (i32.const 2) - ) - ) - (i32.const -4092) - ) - ) - (if - (i32.lt_s - (tee_local $14 - (i32.add - (i32.rem_s - (get_local $8) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (i32.const 9) - ) - (block - (set_local $8 - (i32.const 10) - ) - (loop $while-in80 - (set_local $8 - (i32.mul - (get_local $8) - (i32.const 10) - ) - ) - (br_if $while-in80 - (i32.ne - (tee_local $14 - (i32.add - (get_local $14) - (i32.const 1) - ) - ) - (i32.const 9) - ) - ) - ) - ) - (set_local $8 - (i32.const 10) - ) - ) - (block $do-once81 - (if - (i32.eqz - (i32.and - (tee_local $29 - (i32.eq - (i32.add - (get_local $7) - (i32.const 4) - ) - (get_local $12) - ) - ) - (i32.eqz - (tee_local $14 - (i32.rem_u - (tee_local $23 - (i32.load - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - ) - (block - (set_local $20 - (if f64 - (i32.and - (i32.div_u - (get_local $23) - (get_local $8) - ) - (i32.const 1) - ) - (f64.const 9007199254740994) - (f64.const 9007199254740992) - ) - ) - (set_local $19 - (if f64 - (i32.lt_u - (get_local $14) - (tee_local $51 - (i32.div_s - (get_local $8) - (i32.const 2) - ) - ) - ) - (f64.const 0.5) - (if f64 - (i32.and - (get_local $29) - (i32.eq - (get_local $14) - (get_local $51) - ) - ) - (f64.const 1) - (f64.const 1.5) - ) - ) - ) - (block $do-once83 - (if - (get_local $26) - (block - (br_if $do-once83 - (i32.ne - (i32.load8_s - (get_local $28) - ) - (i32.const 45) - ) - ) - (set_local $20 - (f64.neg - (get_local $20) - ) - ) - (set_local $19 - (f64.neg - (get_local $19) - ) - ) - ) - ) - ) - (i32.store - (get_local $7) - (tee_local $14 - (i32.sub - (get_local $23) - (get_local $14) - ) - ) - ) - (br_if $do-once81 - (f64.eq - (f64.add - (get_local $20) - (get_local $19) - ) - (get_local $20) - ) - ) - (i32.store - (get_local $7) - (tee_local $5 - (i32.add - (get_local $14) - (get_local $8) - ) - ) - ) - (if - (i32.gt_u - (get_local $5) - (i32.const 999999999) - ) - (loop $while-in86 - (i32.store - (get_local $7) - (i32.const 0) - ) - (if - (i32.lt_u - (tee_local $7 - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - (get_local $1) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - (i32.const 0) - ) - ) - (i32.store - (get_local $7) - (tee_local $5 - (i32.add - (i32.load - (get_local $7) - ) - (i32.const 1) - ) - ) - ) - (br_if $while-in86 - (i32.gt_u - (get_local $5) - (i32.const 999999999) - ) - ) - ) - ) - (set_local $5 - (i32.mul - (i32.shr_s - (i32.sub - (get_local $27) - (get_local $1) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once81 - (i32.lt_u - (tee_local $14 - (i32.load - (get_local $1) - ) - ) - (i32.const 10) - ) - ) - (set_local $8 - (i32.const 10) - ) - (loop $while-in88 - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br_if $while-in88 - (i32.ge_u - (get_local $14) - (tee_local $8 - (i32.mul - (get_local $8) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - ) - (set_local $14 - (get_local $1) - ) - (set_local $8 - (get_local $5) - ) - (if - (i32.le_u - (get_local $12) - (tee_local $1 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - ) - (set_local $1 - (get_local $12) - ) - ) - ) - (block - (set_local $14 - (get_local $1) - ) - (set_local $8 - (get_local $5) - ) - (set_local $1 - (get_local $12) - ) - ) - ) - (set_local $23 - (i32.sub - (i32.const 0) - (get_local $8) - ) - ) - (loop $while-in90 - (block $while-out89 - (if - (i32.le_u - (get_local $1) - (get_local $14) - ) - (block - (set_local $29 - (i32.const 0) - ) - (set_local $7 - (get_local $1) - ) - (br $while-out89) - ) - ) - (if - (i32.load - (tee_local $5 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - ) - (block - (set_local $29 - (i32.const 1) - ) - (set_local $7 - (get_local $1) - ) - ) - (block - (set_local $1 - (get_local $5) - ) - (br $while-in90) - ) - ) - ) - ) - (block $do-once91 - (set_local $12 - (if i32 - (get_local $36) - (block i32 - (set_local $1 - (if i32 - (i32.and - (i32.gt_s - (tee_local $1 - (i32.add - (i32.xor - (get_local $37) - (i32.const 1) - ) - (get_local $18) - ) - ) - (get_local $8) - ) - (i32.gt_s - (get_local $8) - (i32.const -5) - ) - ) - (block i32 - (set_local $5 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (i32.sub - (i32.add - (get_local $1) - (i32.const -1) - ) - (get_local $8) - ) - ) - (block i32 - (set_local $5 - (i32.add - (get_local $9) - (i32.const -2) - ) - ) - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - ) - (br_if $do-once91 - (tee_local $12 - (i32.and - (get_local $10) - (i32.const 8) - ) - ) - ) - (block $do-once93 - (if - (get_local $29) - (block - (if - (i32.eqz - (tee_local $12 - (i32.load - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - ) - ) - (block - (set_local $9 - (i32.const 9) - ) - (br $do-once93) - ) - ) - (if - (i32.rem_u - (get_local $12) - (i32.const 10) - ) - (block - (set_local $9 - (i32.const 0) - ) - (br $do-once93) - ) - (block - (set_local $18 - (i32.const 10) - ) - (set_local $9 - (i32.const 0) - ) - ) - ) - (loop $while-in96 - (set_local $9 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (br_if $while-in96 - (i32.eqz - (i32.rem_u - (get_local $12) - (tee_local $18 - (i32.mul - (get_local $18) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (set_local $9 - (i32.const 9) - ) - ) - ) - (set_local $12 - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (get_local $7) - (get_local $27) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (if i32 - (i32.eq - (i32.or - (get_local $5) - (i32.const 32) - ) - (i32.const 102) - ) - (block i32 - (if - (i32.ge_s - (get_local $1) - (if i32 - (i32.lt_s - (tee_local $9 - (i32.sub - (get_local $12) - (get_local $9) - ) - ) - (i32.const 0) - ) - (tee_local $9 - (i32.const 0) - ) - (get_local $9) - ) - ) - (set_local $1 - (get_local $9) - ) - ) - (i32.const 0) - ) - (block i32 - (if - (i32.ge_s - (get_local $1) - (if i32 - (i32.lt_s - (tee_local $9 - (i32.sub - (i32.add - (get_local $12) - (get_local $8) - ) - (get_local $9) - ) - ) - (i32.const 0) - ) - (tee_local $9 - (i32.const 0) - ) - (get_local $9) - ) - ) - (set_local $1 - (get_local $9) - ) - ) - (i32.const 0) - ) - ) - ) - (block i32 - (set_local $5 - (get_local $9) - ) - (set_local $1 - (get_local $18) - ) - (i32.and - (get_local $10) - (i32.const 8) - ) - ) - ) - ) - ) - (if - (tee_local $27 - (i32.eq - (i32.or - (get_local $5) - (i32.const 32) - ) - (i32.const 102) - ) - ) - (block - (set_local $5 - (if i32 - (i32.gt_s - (get_local $8) - (i32.const 0) - ) - (get_local $8) - (i32.const 0) - ) - ) - (set_local $8 - (i32.const 0) - ) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $31) - (tee_local $9 - (call $_fmt_u - (if i32 - (i32.lt_s - (get_local $8) - (i32.const 0) - ) - (get_local $23) - (tee_local $23 - (get_local $8) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $23) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (get_local $34) - ) - ) - ) - (i32.const 2) - ) - (loop $while-in98 - (i32.store8 - (tee_local $9 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in98 - (i32.lt_s - (i32.sub - (get_local $31) - (get_local $9) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $9) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (get_local $8) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (tee_local $8 - (i32.add - (get_local $9) - (i32.const -2) - ) - ) - (get_local $5) - ) - (set_local $5 - (i32.sub - (get_local $31) - (get_local $8) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (tee_local $18 - (i32.add - (i32.add - (i32.add - (i32.add - (get_local $26) - (i32.const 1) - ) - (get_local $1) - ) - (i32.ne - (tee_local $23 - (i32.or - (get_local $1) - (get_local $12) - ) - ) - (i32.const 0) - ) - ) - (get_local $5) - ) - ) - (get_local $10) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $28) - (get_local $26) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $13) - (get_local $18) - (i32.xor - (get_local $10) - (i32.const 65536) - ) - ) - (block $do-once99 - (if - (get_local $27) - (block - (set_local $8 - (tee_local $9 - (if i32 - (i32.gt_u - (get_local $14) - (get_local $6) - ) - (get_local $6) - (get_local $14) - ) - ) - ) - (loop $while-in102 - (set_local $5 - (call $_fmt_u - (i32.load - (get_local $8) - ) - (i32.const 0) - (get_local $33) - ) - ) - (block $do-once103 - (if - (i32.eq - (get_local $8) - (get_local $9) - ) - (block - (br_if $do-once103 - (i32.ne - (get_local $5) - (get_local $33) - ) - ) - (i32.store8 - (get_local $35) - (i32.const 48) - ) - (set_local $5 - (get_local $35) - ) - ) - (block - (br_if $do-once103 - (i32.le_u - (get_local $5) - (get_local $22) - ) - ) - (drop - (call $_memset - (get_local $22) - (i32.const 48) - (i32.sub - (get_local $5) - (get_local $30) - ) - ) - ) - (loop $while-in106 - (br_if $while-in106 - (i32.gt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - (get_local $22) - ) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $5) - (i32.sub - (get_local $43) - (get_local $5) - ) - (get_local $0) - ) - ) - ) - (if - (i32.le_u - (tee_local $5 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (get_local $6) - ) - (block - (set_local $8 - (get_local $5) - ) - (br $while-in102) - ) - ) - ) - (block $do-once107 - (if - (get_local $23) - (block - (br_if $do-once107 - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (i32.const 13215) - (i32.const 1) - (get_local $0) - ) - ) - ) - ) - ) - (if - (i32.and - (i32.gt_s - (get_local $1) - (i32.const 0) - ) - (i32.lt_u - (get_local $5) - (get_local $7) - ) - ) - (loop $while-in110 - (if - (i32.gt_u - (tee_local $6 - (call $_fmt_u - (i32.load - (get_local $5) - ) - (i32.const 0) - (get_local $33) - ) - ) - (get_local $22) - ) - (block - (drop - (call $_memset - (get_local $22) - (i32.const 48) - (i32.sub - (get_local $6) - (get_local $30) - ) - ) - ) - (loop $while-in112 - (br_if $while-in112 - (i32.gt_u - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (get_local $22) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $6) - (if i32 - (i32.gt_s - (get_local $1) - (i32.const 9) - ) - (i32.const 9) - (get_local $1) - ) - (get_local $0) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $1) - (i32.const -9) - ) - ) - (if - (i32.and - (i32.gt_s - (get_local $1) - (i32.const 9) - ) - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (get_local $7) - ) - ) - (block - (set_local $1 - (get_local $6) - ) - (br $while-in110) - ) - (set_local $1 - (get_local $6) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (i32.add - (get_local $1) - (i32.const 9) - ) - (i32.const 9) - (i32.const 0) - ) - ) - (block - (if - (i32.eqz - (get_local $29) - ) - (set_local $7 - (i32.add - (get_local $14) - (i32.const 4) - ) - ) - ) - (if - (i32.gt_s - (get_local $1) - (i32.const -1) - ) - (block - (set_local $12 - (i32.eqz - (get_local $12) - ) - ) - (set_local $6 - (get_local $1) - ) - (set_local $5 - (get_local $14) - ) - (loop $while-in114 - (if - (i32.eq - (tee_local $1 - (call $_fmt_u - (i32.load - (get_local $5) - ) - (i32.const 0) - (get_local $33) - ) - ) - (get_local $33) - ) - (block - (i32.store8 - (get_local $35) - (i32.const 48) - ) - (set_local $1 - (get_local $35) - ) - ) - ) - (block $do-once115 - (if - (i32.eq - (get_local $5) - (get_local $14) - ) - (block - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (i32.const 1) - (get_local $0) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br_if $do-once115 - (i32.and - (get_local $12) - (i32.lt_s - (get_local $6) - (i32.const 1) - ) - ) - ) - (br_if $do-once115 - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (i32.const 13215) - (i32.const 1) - (get_local $0) - ) - ) - ) - (block - (br_if $do-once115 - (i32.le_u - (get_local $1) - (get_local $22) - ) - ) - (drop - (call $_memset - (get_local $22) - (i32.const 48) - (i32.add - (get_local $1) - (get_local $45) - ) - ) - ) - (loop $while-in118 - (br_if $while-in118 - (i32.gt_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (get_local $22) - ) - ) - ) - ) - ) - ) - (set_local $9 - (i32.sub - (get_local $43) - (get_local $1) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (if i32 - (i32.gt_s - (get_local $6) - (get_local $9) - ) - (get_local $9) - (get_local $6) - ) - (get_local $0) - ) - ) - ) - (br_if $while-in114 - (i32.and - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (get_local $7) - ) - (i32.gt_s - (tee_local $6 - (i32.sub - (get_local $6) - (get_local $9) - ) - ) - (i32.const -1) - ) - ) - ) - (set_local $1 - (get_local $6) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (i32.add - (get_local $1) - (i32.const 18) - ) - (i32.const 18) - (i32.const 0) - ) - (br_if $do-once99 - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $8) - (i32.sub - (get_local $31) - (get_local $8) - ) - (get_local $0) - ) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $18) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (if - (i32.ge_s - (get_local $18) - (get_local $13) - ) - (set_local $13 - (get_local $18) - ) - ) - ) - (block - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (tee_local $6 - (i32.add - (if i32 - (tee_local $8 - (i32.or - (f64.ne - (get_local $19) - (get_local $19) - ) - (i32.const 0) - ) - ) - (tee_local $26 - (i32.const 0) - ) - (get_local $26) - ) - (i32.const 3) - ) - ) - (get_local $7) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const 32) - ) - ) - (block - (drop - (call $___fwritex - (get_local $28) - (get_local $26) - (get_local $0) - ) - ) - (set_local $1 - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $5 - (i32.ne - (i32.and - (get_local $9) - (i32.const 32) - ) - (i32.const 0) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $1) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (if i32 - (get_local $8) - (if i32 - (get_local $5) - (i32.const 13226) - (i32.const 13211) - ) - (if i32 - (get_local $5) - (i32.const 13203) - (i32.const 13207) - ) - ) - (i32.const 3) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $6) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (if - (i32.ge_s - (get_local $6) - (get_local $13) - ) - (set_local $13 - (get_local $6) - ) - ) - ) - ) - ) - (set_local $6 - (get_local $13) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $9 - (get_local $5) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (set_local $6 - (get_local $24) - ) - (br $__rjto$8) - ) - (set_local $8 - (i32.and - (get_local $9) - (i32.const 32) - ) - ) - (if - (i32.and - (i32.eqz - (tee_local $10 - (i32.load - (tee_local $6 - (get_local $17) - ) - ) - ) - ) - (i32.eqz - (tee_local $7 - (i32.load offset=4 - (get_local $6) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $24) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (br $__rjti$8) - ) - (block - (set_local $6 - (get_local $24) - ) - (loop $while-in123 - (i32.store8 - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (i32.or - (i32.load8_u - (i32.add - (i32.and - (get_local $10) - (i32.const 15) - ) - (i32.const 11259) - ) - ) - (get_local $8) - ) - ) - (br_if $while-in123 - (i32.eqz - (i32.and - (i32.eqz - (tee_local $10 - (call $_bitshift64Lshr - (get_local $10) - (get_local $7) - (i32.const 4) - ) - ) - ) - (i32.eqz - (tee_local $7 - (get_global $tempRet0) - ) - ) - ) - ) - ) - ) - (if - (i32.or - (i32.eqz - (i32.and - (get_local $1) - (i32.const 8) - ) - ) - (i32.and - (i32.eqz - (i32.load - (tee_local $10 - (get_local $17) - ) - ) - ) - (i32.eqz - (i32.load offset=4 - (get_local $10) - ) - ) - ) - ) - (block - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (br $__rjti$8) - ) - (block - (set_local $7 - (i32.const 2) - ) - (set_local $8 - (i32.add - (i32.shr_s - (get_local $9) - (i32.const 4) - ) - (i32.const 11275) - ) - ) - (br $__rjti$8) - ) - ) - ) - ) - (br $__rjto$8) - ) - (set_local $6 - (call $_fmt_u - (get_local $1) - (get_local $6) - (get_local $24) - ) - ) - (set_local $1 - (get_local $10) - ) - (br $__rjti$8) - ) - (set_local $1 - (get_local $6) - ) - (set_local $10 - (get_local $7) - ) - (set_local $9 - (if i32 - (tee_local $14 - (i32.eqz - (tee_local $12 - (call $_memchr - (get_local $6) - (i32.const 0) - (get_local $5) - ) - ) - ) - ) - (get_local $5) - (i32.sub - (get_local $12) - (get_local $6) - ) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 11275) - ) - (set_local $6 - (if i32 - (get_local $14) - (i32.add - (get_local $6) - (get_local $5) - ) - (get_local $12) - ) - ) - (br $__rjto$8) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $8 - (get_local $6) - ) - (loop $while-in125 - (block $while-out124 - (br_if $while-out124 - (i32.eqz - (tee_local $9 - (i32.load - (get_local $8) - ) - ) - ) - ) - (br_if $while-out124 - (i32.or - (i32.lt_s - (tee_local $5 - (call $_wctomb - (get_local $38) - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (get_local $5) - (i32.sub - (get_local $7) - (get_local $1) - ) - ) - ) - ) - (if - (i32.gt_u - (get_local $7) - (tee_local $1 - (i32.add - (get_local $5) - (get_local $1) - ) - ) - ) - (block - (set_local $8 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (br $while-in125) - ) - ) - ) - ) - (if - (i32.lt_s - (get_local $5) - (i32.const 0) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $1) - (get_local $10) - ) - (if - (get_local $1) - (block - (set_local $5 - (i32.const 0) - ) - (loop $while-in127 - (br_if $__rjti$7 - (i32.eqz - (tee_local $7 - (i32.load - (get_local $6) - ) - ) - ) - ) - (br_if $__rjti$7 - (i32.gt_s - (tee_local $5 - (i32.add - (tee_local $7 - (call $_wctomb - (get_local $38) - (get_local $7) - ) - ) - (get_local $5) - ) - ) - (get_local $1) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $38) - (get_local $7) - (get_local $0) - ) - ) - ) - (br_if $__rjti$7 - (i32.ge_u - (get_local $5) - (get_local $1) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $while-in127) - ) - ) - (block - (set_local $1 - (i32.const 0) - ) - (br $__rjti$7) - ) - ) - (br $__rjto$8) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $1) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (set_local $6 - (if i32 - (i32.gt_s - (get_local $13) - (get_local $1) - ) - (get_local $13) - (get_local $1) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $10 - (if i32 - (i32.gt_s - (get_local $5) - (i32.const -1) - ) - (i32.and - (get_local $1) - (i32.const -65537) - ) - (get_local $1) - ) - ) - (set_local $6 - (if i32 - (i32.or - (get_local $5) - (tee_local $9 - (i32.or - (i32.ne - (i32.load - (tee_local $1 - (get_local $17) - ) - ) - (i32.const 0) - ) - (i32.ne - (i32.load offset=4 - (get_local $1) - ) - (i32.const 0) - ) - ) - ) - ) - (block i32 - (set_local $1 - (get_local $6) - ) - (set_local $9 - (if i32 - (i32.gt_s - (get_local $5) - (tee_local $6 - (i32.add - (i32.xor - (get_local $9) - (i32.const 1) - ) - (i32.sub - (get_local $40) - (get_local $6) - ) - ) - ) - ) - (get_local $5) - (get_local $6) - ) - ) - (get_local $24) - ) - (block i32 - (set_local $1 - (get_local $24) - ) - (set_local $9 - (i32.const 0) - ) - (get_local $24) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (tee_local $6 - (if i32 - (i32.lt_s - (get_local $13) - (tee_local $5 - (i32.add - (get_local $7) - (if i32 - (i32.lt_s - (get_local $9) - (tee_local $12 - (i32.sub - (get_local $6) - (get_local $1) - ) - ) - ) - (tee_local $9 - (get_local $12) - ) - (get_local $9) - ) - ) - ) - ) - (get_local $5) - (get_local $13) - ) - ) - (get_local $5) - (get_local $10) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $8) - (get_local $7) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $6) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 65536) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $9) - (get_local $12) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (get_local $12) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $6) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - ) - (br $label$break$L345) - ) - (if - (i32.eqz - (get_local $0) - ) - (if - (get_local $16) - (block - (set_local $0 - (i32.const 1) - ) - (loop $while-in130 - (if - (tee_local $1 - (i32.load - (i32.add - (get_local $4) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - ) - ) - (block - (call $_pop_arg - (i32.add - (get_local $3) - (i32.shl - (get_local $0) - (i32.const 3) - ) - ) - (get_local $1) - (get_local $2) - ) - (br_if $while-in130 - (i32.lt_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (set_local $15 - (i32.const 1) - ) - (br $label$break$L345) - ) - ) - ) - (if - (i32.lt_s - (get_local $0) - (i32.const 10) - ) - (loop $while-in132 - (if - (i32.load - (i32.add - (get_local $4) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L345) - ) - ) - (br_if $while-in132 - (i32.lt_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (set_local $15 - (i32.const 1) - ) - ) - (set_local $15 - (i32.const 1) - ) - ) - ) - (set_local $15 - (i32.const 0) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $25) - ) - (get_local $15) - ) - (func $__ZNSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (result i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (set_local $16 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 512) - ) - ) - (set_local $29 - (i32.add - (get_local $16) - (i32.const 500) - ) - ) - (set_local $37 - (i32.add - (get_local $16) - (i32.const 72) - ) - ) - (set_local $38 - (i32.add - (get_local $16) - (i32.const 68) - ) - ) - (set_local $15 - (i32.add - (get_local $16) - (i32.const 44) - ) - ) - (set_local $17 - (i32.add - (get_local $16) - (i32.const 32) - ) - ) - (set_local $18 - (i32.add - (get_local $16) - (i32.const 20) - ) - ) - (set_local $19 - (i32.add - (get_local $16) - (i32.const 8) - ) - ) - (set_local $32 - (i32.add - (get_local $16) - (i32.const 4) - ) - ) - (set_local $33 - (get_local $16) - ) - (i32.store - (tee_local $30 - (i32.add - (get_local $16) - (i32.const 496) - ) - ) - (get_local $10) - ) - (i32.store - (tee_local $23 - (i32.add - (get_local $16) - (i32.const 88) - ) - ) - (tee_local $10 - (i32.add - (get_local $16) - (i32.const 96) - ) - ) - ) - (i32.store - (tee_local $40 - (i32.add - (get_local $23) - (i32.const 4) - ) - ) - (i32.const 107) - ) - (i32.store - (tee_local $24 - (i32.add - (get_local $16) - (i32.const 80) - ) - ) - (get_local $10) - ) - (i32.store - (tee_local $31 - (i32.add - (get_local $16) - (i32.const 76) - ) - ) - (i32.add - (get_local $10) - (i32.const 400) - ) - ) - (i32.store - (tee_local $22 - (i32.add - (get_local $16) - (i32.const 56) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $22) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $22) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $22) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $15) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $15) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $15) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $15) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $17) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $17) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $17) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $17) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.store - (get_local $18) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $18) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $18) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in5 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $18) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (i32.store - (get_local $19) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $19) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $19) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $19) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - ) - (call $__ZNSt3__211__money_getIwE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_SJ_Ri - (get_local $2) - (get_local $3) - (get_local $29) - (get_local $37) - (get_local $38) - (get_local $22) - (get_local $15) - (get_local $17) - (get_local $18) - (get_local $32) - ) - (i32.store - (get_local $9) - (i32.load - (get_local $8) - ) - ) - (set_local $25 - (i32.add - (get_local $17) - (i32.const 11) - ) - ) - (set_local $34 - (i32.add - (get_local $17) - (i32.const 4) - ) - ) - (set_local $26 - (i32.add - (get_local $18) - (i32.const 11) - ) - ) - (set_local $35 - (i32.add - (get_local $18) - (i32.const 4) - ) - ) - (set_local $39 - (i32.ne - (i32.and - (get_local $4) - (i32.const 512) - ) - (i32.const 0) - ) - ) - (set_local $27 - (i32.add - (get_local $15) - (i32.const 11) - ) - ) - (set_local $36 - (i32.add - (get_local $15) - (i32.const 4) - ) - ) - (set_local $41 - (i32.add - (get_local $19) - (i32.const 11) - ) - ) - (set_local $42 - (i32.add - (get_local $19) - (i32.const 4) - ) - ) - (set_local $43 - (i32.add - (get_local $29) - (i32.const 3) - ) - ) - (set_local $44 - (i32.add - (get_local $22) - (i32.const 11) - ) - ) - (set_local $45 - (i32.add - (get_local $22) - (i32.const 4) - ) - ) - (set_local $2 - (get_local $10) - ) - (set_local $20 - (i32.const 0) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $0 - (block $label$break$L315 i32 - (block $__rjti$15 - (block $__rjti$14 - (block $__rjti$13 - (block $__rjti$12 - (block $__rjti$11 - (block $__rjti$10 - (block $__rjti$9 - (loop $label$continue$L21 - (if - (i32.ge_u - (get_local $20) - (i32.const 4) - ) - (block - (set_local $3 - (get_local $2) - ) - (br $__rjti$15) - ) - ) - (set_local $10 - (if i32 - (tee_local $3 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $10 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $10) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$6 - (block $__rjti$6 - (br_if $__rjti$6 - (i32.eqz - (tee_local $3 - (i32.load - (get_local $1) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $11 - (if i32 - (i32.eq - (tee_local $11 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $11) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$6) - ) - (if - (i32.eqz - (get_local $10) - ) - (block - (set_local $3 - (get_local $2) - ) - (br $__rjti$15) - ) - ) - ) - (br $__rjto$6) - ) - (if - (get_local $10) - (block - (set_local $3 - (get_local $2) - ) - (br $__rjti$15) - ) - (set_local $3 - (i32.const 0) - ) - ) - ) - (block $label$break$L280 - (block $__rjti$7 - (block $switch-default - (block $switch-case38 - (block $switch-case22 - (block $switch-case12 - (block $switch-case11 - (block $switch-case - (br_table $switch-case11 $switch-case $switch-case22 $switch-case12 $switch-case38 $switch-default - (i32.load8_s - (i32.add - (get_local $29) - (get_local $20) - ) - ) - ) - ) - (if - (i32.eq - (get_local $20) - (i32.const 3) - ) - (set_local $3 - (get_local $4) - ) - (block - (br_if $__rjti$9 - (i32.eqz - (call_indirect $FUNCSIG$iiii - (get_local $7) - (i32.const 8192) - (tee_local $10 - (if i32 - (i32.eq - (tee_local $11 - (i32.load offset=12 - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $11) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $7) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw - (get_local $19) - (tee_local $10 - (if i32 - (i32.eq - (tee_local $11 - (i32.load - (tee_local $12 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (block i32 - (i32.store - (get_local $12) - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (i32.load - (get_local $11) - ) - ) - ) - ) - ) - (set_local $10 - (get_local $3) - ) - (br $__rjti$7) - ) - ) - (br $label$break$L280) - ) - (if - (i32.eq - (get_local $20) - (i32.const 3) - ) - (set_local $3 - (get_local $4) - ) - (block - (set_local $10 - (get_local $3) - ) - (br $__rjti$7) - ) - ) - (br $label$break$L280) - ) - (set_local $3 - (if i32 - (i32.eq - (tee_local $14 - (if i32 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (get_local $25) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $34) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - ) - (i32.sub - (i32.const 0) - (tee_local $21 - (if i32 - (i32.lt_s - (tee_local $10 - (i32.load8_s - (get_local $26) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $35) - ) - (i32.and - (get_local $10) - (i32.const 255) - ) - ) - ) - ) - ) - (get_local $4) - (block i32 - (set_local $13 - (i32.eq - (tee_local $11 - (i32.load offset=12 - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - ) - ) - (tee_local $12 - (i32.load offset=16 - (get_local $10) - ) - ) - ) - ) - (if - (i32.or - (tee_local $14 - (i32.eqz - (get_local $14) - ) - ) - (i32.eqz - (get_local $21) - ) - ) - (block - (set_local $3 - (if i32 - (get_local $13) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $11) - ) - ) - ) - (if - (get_local $14) - (block - (if - (i32.ne - (get_local $3) - (i32.load - (if i32 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (get_local $26) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $18) - ) - (get_local $18) - ) - ) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $label$break$L280) - ) - ) - (if - (i32.eq - (tee_local $12 - (i32.load - (tee_local $11 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $3 - (i32.load8_s - (get_local $26) - ) - ) - ) - (i32.store - (get_local $11) - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 1) - ) - (set_local $3 - (if i32 - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $35) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (get_local $18) - (get_local $4) - ) - ) - (br $label$break$L280) - ) - ) - (if - (i32.ne - (get_local $3) - (i32.load - (if i32 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (get_local $25) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $17) - ) - (get_local $17) - ) - ) - ) - (block - (i32.store8 - (get_local $6) - (i32.const 1) - ) - (set_local $3 - (get_local $4) - ) - (br $label$break$L280) - ) - ) - (if - (i32.eq - (tee_local $12 - (i32.load - (tee_local $11 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $3 - (i32.load8_s - (get_local $25) - ) - ) - ) - (i32.store - (get_local $11) - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - ) - (set_local $3 - (if i32 - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $34) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (get_local $17) - (get_local $4) - ) - ) - (br $label$break$L280) - ) - ) - (if - (get_local $13) - (block - (set_local $13 - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $3 - (i32.load8_s - (get_local $25) - ) - ) - (set_local $10 - (tee_local $12 - (i32.load - (get_local $0) - ) - ) - ) - (set_local $11 - (i32.load offset=12 - (get_local $12) - ) - ) - (set_local $12 - (i32.load offset=16 - (get_local $12) - ) - ) - ) - (set_local $13 - (i32.load - (get_local $11) - ) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - (set_local $12 - (i32.eq - (get_local $11) - (get_local $12) - ) - ) - (if - (i32.eq - (get_local $13) - (i32.load - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $17) - ) - (get_local $17) - ) - ) - ) - (block - (if - (get_local $12) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $3 - (i32.load8_s - (get_local $25) - ) - ) - ) - (i32.store - (get_local $14) - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - ) - (set_local $3 - (if i32 - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $34) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (get_local $17) - (get_local $4) - ) - ) - (br $label$break$L280) - ) - ) - (br_if $__rjti$10 - (i32.ne - (tee_local $3 - (if i32 - (get_local $12) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $11) - ) - ) - ) - (i32.load - (if i32 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (get_local $26) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $18) - ) - (get_local $18) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $12 - (i32.load - (tee_local $11 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $3 - (i32.load8_s - (get_local $26) - ) - ) - ) - (i32.store - (get_local $11) - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 1) - ) - (if i32 - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $35) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (get_local $18) - (get_local $4) - ) - ) - ) - ) - (br $label$break$L280) - ) - (if - (i32.eqz - (i32.or - (i32.lt_u - (get_local $20) - (i32.const 2) - ) - (i32.ne - (get_local $4) - (i32.const 0) - ) - ) - ) - (if - (i32.eqz - (i32.or - (get_local $39) - (i32.and - (i32.eq - (get_local $20) - (i32.const 2) - ) - (i32.ne - (i32.load8_s - (get_local $43) - ) - (i32.const 0) - ) - ) - ) - ) - (block - (set_local $3 - (i32.const 0) - ) - (br $label$break$L280) - ) - ) - ) - (set_local $13 - (i32.load - (get_local $15) - ) - ) - (set_local $11 - (if i32 - (i32.lt_s - (tee_local $12 - (i32.load8_s - (get_local $27) - ) - ) - (i32.const 0) - ) - (get_local $13) - (get_local $15) - ) - ) - (block $label$break$L107 - (if - (get_local $20) - (if - (i32.lt_s - (i32.load8_u - (i32.add - (get_local $29) - (i32.add - (get_local $20) - (i32.const -1) - ) - ) - ) - (i32.const 2) - ) - (block - (set_local $10 - (get_local $11) - ) - (block $__rjto$0 - (block $__rjti$0 - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (tee_local $11 - (get_local $10) - ) - (i32.add - (if i32 - (tee_local $14 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $12) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (get_local $13) - (get_local $15) - ) - (i32.shl - (if i32 - (get_local $14) - (i32.load - (get_local $36) - ) - (i32.and - (get_local $12) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - (block - (set_local $11 - (get_local $10) - ) - (br $while-out14) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (call_indirect $FUNCSIG$iiii - (get_local $7) - (i32.const 8192) - (i32.load - (get_local $11) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $7) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - (set_local $12 - (i32.load8_s - (get_local $27) - ) - ) - (set_local $13 - (i32.load - (get_local $15) - ) - ) - (set_local $10 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (br $while-in15) - ) - ) - (br $__rjto$0) - ) - (set_local $12 - (i32.load8_s - (get_local $27) - ) - ) - (set_local $13 - (i32.load - (get_local $15) - ) - ) - (set_local $11 - (get_local $10) - ) - ) - (if - (i32.gt_u - (tee_local $21 - (i32.shr_s - (i32.sub - (get_local $11) - (tee_local $14 - (tee_local $10 - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $12) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (get_local $13) - (get_local $15) - ) - ) - ) - ) - (i32.const 2) - ) - ) - (tee_local $28 - (if i32 - (tee_local $46 - (i32.lt_s - (tee_local $28 - (i32.load8_s - (get_local $41) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $42) - ) - (i32.and - (get_local $28) - (i32.const 255) - ) - ) - ) - ) - (block - (set_local $10 - (get_local $3) - ) - (set_local $11 - (get_local $14) - ) - ) - (block - (set_local $21 - (i32.add - (tee_local $28 - (i32.add - (if i32 - (get_local $46) - (i32.load - (get_local $19) - ) - (get_local $19) - ) - (i32.shl - (get_local $28) - (i32.const 2) - ) - ) - ) - (i32.shl - (i32.sub - (i32.const 0) - (get_local $21) - ) - (i32.const 2) - ) - ) - ) - (loop $while-in17 - (if - (i32.eq - (get_local $21) - (get_local $28) - ) - (block - (set_local $10 - (get_local $3) - ) - (br $label$break$L107) - ) - ) - (if - (i32.ne - (i32.load - (get_local $21) - ) - (i32.load - (get_local $10) - ) - ) - (block - (set_local $10 - (get_local $3) - ) - (set_local $11 - (get_local $14) - ) - (br $label$break$L107) - ) - (block - (set_local $10 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $21 - (i32.add - (get_local $21) - (i32.const 4) - ) - ) - (br $while-in17) - ) - ) - ) - ) - ) - ) - (set_local $10 - (get_local $3) - ) - ) - (set_local $10 - (get_local $3) - ) - ) - ) - (loop $label$continue$L121 - (block $label$break$L121 - (if - (i32.eq - (get_local $11) - (tee_local $12 - (i32.add - (if i32 - (tee_local $14 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $12) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (get_local $13) - (get_local $15) - ) - (i32.shl - (if i32 - (get_local $14) - (i32.load - (get_local $36) - ) - (i32.and - (get_local $12) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (block - (set_local $11 - (get_local $12) - ) - (br $label$break$L121) - ) - ) - (set_local $12 - (if i32 - (tee_local $12 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $12 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $12) - ) - ) - (i32.load offset=16 - (get_local $12) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $12) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $12) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (if - (get_local $3) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$1) - ) - (if - (i32.xor - (get_local $12) - (i32.eqz - (get_local $10) - ) - ) - (block - (set_local $3 - (get_local $10) - ) - (set_local $14 - (get_local $10) - ) - ) - (br $label$break$L121) - ) - ) - (block - (set_local $3 - (get_local $10) - ) - (br $__rjti$1) - ) - ) - (br $__rjto$1) - ) - (br_if $label$break$L121 - (get_local $12) - ) - (set_local $14 - (i32.const 0) - ) - ) - (br_if $label$break$L121 - (i32.ne - (tee_local $10 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $12) - ) - ) - ) - (i32.load - (get_local $11) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (i32.load - (tee_local $12 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $12) - (i32.add - (get_local $13) - (i32.const 4) - ) - ) - ) - (set_local $10 - (get_local $3) - ) - (set_local $12 - (i32.load8_s - (get_local $27) - ) - ) - (set_local $13 - (i32.load - (get_local $15) - ) - ) - (set_local $3 - (get_local $14) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (br $label$continue$L121) - ) - ) - (if - (get_local $39) - (if - (i32.eq - (get_local $11) - (i32.add - (if i32 - (tee_local $10 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (get_local $27) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $15) - ) - (get_local $15) - ) - (i32.shl - (if i32 - (get_local $10) - (i32.load - (get_local $36) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - (set_local $3 - (get_local $4) - ) - (br $__rjti$11) - ) - (set_local $3 - (get_local $4) - ) - ) - (br $label$break$L280) - ) - (set_local $14 - (i32.load - (get_local $38) - ) - ) - (set_local $10 - (get_local $3) - ) - (set_local $11 - (get_local $3) - ) - (set_local $3 - (i32.const 0) - ) - (loop $label$continue$L158 - (block $label$break$L158 - (set_local $12 - (if i32 - (tee_local $12 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $12 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $12) - ) - ) - (i32.load offset=16 - (get_local $12) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $12) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $12) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (br_if $__rjti$2 - (i32.eqz - (get_local $11) - ) - ) - (if - (i32.eq - (tee_local $11 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $11) - ) - ) - (i32.load offset=16 - (get_local $11) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $11) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $11) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $10 - (i32.const 0) - ) - (br $__rjti$2) - ) - (if - (i32.xor - (get_local $12) - (i32.eqz - (get_local $10) - ) - ) - (block - (set_local $11 - (get_local $10) - ) - (set_local $12 - (get_local $10) - ) - ) - (br $label$break$L158) - ) - ) - (br $__rjto$2) - ) - (br_if $label$break$L158 - (get_local $12) - ) - (set_local $11 - (get_local $10) - ) - (set_local $12 - (i32.const 0) - ) - ) - (set_local $3 - (if i32 - (call_indirect $FUNCSIG$iiii - (get_local $7) - (i32.const 2048) - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $7) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (block i32 - (if - (i32.eq - (tee_local $10 - (i32.load - (get_local $9) - ) - ) - (i32.load - (get_local $30) - ) - ) - (block - (call $__ZNSt3__219__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $8) - (get_local $9) - (get_local $30) - ) - (set_local $10 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (i32.store - (get_local $10) - (get_local $13) - ) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (block i32 - (set_local $10 - (i32.load8_s - (get_local $44) - ) - ) - (if - (i32.eqz - (i32.and - (i32.eq - (get_local $13) - (get_local $14) - ) - (if i32 - (get_local $3) - (i32.ne - (if i32 - (i32.lt_s - (get_local $10) - (i32.const 0) - ) - (i32.load - (get_local $45) - ) - (i32.and - (get_local $10) - (i32.const 255) - ) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (block - (set_local $10 - (get_local $11) - ) - (br $label$break$L158) - ) - ) - (if - (i32.eq - (get_local $2) - (i32.load - (get_local $31) - ) - ) - (block - (call $__ZNSt3__219__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $23) - (get_local $24) - (get_local $31) - ) - (set_local $2 - (i32.load - (get_local $24) - ) - ) - ) - ) - (i32.store - (get_local $24) - (tee_local $10 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $3) - ) - (set_local $2 - (get_local $10) - ) - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (tee_local $21 - (i32.load - (tee_local $13 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $10 - (get_local $11) - ) - (set_local $11 - (get_local $12) - ) - (br $label$continue$L158) - ) - (block - (i32.store - (get_local $13) - (i32.add - (get_local $21) - (i32.const 4) - ) - ) - (set_local $10 - (get_local $11) - ) - (set_local $11 - (get_local $12) - ) - (br $label$continue$L158) - ) - ) - ) - ) - (if - (if i32 - (get_local $3) - (i32.ne - (i32.load - (get_local $23) - ) - (get_local $2) - ) - (i32.const 0) - ) - (block - (if - (i32.eq - (get_local $2) - (i32.load - (get_local $31) - ) - ) - (block - (call $__ZNSt3__219__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $23) - (get_local $24) - (get_local $31) - ) - (set_local $2 - (i32.load - (get_local $24) - ) - ) - ) - ) - (i32.store - (get_local $24) - (tee_local $12 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $3) - ) - ) - (set_local $12 - (get_local $2) - ) - ) - (block $label$break$L207 - (if - (i32.gt_s - (tee_local $11 - (i32.load - (get_local $32) - ) - ) - (i32.const 0) - ) - (block - (set_local $2 - (if i32 - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $2 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $2) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$4 - (block $__rjti$4 - (br_if $__rjti$4 - (i32.eqz - (get_local $10) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $10) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$4) - ) - (if - (get_local $2) - (set_local $3 - (get_local $10) - ) - (br $__rjti$12) - ) - ) - (br $__rjto$4) - ) - (br_if $__rjti$12 - (get_local $2) - ) - (set_local $3 - (i32.const 0) - ) - ) - (br_if $__rjti$12 - (i32.ne - (tee_local $2 - (if i32 - (i32.eq - (tee_local $10 - (i32.load offset=12 - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $10) - ) - ) - ) - (i32.load - (get_local $37) - ) - ) - ) - (set_local $2 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $10 - (i32.add - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (block i32 - (drop - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $10 - (get_local $11) - ) - (get_local $3) - ) - (block i32 - (i32.store - (get_local $10) - (i32.add - (get_local $13) - (i32.const 4) - ) - ) - (set_local $10 - (get_local $11) - ) - (get_local $3) - ) - ) - ) - (loop $while-in33 - (br_if $label$break$L207 - (i32.le_s - (get_local $10) - (i32.const 0) - ) - ) - (set_local $11 - (if i32 - (tee_local $11 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $11 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $11) - ) - ) - (i32.load offset=16 - (get_local $11) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $11) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $11) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (br_if $__rjti$3 - (i32.eqz - (get_local $3) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - (br $__rjti$3) - ) - (if - (i32.xor - (get_local $11) - (i32.eqz - (get_local $2) - ) - ) - (block - (set_local $3 - (get_local $2) - ) - (set_local $11 - (get_local $2) - ) - ) - (br $__rjti$13) - ) - ) - (br $__rjto$3) - ) - (br_if $__rjti$13 - (get_local $11) - ) - (set_local $3 - (get_local $2) - ) - (set_local $11 - (i32.const 0) - ) - ) - (br_if $__rjti$13 - (i32.eqz - (call_indirect $FUNCSIG$iiii - (get_local $7) - (i32.const 2048) - (tee_local $2 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $7) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $9) - ) - (i32.load - (get_local $30) - ) - ) - (call $__ZNSt3__219__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $8) - (get_local $9) - (get_local $30) - ) - ) - (set_local $2 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (tee_local $13 - (i32.load - (get_local $9) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $13) - (get_local $2) - ) - (i32.store - (get_local $32) - (tee_local $10 - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (tee_local $14 - (i32.load - (tee_local $13 - (i32.add - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - (set_local $3 - (get_local $11) - ) - (br $while-in33) - ) - (block - (i32.store - (get_local $13) - (i32.add - (get_local $14) - (i32.const 4) - ) - ) - (set_local $2 - (get_local $3) - ) - (set_local $3 - (get_local $11) - ) - (br $while-in33) - ) - ) - ) - ) - ) - ) - (br_if $__rjti$14 - (i32.eq - (i32.load - (get_local $9) - ) - (i32.load - (get_local $8) - ) - ) - ) - (set_local $2 - (get_local $12) - ) - (set_local $3 - (get_local $4) - ) - (br $label$break$L280) - ) - (set_local $3 - (get_local $4) - ) - (br $label$break$L280) - ) - (loop $while-in41 - (set_local $11 - (if i32 - (tee_local $11 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $11 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (get_local $11) - ) - ) - (i32.load offset=16 - (get_local $11) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $11) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $11) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $12) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$5 - (block $__rjti$5 - (if - (get_local $3) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $12) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$5) - ) - (if - (i32.xor - (get_local $11) - (i32.eqz - (get_local $10) - ) - ) - (block - (set_local $3 - (get_local $10) - ) - (set_local $11 - (get_local $10) - ) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $label$break$L280) - ) - ) - ) - (block - (set_local $3 - (get_local $10) - ) - (br $__rjti$5) - ) - ) - (br $__rjto$5) - ) - (if - (get_local $11) - (block - (set_local $3 - (get_local $4) - ) - (br $label$break$L280) - ) - (set_local $11 - (i32.const 0) - ) - ) - ) - (if - (call_indirect $FUNCSIG$iiii - (get_local $7) - (i32.const 8192) - (tee_local $10 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $12) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $7) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (block - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw - (get_local $19) - (tee_local $10 - (if i32 - (i32.eq - (tee_local $12 - (i32.load - (tee_local $13 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (block i32 - (i32.store - (get_local $13) - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (i32.load - (get_local $12) - ) - ) - ) - ) - ) - (set_local $10 - (get_local $3) - ) - (set_local $3 - (get_local $11) - ) - (br $while-in41) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $label$break$L280) - ) - ) - ) - ) - (set_local $20 - (i32.add - (get_local $20) - (i32.const 1) - ) - ) - (set_local $4 - (get_local $3) - ) - (br $label$continue$L21) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L315 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L315 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L315 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L315 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L315 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L315 - (i32.const 0) - ) - ) - (block $label$break$L317 - (if - (get_local $4) - (block - (set_local $8 - (i32.add - (get_local $4) - (i32.const 11) - ) - ) - (set_local $9 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (set_local $2 - (i32.const 1) - ) - (loop $label$continue$L319 - (block $label$break$L319 - (br_if $label$break$L317 - (i32.ge_u - (get_local $2) - (tee_local $6 - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (get_local $8) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - ) - (set_local $6 - (if i32 - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $7 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $7) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$8 - (block $__rjti$8 - (br_if $__rjti$8 - (i32.eqz - (tee_local $7 - (i32.load - (get_local $1) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $7 - (if i32 - (i32.eq - (tee_local $10 - (i32.load offset=12 - (get_local $7) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $10) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$8) - ) - (br_if $label$break$L319 - (i32.eqz - (get_local $6) - ) - ) - ) - (br $__rjto$8) - ) - (br_if $label$break$L319 - (get_local $6) - ) - ) - (br_if $label$break$L319 - (i32.ne - (tee_local $7 - (if i32 - (i32.eq - (tee_local $7 - (i32.load offset=12 - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $7) - ) - ) - ) - (i32.load - (i32.add - (tee_local $6 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $8) - ) - (i32.const 0) - ) - (i32.load - (get_local $4) - ) - (get_local $4) - ) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (if - (i32.eq - (tee_local $10 - (i32.load - (tee_local $7 - (i32.add - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L319) - ) - (block - (i32.store - (get_local $7) - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (br $label$continue$L319) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L315 - (i32.const 0) - ) - ) - ) - ) - (if i32 - (i32.eq - (tee_local $0 - (i32.load - (get_local $23) - ) - ) - (get_local $3) - ) - (i32.const 1) - (block i32 - (i32.store - (get_local $33) - (i32.const 0) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $22) - (get_local $0) - (get_local $3) - (get_local $33) - ) - (if i32 - (i32.load - (get_local $33) - ) - (block i32 - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $19) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $18) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $17) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $15) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $22) - ) - (set_local $1 - (i32.load - (get_local $23) - ) - ) - (i32.store - (get_local $23) - (i32.const 0) - ) - (if - (get_local $1) - (call_indirect $FUNCSIG$vi - (get_local $1) - (i32.add - (i32.and - (i32.load - (get_local $40) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (set_global $STACKTOP - (get_local $16) - ) - (get_local $0) - ) - (func $__ZNSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (result i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (set_local $14 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 512) - ) - ) - (set_local $28 - (i32.add - (get_local $14) - (i32.const 500) - ) - ) - (set_local $38 - (i32.add - (get_local $14) - (i32.const 497) - ) - ) - (set_local $39 - (i32.add - (get_local $14) - (i32.const 496) - ) - ) - (set_local $15 - (i32.add - (get_local $14) - (i32.const 44) - ) - ) - (set_local $16 - (i32.add - (get_local $14) - (i32.const 32) - ) - ) - (set_local $17 - (i32.add - (get_local $14) - (i32.const 20) - ) - ) - (set_local $18 - (i32.add - (get_local $14) - (i32.const 8) - ) - ) - (set_local $31 - (i32.add - (get_local $14) - (i32.const 4) - ) - ) - (set_local $32 - (get_local $14) - ) - (i32.store - (tee_local $29 - (i32.add - (get_local $14) - (i32.const 88) - ) - ) - (get_local $10) - ) - (i32.store - (tee_local $22 - (i32.add - (get_local $14) - (i32.const 80) - ) - ) - (tee_local $10 - (i32.add - (get_local $14) - (i32.const 96) - ) - ) - ) - (i32.store - (tee_local $41 - (i32.add - (get_local $22) - (i32.const 4) - ) - ) - (i32.const 107) - ) - (i32.store - (tee_local $24 - (i32.add - (get_local $14) - (i32.const 72) - ) - ) - (get_local $10) - ) - (i32.store - (tee_local $30 - (i32.add - (get_local $14) - (i32.const 68) - ) - ) - (i32.add - (get_local $10) - (i32.const 400) - ) - ) - (i32.store - (tee_local $21 - (i32.add - (get_local $14) - (i32.const 56) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $21) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $21) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $21) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $15) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $15) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $15) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $15) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $16) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $16) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $16) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $16) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.store - (get_local $17) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $17) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $17) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in5 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $17) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (i32.store - (get_local $18) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $18) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $18) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.ne - (get_local $11) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $18) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - ) - (call $__ZNSt3__211__money_getIcE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_SF_Ri - (get_local $2) - (get_local $3) - (get_local $28) - (get_local $38) - (get_local $39) - (get_local $21) - (get_local $15) - (get_local $16) - (get_local $17) - (get_local $31) - ) - (i32.store - (get_local $9) - (i32.load - (get_local $8) - ) - ) - (set_local $25 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $26 - (i32.add - (get_local $16) - (i32.const 11) - ) - ) - (set_local $33 - (i32.add - (get_local $16) - (i32.const 4) - ) - ) - (set_local $27 - (i32.add - (get_local $17) - (i32.const 11) - ) - ) - (set_local $34 - (i32.add - (get_local $17) - (i32.const 4) - ) - ) - (set_local $40 - (i32.ne - (i32.and - (get_local $4) - (i32.const 512) - ) - (i32.const 0) - ) - ) - (set_local $35 - (i32.add - (get_local $15) - (i32.const 11) - ) - ) - (set_local $36 - (i32.add - (get_local $15) - (i32.const 4) - ) - ) - (set_local $42 - (i32.add - (get_local $18) - (i32.const 11) - ) - ) - (set_local $43 - (i32.add - (get_local $18) - (i32.const 4) - ) - ) - (set_local $44 - (i32.add - (get_local $28) - (i32.const 3) - ) - ) - (set_local $45 - (i32.add - (get_local $21) - (i32.const 11) - ) - ) - (set_local $46 - (i32.add - (get_local $21) - (i32.const 4) - ) - ) - (set_local $2 - (get_local $10) - ) - (set_local $20 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $0 - (block $label$break$L294 i32 - (block $__rjti$15 - (block $__rjti$14 - (block $__rjti$13 - (block $__rjti$12 - (block $__rjti$11 - (block $__rjti$10 - (block $__rjti$9 - (loop $label$continue$L21 - (br_if $__rjti$15 - (i32.ge_u - (get_local $20) - (i32.const 4) - ) - ) - (if - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $4) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (set_local $4 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $4 - (i32.const 0) - ) - ) - (set_local $7 - (i32.eqz - (get_local $4) - ) - ) - (block $__rjto$6 - (block $__rjti$6 - (br_if $__rjti$6 - (i32.eqz - (tee_local $4 - (i32.load - (get_local $1) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $4) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (if - (get_local $7) - (br $__rjto$6) - (br $__rjti$15) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$6) - ) - (br_if $__rjti$15 - (i32.eqz - (get_local $7) - ) - ) - ) - (br $__rjto$6) - ) - (br_if $__rjti$15 - (get_local $7) - ) - (set_local $4 - (i32.const 0) - ) - ) - (block $label$break$L262 - (block $__rjti$7 - (block $switch-default - (block $switch-case38 - (block $switch-case22 - (block $switch-case12 - (block $switch-case11 - (block $switch-case - (br_table $switch-case11 $switch-case $switch-case22 $switch-case12 $switch-case38 $switch-default - (i32.load8_s - (i32.add - (get_local $28) - (get_local $20) - ) - ) - ) - ) - (if - (i32.ne - (get_local $20) - (i32.const 3) - ) - (block - (br_if $__rjti$9 - (i32.le_s - (i32.shr_s - (i32.shl - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $10 - (i32.load offset=12 - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $10) - ) - ) - ) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (br_if $__rjti$9 - (i32.eqz - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $25) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 8192) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc - (get_local $18) - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $10 - (i32.load - (tee_local $11 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (block i32 - (i32.store - (get_local $11) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $10) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (set_local $7 - (get_local $4) - ) - (br $__rjti$7) - ) - ) - (br $label$break$L262) - ) - (if - (i32.ne - (get_local $20) - (i32.const 3) - ) - (block - (set_local $7 - (get_local $4) - ) - (br $__rjti$7) - ) - ) - (br $label$break$L262) - ) - (if - (i32.ne - (tee_local $13 - (if i32 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (get_local $26) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $33) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - (i32.sub - (i32.const 0) - (tee_local $19 - (if i32 - (i32.lt_s - (tee_local $7 - (i32.load8_s - (get_local $27) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $34) - ) - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (set_local $12 - (i32.eq - (tee_local $10 - (i32.load offset=12 - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - ) - ) - (tee_local $11 - (i32.load offset=16 - (get_local $7) - ) - ) - ) - ) - (if - (i32.or - (tee_local $13 - (i32.eqz - (get_local $13) - ) - ) - (i32.eqz - (get_local $19) - ) - ) - (block - (set_local $4 - (i32.and - (tee_local $4 - (if i32 - (get_local $12) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $10) - ) - ) - ) - (i32.const 255) - ) - ) - (if - (get_local $13) - (block - (br_if $label$break$L262 - (i32.ne - (i32.and - (get_local $4) - (i32.const 255) - ) - (i32.load8_u - (if i32 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (get_local $27) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $17) - ) - (get_local $17) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $11 - (i32.load - (tee_local $10 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $4 - (i32.load8_s - (get_local $27) - ) - ) - ) - (i32.store - (get_local $10) - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 1) - ) - (if - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $34) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (set_local $3 - (get_local $17) - ) - ) - (br $label$break$L262) - ) - ) - (if - (i32.ne - (i32.and - (get_local $4) - (i32.const 255) - ) - (i32.load8_u - (if i32 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (get_local $26) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $16) - ) - (get_local $16) - ) - ) - ) - (block - (i32.store8 - (get_local $6) - (i32.const 1) - ) - (br $label$break$L262) - ) - ) - (if - (i32.eq - (tee_local $11 - (i32.load - (tee_local $10 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $4 - (i32.load8_s - (get_local $26) - ) - ) - ) - (i32.store - (get_local $10) - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (if - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $33) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (set_local $3 - (get_local $16) - ) - ) - (br $label$break$L262) - ) - ) - (if - (get_local $12) - (block - (set_local $12 - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $4 - (i32.load8_s - (get_local $26) - ) - ) - (set_local $7 - (tee_local $11 - (i32.load - (get_local $0) - ) - ) - ) - (set_local $10 - (i32.load offset=12 - (get_local $11) - ) - ) - (set_local $11 - (i32.load offset=16 - (get_local $11) - ) - ) - ) - (set_local $12 - (i32.load8_u - (get_local $10) - ) - ) - ) - (set_local $13 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (set_local $11 - (i32.eq - (get_local $10) - (get_local $11) - ) - ) - (if - (i32.eq - (i32.and - (get_local $12) - (i32.const 255) - ) - (i32.load8_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $16) - ) - (get_local $16) - ) - ) - ) - (block - (if - (get_local $11) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $4 - (i32.load8_s - (get_local $26) - ) - ) - ) - (i32.store - (get_local $13) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - ) - (if - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $33) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (set_local $3 - (get_local $16) - ) - ) - (br $label$break$L262) - ) - ) - (br_if $__rjti$10 - (i32.ne - (i32.and - (tee_local $4 - (if i32 - (get_local $11) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $10) - ) - ) - ) - (i32.const 255) - ) - (i32.load8_u - (if i32 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (get_local $27) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $17) - ) - (get_local $17) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $11 - (i32.load - (tee_local $10 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $4 - (i32.load8_s - (get_local $27) - ) - ) - ) - (i32.store - (get_local $10) - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 1) - ) - (if - (i32.gt_u - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $34) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - (i32.const 1) - ) - (set_local $3 - (get_local $17) - ) - ) - ) - ) - (br $label$break$L262) - ) - (if - (i32.eqz - (i32.or - (i32.lt_u - (get_local $20) - (i32.const 2) - ) - (i32.ne - (get_local $3) - (i32.const 0) - ) - ) - ) - (if - (i32.eqz - (i32.or - (get_local $40) - (i32.and - (i32.eq - (get_local $20) - (i32.const 2) - ) - (i32.ne - (i32.load8_s - (get_local $44) - ) - (i32.const 0) - ) - ) - ) - ) - (block - (set_local $3 - (i32.const 0) - ) - (br $label$break$L262) - ) - ) - ) - (set_local $10 - (i32.load - (get_local $15) - ) - ) - (set_local $12 - (tee_local $13 - (if i32 - (tee_local $7 - (i32.lt_s - (tee_local $11 - (i32.load8_s - (get_local $35) - ) - ) - (i32.const 0) - ) - ) - (get_local $10) - (get_local $15) - ) - ) - ) - (block $label$break$L104 - (if - (get_local $20) - (if - (i32.lt_s - (i32.load8_u - (i32.add - (get_local $28) - (i32.add - (get_local $20) - (i32.const -1) - ) - ) - ) - (i32.const 2) - ) - (block - (set_local $23 - (i32.add - (get_local $13) - (if i32 - (get_local $7) - (i32.load - (get_local $36) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - ) - ) - (set_local $7 - (get_local $12) - ) - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (tee_local $19 - (get_local $7) - ) - (get_local $23) - ) - (block - (set_local $19 - (get_local $7) - ) - (br $while-out14) - ) - ) - (if - (i32.le_s - (tee_local $37 - (i32.load8_s - (get_local $19) - ) - ) - (i32.const -1) - ) - (block - (set_local $19 - (get_local $7) - ) - (br $while-out14) - ) - ) - (if - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $25) - ) - (i32.shl - (get_local $37) - (i32.const 1) - ) - ) - ) - (i32.const 8192) - ) - (block - (set_local $7 - (i32.add - (get_local $19) - (i32.const 1) - ) - ) - (br $while-in15) - ) - (set_local $19 - (get_local $7) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $7 - (i32.sub - (get_local $19) - (get_local $12) - ) - ) - (tee_local $23 - (if i32 - (tee_local $37 - (i32.lt_s - (tee_local $23 - (i32.load8_s - (get_local $42) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $43) - ) - (i32.and - (get_local $23) - (i32.const 255) - ) - ) - ) - ) - (block - (set_local $7 - (get_local $4) - ) - (set_local $13 - (get_local $10) - ) - (set_local $10 - (get_local $12) - ) - ) - (block - (set_local $7 - (i32.add - (tee_local $23 - (i32.add - (if i32 - (get_local $37) - (i32.load - (get_local $18) - ) - (get_local $18) - ) - (get_local $23) - ) - ) - (i32.sub - (i32.const 0) - (get_local $7) - ) - ) - ) - (loop $while-in17 - (if - (i32.eq - (get_local $7) - (get_local $23) - ) - (block - (set_local $7 - (get_local $4) - ) - (set_local $13 - (get_local $10) - ) - (set_local $10 - (get_local $19) - ) - (br $label$break$L104) - ) - ) - (if - (i32.ne - (i32.load8_s - (get_local $7) - ) - (i32.load8_s - (get_local $13) - ) - ) - (block - (set_local $7 - (get_local $4) - ) - (set_local $13 - (get_local $10) - ) - (set_local $10 - (get_local $12) - ) - (br $label$break$L104) - ) - (block - (set_local $13 - (i32.add - (get_local $13) - (i32.const 1) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in17) - ) - ) - ) - ) - ) - ) - (block - (set_local $7 - (get_local $4) - ) - (set_local $13 - (get_local $10) - ) - (set_local $10 - (get_local $12) - ) - ) - ) - (block - (set_local $7 - (get_local $4) - ) - (set_local $13 - (get_local $10) - ) - (set_local $10 - (get_local $12) - ) - ) - ) - ) - (loop $label$continue$L118 - (block $label$break$L118 - (if - (i32.eq - (get_local $10) - (tee_local $11 - (i32.add - (if i32 - (tee_local $12 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $11) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (get_local $13) - (get_local $15) - ) - (if i32 - (get_local $12) - (i32.load - (get_local $36) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (set_local $10 - (get_local $11) - ) - (br $label$break$L118) - ) - ) - (if - (tee_local $11 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $11) - ) - (i32.load offset=16 - (get_local $11) - ) - ) - (set_local $11 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $11) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $11) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $11 - (i32.const 0) - ) - ) - (set_local $11 - (i32.eqz - (get_local $11) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $4) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $4) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (if - (get_local $11) - (block - (set_local $11 - (get_local $7) - ) - (br $__rjto$0) - ) - (br $label$break$L118) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (br $__rjti$0) - ) - (if - (i32.xor - (get_local $11) - (i32.eqz - (get_local $7) - ) - ) - (block - (set_local $11 - (get_local $7) - ) - (set_local $4 - (get_local $7) - ) - ) - (br $label$break$L118) - ) - ) - (br $__rjto$0) - ) - (br_if $label$break$L118 - (get_local $11) - ) - (set_local $11 - (get_local $7) - ) - (set_local $4 - (i32.const 0) - ) - ) - (br_if $label$break$L118 - (i32.ne - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $12) - ) - ) - ) - (i32.const 255) - ) - (i32.load8_u - (get_local $10) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (i32.load - (tee_local $12 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (drop - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $12) - (i32.add - (get_local $13) - (i32.const 1) - ) - ) - ) - (set_local $7 - (get_local $11) - ) - (set_local $11 - (i32.load8_s - (get_local $35) - ) - ) - (set_local $13 - (i32.load - (get_local $15) - ) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (br $label$continue$L118) - ) - ) - (if - (get_local $40) - (br_if $__rjti$11 - (i32.ne - (get_local $10) - (i32.add - (if i32 - (tee_local $7 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (get_local $35) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $15) - ) - (get_local $15) - ) - (if i32 - (get_local $7) - (i32.load - (get_local $36) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (br $label$break$L262) - ) - (set_local $13 - (i32.load8_s - (get_local $39) - ) - ) - (set_local $7 - (get_local $4) - ) - (set_local $11 - (get_local $4) - ) - (set_local $4 - (i32.const 0) - ) - (loop $label$continue$L151 - (block $label$break$L151 - (if - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $10) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (set_local $10 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $10 - (i32.const 0) - ) - ) - (set_local $10 - (i32.eqz - (get_local $10) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $11) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $11) - ) - (i32.load offset=16 - (get_local $11) - ) - ) - (if - (get_local $10) - (block - (set_local $10 - (get_local $7) - ) - (br $__rjto$1) - ) - (br $label$break$L151) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $11) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $11) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (br $__rjti$1) - ) - (if - (i32.xor - (get_local $10) - (i32.eqz - (get_local $7) - ) - ) - (block - (set_local $10 - (get_local $7) - ) - (set_local $11 - (get_local $7) - ) - ) - (br $label$break$L151) - ) - ) - (br $__rjto$1) - ) - (br_if $label$break$L151 - (get_local $10) - ) - (set_local $10 - (get_local $7) - ) - (set_local $11 - (i32.const 0) - ) - ) - (set_local $4 - (block $__rjto$2 i32 - (block $__rjti$2 - (br_if $__rjti$2 - (i32.le_s - (i32.shr_s - (i32.shl - (tee_local $12 - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $12) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $25) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 2048) - ) - ) - ) - (if - (i32.eq - (tee_local $7 - (i32.load - (get_local $9) - ) - ) - (i32.load - (get_local $29) - ) - ) - (block - (call $__ZNSt3__219__double_or_nothingIcEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $8) - (get_local $9) - (get_local $29) - ) - (set_local $7 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $7) - (get_local $12) - ) - (br $__rjto$2 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - ) - (set_local $7 - (i32.load8_s - (get_local $45) - ) - ) - (if - (i32.eqz - (i32.and - (i32.eq - (i32.shr_s - (i32.shl - (get_local $12) - (i32.const 24) - ) - (i32.const 24) - ) - (get_local $13) - ) - (if i32 - (get_local $4) - (i32.ne - (if i32 - (i32.lt_s - (get_local $7) - (i32.const 0) - ) - (i32.load - (get_local $46) - ) - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (block - (set_local $7 - (get_local $10) - ) - (br $label$break$L151) - ) - ) - (if - (i32.eq - (get_local $2) - (i32.load - (get_local $30) - ) - ) - (block - (call $__ZNSt3__219__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $22) - (get_local $24) - (get_local $30) - ) - (set_local $2 - (i32.load - (get_local $24) - ) - ) - ) - ) - (i32.store - (get_local $24) - (tee_local $7 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $4) - ) - (set_local $2 - (get_local $7) - ) - (i32.const 0) - ) - ) - (if - (i32.eq - (tee_local $19 - (i32.load - (tee_local $12 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $7 - (get_local $10) - ) - (br $label$continue$L151) - ) - (block - (i32.store - (get_local $12) - (i32.add - (get_local $19) - (i32.const 1) - ) - ) - (set_local $7 - (get_local $10) - ) - (br $label$continue$L151) - ) - ) - ) - ) - (if - (if i32 - (get_local $4) - (i32.ne - (i32.load - (get_local $22) - ) - (get_local $2) - ) - (i32.const 0) - ) - (block - (if - (i32.eq - (get_local $2) - (i32.load - (get_local $30) - ) - ) - (block - (call $__ZNSt3__219__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $22) - (get_local $24) - (get_local $30) - ) - (set_local $2 - (i32.load - (get_local $24) - ) - ) - ) - ) - (i32.store - (get_local $24) - (tee_local $11 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $4) - ) - ) - (set_local $11 - (get_local $2) - ) - ) - (block $label$break$L198 - (if - (i32.gt_s - (tee_local $10 - (i32.load - (get_local $31) - ) - ) - (i32.const 0) - ) - (block - (if - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $2) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (set_local $2 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - (set_local $2 - (i32.eqz - (get_local $2) - ) - ) - (set_local $4 - (block $__rjto$4 i32 - (block $__rjti$4 - (br_if $__rjti$4 - (i32.eqz - (get_local $7) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$4) - ) - ) - ) - (br_if $__rjti$12 - (i32.eqz - (get_local $2) - ) - ) - (br $__rjto$4 - (get_local $7) - ) - ) - (br_if $__rjti$12 - (get_local $2) - ) - (i32.const 0) - ) - ) - (br_if $__rjti$12 - (i32.ne - (i32.and - (tee_local $2 - (if i32 - (i32.eq - (tee_local $7 - (i32.load offset=12 - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $7) - ) - ) - ) - (i32.const 255) - ) - (i32.load8_u - (get_local $38) - ) - ) - ) - (set_local $2 - (if i32 - (i32.eq - (tee_local $12 - (i32.load - (tee_local $7 - (i32.add - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (block i32 - (drop - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (get_local $4) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $12) - (i32.const 1) - ) - ) - (get_local $4) - ) - ) - ) - (loop $while-in33 - (br_if $label$break$L198 - (i32.le_s - (get_local $10) - (i32.const 0) - ) - ) - (if - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (set_local $7 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $7 - (i32.const 0) - ) - ) - (set_local $7 - (i32.eqz - (get_local $7) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (br_if $__rjti$3 - (i32.eqz - (get_local $4) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $4) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (if - (get_local $7) - (block - (set_local $7 - (get_local $2) - ) - (br $__rjto$3) - ) - (br $__rjti$13) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - (br $__rjti$3) - ) - (if - (i32.xor - (get_local $7) - (i32.eqz - (get_local $2) - ) - ) - (block - (set_local $7 - (get_local $2) - ) - (set_local $4 - (get_local $2) - ) - ) - (br $__rjti$13) - ) - ) - (br $__rjto$3) - ) - (br_if $__rjti$13 - (get_local $7) - ) - (set_local $7 - (get_local $2) - ) - (set_local $4 - (i32.const 0) - ) - ) - (br_if $__rjti$13 - (i32.le_s - (i32.shr_s - (i32.shl - (i32.and - (tee_local $2 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $12) - ) - ) - ) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (br_if $__rjti$13 - (i32.eqz - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $25) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 2048) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $9) - ) - (i32.load - (get_local $29) - ) - ) - (call $__ZNSt3__219__double_or_nothingIcEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ - (get_local $8) - (get_local $9) - (get_local $29) - ) - ) - (set_local $2 - (if i32 - (i32.eq - (tee_local $12 - (i32.load offset=12 - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $12) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (tee_local $12 - (i32.load - (get_local $9) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $12) - (get_local $2) - ) - (i32.store - (get_local $31) - (tee_local $10 - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (i32.load - (tee_local $12 - (i32.add - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $2) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $2 - (get_local $7) - ) - (br $while-in33) - ) - (block - (i32.store - (get_local $12) - (i32.add - (get_local $13) - (i32.const 1) - ) - ) - (set_local $2 - (get_local $7) - ) - (br $while-in33) - ) - ) - ) - ) - ) - ) - (br_if $__rjti$14 - (i32.eq - (i32.load - (get_local $9) - ) - (i32.load - (get_local $8) - ) - ) - ) - (set_local $2 - (get_local $11) - ) - (br $label$break$L262) - ) - (br $label$break$L262) - ) - (loop $while-in41 - (if - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $10) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (set_local $10 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $10 - (i32.const 0) - ) - ) - (set_local $10 - (i32.eqz - (get_local $10) - ) - ) - (block $__rjto$5 - (block $__rjti$5 - (br_if $__rjti$5 - (i32.eqz - (get_local $4) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $4) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (if - (get_local $10) - (block - (set_local $10 - (get_local $7) - ) - (br $__rjto$5) - ) - (br $label$break$L262) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (br $__rjti$5) - ) - (if - (i32.xor - (get_local $10) - (i32.eqz - (get_local $7) - ) - ) - (block - (set_local $10 - (get_local $7) - ) - (set_local $4 - (get_local $7) - ) - ) - (br $label$break$L262) - ) - ) - (br $__rjto$5) - ) - (br_if $label$break$L262 - (get_local $10) - ) - (set_local $10 - (get_local $7) - ) - (set_local $4 - (i32.const 0) - ) - ) - (br_if $label$break$L262 - (i32.le_s - (i32.shr_s - (i32.shl - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $11 - (i32.load offset=12 - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $11) - ) - ) - ) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (br_if $label$break$L262 - (i32.eqz - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $25) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 8192) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc - (get_local $18) - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $11 - (i32.load - (tee_local $12 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (block i32 - (i32.store - (get_local $12) - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $11) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (set_local $7 - (get_local $10) - ) - (br $while-in41) - ) - ) - (set_local $20 - (i32.add - (get_local $20) - (i32.const 1) - ) - ) - (br $label$continue$L21) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L294 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L294 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L294 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L294 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L294 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L294 - (i32.const 0) - ) - ) - (block $label$break$L296 - (if - (get_local $3) - (block - (set_local $7 - (i32.add - (get_local $3) - (i32.const 11) - ) - ) - (set_local $9 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $4 - (i32.const 1) - ) - (loop $label$continue$L298 - (block $label$break$L298 - (br_if $label$break$L296 - (i32.ge_u - (get_local $4) - (tee_local $6 - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (get_local $7) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - ) - (if - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (set_local $6 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $6 - (i32.const 0) - ) - ) - (set_local $8 - (i32.eqz - (get_local $6) - ) - ) - (block $__rjto$8 - (block $__rjti$8 - (br_if $__rjti$8 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $1) - ) - ) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$8) - ) - ) - ) - (br_if $label$break$L298 - (i32.eqz - (get_local $8) - ) - ) - (br $__rjto$8) - ) - (br_if $label$break$L298 - (get_local $8) - ) - ) - (br_if $label$break$L298 - (i32.ne - (i32.and - (tee_local $8 - (if i32 - (i32.eq - (tee_local $8 - (i32.load offset=12 - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $8) - ) - ) - ) - (i32.const 255) - ) - (i32.load8_u - (i32.add - (tee_local $6 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $7) - ) - (i32.const 0) - ) - (i32.load - (get_local $3) - ) - (get_local $3) - ) - ) - (get_local $4) - ) - ) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (if - (i32.eq - (tee_local $10 - (i32.load - (tee_local $8 - (i32.add - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L298) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (br $label$continue$L298) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$break$L294 - (i32.const 0) - ) - ) - ) - ) - (if i32 - (i32.eq - (tee_local $0 - (i32.load - (get_local $22) - ) - ) - (get_local $2) - ) - (i32.const 1) - (block i32 - (i32.store - (get_local $32) - (i32.const 0) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $21) - (get_local $0) - (get_local $2) - (get_local $32) - ) - (if i32 - (i32.load - (get_local $32) - ) - (block i32 - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $18) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $17) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $16) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $15) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $21) - ) - (set_local $1 - (i32.load - (get_local $22) - ) - ) - (i32.store - (get_local $22) - (i32.const 0) - ) - (if - (get_local $1) - (call_indirect $FUNCSIG$vi - (get_local $1) - (i32.add - (i32.and - (i32.load - (get_local $41) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (set_global $STACKTOP - (get_local $14) - ) - (get_local $0) - ) - (func $_vfscanf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 f64) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (set_local $17 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 304) - ) - ) - (set_local $28 - (if i32 - (i32.gt_s - (i32.load offset=76 - (get_local $0) - ) - (i32.const -1) - ) - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $0) - ) - (i32.const 0) - ) - ) - (set_local $23 - (i32.add - (get_local $17) - (i32.const 16) - ) - ) - (set_local $22 - (i32.add - (get_local $17) - (i32.const 8) - ) - ) - (set_local $11 - (i32.add - (get_local $17) - (i32.const 33) - ) - ) - (set_local $26 - (get_local $17) - ) - (set_local $27 - (i32.add - (get_local $17) - (i32.const 32) - ) - ) - (block $label$break$L4 - (if - (tee_local $5 - (i32.load8_s - (get_local $1) - ) - ) - (block - (set_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 100) - ) - ) - (set_local $18 - (i32.add - (get_local $0) - (i32.const 108) - ) - ) - (set_local $19 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $20 - (i32.add - (get_local $11) - (i32.const 10) - ) - ) - (set_local $29 - (i32.add - (get_local $11) - (i32.const 33) - ) - ) - (set_local $30 - (i32.add - (get_local $22) - (i32.const 4) - ) - ) - (set_local $31 - (i32.add - (get_local $11) - (i32.const 46) - ) - ) - (set_local $32 - (i32.add - (get_local $11) - (i32.const 94) - ) - ) - (set_local $15 - (i32.const 0) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $10 - (i32.const 0) - ) - (block $__rjto$3 - (block $__rjti$3 - (block $__rjti$2 - (block $__rjti$1 - (loop $label$continue$L6 - (block $label$break$L6 - (block $label$break$L8 - (set_local $4 - (if i32 - (call $_isspace - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (block i32 - (loop $while-in117 - (if - (call $_isspace - (i32.load8_u - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $5) - ) - (br $while-in117) - ) - ) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (loop $do-in119 - (br_if $do-in119 - (call $_isspace - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $13) - ) - ) - (block i32 - (i32.store - (get_local $8) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $5) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - ) - ) - ) - (if - (i32.load - (get_local $13) - ) - (i32.store - (get_local $8) - (tee_local $5 - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (set_local $5 - (i32.load - (get_local $8) - ) - ) - ) - (i32.sub - (i32.add - (i32.add - (i32.load - (get_local $18) - ) - (get_local $4) - ) - (get_local $5) - ) - (i32.load - (get_local $19) - ) - ) - ) - (block i32 - (block $label$break$L10 - (if - (tee_local $7 - (i32.eq - (i32.load8_s - (get_local $1) - ) - (i32.const 37) - ) - ) - (block - (if - (i32.lt_u - (i32.add - (tee_local $12 - (i32.and - (tee_local $5 - (i32.load8_s - (tee_local $1 - (block $label$break$L12 i32 - (block $switch-default - (block $switch-case3 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-case3 $switch-default - (i32.sub - (tee_local $12 - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - (i32.const 37) - ) - ) - ) - (br $label$break$L10) - ) - (set_local $7 - (i32.const 0) - ) - (br $label$break$L12 - (i32.add - (get_local $1) - (i32.const 2) - ) - ) - ) - (if - (i32.lt_u - (tee_local $7 - (i32.add - (i32.and - (get_local $12) - (i32.const 255) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (if - (i32.eq - (i32.load8_s offset=2 - (get_local $1) - ) - (i32.const 36) - ) - (block - (i32.store - (get_local $23) - (i32.load - (get_local $2) - ) - ) - (set_local $5 - (get_local $7) - ) - (loop $while-in - (set_local $7 - (i32.load - (tee_local $12 - (i32.and - (i32.add - (i32.load - (get_local $23) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $23) - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (if - (i32.gt_u - (get_local $5) - (i32.const 1) - ) - (block - (set_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - (br $while-in) - ) - ) - ) - (br $label$break$L12 - (i32.add - (get_local $1) - (i32.const 3) - ) - ) - ) - ) - ) - (set_local $7 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (get_local $5) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const -48) - ) - (i32.const 10) - ) - (block - (set_local $5 - (get_local $12) - ) - (set_local $12 - (i32.const 0) - ) - (loop $while-in5 - (set_local $12 - (i32.add - (i32.add - (i32.mul - (get_local $12) - (i32.const 10) - ) - (i32.const -48) - ) - (get_local $5) - ) - ) - (br_if $while-in5 - (i32.lt_u - (i32.add - (tee_local $5 - (i32.and - (tee_local $3 - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const -48) - ) - (i32.const 10) - ) - ) - (set_local $5 - (get_local $3) - ) - ) - ) - (set_local $12 - (i32.const 0) - ) - ) - (set_local $5 - (if i32 - (i32.eq - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 109) - ) - (block i32 - (set_local $9 - (i32.load8_u - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $10 - (i32.const 0) - ) - (i32.ne - (get_local $7) - (i32.const 0) - ) - ) - (block i32 - (set_local $9 - (get_local $5) - ) - (set_local $3 - (get_local $1) - ) - (i32.const 0) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (block $switch6 - (block $switch-default34 - (block $switch-case13 - (block $switch-case12 - (block $switch-case10 - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (br_table $switch-case13 $switch-default34 $switch-case13 $switch-default34 $switch-case13 $switch-case13 $switch-case13 $switch-default34 $switch-default34 $switch-default34 $switch-default34 $switch-case12 $switch-default34 $switch-default34 $switch-default34 $switch-default34 $switch-default34 $switch-default34 $switch-case13 $switch-default34 $switch-default34 $switch-default34 $switch-default34 $switch-case13 $switch-default34 $switch-default34 $switch-case13 $switch-default34 $switch-default34 $switch-default34 $switch-default34 $switch-default34 $switch-case13 $switch-default34 $switch-case13 $switch-case13 $switch-case13 $switch-case13 $switch-case13 $switch-case7 $switch-case13 $switch-case9 $switch-default34 $switch-case8 $switch-default34 $switch-case13 $switch-case13 $switch-case13 $switch-default34 $switch-default34 $switch-case13 $switch-case10 $switch-case13 $switch-default34 $switch-default34 $switch-case13 $switch-default34 $switch-case10 $switch-default34 - (i32.sub - (i32.and - (get_local $9) - (i32.const 255) - ) - (i32.const 65) - ) - ) - ) - (if - (tee_local $9 - (i32.eq - (i32.load8_s - (get_local $1) - ) - (i32.const 104) - ) - ) - (set_local $1 - (i32.add - (get_local $3) - (i32.const 2) - ) - ) - ) - (set_local $3 - (if i32 - (get_local $9) - (i32.const -2) - (i32.const -1) - ) - ) - (br $switch6) - ) - (if - (tee_local $9 - (i32.eq - (i32.load8_s - (get_local $1) - ) - (i32.const 108) - ) - ) - (set_local $1 - (i32.add - (get_local $3) - (i32.const 2) - ) - ) - ) - (set_local $3 - (if i32 - (get_local $9) - (i32.const 3) - (i32.const 1) - ) - ) - (br $switch6) - ) - (set_local $3 - (i32.const 3) - ) - (br $switch6) - ) - (set_local $3 - (i32.const 1) - ) - (br $switch6) - ) - (set_local $3 - (i32.const 2) - ) - (br $switch6) - ) - (set_local $1 - (get_local $3) - ) - (set_local $3 - (i32.const 0) - ) - (br $switch6) - ) - (br $__rjti$2) - ) - (if - (tee_local $21 - (i32.eq - (i32.and - (tee_local $9 - (i32.load8_u - (get_local $1) - ) - ) - (i32.const 47) - ) - (i32.const 3) - ) - ) - (set_local $9 - (i32.or - (get_local $9) - (i32.const 32) - ) - ) - ) - (set_local $16 - (if i32 - (get_local $21) - (i32.const 1) - (get_local $3) - ) - ) - (block $switch35 - (block $switch-default46 - (block $switch-case45 - (block $switch-case37 - (block $switch-case36 - (br_table $switch-case37 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-case36 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-default46 $switch-case45 $switch-default46 - (i32.sub - (get_local $9) - (i32.const 91) - ) - ) - ) - (set_local $21 - (get_local $4) - ) - (if - (i32.lt_s - (get_local $12) - (i32.const 1) - ) - (set_local $12 - (i32.const 1) - ) - ) - (br $switch35) - ) - (set_local $21 - (get_local $4) - ) - (br $switch35) - ) - (br_if $label$break$L8 - (i32.eqz - (get_local $7) - ) - ) - (block $switch-default44 - (block $switch-case43 - (block $switch-case42 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (br_table $switch-case39 $switch-case40 $switch-case41 $switch-case42 $switch-default44 $switch-case43 $switch-default44 - (i32.sub - (get_local $16) - (i32.const -2) - ) - ) - ) - (i32.store8 - (get_local $7) - (get_local $4) - ) - (br $label$break$L8) - ) - (i32.store16 - (get_local $7) - (get_local $4) - ) - (br $label$break$L8) - ) - (i32.store - (get_local $7) - (get_local $4) - ) - (br $label$break$L8) - ) - (i32.store - (get_local $7) - (get_local $4) - ) - (br $label$break$L8) - ) - (i32.store - (get_local $7) - (get_local $4) - ) - (i32.store offset=4 - (get_local $7) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $4) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L8) - ) - (br $label$break$L8) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (loop $do-in - (br_if $do-in - (call $_isspace - (tee_local $3 - (if i32 - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $13) - ) - ) - (block i32 - (i32.store - (get_local $8) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $3) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - ) - ) - ) - (if - (i32.load - (get_local $13) - ) - (i32.store - (get_local $8) - (tee_local $3 - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (set_local $3 - (i32.load - (get_local $8) - ) - ) - ) - (set_local $21 - (i32.sub - (i32.add - (i32.add - (i32.load - (get_local $18) - ) - (get_local $4) - ) - (get_local $3) - ) - (i32.load - (get_local $19) - ) - ) - ) - ) - (call $___shlim - (get_local $0) - (get_local $12) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $8) - ) - ) - (tee_local $4 - (i32.load - (get_local $13) - ) - ) - ) - (i32.store - (get_local $8) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (block - (br_if $__rjti$2 - (i32.lt_s - (call $___shgetc - (get_local $0) - ) - (i32.const 0) - ) - ) - (set_local $4 - (i32.load - (get_local $13) - ) - ) - ) - ) - (if - (get_local $4) - (i32.store - (get_local $8) - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (block $label$break$L169 - (block $__rjti$0 - (block $switch-default107 - (block $switch-case94 - (block $switch-case93 - (block $switch-case91 - (block $switch-case90 - (block $switch-case87 - (block $switch-case49 - (br_table $switch-case94 $switch-default107 $switch-default107 $switch-default107 $switch-case94 $switch-case94 $switch-case94 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-case87 $switch-default107 $switch-default107 $switch-case49 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-case94 $switch-default107 $switch-case49 $switch-case91 $switch-case94 $switch-case94 $switch-case94 $switch-default107 $switch-case93 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-default107 $switch-case90 $switch-case87 $switch-default107 $switch-default107 $switch-case49 $switch-default107 $switch-case91 $switch-default107 $switch-default107 $switch-case87 $switch-default107 - (i32.sub - (get_local $9) - (i32.const 65) - ) - ) - ) - (set_local $24 - (i32.eq - (get_local $9) - (i32.const 99) - ) - ) - (block $label$break$L70 - (if - (i32.eq - (i32.or - (get_local $9) - (i32.const 16) - ) - (i32.const 115) - ) - (block - (drop - (call $_memset - (get_local $11) - (i32.const -1) - (i32.const 257) - ) - ) - (i32.store8 - (get_local $11) - (i32.const 0) - ) - (if - (i32.eq - (get_local $9) - (i32.const 115) - ) - (block - (i32.store8 - (get_local $29) - (i32.const 0) - ) - (i32.store8 - (get_local $20) - (i32.const 0) - ) - (i32.store8 offset=1 - (get_local $20) - (i32.const 0) - ) - (i32.store8 offset=2 - (get_local $20) - (i32.const 0) - ) - (i32.store8 offset=3 - (get_local $20) - (i32.const 0) - ) - (i32.store8 offset=4 - (get_local $20) - (i32.const 0) - ) - ) - ) - ) - (block - (set_local $9 - (tee_local $14 - (i32.eq - (i32.load8_s - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - (i32.const 94) - ) - ) - ) - (drop - (call $_memset - (get_local $11) - (get_local $14) - (i32.const 257) - ) - ) - (i32.store8 - (get_local $11) - (i32.const 0) - ) - (block $switch52 - (block $switch-default55 - (block $switch-case54 - (block $switch-case53 - (br_table $switch-case53 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-default55 $switch-case54 $switch-default55 - (i32.sub - (i32.load8_s - (tee_local $1 - (if i32 - (get_local $14) - (i32.add - (get_local $1) - (i32.const 2) - ) - (get_local $3) - ) - ) - ) - (i32.const 45) - ) - ) - ) - (i32.store8 - (get_local $31) - (tee_local $9 - (i32.xor - (get_local $9) - (i32.const 1) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $switch52) - ) - (i32.store8 - (get_local $32) - (tee_local $9 - (i32.xor - (get_local $9) - (i32.const 1) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $switch52) - ) - (set_local $9 - (i32.xor - (get_local $9) - (i32.const 1) - ) - ) - ) - (loop $while-in57 - (block $label$break$L81 - (block $switch-default69 - (block $switch-case68 - (block $switch-case61 - (block $switch-case60 - (br_table $switch-case60 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-case68 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-default69 $switch-case61 $switch-default69 - (tee_local $3 - (i32.load8_s - (get_local $1) - ) - ) - ) - ) - (br $__rjti$2) - ) - (br $label$break$L70) - ) - (block $switch-default65 - (block $switch-case63 - (br_table $switch-case63 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-default65 $switch-case63 $switch-default65 - (tee_local $3 - (i32.load8_s - (tee_local $14 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (set_local $3 - (i32.const 45) - ) - (br $label$break$L81) - ) - (set_local $1 - (if i32 - (i32.lt_s - (tee_local $1 - (i32.load8_u - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (block i32 - (set_local $1 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (loop $do-in67 - (i32.store8 - (i32.add - (get_local $11) - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - (get_local $9) - ) - (br_if $do-in67 - (i32.lt_s - (get_local $1) - (i32.and - (tee_local $3 - (i32.load8_s - (get_local $14) - ) - ) - (i32.const 255) - ) - ) - ) - ) - (get_local $14) - ) - (get_local $14) - ) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $11) - (i32.add - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 1) - ) - ) - (get_local $9) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in57) - ) - ) - ) - ) - (set_local $3 - (if i32 - (get_local $24) - (i32.add - (get_local $12) - (i32.const 1) - ) - (i32.const 31) - ) - ) - (set_local $14 - (i32.ne - (get_local $5) - (i32.const 0) - ) - ) - (block $label$break$L89 - (if - (tee_local $16 - (i32.eq - (get_local $16) - (i32.const 1) - ) - ) - (block - (if - (get_local $14) - (if - (i32.eqz - (tee_local $10 - (call $_malloc - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $__rjti$2) - ) - ) - (set_local $10 - (get_local $7) - ) - ) - (i32.store - (get_local $22) - (i32.const 0) - ) - (i32.store - (get_local $30) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $4 - (get_local $3) - ) - (loop $label$continue$L95 - (block $label$break$L95 - (set_local $9 - (i32.eqz - (get_local $10) - ) - ) - (loop $while-in72 - (loop $label$continue$L99 - (block $label$break$L99 - (br_if $label$break$L95 - (i32.eqz - (i32.load8_s - (i32.add - (get_local $11) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $13) - ) - ) - (block i32 - (i32.store - (get_local $8) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $3) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.store8 - (get_local $27) - (get_local $3) - ) - (block $switch73 - (block $switch-default76 - (block $switch-case75 - (block $switch-case74 - (br_table $switch-case75 $switch-case74 $switch-default76 - (i32.sub - (call $_mbrtowc - (get_local $26) - (get_local $27) - (i32.const 1) - (get_local $22) - ) - (i32.const -2) - ) - ) - ) - (set_local $6 - (i32.const 0) - ) - (br $__rjti$2) - ) - (br $switch73) - ) - (br $label$break$L99) - ) - (br $label$continue$L99) - ) - ) - (if - (i32.eqz - (get_local $9) - ) - (block - (i32.store - (i32.add - (get_local $10) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.load - (get_local $26) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - ) - (br_if $while-in72 - (i32.eqz - (i32.and - (get_local $14) - (i32.eq - (get_local $6) - (get_local $4) - ) - ) - ) - ) - ) - (if - (tee_local $9 - (call $_realloc - (get_local $10) - (i32.shl - (tee_local $3 - (i32.or - (i32.shl - (get_local $4) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - ) - (block - (set_local $6 - (get_local $4) - ) - (set_local $4 - (get_local $3) - ) - (set_local $10 - (get_local $9) - ) - (br $label$continue$L95) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $__rjti$2) - ) - ) - ) - ) - (if - (call $_mbsinit - (get_local $22) - ) - (block - (set_local $4 - (get_local $6) - ) - (set_local $6 - (i32.const 0) - ) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $__rjti$2) - ) - ) - ) - (block - (if - (get_local $14) - (block - (if - (tee_local $6 - (call $_malloc - (get_local $3) - ) - ) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $10 - (get_local $3) - ) - ) - (block - (set_local $6 - (i32.const 0) - ) - (set_local $10 - (i32.const 0) - ) - (br $__rjti$2) - ) - ) - (loop $while-in78 - (loop $do-in80 - (if - (i32.eqz - (i32.load8_s - (i32.add - (get_local $11) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $13) - ) - ) - (block i32 - (i32.store - (get_local $8) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $3) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - ) - ) - (block - (set_local $10 - (i32.const 0) - ) - (br $label$break$L89) - ) - ) - (i32.store8 - (i32.add - (get_local $6) - (get_local $4) - ) - (get_local $3) - ) - (br_if $do-in80 - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (get_local $10) - ) - ) - ) - (if - (tee_local $9 - (call $_realloc - (get_local $6) - (tee_local $3 - (i32.or - (i32.shl - (get_local $10) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - ) - (block - (set_local $4 - (get_local $10) - ) - (set_local $10 - (get_local $3) - ) - (set_local $6 - (get_local $9) - ) - (br $while-in78) - ) - (block - (set_local $10 - (i32.const 0) - ) - (br $__rjti$2) - ) - ) - ) - ) - ) - (if - (get_local $7) - (block - (set_local $6 - (get_local $4) - ) - (set_local $4 - (i32.const 0) - ) - (loop $while-in84 - (if - (i32.load8_s - (i32.add - (get_local $11) - (i32.add - (tee_local $6 - (if i32 - (i32.lt_u - (tee_local $10 - (i32.load - (get_local $8) - ) - ) - (get_local $6) - ) - (block i32 - (i32.store - (get_local $8) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $10) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store8 - (i32.add - (get_local $7) - (get_local $4) - ) - (get_local $6) - ) - (set_local $6 - (i32.load - (get_local $13) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (br $while-in84) - ) - (block - (set_local $6 - (get_local $7) - ) - (set_local $10 - (i32.const 0) - ) - (br $label$break$L89) - ) - ) - ) - ) - (loop $while-in82 - (if - (i32.load8_s - (i32.add - (get_local $11) - (i32.add - (tee_local $6 - (if i32 - (i32.lt_u - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (get_local $4) - ) - (block i32 - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $6) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - ) - (block - (set_local $4 - (i32.load - (get_local $13) - ) - ) - (br $while-in82) - ) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $10 - (i32.const 0) - ) - (br $label$break$L89) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.load - (get_local $13) - ) - (i32.store - (get_local $8) - (tee_local $3 - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (set_local $3 - (i32.load - (get_local $8) - ) - ) - ) - (br_if $label$break$L6 - (i32.eqz - (tee_local $3 - (i32.add - (i32.sub - (get_local $3) - (i32.load - (get_local $19) - ) - ) - (i32.load - (get_local $18) - ) - ) - ) - ) - ) - (br_if $label$break$L6 - (i32.eqz - (i32.or - (i32.eq - (get_local $3) - (get_local $12) - ) - (i32.xor - (get_local $24) - (i32.const 1) - ) - ) - ) - ) - (if - (get_local $14) - (if - (get_local $16) - (i32.store - (get_local $7) - (get_local $10) - ) - (i32.store - (get_local $7) - (get_local $6) - ) - ) - ) - (if - (i32.eqz - (get_local $24) - ) - (block - (if - (get_local $10) - (i32.store - (i32.add - (get_local $10) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.const 0) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L169) - ) - ) - (i32.store8 - (i32.add - (get_local $6) - (get_local $4) - ) - (i32.const 0) - ) - ) - ) - (br $label$break$L169) - ) - (set_local $4 - (i32.const 16) - ) - (br $__rjti$0) - ) - (set_local $4 - (i32.const 8) - ) - (br $__rjti$0) - ) - (set_local $4 - (i32.const 10) - ) - (br $__rjti$0) - ) - (set_local $4 - (i32.const 0) - ) - (br $__rjti$0) - ) - (set_local $25 - (call $___floatscan - (get_local $0) - (get_local $16) - (i32.const 0) - ) - ) - (br_if $label$break$L6 - (i32.eq - (i32.load - (get_local $18) - ) - (i32.sub - (i32.load - (get_local $19) - ) - (i32.load - (get_local $8) - ) - ) - ) - ) - (if - (get_local $7) - (block - (block $switch-default105 - (block $switch-case104 - (block $switch-case103 - (block $switch-case102 - (br_table $switch-case102 $switch-case103 $switch-case104 $switch-default105 - (get_local $16) - ) - ) - (f32.store - (get_local $7) - (f32.demote/f64 - (get_local $25) - ) - ) - (br $label$break$L169) - ) - (f64.store - (get_local $7) - (get_local $25) - ) - (br $label$break$L169) - ) - (f64.store - (get_local $7) - (get_local $25) - ) - (br $label$break$L169) - ) - (br $label$break$L169) - ) - ) - (br $label$break$L169) - ) - (br $label$break$L169) - ) - (set_local $4 - (call $___intscan - (get_local $0) - (get_local $4) - (i32.const 0) - (i32.const -1) - (i32.const -1) - ) - ) - (br_if $label$break$L6 - (i32.eq - (i32.load - (get_local $18) - ) - (i32.sub - (i32.load - (get_local $19) - ) - (i32.load - (get_local $8) - ) - ) - ) - ) - (if - (i32.and - (i32.ne - (get_local $7) - (i32.const 0) - ) - (i32.eq - (get_local $9) - (i32.const 112) - ) - ) - (block - (i32.store - (get_local $7) - (get_local $4) - ) - (br $label$break$L169) - ) - ) - (if - (get_local $7) - (block $switch-default115 - (block $switch-case114 - (block $switch-case113 - (block $switch-case112 - (block $switch-case111 - (block $switch-case110 - (br_table $switch-case110 $switch-case111 $switch-case112 $switch-case113 $switch-default115 $switch-case114 $switch-default115 - (i32.sub - (get_local $16) - (i32.const -2) - ) - ) - ) - (i32.store8 - (get_local $7) - (get_local $4) - ) - (br $label$break$L169) - ) - (i32.store16 - (get_local $7) - (get_local $4) - ) - (br $label$break$L169) - ) - (i32.store - (get_local $7) - (get_local $4) - ) - (br $label$break$L169) - ) - (i32.store - (get_local $7) - (get_local $4) - ) - (br $label$break$L169) - ) - (i32.store - (tee_local $5 - (get_local $7) - ) - (get_local $4) - ) - (i32.store offset=4 - (get_local $5) - (get_global $tempRet0) - ) - ) - ) - ) - (set_local $15 - (i32.add - (i32.ne - (get_local $7) - (i32.const 0) - ) - (get_local $15) - ) - ) - (set_local $4 - (i32.sub - (i32.add - (i32.add - (i32.load - (get_local $18) - ) - (get_local $21) - ) - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $19) - ) - ) - ) - (br $label$break$L8) - ) - ) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (br_if $__rjti$1 - (i32.ne - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $13) - ) - ) - (block i32 - (i32.store - (get_local $8) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $5) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.load8_u - (tee_local $1 - (i32.add - (get_local $1) - (get_local $7) - ) - ) - ) - ) - ) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - ) - ) - ) - (br_if $label$continue$L6 - (tee_local $5 - (i32.load8_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - ) - (br $label$break$L4) - ) - ) - (br $__rjto$3) - ) - (if - (i32.load - (get_local $13) - ) - (i32.store - (get_local $8) - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (br_if $label$break$L4 - (i32.or - (get_local $15) - (i32.gt_s - (get_local $5) - (i32.const -1) - ) - ) - ) - (set_local $5 - (i32.const 0) - ) - (br $__rjti$3) - ) - (br_if $__rjti$3 - (i32.eqz - (get_local $15) - ) - ) - (br $__rjto$3) - ) - (set_local $15 - (i32.const -1) - ) - ) - (if - (get_local $5) - (block - (call $_free - (get_local $6) - ) - (call $_free - (get_local $10) - ) - ) - ) - ) - (set_local $15 - (i32.const 0) - ) - ) - ) - (if - (get_local $28) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $0) - ) - ) - (set_global $STACKTOP - (get_local $17) - ) - (get_local $15) - ) - (func $_free (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (if - (i32.eqz - (get_local $0) - ) - (return) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.add - (get_local $0) - (i32.const -8) - ) - ) - (tee_local $11 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (tee_local $5 - (i32.and - (tee_local $7 - (i32.load - (i32.add - (get_local $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (set_local $8 - (i32.add - (get_local $1) - (tee_local $0 - (i32.and - (get_local $7) - (i32.const -8) - ) - ) - ) - ) - (block $do-once - (if - (i32.and - (get_local $7) - (i32.const 1) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - (block - (set_local $7 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eqz - (get_local $5) - ) - (return) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.sub - (i32.const 0) - (get_local $7) - ) - ) - ) - (get_local $11) - ) - (call $_abort) - ) - (set_local $0 - (i32.add - (get_local $7) - (get_local $0) - ) - ) - (if - (i32.eq - (get_local $1) - (i32.load - (i32.const 17684) - ) - ) - (block - (if - (i32.ne - (i32.and - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 17672) - (get_local $0) - ) - (i32.store - (get_local $2) - (i32.and - (get_local $3) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $1) - (get_local $0) - ) - (get_local $0) - ) - (return) - ) - ) - (set_local $5 - (i32.shr_u - (get_local $7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $7) - (i32.const 256) - ) - (block - (set_local $6 - (i32.load offset=12 - (get_local $1) - ) - ) - (if - (i32.ne - (tee_local $2 - (i32.load offset=8 - (get_local $1) - ) - ) - (tee_local $3 - (i32.add - (i32.shl - (get_local $5) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $2) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $2) - ) - (get_local $1) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $6) - (get_local $2) - ) - (block - (i32.store - (i32.const 17664) - (i32.and - (i32.load - (i32.const 17664) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $5) - ) - (i32.const -1) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (get_local $6) - (get_local $3) - ) - (set_local $4 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $6) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (set_local $4 - (get_local $3) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $2) - (get_local $6) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (set_local $12 - (i32.load offset=24 - (get_local $1) - ) - ) - (block $do-once0 - (if - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $1) - ) - ) - (get_local $1) - ) - (block - (if - (i32.eqz - (tee_local $5 - (i32.load - (tee_local $4 - (i32.add - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (set_local $4 - (get_local $7) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $do-once0) - ) - ) - ) - (loop $while-in - (if - (tee_local $7 - (i32.load - (tee_local $10 - (i32.add - (get_local $5) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $7) - ) - (set_local $4 - (get_local $10) - ) - (br $while-in) - ) - ) - (if - (tee_local $7 - (i32.load - (tee_local $10 - (i32.add - (get_local $5) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $7) - ) - (set_local $4 - (get_local $10) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (get_local $4) - (get_local $11) - ) - (call $_abort) - (block - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $6 - (get_local $5) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $10 - (i32.load offset=8 - (get_local $1) - ) - ) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - ) - (get_local $1) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $5 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (block - (i32.store - (get_local $7) - (get_local $4) - ) - (i32.store - (get_local $5) - (get_local $10) - ) - (set_local $6 - (get_local $4) - ) - ) - (call $_abort) - ) - ) - ) - ) - (if - (get_local $12) - (block - (if - (i32.eq - (get_local $1) - (i32.load - (tee_local $4 - (i32.add - (i32.shl - (tee_local $5 - (i32.load offset=28 - (get_local $1) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $4) - (get_local $6) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $5) - ) - (i32.const -1) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $12) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $4 - (i32.add - (get_local $12) - (i32.const 16) - ) - ) - ) - (get_local $1) - ) - (i32.store - (get_local $4) - (get_local $6) - ) - (i32.store offset=20 - (get_local $12) - (get_local $6) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $6) - (tee_local $5 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $6) - (get_local $12) - ) - (if - (tee_local $7 - (i32.load - (tee_local $4 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $7) - (get_local $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $6) - (get_local $7) - ) - (i32.store offset=24 - (get_local $7) - (get_local $6) - ) - ) - ) - ) - (if - (tee_local $4 - (i32.load offset=4 - (get_local $4) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $6) - (get_local $4) - ) - (i32.store offset=24 - (get_local $4) - (get_local $6) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (get_local $2) - (get_local $8) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (get_local $1) - (i32.const 2) - ) - (block - (i32.store - (get_local $0) - (i32.and - (get_local $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $2) - (get_local $3) - ) - (get_local $3) - ) - ) - (block - (if - (i32.eq - (get_local $8) - (i32.load - (i32.const 17688) - ) - ) - (block - (i32.store - (i32.const 17676) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17676) - ) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17688) - (get_local $2) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (get_local $2) - (i32.load - (i32.const 17684) - ) - ) - (return) - ) - (i32.store - (i32.const 17684) - (i32.const 0) - ) - (i32.store - (i32.const 17672) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (get_local $8) - (i32.load - (i32.const 17684) - ) - ) - (block - (i32.store - (i32.const 17672) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17672) - ) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17684) - (get_local $2) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $2) - (get_local $0) - ) - (get_local $0) - ) - (return) - ) - ) - (set_local $5 - (i32.add - (i32.and - (get_local $1) - (i32.const -8) - ) - (get_local $3) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $1) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (get_local $1) - (i32.const 256) - ) - (block - (set_local $4 - (i32.load offset=12 - (get_local $8) - ) - ) - (if - (i32.ne - (tee_local $1 - (i32.load offset=8 - (get_local $8) - ) - ) - (tee_local $0 - (i32.add - (i32.shl - (get_local $3) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $1) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $1) - ) - (get_local $8) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $1) - ) - (block - (i32.store - (i32.const 17664) - (i32.and - (i32.load - (i32.const 17664) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $0) - ) - (set_local $14 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (get_local $8) - ) - (set_local $14 - (get_local $0) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $1) - (get_local $4) - ) - (i32.store - (get_local $14) - (get_local $1) - ) - ) - (block - (set_local $6 - (i32.load offset=24 - (get_local $8) - ) - ) - (block $do-once6 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $8) - ) - ) - (get_local $8) - ) - (block - (if - (i32.eqz - (tee_local $3 - (i32.load - (tee_local $0 - (i32.add - (tee_local $1 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $3 - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (get_local $1) - ) - (block - (set_local $9 - (i32.const 0) - ) - (br $do-once6) - ) - ) - ) - (loop $while-in9 - (if - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in9) - ) - ) - (if - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $9 - (get_local $3) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $4 - (i32.load offset=8 - (get_local $8) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $1 - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - ) - (get_local $8) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $8) - ) - (block - (i32.store - (get_local $1) - (get_local $0) - ) - (i32.store - (get_local $3) - (get_local $4) - ) - (set_local $9 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (if - (get_local $6) - (block - (if - (i32.eq - (get_local $8) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $3 - (i32.load offset=28 - (get_local $8) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $9) - ) - (if - (i32.eqz - (get_local $9) - ) - (block - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (get_local $8) - ) - (i32.store - (get_local $0) - (get_local $9) - ) - (i32.store offset=20 - (get_local $6) - (get_local $9) - ) - ) - (br_if $do-once4 - (i32.eqz - (get_local $9) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $9) - (tee_local $3 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $9) - (get_local $6) - ) - (if - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (get_local $3) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $9) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $9) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load offset=4 - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $9) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $2) - (get_local $5) - ) - (get_local $5) - ) - (if - (i32.eq - (get_local $2) - (i32.load - (i32.const 17684) - ) - ) - (block - (i32.store - (i32.const 17672) - (get_local $5) - ) - (return) - ) - (set_local $3 - (get_local $5) - ) - ) - ) - ) - (set_local $0 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $3) - (i32.const 256) - ) - (block - (set_local $1 - (i32.add - (i32.shl - (get_local $0) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (if - (i32.and - (tee_local $3 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (set_local $15 - (get_local $3) - ) - (set_local $13 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17664) - (i32.or - (get_local $3) - (get_local $0) - ) - ) - (set_local $15 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (set_local $13 - (get_local $1) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $2) - ) - (i32.store offset=12 - (get_local $13) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $13) - ) - (i32.store offset=12 - (get_local $2) - (get_local $1) - ) - (return) - ) - ) - (set_local $4 - (i32.add - (i32.shl - (tee_local $5 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $3) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $3) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $4 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $4) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - (i32.store offset=28 - (get_local $2) - (get_local $5) - ) - (i32.store offset=20 - (get_local $2) - (i32.const 0) - ) - (i32.store offset=16 - (get_local $2) - (i32.const 0) - ) - (block $do-once12 - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17668) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $5) - ) - ) - ) - (block - (set_local $5 - (i32.shl - (get_local $3) - (if i32 - (i32.eq - (get_local $5) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $4) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in15 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $3) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.shl - (get_local $5) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in15) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $4) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $0) - ) - (i32.store offset=12 - (get_local $2) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $2) - ) - (br $do-once12) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (tee_local $4 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $3 - (i32.load - (i32.const 17680) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $3) - ) - ) - (block - (i32.store offset=12 - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $4) - ) - (i32.store offset=12 - (get_local $2) - (get_local $0) - ) - (i32.store offset=24 - (get_local $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - (block - (i32.store - (i32.const 17668) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $4) - ) - (i32.store offset=12 - (get_local $2) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $2) - ) - ) - ) - ) - (i32.store - (i32.const 17696) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17696) - ) - (i32.const -1) - ) - ) - ) - (if - (get_local $0) - (return) - (set_local $0 - (i32.const 18120) - ) - ) - (loop $while-in17 - (if - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 17696) - (i32.const -1) - ) - ) - (func $___intscan (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (block $label$break$L1 - (set_local $4 - (if i32 - (i32.gt_u - (get_local $1) - (i32.const 36) - ) - (block i32 - (i32.store - (call $___errno_location) - (i32.const 22) - ) - (set_local $3 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $7 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 100) - ) - ) - (loop $do-in - (br_if $do-in - (call $_isspace - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $5) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - ) - ) - ) - (block $label$break$L11 - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default - (i32.sub - (get_local $5) - (i32.const 43) - ) - ) - ) - (set_local $13 - (i32.shr_s - (i32.shl - (i32.eq - (get_local $5) - (i32.const 45) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (if - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block - (i32.store - (get_local $7) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $5 - (i32.load8_u - (get_local $5) - ) - ) - (br $label$break$L11) - ) - (block - (set_local $5 - (call $___shgetc - (get_local $0) - ) - ) - (br $label$break$L11) - ) - ) - ) - (set_local $13 - (i32.const 0) - ) - ) - (set_local $6 - (i32.eqz - (get_local $1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (if - (i32.and - (i32.eq - (i32.or - (get_local $1) - (i32.const 16) - ) - (i32.const 16) - ) - (i32.eq - (get_local $5) - (i32.const 48) - ) - ) - (block - (if - (i32.ne - (i32.or - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $5) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 32) - ) - (i32.const 120) - ) - (if - (get_local $6) - (block - (set_local $1 - (i32.const 8) - ) - (set_local $2 - (get_local $5) - ) - (br $__rjti$1) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $__rjti$0) - ) - ) - ) - (if - (i32.gt_s - (i32.load8_u - (i32.add - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 10530) - ) - ) - (i32.const 15) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.eqz - (i32.load - (get_local $10) - ) - ) - ) - ) - (i32.store - (get_local $7) - (i32.add - (i32.load - (get_local $7) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eqz - (get_local $2) - ) - (block - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (if - (get_local $1) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (i32.store - (get_local $7) - (i32.add - (i32.load - (get_local $7) - ) - (i32.const -1) - ) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $label$break$L1) - ) - (block - (set_local $1 - (i32.const 16) - ) - (set_local $2 - (get_local $5) - ) - (br $__rjti$1) - ) - ) - ) - (if - (i32.lt_u - (i32.load8_u - (i32.add - (get_local $5) - (i32.const 10530) - ) - ) - (if i32 - (get_local $6) - (tee_local $1 - (i32.const 10) - ) - (get_local $1) - ) - ) - (set_local $2 - (get_local $5) - ) - (block - (if - (i32.load - (get_local $10) - ) - (i32.store - (get_local $7) - (i32.add - (i32.load - (get_local $7) - ) - (i32.const -1) - ) - ) - ) - (call $___shlim - (get_local $0) - (i32.const 0) - ) - (i32.store - (call $___errno_location) - (i32.const 22) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - ) - ) - (br_if $__rjti$1 - (i32.ne - (get_local $1) - (i32.const 10) - ) - ) - (set_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.add - (get_local $2) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block i32 - (set_local $2 - (get_local $1) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (set_local $1 - (i32.add - (i32.mul - (get_local $1) - (i32.const 10) - ) - (get_local $2) - ) - ) - (br_if $while-in - (i32.and - (i32.lt_u - (tee_local $2 - (i32.add - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $5) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (i32.lt_u - (get_local $1) - (i32.const 429496729) - ) - ) - ) - ) - (set_local $6 - (get_local $1) - ) - (i32.const 0) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (set_local $5 - (get_local $2) - ) - (i32.const 0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $8 - (i32.add - (get_local $5) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (set_local $2 - (get_local $6) - ) - (set_local $6 - (get_local $8) - ) - (loop $while-in4 - (block $while-out3 - (set_local $11 - (call $___muldi3 - (get_local $2) - (get_local $1) - (i32.const 10) - (i32.const 0) - ) - ) - (br_if $while-out3 - (i32.or - (i32.gt_u - (tee_local $12 - (get_global $tempRet0) - ) - (tee_local $8 - (i32.xor - (tee_local $9 - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $6) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.and - (i32.eq - (get_local $12) - (get_local $8) - ) - (i32.gt_u - (get_local $11) - (i32.xor - (get_local $6) - (i32.const -1) - ) - ) - ) - ) - ) - (set_local $2 - (call $_i64Add - (get_local $11) - (get_local $12) - (get_local $6) - (get_local $9) - ) - ) - (set_local $1 - (get_global $tempRet0) - ) - (br_if $while-in4 - (i32.and - (i32.lt_u - (tee_local $6 - (i32.add - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $5) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (i32.or - (i32.lt_u - (get_local $1) - (i32.const 429496729) - ) - (i32.and - (i32.eq - (get_local $1) - (i32.const 429496729) - ) - (i32.lt_u - (get_local $2) - (i32.const -1717986918) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.le_u - (get_local $6) - (i32.const 9) - ) - (block - (set_local $6 - (i32.const 10) - ) - (br $__rjti$2) - ) - ) - ) - (set_local $2 - (get_local $6) - ) - ) - (br $__rjto$2) - ) - (if - (i32.eqz - (i32.and - (i32.add - (get_local $1) - (i32.const -1) - ) - (get_local $1) - ) - ) - (block - (set_local $14 - (i32.load8_s - (i32.add - (i32.and - (i32.shr_u - (i32.mul - (get_local $1) - (i32.const 23) - ) - (i32.const 5) - ) - (i32.const 7) - ) - (i32.const 10786) - ) - ) - ) - (set_local $8 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.and - (tee_local $6 - (i32.load8_s - (i32.add - (get_local $2) - (i32.const 10530) - ) - ) - ) - (i32.const 255) - ) - ) - (get_local $1) - ) - (block i32 - (set_local $2 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.and - (i32.lt_u - (tee_local $2 - (i32.or - (get_local $5) - (i32.shl - (get_local $2) - (get_local $14) - ) - ) - ) - (i32.const 134217728) - ) - (i32.lt_u - (tee_local $5 - (i32.and - (tee_local $6 - (i32.load8_s - (i32.add - (tee_local $8 - (if i32 - (i32.lt_u - (tee_local $6 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $6) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 10530) - ) - ) - ) - (i32.const 255) - ) - ) - (get_local $1) - ) - ) - (br $while-in7) - (set_local $5 - (get_local $8) - ) - ) - ) - (set_local $9 - (i32.const 0) - ) - (get_local $2) - ) - (block i32 - (set_local $9 - (i32.const 0) - ) - (set_local $5 - (get_local $2) - ) - (i32.const 0) - ) - ) - ) - (set_local $12 - (call $_bitshift64Lshr - (i32.const -1) - (i32.const -1) - (get_local $14) - ) - ) - (if - (i32.or - (i32.ge_u - (i32.and - (get_local $6) - (i32.const 255) - ) - (get_local $1) - ) - (i32.or - (i32.gt_u - (get_local $9) - (tee_local $11 - (get_global $tempRet0) - ) - ) - (i32.and - (i32.eq - (get_local $9) - (get_local $11) - ) - (i32.gt_u - (get_local $8) - (get_local $12) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $1) - ) - (set_local $2 - (get_local $8) - ) - (set_local $1 - (get_local $9) - ) - (br $__rjti$2) - ) - (set_local $2 - (get_local $9) - ) - ) - (loop $while-in9 - (set_local $2 - (call $_bitshift64Shl - (get_local $8) - (get_local $2) - (get_local $14) - ) - ) - (set_local $5 - (get_global $tempRet0) - ) - (set_local $9 - (if i32 - (i32.lt_u - (tee_local $8 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $8) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (set_local $8 - (i32.or - (i32.and - (get_local $6) - (i32.const 255) - ) - (get_local $2) - ) - ) - (if - (i32.or - (i32.ge_u - (tee_local $6 - (i32.load8_u - (i32.add - (get_local $9) - (i32.const 10530) - ) - ) - ) - (get_local $1) - ) - (i32.or - (i32.gt_u - (get_local $5) - (get_local $11) - ) - (i32.and - (i32.eq - (get_local $5) - (get_local $11) - ) - (i32.gt_u - (get_local $8) - (get_local $12) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $1) - ) - (set_local $2 - (get_local $8) - ) - (set_local $1 - (get_local $5) - ) - (set_local $5 - (get_local $9) - ) - (br $__rjti$2) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $while-in9) - ) - ) - ) - ) - ) - (set_local $8 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.and - (tee_local $6 - (i32.load8_s - (i32.add - (get_local $2) - (i32.const 10530) - ) - ) - ) - (i32.const 255) - ) - ) - (get_local $1) - ) - (block i32 - (set_local $2 - (i32.const 0) - ) - (loop $while-in11 - (if - (i32.and - (i32.lt_u - (tee_local $2 - (i32.add - (get_local $5) - (i32.mul - (get_local $2) - (get_local $1) - ) - ) - ) - (i32.const 119304647) - ) - (i32.lt_u - (tee_local $5 - (i32.and - (tee_local $6 - (i32.load8_s - (i32.add - (tee_local $8 - (if i32 - (i32.lt_u - (tee_local $6 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $6) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 10530) - ) - ) - ) - (i32.const 255) - ) - ) - (get_local $1) - ) - ) - (br $while-in11) - (set_local $5 - (get_local $8) - ) - ) - ) - (set_local $9 - (get_local $2) - ) - (i32.const 0) - ) - (block i32 - (set_local $9 - (i32.const 0) - ) - (set_local $5 - (get_local $2) - ) - (i32.const 0) - ) - ) - ) - (if - (i32.lt_u - (i32.and - (get_local $6) - (i32.const 255) - ) - (get_local $1) - ) - (block - (set_local $12 - (call $___udivdi3 - (i32.const -1) - (i32.const -1) - (get_local $1) - (i32.const 0) - ) - ) - (set_local $14 - (get_global $tempRet0) - ) - (set_local $2 - (get_local $9) - ) - (loop $while-in13 - (if - (i32.or - (i32.gt_u - (get_local $8) - (get_local $14) - ) - (i32.and - (i32.eq - (get_local $8) - (get_local $14) - ) - (i32.gt_u - (get_local $2) - (get_local $12) - ) - ) - ) - (block - (set_local $6 - (get_local $1) - ) - (set_local $1 - (get_local $8) - ) - (br $__rjti$2) - ) - ) - (set_local $11 - (call $___muldi3 - (get_local $2) - (get_local $8) - (get_local $1) - (i32.const 0) - ) - ) - (if - (i32.or - (i32.gt_u - (tee_local $9 - (get_global $tempRet0) - ) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $9) - (i32.const -1) - ) - (i32.gt_u - (get_local $11) - (i32.xor - (tee_local $6 - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.const -1) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $1) - ) - (set_local $1 - (get_local $8) - ) - (br $__rjti$2) - ) - ) - (set_local $2 - (call $_i64Add - (get_local $6) - (i32.const 0) - (get_local $11) - (get_local $9) - ) - ) - (set_local $8 - (get_global $tempRet0) - ) - (br_if $while-in13 - (i32.lt_u - (tee_local $6 - (i32.load8_u - (i32.add - (tee_local $5 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $5) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 10530) - ) - ) - ) - (get_local $1) - ) - ) - (set_local $6 - (get_local $1) - ) - (set_local $1 - (get_local $8) - ) - (br $__rjti$2) - ) - ) - (block - (set_local $6 - (get_local $1) - ) - (set_local $2 - (get_local $9) - ) - (set_local $1 - (get_local $8) - ) - (br $__rjti$2) - ) - ) - (br $__rjto$2) - ) - (if - (i32.lt_u - (i32.load8_u - (i32.add - (get_local $5) - (i32.const 10530) - ) - ) - (get_local $6) - ) - (block - (loop $do-in15 - (br_if $do-in15 - (i32.lt_u - (i32.load8_u - (i32.add - (tee_local $1 - (if i32 - (i32.lt_u - (tee_local $1 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $1) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 10530) - ) - ) - (get_local $6) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 34) - ) - (set_local $1 - (get_local $4) - ) - (set_local $2 - (get_local $3) - ) - (if - (i32.and - (get_local $3) - (i32.const 1) - ) - (set_local $13 - (i32.const 0) - ) - ) - ) - ) - ) - (if - (i32.load - (get_local $10) - ) - (i32.store - (get_local $7) - (i32.add - (i32.load - (get_local $7) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eqz - (i32.or - (i32.lt_u - (get_local $1) - (get_local $4) - ) - (i32.and - (i32.eq - (get_local $1) - (get_local $4) - ) - (i32.lt_u - (get_local $2) - (get_local $3) - ) - ) - ) - ) - (block - (if - (i32.eqz - (i32.or - (i32.or - (i32.ne - (i32.and - (get_local $3) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.ne - (get_local $13) - (i32.const 0) - ) - ) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 34) - ) - (set_local $3 - (call $_i64Add - (get_local $3) - (get_local $4) - (i32.const -1) - (i32.const -1) - ) - ) - (set_local $4 - (get_global $tempRet0) - ) - (br $label$break$L1) - ) - ) - (if - (i32.or - (i32.gt_u - (get_local $1) - (get_local $4) - ) - (i32.and - (i32.eq - (get_local $1) - (get_local $4) - ) - (i32.gt_u - (get_local $2) - (get_local $3) - ) - ) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 34) - ) - (br $label$break$L1) - ) - ) - ) - ) - (set_local $3 - (call $_i64Subtract - (i32.xor - (get_local $2) - (get_local $13) - ) - (i32.xor - (get_local $1) - (tee_local $0 - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $13) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (get_local $13) - (get_local $0) - ) - ) - (get_global $tempRet0) - ) - ) - ) - ) - (set_global $tempRet0 - (get_local $4) - ) - (get_local $3) - ) - (func $_dispose_chunk (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (set_local $7 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (block $do-once - (if - (i32.and - (tee_local $2 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.const 1) - ) - (block - (set_local $4 - (get_local $0) - ) - (set_local $3 - (get_local $1) - ) - ) - (block - (set_local $10 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $2) - (i32.const 3) - ) - ) - (return) - ) - (if - (i32.lt_u - (tee_local $2 - (i32.add - (get_local $0) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - ) - (tee_local $12 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (set_local $0 - (i32.add - (get_local $10) - (get_local $1) - ) - ) - (if - (i32.eq - (get_local $2) - (i32.load - (i32.const 17684) - ) - ) - (block - (if - (i32.ne - (i32.and - (tee_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 17672) - (get_local $0) - ) - (i32.store - (get_local $3) - (i32.and - (get_local $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $2) - (get_local $0) - ) - (get_local $0) - ) - (return) - ) - ) - (set_local $6 - (i32.shr_u - (get_local $10) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $10) - (i32.const 256) - ) - (block - (set_local $4 - (i32.load offset=12 - (get_local $2) - ) - ) - (if - (i32.ne - (tee_local $3 - (i32.load offset=8 - (get_local $2) - ) - ) - (tee_local $1 - (i32.add - (i32.shl - (get_local $6) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $3) - (get_local $12) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $3) - ) - (get_local $2) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $3) - ) - (block - (i32.store - (i32.const 17664) - (i32.and - (i32.load - (i32.const 17664) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $6) - ) - (i32.const -1) - ) - ) - ) - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $1) - ) - (set_local $5 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $4) - (get_local $12) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (get_local $2) - ) - (set_local $5 - (get_local $1) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $3) - (get_local $4) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (set_local $11 - (i32.load offset=24 - (get_local $2) - ) - ) - (block $do-once0 - (if - (i32.eq - (tee_local $1 - (i32.load offset=12 - (get_local $2) - ) - ) - (get_local $2) - ) - (block - (if - (i32.eqz - (tee_local $5 - (i32.load - (tee_local $1 - (i32.add - (tee_local $6 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $5 - (i32.load - (get_local $6) - ) - ) - (set_local $1 - (get_local $6) - ) - (block - (set_local $8 - (i32.const 0) - ) - (br $do-once0) - ) - ) - ) - (loop $while-in - (if - (tee_local $6 - (i32.load - (tee_local $10 - (i32.add - (get_local $5) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $6) - ) - (set_local $1 - (get_local $10) - ) - (br $while-in) - ) - ) - (if - (tee_local $6 - (i32.load - (tee_local $10 - (i32.add - (get_local $5) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $6) - ) - (set_local $1 - (get_local $10) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (get_local $12) - ) - (call $_abort) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $8 - (get_local $5) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $10 - (i32.load offset=8 - (get_local $2) - ) - ) - (get_local $12) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $6 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - ) - (get_local $2) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - ) - (get_local $2) - ) - (block - (i32.store - (get_local $6) - (get_local $1) - ) - (i32.store - (get_local $5) - (get_local $10) - ) - (set_local $8 - (get_local $1) - ) - ) - (call $_abort) - ) - ) - ) - ) - (if - (get_local $11) - (block - (if - (i32.eq - (get_local $2) - (i32.load - (tee_local $1 - (i32.add - (i32.shl - (tee_local $5 - (i32.load offset=28 - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $1) - (get_local $8) - ) - (if - (i32.eqz - (get_local $8) - ) - (block - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $5) - ) - (i32.const -1) - ) - ) - ) - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $11) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $11) - (i32.const 16) - ) - ) - ) - (get_local $2) - ) - (i32.store - (get_local $1) - (get_local $8) - ) - (i32.store offset=20 - (get_local $11) - (get_local $8) - ) - ) - (if - (i32.eqz - (get_local $8) - ) - (block - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $8) - (tee_local $5 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $8) - (get_local $11) - ) - (if - (tee_local $6 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $6) - (get_local $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $8) - (get_local $6) - ) - (i32.store offset=24 - (get_local $6) - (get_local $8) - ) - ) - ) - ) - (if - (tee_local $1 - (i32.load offset=4 - (get_local $1) - ) - ) - (if - (i32.lt_u - (get_local $1) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $8) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $8) - ) - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - (block - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - ) - (block - (set_local $4 - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $7) - (tee_local $8 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (if - (i32.and - (tee_local $2 - (i32.load - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - ) - ) - (i32.const 2) - ) - (block - (i32.store - (get_local $0) - (i32.and - (get_local $2) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $4) - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $4) - (get_local $3) - ) - (get_local $3) - ) - ) - (block - (if - (i32.eq - (get_local $7) - (i32.load - (i32.const 17688) - ) - ) - (block - (i32.store - (i32.const 17676) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17676) - ) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17688) - (get_local $4) - ) - (i32.store offset=4 - (get_local $4) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (get_local $4) - (i32.load - (i32.const 17684) - ) - ) - (return) - ) - (i32.store - (i32.const 17684) - (i32.const 0) - ) - (i32.store - (i32.const 17672) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (get_local $7) - (i32.load - (i32.const 17684) - ) - ) - (block - (i32.store - (i32.const 17672) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17672) - ) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17684) - (get_local $4) - ) - (i32.store offset=4 - (get_local $4) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $4) - (get_local $0) - ) - (get_local $0) - ) - (return) - ) - ) - (set_local $5 - (i32.add - (i32.and - (get_local $2) - (i32.const -8) - ) - (get_local $3) - ) - ) - (set_local $1 - (i32.shr_u - (get_local $2) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (get_local $2) - (i32.const 256) - ) - (block - (set_local $2 - (i32.load offset=12 - (get_local $7) - ) - ) - (if - (i32.ne - (tee_local $3 - (i32.load offset=8 - (get_local $7) - ) - ) - (tee_local $0 - (i32.add - (i32.shl - (get_local $1) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $3) - (get_local $8) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $3) - ) - (get_local $7) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $2) - (get_local $3) - ) - (block - (i32.store - (i32.const 17664) - (i32.and - (i32.load - (i32.const 17664) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (get_local $2) - (get_local $0) - ) - (set_local $14 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $2) - (get_local $8) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (set_local $14 - (get_local $0) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $3) - (get_local $2) - ) - (i32.store - (get_local $14) - (get_local $3) - ) - ) - (block - (set_local $6 - (i32.load offset=24 - (get_local $7) - ) - ) - (block $do-once6 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $7) - ) - ) - (get_local $7) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $1 - (i32.load - (get_local $3) - ) - ) - (set_local $0 - (get_local $3) - ) - (block - (set_local $9 - (i32.const 0) - ) - (br $do-once6) - ) - ) - ) - (loop $while-in9 - (if - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $2) - ) - (br $while-in9) - ) - ) - (if - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $2) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $8) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $9 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $2 - (i32.load offset=8 - (get_local $7) - ) - ) - (get_local $8) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $3 - (i32.add - (get_local $2) - (i32.const 12) - ) - ) - ) - (get_local $7) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (block - (i32.store - (get_local $3) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (set_local $9 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (if - (get_local $6) - (block - (if - (i32.eq - (get_local $7) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $7) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $9) - ) - (if - (i32.eqz - (get_local $9) - ) - (block - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (get_local $7) - ) - (i32.store - (get_local $0) - (get_local $9) - ) - (i32.store offset=20 - (get_local $6) - (get_local $9) - ) - ) - (br_if $do-once4 - (i32.eqz - (get_local $9) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $9) - (tee_local $1 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $9) - (get_local $6) - ) - (if - (tee_local $3 - (i32.load - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $3) - (get_local $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $9) - (get_local $3) - ) - (i32.store offset=24 - (get_local $3) - (get_local $9) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load offset=4 - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $9) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $4) - (i32.or - (get_local $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $4) - (get_local $5) - ) - (get_local $5) - ) - (if - (i32.eq - (get_local $4) - (i32.load - (i32.const 17684) - ) - ) - (block - (i32.store - (i32.const 17672) - (get_local $5) - ) - (return) - ) - (set_local $3 - (get_local $5) - ) - ) - ) - ) - (set_local $0 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $3) - (i32.const 256) - ) - (block - (set_local $3 - (i32.add - (i32.shl - (get_local $0) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17664) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (set_local $15 - (get_local $1) - ) - (set_local $13 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17664) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (set_local $15 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $13 - (get_local $3) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $4) - ) - (i32.store offset=12 - (get_local $13) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $13) - ) - (i32.store offset=12 - (get_local $4) - (get_local $3) - ) - (return) - ) - ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $5 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $3) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $3) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $2) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - (i32.store offset=28 - (get_local $4) - (get_local $5) - ) - (i32.store offset=20 - (get_local $4) - (i32.const 0) - ) - (i32.store offset=16 - (get_local $4) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 17668) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $5) - ) - ) - ) - ) - (block - (i32.store - (i32.const 17668) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $2) - (get_local $4) - ) - (i32.store offset=24 - (get_local $4) - (get_local $2) - ) - (i32.store offset=12 - (get_local $4) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $4) - ) - (return) - ) - ) - (set_local $5 - (i32.shl - (get_local $3) - (if i32 - (i32.eq - (get_local $5) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $2) - ) - ) - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in13 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $3) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.shl - (get_local $5) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in13) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (i32.store - (get_local $2) - (get_local $4) - ) - (i32.store offset=24 - (get_local $4) - (get_local $0) - ) - (i32.store offset=12 - (get_local $4) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $4) - ) - (return) - ) - (if - (i32.eqz - (i32.and - (i32.ge_u - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 17680) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=12 - (get_local $2) - (get_local $4) - ) - (i32.store - (get_local $3) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $2) - ) - (i32.store offset=12 - (get_local $4) - (get_local $0) - ) - (i32.store offset=24 - (get_local $4) - (i32.const 0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 144) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 132) - ) - ) - (set_local $10 - (i32.add - (get_local $7) - (i32.const 116) - ) - ) - (set_local $12 - (i32.add - (get_local $7) - (i32.const 124) - ) - ) - (set_local $13 - (i32.add - (get_local $7) - (i32.const 120) - ) - ) - (set_local $14 - (i32.add - (get_local $7) - (i32.const 112) - ) - ) - (set_local $15 - (i32.add - (get_local $7) - (i32.const 108) - ) - ) - (set_local $16 - (i32.add - (get_local $7) - (i32.const 104) - ) - ) - (set_local $17 - (i32.add - (get_local $7) - (i32.const 100) - ) - ) - (set_local $18 - (i32.add - (get_local $7) - (i32.const 96) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 92) - ) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 88) - ) - ) - (set_local $21 - (i32.add - (get_local $7) - (i32.const 84) - ) - ) - (set_local $22 - (i32.add - (get_local $7) - (i32.const 80) - ) - ) - (set_local $23 - (i32.add - (get_local $7) - (i32.const 76) - ) - ) - (set_local $24 - (i32.add - (get_local $7) - (i32.const 72) - ) - ) - (set_local $25 - (i32.add - (get_local $7) - (i32.const 68) - ) - ) - (set_local $26 - (i32.add - (get_local $7) - (i32.const 64) - ) - ) - (set_local $27 - (i32.add - (get_local $7) - (i32.const 60) - ) - ) - (set_local $28 - (i32.add - (get_local $7) - (i32.const 56) - ) - ) - (set_local $29 - (i32.add - (get_local $7) - (i32.const 52) - ) - ) - (set_local $30 - (i32.add - (get_local $7) - (i32.const 48) - ) - ) - (set_local $31 - (i32.add - (get_local $7) - (i32.const 44) - ) - ) - (set_local $32 - (i32.add - (get_local $7) - (i32.const 40) - ) - ) - (set_local $33 - (i32.add - (get_local $7) - (i32.const 36) - ) - ) - (set_local $34 - (i32.add - (get_local $7) - (i32.const 32) - ) - ) - (set_local $35 - (i32.add - (get_local $7) - (i32.const 28) - ) - ) - (set_local $36 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - (set_local $37 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - (set_local $38 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (set_local $39 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (set_local $40 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $41 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $11 - (get_local $7) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 128) - ) - ) - (tee_local $42 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $9) - (i32.const 19240) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $42) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (block $switch-default - (block $switch-case26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (block $switch-case18 - (block $switch-case17 - (block $switch-case16 - (block $switch-case14 - (block $switch-case13 - (block $switch-case12 - (block $switch-case11 - (block $switch-case10 - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case5 - (block $switch-case4 - (block $switch-case1 - (block $switch-case - (br_table $switch-case26 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-case1 $switch-default $switch-case7 $switch-default $switch-case8 $switch-default $switch-case9 $switch-case10 $switch-default $switch-default $switch-default $switch-case13 $switch-default $switch-default $switch-default $switch-default $switch-case18 $switch-case19 $switch-case20 $switch-default $switch-default $switch-default $switch-case23 $switch-case25 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-case1 $switch-case4 $switch-case5 $switch-case5 $switch-default $switch-default $switch-case1 $switch-default $switch-case11 $switch-default $switch-default $switch-case12 $switch-case14 $switch-default $switch-case16 $switch-default $switch-case17 $switch-default $switch-case14 $switch-default $switch-default $switch-case21 $switch-case22 $switch-case24 $switch-default - (i32.sub - (i32.shr_s - (i32.shl - (get_local $6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - ) - (i32.store - (get_local $12) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $12) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 24) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $13) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 16) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (set_local $6 - (call_indirect $FUNCSIG$ii - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $14) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $15) - (i32.load - (get_local $2) - ) - ) - (set_local $6 - (i32.add - (tee_local $2 - (if i32 - (tee_local $9 - (i32.lt_s - (tee_local $11 - (i32.load8_s offset=11 - (get_local $6) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - (i32.shl - (if i32 - (get_local $9) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $14) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $15) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $2) - (get_local $6) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $16) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $16) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 12) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $17) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $18) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $17) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $18) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 7336) - (i32.const 7368) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $19) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $20) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $19) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $20) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 7368) - (i32.const 7400) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $21) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $21) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 8) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $22) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $22) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 8) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $23) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $23) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 28) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $24) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $24) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 16) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $25) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $25) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 4) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $26) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $26) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $27) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $27) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 8) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $28) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $29) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $28) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $29) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 7400) - (i32.const 7444) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $30) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $31) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $30) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $31) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 7444) - (i32.const 7464) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $32) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $32) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (get_local $5) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $33) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $34) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $33) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $34) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 7464) - (i32.const 7496) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $35) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $35) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 24) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (set_local $6 - (i32.load offset=20 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $36) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $37) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $36) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $37) - ) - ) - (set_local $0 - (call_indirect $FUNCSIG$iiiiiii - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.add - (i32.and - (get_local $6) - (i32.const 63) - ) - (i32.const 240) - ) - ) - ) - (br $__rjto$0) - ) - (set_local $6 - (call_indirect $FUNCSIG$ii - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $38) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $39) - (i32.load - (get_local $2) - ) - ) - (set_local $6 - (i32.add - (tee_local $2 - (if i32 - (tee_local $9 - (i32.lt_s - (tee_local $11 - (i32.load8_s offset=11 - (get_local $6) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - (i32.shl - (if i32 - (get_local $9) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $38) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $39) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $2) - (get_local $6) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $40) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $40) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 20) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $41) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $41) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 20) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $11) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $11) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 144) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 132) - ) - ) - (set_local $10 - (i32.add - (get_local $7) - (i32.const 116) - ) - ) - (set_local $12 - (i32.add - (get_local $7) - (i32.const 124) - ) - ) - (set_local $13 - (i32.add - (get_local $7) - (i32.const 120) - ) - ) - (set_local $14 - (i32.add - (get_local $7) - (i32.const 112) - ) - ) - (set_local $15 - (i32.add - (get_local $7) - (i32.const 108) - ) - ) - (set_local $16 - (i32.add - (get_local $7) - (i32.const 104) - ) - ) - (set_local $17 - (i32.add - (get_local $7) - (i32.const 100) - ) - ) - (set_local $18 - (i32.add - (get_local $7) - (i32.const 96) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 92) - ) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 88) - ) - ) - (set_local $21 - (i32.add - (get_local $7) - (i32.const 84) - ) - ) - (set_local $22 - (i32.add - (get_local $7) - (i32.const 80) - ) - ) - (set_local $23 - (i32.add - (get_local $7) - (i32.const 76) - ) - ) - (set_local $24 - (i32.add - (get_local $7) - (i32.const 72) - ) - ) - (set_local $25 - (i32.add - (get_local $7) - (i32.const 68) - ) - ) - (set_local $26 - (i32.add - (get_local $7) - (i32.const 64) - ) - ) - (set_local $27 - (i32.add - (get_local $7) - (i32.const 60) - ) - ) - (set_local $28 - (i32.add - (get_local $7) - (i32.const 56) - ) - ) - (set_local $29 - (i32.add - (get_local $7) - (i32.const 52) - ) - ) - (set_local $30 - (i32.add - (get_local $7) - (i32.const 48) - ) - ) - (set_local $31 - (i32.add - (get_local $7) - (i32.const 44) - ) - ) - (set_local $32 - (i32.add - (get_local $7) - (i32.const 40) - ) - ) - (set_local $33 - (i32.add - (get_local $7) - (i32.const 36) - ) - ) - (set_local $34 - (i32.add - (get_local $7) - (i32.const 32) - ) - ) - (set_local $35 - (i32.add - (get_local $7) - (i32.const 28) - ) - ) - (set_local $36 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - (set_local $37 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - (set_local $38 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (set_local $39 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (set_local $40 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $41 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $11 - (get_local $7) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 128) - ) - ) - (tee_local $42 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $9) - (i32.const 19208) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $42) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (block $switch-default - (block $switch-case26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (block $switch-case18 - (block $switch-case17 - (block $switch-case16 - (block $switch-case14 - (block $switch-case13 - (block $switch-case12 - (block $switch-case11 - (block $switch-case10 - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case5 - (block $switch-case4 - (block $switch-case1 - (block $switch-case - (br_table $switch-case26 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-case1 $switch-default $switch-case7 $switch-default $switch-case8 $switch-default $switch-case9 $switch-case10 $switch-default $switch-default $switch-default $switch-case13 $switch-default $switch-default $switch-default $switch-default $switch-case18 $switch-case19 $switch-case20 $switch-default $switch-default $switch-default $switch-case23 $switch-case25 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-case1 $switch-case4 $switch-case5 $switch-case5 $switch-default $switch-default $switch-case1 $switch-default $switch-case11 $switch-default $switch-default $switch-case12 $switch-case14 $switch-default $switch-case16 $switch-default $switch-case17 $switch-default $switch-case14 $switch-default $switch-default $switch-case21 $switch-case22 $switch-case24 $switch-default - (i32.sub - (i32.shr_s - (i32.shl - (get_local $6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - ) - (i32.store - (get_local $12) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $12) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 24) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $13) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 16) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (set_local $6 - (call_indirect $FUNCSIG$ii - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $14) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $15) - (i32.load - (get_local $2) - ) - ) - (set_local $6 - (i32.add - (tee_local $2 - (if i32 - (tee_local $9 - (i32.lt_s - (tee_local $11 - (i32.load8_s offset=11 - (get_local $6) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - (if i32 - (get_local $9) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $14) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $15) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $2) - (get_local $6) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $16) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $16) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 12) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $17) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $18) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $17) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $18) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 14419) - (i32.const 14427) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $19) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $20) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $19) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $20) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 14427) - (i32.const 14435) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $21) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $21) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 8) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $22) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $22) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 8) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $23) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $23) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 28) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $24) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $24) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 16) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $25) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $25) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 4) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $26) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $26) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $27) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $27) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 8) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $28) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $29) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $28) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $29) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 14435) - (i32.const 14446) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $30) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $31) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $30) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $31) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 14446) - (i32.const 14451) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $32) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $32) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (get_local $5) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $33) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $34) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $33) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $34) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 14451) - (i32.const 14459) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $35) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $35) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 24) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (set_local $6 - (i32.load offset=20 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $36) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $37) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $36) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $37) - ) - ) - (set_local $0 - (call_indirect $FUNCSIG$iiiiiii - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.add - (i32.and - (get_local $6) - (i32.const 63) - ) - (i32.const 240) - ) - ) - ) - (br $__rjto$0) - ) - (set_local $6 - (call_indirect $FUNCSIG$ii - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $38) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $39) - (i32.load - (get_local $2) - ) - ) - (set_local $6 - (i32.add - (tee_local $2 - (if i32 - (tee_local $9 - (i32.lt_s - (tee_local $11 - (i32.load8_s offset=11 - (get_local $6) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - (if i32 - (get_local $9) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $38) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $39) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $2) - (get_local $6) - ) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $40) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $40) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 20) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $41) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $41) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 20) - ) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $11) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $11) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (get_local $1) - (get_local $8) - (get_local $4) - (get_local $9) - ) - (br $__rjti$0) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $0) - ) - (func $__ZNSt3__211__money_putIcE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_Ri (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $19 - (i32.add - (get_local $10) - (i32.const 108) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 96) - ) - ) - (set_local $20 - (i32.add - (get_local $10) - (i32.const 92) - ) - ) - (set_local $12 - (i32.add - (get_local $10) - (i32.const 80) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 68) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 56) - ) - ) - (set_local $21 - (i32.add - (get_local $10) - (i32.const 52) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 40) - ) - ) - (set_local $22 - (i32.add - (get_local $10) - (i32.const 36) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 24) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - (set_local $18 - (get_local $10) - ) - (i32.store - (get_local $9) - (tee_local $0 - (if i32 - (get_local $0) - (block i32 - (set_local $2 - (i32.load - (tee_local $0 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $2) - (i32.const 20928) - ) - ) - ) - ) - (set_local $2 - (if i32 - (get_local $1) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $19) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=44 - (get_local $2) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $1 - (i32.load - (get_local $19) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $11) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (get_local $8) - ) - (block i32 - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $8) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $11) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $11) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $11) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $11) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (get_local $0) - ) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $20) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (get_local $2) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $1 - (i32.load - (get_local $20) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $12) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (get_local $8) - ) - (block i32 - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $8) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $12) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $12) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $12) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (get_local $0) - ) - ) - ) - (i32.store8 - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store8 - (get_local $5) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $13) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (get_local $6) - ) - (block i32 - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $13) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $13) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $13) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $13) - ) - (call_indirect $FUNCSIG$vii - (get_local $14) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (get_local $7) - ) - (block i32 - (i32.store8 - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $14) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $14) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $14) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in5 - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $14) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $14) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (block i32 - (set_local $2 - (i32.load - (tee_local $0 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $2) - (i32.const 20920) - ) - ) - ) - ) - (set_local $2 - (if i32 - (get_local $1) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $21) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=44 - (get_local $2) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $1 - (i32.load - (get_local $21) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $15) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (get_local $8) - ) - (block i32 - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $8) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $15) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $15) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $15) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $15) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $15) - ) - (get_local $0) - ) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $22) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (get_local $2) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $1 - (i32.load - (get_local $22) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $1) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $16) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (get_local $8) - ) - (block i32 - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $8) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $16) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $16) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $16) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in9 - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $16) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in9) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $16) - ) - (get_local $0) - ) - ) - ) - (i32.store8 - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store8 - (get_local $5) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $17) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (get_local $6) - ) - (block i32 - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $17) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $17) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $17) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in11 - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $17) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $17) - ) - (call_indirect $FUNCSIG$vii - (get_local $18) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $1 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (get_local $7) - ) - (block i32 - (i32.store8 - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (get_local $7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $18) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.load offset=4 - (get_local $18) - ) - ) - (i32.store offset=8 - (get_local $1) - (i32.load offset=8 - (get_local $18) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in13 - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $18) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $18) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $10) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (set_local $14 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $17 - (i32.add - (get_local $14) - (i32.const 16) - ) - ) - (set_local $18 - (i32.add - (get_local $14) - (i32.const 12) - ) - ) - (set_local $19 - (i32.add - (get_local $14) - (i32.const 4) - ) - ) - (set_local $20 - (get_local $14) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $14) - (i32.const 8) - ) - ) - (tee_local $8 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $12 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $11) - (i32.const 19240) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $8) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $11 - (get_local $6) - ) - (set_local $8 - (i32.const 0) - ) - (block $__rjto$7 - (block $__rjti$7 - (block $__rjti$6 - (block $__rjti$5 - (loop $label$continue$L1 - (block $label$break$L1 - (set_local $15 - (i32.ne - (get_local $11) - (get_local $7) - ) - ) - (block $label$break$L33 - (block $__rjti$4 - (block $__rjti$3 - (block $__rjti$2 - (loop $while-in - (set_local $6 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $15) - (i32.eqz - (get_local $8) - ) - ) - ) - (block - (set_local $0 - (get_local $6) - ) - (br $label$break$L1) - ) - ) - (set_local $8 - (get_local $6) - ) - (set_local $9 - (if i32 - (get_local $6) - (if i32 - (i32.eq - (tee_local $9 - (if i32 - (i32.eq - (tee_local $9 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $9) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $16 - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $16 - (i32.const 0) - ) - (get_local $8) - ) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (set_local $16 - (i32.const 1) - ) - (get_local $8) - ) - ) - ) - (set_local $8 - (tee_local $10 - (i32.load - (get_local $2) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $10) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $10) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $__rjti$5 - (i32.eqz - (get_local $16) - ) - ) - ) - (br $__rjto$0) - ) - (br_if $__rjti$5 - (get_local $16) - ) - (set_local $10 - (i32.const 0) - ) - ) - (if - (i32.eq - (i32.and - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.load - (get_local $11) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 255) - ) - (i32.const 37) - ) - (block - (set_local $10 - (get_local $9) - ) - (set_local $9 - (get_local $8) - ) - (br $__rjti$2) - ) - ) - (br_if $__rjti$3 - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.const 8192) - (i32.load - (get_local $11) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$iii - (get_local $12) - (tee_local $10 - (if i32 - (i32.eq - (tee_local $10 - (i32.load - (tee_local $9 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $10) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $12) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (call_indirect $FUNCSIG$iii - (get_local $12) - (i32.load - (get_local $11) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $12) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (block - (set_local $10 - (get_local $6) - ) - (set_local $6 - (get_local $8) - ) - (br $__rjti$4) - ) - (block - (i32.store - (get_local $4) - (i32.const 4) - ) - (set_local $8 - (i32.const 4) - ) - (br $while-in) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (get_local $7) - ) - (block - (set_local $0 - (get_local $6) - ) - (br $__rjti$6) - ) - ) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (i32.shr_s - (i32.shl - (tee_local $8 - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.load - (get_local $13) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 48) - ) - ) - ) - (if - (i32.eq - (tee_local $15 - (i32.add - (get_local $11) - (i32.const 8) - ) - ) - (get_local $7) - ) - (block - (set_local $0 - (get_local $6) - ) - (br $__rjti$7) - ) - ) - (set_local $11 - (get_local $13) - ) - (set_local $6 - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.load - (get_local $15) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (br $switch) - ) - (set_local $6 - (get_local $8) - ) - (set_local $8 - (i32.const 0) - ) - ) - (set_local $13 - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $19) - (get_local $10) - ) - (i32.store - (get_local $20) - (get_local $9) - ) - (i32.store - (get_local $18) - (i32.load - (get_local $19) - ) - ) - (i32.store - (get_local $17) - (i32.load - (get_local $20) - ) - ) - (i32.store - (get_local $1) - (call_indirect $FUNCSIG$iiiiiiiii - (get_local $0) - (get_local $18) - (get_local $17) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - (get_local $8) - (i32.add - (i32.and - (get_local $13) - (i32.const 15) - ) - (i32.const 381) - ) - ) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 8) - ) - ) - (br $label$break$L33) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eq - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (get_local $7) - ) - (block - (set_local $11 - (get_local $7) - ) - (br $while-out2) - ) - ) - (br_if $while-in3 - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.const 8192) - (i32.load - (get_local $11) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - ) - (set_local $9 - (get_local $6) - ) - (set_local $6 - (get_local $10) - ) - (loop $while-in5 - (set_local $13 - (if i32 - (get_local $9) - (if i32 - (i32.eq - (tee_local $8 - (if i32 - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $9) - ) - ) - (i32.load offset=16 - (get_local $9) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $9) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $9) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $8) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $9 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $9 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $10) - ) - ) - (if - (i32.eq - (tee_local $8 - (if i32 - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $10) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $8) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (br $__rjti$1) - ) - (if - (i32.xor - (get_local $13) - (i32.eqz - (get_local $6) - ) - ) - (block - (set_local $8 - (get_local $6) - ) - (set_local $10 - (get_local $6) - ) - ) - (br $label$break$L33) - ) - ) - (br $__rjto$1) - ) - (br_if $label$break$L33 - (get_local $13) - ) - (set_local $8 - (get_local $6) - ) - (set_local $10 - (i32.const 0) - ) - ) - (br_if $label$break$L33 - (i32.eqz - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.const 8192) - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load - (tee_local $15 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $13 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $9) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $9) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $15) - ) - ) - (i32.load - (get_local $13) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $9) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $9) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $6 - (get_local $8) - ) - (br $while-in5) - ) - (block - (i32.store - (get_local $15) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $6 - (get_local $8) - ) - (br $while-in5) - ) - ) - ) - (br $label$break$L33) - ) - (if - (i32.eq - (tee_local $8 - (i32.load - (get_local $9) - ) - ) - (i32.load - (get_local $6) - ) - ) - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - ) - (set_local $8 - (i32.load - (get_local $4) - ) - ) - (br $label$continue$L1) - ) - ) - (br $__rjto$7) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - (set_local $0 - (get_local $6) - ) - (br $__rjto$7) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - (br $__rjto$7) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - ) - (set_local $5 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$9 - (block $__rjti$9 - (block $__rjti$8 - (br_if $__rjti$8 - (i32.eqz - (tee_local $3 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $1 - (if i32 - (i32.eq - (tee_local $1 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $1) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$8) - ) - (br_if $__rjti$9 - (i32.eqz - (get_local $5) - ) - ) - ) - (br $__rjto$9) - ) - (br_if $__rjti$9 - (get_local $5) - ) - (br $__rjto$9) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_global $STACKTOP - (get_local $14) - ) - (get_local $0) - ) - (func $__ZNSt3__211__money_putIwE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_Ri (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $19 - (i32.add - (get_local $10) - (i32.const 108) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 96) - ) - ) - (set_local $20 - (i32.add - (get_local $10) - (i32.const 92) - ) - ) - (set_local $12 - (i32.add - (get_local $10) - (i32.const 80) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 68) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 56) - ) - ) - (set_local $21 - (i32.add - (get_local $10) - (i32.const 52) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 40) - ) - ) - (set_local $22 - (i32.add - (get_local $10) - (i32.const 36) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 24) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - (set_local $18 - (get_local $10) - ) - (i32.store - (get_local $9) - (tee_local $0 - (if i32 - (get_local $0) - (block i32 - (set_local $0 - (i32.load - (tee_local $2 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $2) - (i32.const 20944) - ) - ) - ) - ) - (if - (get_local $1) - (block - (call_indirect $FUNCSIG$vii - (get_local $19) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=44 - (get_local $0) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $0 - (i32.load - (get_local $19) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $11) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $11) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.load offset=4 - (get_local $11) - ) - ) - (i32.store offset=8 - (get_local $8) - (i32.load offset=8 - (get_local $11) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $11) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (get_local $20) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=40 - (get_local $0) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $0 - (i32.load - (get_local $20) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $12) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $12) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.load offset=4 - (get_local $12) - ) - ) - (i32.store offset=8 - (get_local $8) - (i32.load offset=8 - (get_local $12) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - ) - ) - (i32.store - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $5) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $13) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (get_local $6) - ) - (block i32 - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $13) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $13) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $13) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $13) - ) - (call_indirect $FUNCSIG$vii - (get_local $14) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $14) - ) - ) - (i32.store offset=4 - (get_local $7) - (i32.load offset=4 - (get_local $14) - ) - ) - (i32.store offset=8 - (get_local $7) - (i32.load offset=8 - (get_local $14) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in5 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $14) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $14) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (block i32 - (set_local $0 - (i32.load - (tee_local $2 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $2) - (i32.const 20936) - ) - ) - ) - ) - (if - (get_local $1) - (block - (call_indirect $FUNCSIG$vii - (get_local $21) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=44 - (get_local $0) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $0 - (i32.load - (get_local $21) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $15) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $15) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.load offset=4 - (get_local $15) - ) - ) - (i32.store offset=8 - (get_local $8) - (i32.load offset=8 - (get_local $15) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $15) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $15) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (get_local $22) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=40 - (get_local $0) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $3) - (tee_local $0 - (i32.load - (get_local $22) - ) - ) - ) - (i32.store8 offset=1 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $3) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $16) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $16) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.load offset=4 - (get_local $16) - ) - ) - (i32.store offset=8 - (get_local $8) - (i32.load offset=8 - (get_local $16) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in9 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $16) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in9) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $16) - ) - ) - ) - (i32.store - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $5) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $17) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (get_local $6) - ) - (block i32 - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $17) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $17) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $17) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in11 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $17) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $17) - ) - (call_indirect $FUNCSIG$vii - (get_local $18) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $18) - ) - ) - (i32.store offset=4 - (get_local $7) - (i32.load offset=4 - (get_local $18) - ) - ) - (i32.store offset=8 - (get_local $7) - (i32.load offset=8 - (get_local $18) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in13 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $18) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $18) - ) - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $10) - ) - ) - (func $__ZNSt3__211__money_getIcE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_SF_Ri (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $19 - (i32.add - (get_local $10) - (i32.const 100) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 88) - ) - ) - (set_local $12 - (i32.add - (get_local $10) - (i32.const 76) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 64) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 52) - ) - ) - (set_local $20 - (i32.add - (get_local $10) - (i32.const 48) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 36) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 24) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - (set_local $18 - (get_local $10) - ) - (i32.store - (get_local $9) - (tee_local $0 - (if i32 - (get_local $0) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $19) - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 20928) - ) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $2) - (tee_local $0 - (i32.load - (get_local $19) - ) - ) - ) - (i32.store8 offset=1 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $11) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (get_local $8) - ) - (block i32 - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $8) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $11) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $11) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $11) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $11) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (call_indirect $FUNCSIG$vii - (get_local $12) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (get_local $7) - ) - (block i32 - (i32.store8 - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $12) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $12) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $12) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (i32.store8 - (get_local $3) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store8 - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $13) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $5) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $5) - (i32.const 0) - ) - (get_local $5) - ) - (block i32 - (i32.store8 - (get_local $5) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $13) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $13) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $13) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $13) - ) - (call_indirect $FUNCSIG$vii - (get_local $14) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (get_local $6) - ) - (block i32 - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $14) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $14) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $14) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in5 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $14) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $14) - ) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $20) - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 20920) - ) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $2) - (tee_local $0 - (i32.load - (get_local $20) - ) - ) - ) - (i32.store8 offset=1 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $15) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (get_local $8) - ) - (block i32 - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $8) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $15) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $15) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $15) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $15) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $15) - ) - (call_indirect $FUNCSIG$vii - (get_local $16) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (get_local $7) - ) - (block i32 - (i32.store8 - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $16) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $16) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $16) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in9 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $16) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in9) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $16) - ) - (i32.store8 - (get_local $3) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store8 - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $17) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $5) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $5) - (i32.const 0) - ) - (get_local $5) - ) - (block i32 - (i32.store8 - (get_local $5) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $17) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $17) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $17) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in11 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $17) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $17) - ) - (call_indirect $FUNCSIG$vii - (get_local $18) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (get_local $6) - ) - (block i32 - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $18) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $18) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $18) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in13 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $18) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $18) - ) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $10) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (set_local $14 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $16 - (i32.add - (get_local $14) - (i32.const 16) - ) - ) - (set_local $17 - (i32.add - (get_local $14) - (i32.const 12) - ) - ) - (set_local $18 - (i32.add - (get_local $14) - (i32.const 4) - ) - ) - (set_local $19 - (get_local $14) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $14) - (i32.const 8) - ) - ) - (tee_local $8 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $12 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $9) - (i32.const 19208) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $8) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $12) - (i32.const 8) - ) - ) - (set_local $9 - (get_local $6) - ) - (set_local $6 - (i32.const 0) - ) - (block $__rjto$7 - (block $__rjti$7 - (block $__rjti$6 - (block $__rjti$5 - (loop $label$continue$L1 - (block $label$break$L1 - (set_local $15 - (i32.ne - (get_local $9) - (get_local $7) - ) - ) - (set_local $8 - (get_local $6) - ) - (block $label$break$L29 - (block $__rjti$4 - (block $__rjti$3 - (block $__rjti$2 - (loop $while-in - (set_local $6 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $15) - (i32.eqz - (get_local $8) - ) - ) - ) - (block - (set_local $0 - (get_local $6) - ) - (br $label$break$L1) - ) - ) - (set_local $8 - (get_local $6) - ) - (if - (get_local $6) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - ) - (set_local $6 - (i32.const 0) - ) - ) - (set_local $13 - (i32.eqz - (get_local $6) - ) - ) - (set_local $11 - (tee_local $10 - (i32.load - (get_local $2) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $10) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $10) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (set_local $11 - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - ) - (br_if $__rjti$5 - (i32.eqz - (get_local $13) - ) - ) - (br $__rjto$0) - ) - (br_if $__rjti$5 - (get_local $13) - ) - (set_local $10 - (i32.const 0) - ) - ) - (if - (i32.eq - (i32.and - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 255) - ) - (i32.const 37) - ) - (block - (set_local $10 - (get_local $8) - ) - (set_local $13 - (get_local $11) - ) - (br $__rjti$2) - ) - ) - (if - (i32.gt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const -1) - ) - (if - (i32.and - (i32.load16_s - (i32.add - (tee_local $11 - (i32.load - (get_local $20) - ) - ) - (i32.shl - (get_local $8) - (i32.const 1) - ) - ) - ) - (i32.const 8192) - ) - (block - (set_local $8 - (get_local $6) - ) - (br $__rjti$3) - ) - ) - ) - (br_if $__rjti$4 - (i32.eq - (i32.and - (call_indirect $FUNCSIG$iii - (get_local $12) - (i32.and - (tee_local $10 - (if i32 - (i32.eq - (tee_local $10 - (i32.load - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $10) - ) - ) - ) - (i32.const 255) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $12) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const 255) - ) - (i32.and - (call_indirect $FUNCSIG$iii - (get_local $12) - (i32.load8_s - (get_local $9) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $12) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const 255) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - (set_local $8 - (i32.const 4) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (tee_local $11 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (get_local $7) - ) - (block - (set_local $0 - (get_local $6) - ) - (br $__rjti$6) - ) - ) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (i32.shr_s - (i32.shl - (tee_local $8 - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 48) - ) - ) - ) - (if - (i32.eq - (tee_local $15 - (i32.add - (get_local $9) - (i32.const 2) - ) - ) - (get_local $7) - ) - (block - (set_local $0 - (get_local $6) - ) - (br $__rjti$7) - ) - ) - (set_local $9 - (get_local $11) - ) - (set_local $6 - (call_indirect $FUNCSIG$iiii - (get_local $12) - (i32.load8_s - (get_local $15) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $12) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (br $switch) - ) - (set_local $6 - (get_local $8) - ) - (set_local $8 - (i32.const 0) - ) - ) - (set_local $11 - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $18) - (get_local $10) - ) - (i32.store - (get_local $19) - (get_local $13) - ) - (i32.store - (get_local $17) - (i32.load - (get_local $18) - ) - ) - (i32.store - (get_local $16) - (i32.load - (get_local $19) - ) - ) - (i32.store - (get_local $1) - (call_indirect $FUNCSIG$iiiiiiiii - (get_local $0) - (get_local $17) - (get_local $16) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - (get_local $8) - (i32.add - (i32.and - (get_local $11) - (i32.const 15) - ) - (i32.const 381) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $9) - (i32.const 2) - ) - ) - (br $label$break$L29) - ) - (set_local $6 - (get_local $9) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eq - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (get_local $7) - ) - (block - (set_local $6 - (get_local $7) - ) - (br $while-out2) - ) - ) - (br_if $while-out2 - (i32.le_s - (tee_local $9 - (i32.load8_s - (get_local $6) - ) - ) - (i32.const -1) - ) - ) - (br_if $while-in3 - (i32.and - (i32.load16_s - (i32.add - (get_local $11) - (i32.shl - (get_local $9) - (i32.const 1) - ) - ) - ) - (i32.const 8192) - ) - ) - ) - ) - (set_local $9 - (get_local $10) - ) - (loop $while-in5 - (if - (get_local $8) - (if - (i32.eq - (i32.load offset=12 - (get_local $8) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - ) - ) - ) - (set_local $8 - (i32.const 0) - ) - ) - (set_local $11 - (i32.eqz - (get_local $8) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $10) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $10) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (if - (get_local $11) - (block - (set_local $11 - (get_local $9) - ) - (br $__rjto$1) - ) - (br $label$break$L29) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (set_local $9 - (i32.const 0) - ) - (br $__rjti$1) - ) - (if - (i32.xor - (get_local $11) - (i32.eqz - (get_local $9) - ) - ) - (block - (set_local $11 - (get_local $9) - ) - (set_local $10 - (get_local $9) - ) - ) - (br $label$break$L29) - ) - ) - (br $__rjto$1) - ) - (br_if $label$break$L29 - (get_local $11) - ) - (set_local $11 - (get_local $9) - ) - (set_local $10 - (i32.const 0) - ) - ) - (br_if $label$break$L29 - (i32.le_s - (i32.shr_s - (i32.shl - (i32.and - (tee_local $9 - (if i32 - (i32.eq - (tee_local $9 - (i32.load - (tee_local $13 - (i32.add - (get_local $8) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $15 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $9) - ) - ) - ) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (br_if $label$break$L29 - (i32.eqz - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $20) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $9) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 8192) - ) - ) - ) - (if - (i32.eq - (tee_local $9 - (i32.load - (get_local $13) - ) - ) - (i32.load - (get_local $15) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $9 - (get_local $11) - ) - (br $while-in5) - ) - (block - (i32.store - (get_local $13) - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (set_local $9 - (get_local $11) - ) - (br $while-in5) - ) - ) - ) - (br $label$break$L29) - ) - (if - (i32.eq - (tee_local $10 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $11) - ) - ) - (drop - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $8) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - ) - (set_local $9 - (get_local $6) - ) - (set_local $6 - (i32.load - (get_local $4) - ) - ) - (br $label$continue$L1) - ) - ) - (br $__rjto$7) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - (set_local $0 - (get_local $6) - ) - (br $__rjto$7) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - (br $__rjto$7) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $3 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$9 - (block $__rjti$9 - (block $__rjti$8 - (br_if $__rjti$8 - (i32.eqz - (tee_local $1 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $1) - ) - (i32.load offset=16 - (get_local $1) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$8) - ) - ) - ) - (br_if $__rjti$9 - (i32.eqz - (get_local $3) - ) - ) - (br $__rjto$9) - ) - (br_if $__rjti$9 - (get_local $3) - ) - (br $__rjto$9) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_global $STACKTOP - (get_local $14) - ) - (get_local $0) - ) - (func $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (set_local $16 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $13 - (get_local $16) - ) - (set_local $17 - (if i32 - (i32.gt_u - (tee_local $11 - (i32.div_s - (i32.sub - (get_local $3) - (get_local $2) - ) - (i32.const 12) - ) - ) - (i32.const 100) - ) - (if i32 - (tee_local $13 - (call $_malloc - (get_local $11) - ) - ) - (get_local $13) - (block i32 - (set_local $13 - (i32.const 0) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - ) - (set_local $9 - (get_local $2) - ) - (set_local $12 - (i32.const 0) - ) - (set_local $7 - (get_local $13) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $9) - (get_local $3) - ) - (block - (set_local $7 - (get_local $11) - ) - (br $while-out) - ) - ) - (if - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - (i32.store8 - (get_local $7) - (i32.const 1) - ) - (block - (i32.store8 - (get_local $7) - (i32.const 2) - ) - (set_local $12 - (i32.add - (get_local $12) - (i32.const 1) - ) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const -1) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $11 - (get_local $12) - ) - (set_local $12 - (get_local $7) - ) - (loop $label$continue$L17 - (block $label$break$L17 - (set_local $10 - (if i32 - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $7 - (if i32 - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $7) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $8) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (set_local $14 - (if i32 - (tee_local $7 - (i32.load - (get_local $1) - ) - ) - (if i32 - (i32.eq - (tee_local $8 - (if i32 - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $7) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $8) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $7 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $8 - (i32.load - (get_local $0) - ) - ) - (br_if $label$break$L17 - (i32.eqz - (i32.and - (i32.ne - (get_local $12) - (i32.const 0) - ) - (i32.xor - (get_local $10) - (get_local $14) - ) - ) - ) - ) - (set_local $7 - (if i32 - (i32.eq - (tee_local $7 - (i32.load offset=12 - (get_local $8) - ) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $7) - ) - ) - ) - (set_local $18 - (if i32 - (get_local $6) - (get_local $7) - (call_indirect $FUNCSIG$iii - (get_local $4) - (get_local $7) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $4) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $10 - (get_local $2) - ) - (set_local $14 - (get_local $13) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $10) - (get_local $3) - ) - (block - (block $do-once2 - (if - (i32.eq - (i32.load8_s - (get_local $14) - ) - (i32.const 1) - ) - (block - (set_local $15 - (i32.load - (i32.add - (tee_local $15 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $19 - (i32.add - (get_local $10) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $10) - ) - (get_local $10) - ) - ) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (set_local $15 - (call_indirect $FUNCSIG$iii - (get_local $4) - (get_local $15) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $4) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - ) - (if - (i32.ne - (get_local $18) - (get_local $15) - ) - (block - (i32.store8 - (get_local $14) - (i32.const 0) - ) - (set_local $12 - (i32.add - (get_local $12) - (i32.const -1) - ) - ) - (br $do-once2) - ) - ) - (set_local $8 - (if i32 - (i32.eq - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $19) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $10) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - (get_local $7) - ) - (block i32 - (i32.store8 - (get_local $14) - (i32.const 2) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $12 - (i32.add - (get_local $12) - (i32.const -1) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - (set_local $14 - (i32.add - (get_local $14) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (if - (i32.eqz - (get_local $8) - ) - (block - (set_local $9 - (get_local $7) - ) - (br $label$continue$L17) - ) - ) - (if - (i32.eq - (tee_local $10 - (i32.load - (tee_local $8 - (i32.add - (tee_local $9 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $9) - ) - ) - (drop - (call_indirect $FUNCSIG$ii - (get_local $9) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $9) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $8) - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - ) - (if - (i32.gt_u - (i32.add - (get_local $11) - (get_local $12) - ) - (i32.const 1) - ) - (block - (set_local $9 - (get_local $2) - ) - (set_local $8 - (get_local $13) - ) - ) - (block - (set_local $9 - (get_local $7) - ) - (br $label$continue$L17) - ) - ) - (loop $while-in5 - (if - (i32.eq - (get_local $9) - (get_local $3) - ) - (block - (set_local $9 - (get_local $7) - ) - (br $label$continue$L17) - ) - ) - (if - (i32.eq - (i32.load8_s - (get_local $8) - ) - (i32.const 2) - ) - (if - (i32.ne - (tee_local $10 - (if i32 - (i32.lt_s - (tee_local $10 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $10) - (i32.const 255) - ) - ) - ) - (get_local $7) - ) - (block - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const -1) - ) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (set_local $0 - (if i32 - (get_local $8) - (if i32 - (i32.eq - (tee_local $4 - (if i32 - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $8) - ) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $7) - ) - ) - (if - (i32.eq - (tee_local $4 - (if i32 - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $7) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $__rjti$1 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$1) - ) - (br_if $__rjti$1 - (get_local $0) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 2) - ) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (loop $while-in11 - (br_if $__rjti$2 - (i32.eq - (get_local $2) - (get_local $3) - ) - ) - (if - (i32.ne - (i32.load8_s - (get_local $13) - ) - (i32.const 2) - ) - (block - (set_local $2 - (i32.add - (get_local $2) - (i32.const 12) - ) - ) - (set_local $13 - (i32.add - (get_local $13) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - (call $_free - (get_local $17) - ) - (set_global $STACKTOP - (get_local $16) - ) - (get_local $2) - ) - (func $__ZNSt3__211__money_getIwE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_SJ_Ri (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $19 - (i32.add - (get_local $10) - (i32.const 100) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 88) - ) - ) - (set_local $12 - (i32.add - (get_local $10) - (i32.const 76) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 64) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 52) - ) - ) - (set_local $20 - (i32.add - (get_local $10) - (i32.const 48) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 36) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 24) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - (set_local $18 - (get_local $10) - ) - (i32.store - (get_local $9) - (tee_local $0 - (if i32 - (get_local $0) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $19) - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 20944) - ) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $2) - (tee_local $0 - (i32.load - (get_local $19) - ) - ) - ) - (i32.store8 offset=1 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $11) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $11) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.load offset=4 - (get_local $11) - ) - ) - (i32.store offset=8 - (get_local $8) - (i32.load offset=8 - (get_local $11) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $11) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (call_indirect $FUNCSIG$vii - (get_local $12) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $12) - ) - ) - (i32.store offset=4 - (get_local $7) - (i32.load offset=4 - (get_local $12) - ) - ) - (i32.store offset=8 - (get_local $7) - (i32.load offset=8 - (get_local $12) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (i32.store - (get_local $3) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $13) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $5) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $5) - (i32.const 0) - ) - (get_local $5) - ) - (block i32 - (i32.store8 - (get_local $5) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $13) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $13) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $13) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $13) - ) - (call_indirect $FUNCSIG$vii - (get_local $14) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $6) - (i32.load - (get_local $14) - ) - ) - (i32.store offset=4 - (get_local $6) - (i32.load offset=4 - (get_local $14) - ) - ) - (i32.store offset=8 - (get_local $6) - (i32.load offset=8 - (get_local $14) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in5 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $14) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $14) - ) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (block i32 - (call_indirect $FUNCSIG$vii - (get_local $20) - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 20936) - ) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store8 - (get_local $2) - (tee_local $0 - (i32.load - (get_local $20) - ) - ) - ) - (i32.store8 offset=1 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - ) - (i32.store8 offset=2 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - ) - (i32.store8 offset=3 - (get_local $2) - (i32.shr_s - (get_local $0) - (i32.const 24) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $15) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $8) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $15) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.load offset=4 - (get_local $15) - ) - ) - (i32.store offset=8 - (get_local $8) - (i32.load offset=8 - (get_local $15) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $15) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $15) - ) - (call_indirect $FUNCSIG$vii - (get_local $16) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $7) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $16) - ) - ) - (i32.store offset=4 - (get_local $7) - (i32.load offset=4 - (get_local $16) - ) - ) - (i32.store offset=8 - (get_local $7) - (i32.load offset=8 - (get_local $16) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in9 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $16) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in9) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $16) - ) - (i32.store - (get_local $3) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $17) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store8 - (i32.load - (get_local $5) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $5) - (i32.const 0) - ) - (get_local $5) - ) - (block i32 - (i32.store8 - (get_local $5) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (get_local $5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.load - (get_local $17) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $17) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $17) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in11 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $17) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $17) - ) - (call_indirect $FUNCSIG$vii - (get_local $18) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $6) - (i32.load - (get_local $18) - ) - ) - (i32.store offset=4 - (get_local $6) - (i32.load offset=4 - (get_local $18) - ) - ) - (i32.store offset=8 - (get_local $6) - (i32.load offset=8 - (get_local $18) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in13 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $18) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $18) - ) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $10) - ) - ) - (func $___udivmoddi4 (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (set_local $x64 - (i64.or - (i64.extend_u/i32 - (get_local $xl) - ) - (i64.shl - (i64.extend_u/i32 - (get_local $xh) - ) - (i64.const 32) - ) - ) - ) - (set_local $y64 - (i64.or - (i64.extend_u/i32 - (get_local $yl) - ) - (i64.shl - (i64.extend_u/i32 - (get_local $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (get_local $r) - (i64.store - (get_local $r) - (i64.rem_u - (get_local $x64) - (get_local $y64) - ) - ) - ) - (set_local $x64 - (i64.div_u - (get_local $x64) - (get_local $y64) - ) - ) - (set_global $tempRet0 - (i32.wrap/i64 - (i64.shr_u - (get_local $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap/i64 - (get_local $x64) - ) - ) - (func $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (set_local $17 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $13 - (get_local $17) - ) - (set_local $18 - (if i32 - (i32.gt_u - (tee_local $11 - (i32.div_s - (i32.sub - (get_local $3) - (get_local $2) - ) - (i32.const 12) - ) - ) - (i32.const 100) - ) - (if i32 - (tee_local $13 - (call $_malloc - (get_local $11) - ) - ) - (get_local $13) - (block i32 - (set_local $13 - (i32.const 0) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - ) - (set_local $10 - (get_local $2) - ) - (set_local $12 - (i32.const 0) - ) - (set_local $7 - (get_local $13) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $10) - (get_local $3) - ) - (block - (set_local $7 - (get_local $12) - ) - (set_local $12 - (get_local $11) - ) - (br $while-out) - ) - ) - (if - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $10) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $10) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - (i32.store8 - (get_local $7) - (i32.const 1) - ) - (block - (i32.store8 - (get_local $7) - (i32.const 2) - ) - (set_local $12 - (i32.add - (get_local $12) - (i32.const 1) - ) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const -1) - ) - ) - ) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (set_local $10 - (i32.const 0) - ) - (set_local $11 - (get_local $7) - ) - (loop $label$continue$L17 - (block $label$break$L17 - (if - (tee_local $8 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $8) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (set_local $8 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $8 - (i32.const 0) - ) - ) - (if - (tee_local $7 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - ) - ) - ) - (set_local $7 - (i32.const 0) - ) - ) - (set_local $9 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eqz - (i32.and - (i32.ne - (get_local $12) - (i32.const 0) - ) - (i32.xor - (i32.eqz - (get_local $8) - ) - (tee_local $8 - (i32.eqz - (get_local $7) - ) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $8) - ) - (set_local $4 - (get_local $9) - ) - (br $label$break$L17) - ) - ) - (set_local $16 - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $7 - (i32.load offset=12 - (get_local $9) - ) - ) - (i32.load offset=16 - (get_local $9) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $9) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $9) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $7) - ) - ) - ) - (i32.const 255) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (set_local $16 - (call_indirect $FUNCSIG$iii - (get_local $4) - (get_local $16) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $4) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $9 - (get_local $2) - ) - (set_local $14 - (get_local $13) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $9) - (get_local $3) - ) - (block - (block $do-once2 - (if - (i32.eq - (i32.load8_s - (get_local $14) - ) - (i32.const 1) - ) - (block - (set_local $15 - (i32.load8_s - (i32.add - (tee_local $15 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $19 - (i32.add - (get_local $9) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $9) - ) - (get_local $9) - ) - ) - (get_local $10) - ) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (set_local $15 - (call_indirect $FUNCSIG$iii - (get_local $4) - (get_local $15) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $4) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - ) - (if - (i32.ne - (i32.and - (get_local $16) - (i32.const 255) - ) - (i32.and - (get_local $15) - (i32.const 255) - ) - ) - (block - (i32.store8 - (get_local $14) - (i32.const 0) - ) - (set_local $12 - (i32.add - (get_local $12) - (i32.const -1) - ) - ) - (br $do-once2) - ) - ) - (set_local $8 - (if i32 - (i32.eq - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $19) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - (get_local $7) - ) - (block i32 - (i32.store8 - (get_local $14) - (i32.const 2) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $12 - (i32.add - (get_local $12) - (i32.const -1) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - (set_local $14 - (i32.add - (get_local $14) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (if - (i32.eqz - (get_local $8) - ) - (block - (set_local $10 - (get_local $7) - ) - (br $label$continue$L17) - ) - ) - (if - (i32.eq - (tee_local $10 - (i32.load - (tee_local $8 - (i32.add - (tee_local $9 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $9) - ) - ) - (drop - (call_indirect $FUNCSIG$ii - (get_local $9) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $9) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $8) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - ) - (if - (i32.gt_u - (i32.add - (get_local $11) - (get_local $12) - ) - (i32.const 1) - ) - (block - (set_local $8 - (get_local $2) - ) - (set_local $10 - (get_local $13) - ) - ) - (block - (set_local $10 - (get_local $7) - ) - (br $label$continue$L17) - ) - ) - (loop $while-in5 - (if - (i32.eq - (get_local $8) - (get_local $3) - ) - (block - (set_local $10 - (get_local $7) - ) - (br $label$continue$L17) - ) - ) - (if - (i32.eq - (i32.load8_s - (get_local $10) - ) - (i32.const 2) - ) - (if - (i32.ne - (tee_local $9 - (if i32 - (i32.lt_s - (tee_local $9 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $9) - (i32.const 255) - ) - ) - ) - (get_local $7) - ) - (block - (i32.store8 - (get_local $10) - (i32.const 0) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const -1) - ) - ) - ) - ) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 12) - ) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (if - (get_local $4) - (if - (i32.eq - (i32.load offset=12 - (get_local $4) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (set_local $4 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $4 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $4) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (br_if $__rjti$0 - (get_local $6) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$1) - ) - (br_if $__rjti$1 - (get_local $0) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 2) - ) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (loop $while-in11 - (br_if $__rjti$2 - (i32.eq - (get_local $2) - (get_local $3) - ) - ) - (if - (i32.ne - (i32.load8_s - (get_local $13) - ) - (i32.const 2) - ) - (block - (set_local $2 - (i32.add - (get_local $2) - (i32.const 12) - ) - ) - (set_local $13 - (i32.add - (get_local $13) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - (call $_free - (get_local $18) - ) - (set_global $STACKTOP - (get_local $17) - ) - (get_local $2) - ) - (func $_mbsrtowcs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (set_local $4 - (i32.load - (get_local $1) - ) - ) - (set_local $3 - (block $__rjto$2 i32 - (block $__rjti$2 - (br_if $__rjti$2 - (i32.eqz - (get_local $3) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (tee_local $5 - (i32.load - (get_local $3) - ) - ) - ) - ) - (br $__rjto$2 - (if i32 - (get_local $0) - (block i32 - (i32.store - (get_local $3) - (i32.const 0) - ) - (set_local $6 - (get_local $0) - ) - (set_local $7 - (get_local $2) - ) - (set_local $15 - (get_local $5) - ) - (set_local $9 - (get_local $4) - ) - (i32.const 37) - ) - (block i32 - (set_local $14 - (get_local $2) - ) - (set_local $12 - (get_local $5) - ) - (set_local $10 - (get_local $4) - ) - (i32.const 16) - ) - ) - ) - ) - (if i32 - (get_local $0) - (block i32 - (set_local $17 - (get_local $0) - ) - (set_local $16 - (get_local $2) - ) - (set_local $11 - (get_local $4) - ) - (i32.const 6) - ) - (block i32 - (set_local $13 - (get_local $2) - ) - (set_local $8 - (get_local $4) - ) - (i32.const 7) - ) - ) - ) - ) - (block $__rjto$12 - (block $__rjti$12 - (block $__rjti$11 - (block $__rjti$10 - (block $__rjti$9 - (block $__rjti$8 - (block $__rjti$7 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (loop $label$continue$L7 - (if - (i32.eq - (get_local $3) - (i32.const 6) - ) - (block - (if - (get_local $16) - (block - (set_local $6 - (get_local $17) - ) - (set_local $4 - (get_local $16) - ) - (set_local $3 - (get_local $11) - ) - ) - (block - (set_local $3 - (get_local $11) - ) - (br $__rjti$6) - ) - ) - (loop $while-in - (block $while-out - (block $do-once - (if - (i32.lt_u - (i32.add - (i32.and - (tee_local $7 - (i32.load8_s - (get_local $3) - ) - ) - (i32.const 255) - ) - (i32.const -1) - ) - (i32.const 127) - ) - (if - (i32.and - (i32.gt_u - (get_local $4) - (i32.const 4) - ) - (i32.eqz - (i32.and - (get_local $3) - (i32.const 3) - ) - ) - ) - (block - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in1 - (br_if $__rjti$1 - (i32.and - (i32.or - (i32.add - (tee_local $7 - (i32.load - (get_local $3) - ) - ) - (i32.const -16843009) - ) - (get_local $7) - ) - (i32.const -2139062144) - ) - ) - (i32.store - (get_local $6) - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - (i32.store offset=4 - (get_local $6) - (i32.load8_u offset=1 - (get_local $3) - ) - ) - (i32.store offset=8 - (get_local $6) - (i32.load8_u offset=2 - (get_local $3) - ) - ) - (set_local $7 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (i32.store offset=12 - (get_local $6) - (i32.load8_u offset=3 - (get_local $3) - ) - ) - (if - (i32.gt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -4) - ) - ) - (i32.const 4) - ) - (block - (set_local $6 - (get_local $5) - ) - (set_local $3 - (get_local $7) - ) - (br $while-in1) - ) - (block - (set_local $3 - (get_local $7) - ) - (set_local $6 - (get_local $5) - ) - (br $__rjti$0) - ) - ) - ) - ) - (set_local $7 - (i32.load8_u - (get_local $3) - ) - ) - (br $do-once) - ) - (set_local $7 - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (i32.add - (tee_local $5 - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - (i32.const -1) - ) - (i32.const 127) - ) - (block - (set_local $7 - (get_local $4) - ) - (br $while-out) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store - (get_local $6) - (get_local $5) - ) - (br_if $__rjti$6 - (i32.eqz - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - (if - (i32.gt_u - (tee_local $4 - (i32.add - (get_local $5) - (i32.const -194) - ) - ) - (i32.const 50) - ) - (block - (set_local $0 - (get_local $6) - ) - (set_local $14 - (get_local $7) - ) - (br $__rjti$11) - ) - ) - (set_local $15 - (i32.load - (i32.add - (i32.shl - (get_local $4) - (i32.const 2) - ) - (i32.const 2496) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $3 - (i32.const 37) - ) - (br $label$continue$L7) - ) - (block - (if - (i32.eq - (get_local $3) - (i32.const 7) - ) - (block - (if - (i32.lt_u - (i32.add - (i32.and - (tee_local $5 - (i32.load8_s - (get_local $8) - ) - ) - (i32.const 255) - ) - (i32.const -1) - ) - (i32.const 127) - ) - (if - (i32.and - (get_local $8) - (i32.const 3) - ) - (block - (set_local $3 - (get_local $13) - ) - (set_local $4 - (get_local $8) - ) - ) - (block - (set_local $5 - (i32.and - (tee_local $3 - (i32.load - (get_local $8) - ) - ) - (i32.const 255) - ) - ) - (if - (i32.and - (i32.or - (i32.add - (get_local $3) - (i32.const -16843009) - ) - (get_local $3) - ) - (i32.const -2139062144) - ) - (block - (set_local $3 - (get_local $13) - ) - (set_local $4 - (get_local $8) - ) - ) - (block - (set_local $3 - (get_local $13) - ) - (set_local $4 - (get_local $8) - ) - (loop $while-in3 - (set_local $3 - (i32.add - (get_local $3) - (i32.const -4) - ) - ) - (br_if $while-in3 - (i32.eqz - (i32.and - (i32.or - (i32.add - (tee_local $5 - (i32.load - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - ) - ) - (i32.const -16843009) - ) - (get_local $5) - ) - (i32.const -2139062144) - ) - ) - ) - ) - (set_local $5 - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $13) - ) - (set_local $4 - (get_local $8) - ) - ) - ) - (if - (i32.lt_u - (i32.add - (tee_local $5 - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (i32.const -1) - ) - (i32.const 127) - ) - (block - (set_local $13 - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - (set_local $8 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (set_local $3 - (i32.const 7) - ) - (br $label$continue$L7) - ) - (block - (set_local $14 - (get_local $3) - ) - (set_local $3 - (get_local $4) - ) - ) - ) - (br_if $__rjti$11 - (i32.gt_u - (tee_local $4 - (i32.add - (get_local $5) - (i32.const -194) - ) - ) - (i32.const 50) - ) - ) - (set_local $12 - (i32.load - (i32.add - (i32.shl - (get_local $4) - (i32.const 2) - ) - (i32.const 2496) - ) - ) - ) - (set_local $10 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $3 - (i32.const 16) - ) - (br $label$continue$L7) - ) - (if - (i32.eq - (get_local $3) - (i32.const 16) - ) - (block - (br_if $__rjti$3 - (i32.gt_u - (i32.or - (i32.add - (tee_local $3 - (i32.shr_u - (i32.load8_u - (get_local $10) - ) - (i32.const 3) - ) - ) - (i32.const -16) - ) - (i32.add - (get_local $3) - (i32.shr_s - (get_local $12) - (i32.const 26) - ) - ) - ) - (i32.const 7) - ) - ) - (set_local $8 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (if - (i32.and - (get_local $12) - (i32.const 33554432) - ) - (block - (br_if $__rjti$4 - (i32.ne - (i32.and - (i32.load8_s - (get_local $8) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (set_local $8 - (i32.add - (get_local $10) - (i32.const 2) - ) - ) - (if - (i32.and - (get_local $12) - (i32.const 524288) - ) - (block - (br_if $__rjti$5 - (i32.ne - (i32.and - (i32.load8_s - (get_local $8) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (set_local $8 - (i32.add - (get_local $10) - (i32.const 3) - ) - ) - ) - ) - ) - ) - (set_local $13 - (i32.add - (get_local $14) - (i32.const -1) - ) - ) - (set_local $3 - (i32.const 7) - ) - (br $label$continue$L7) - ) - (if - (i32.eq - (get_local $3) - (i32.const 37) - ) - (block - (br_if $__rjti$7 - (i32.gt_u - (i32.or - (i32.add - (tee_local $4 - (i32.shr_u - (tee_local $3 - (i32.load8_u - (get_local $9) - ) - ) - (i32.const 3) - ) - ) - (i32.const -16) - ) - (i32.add - (get_local $4) - (i32.shr_s - (get_local $15) - (i32.const 26) - ) - ) - ) - (i32.const 7) - ) - ) - (set_local $11 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (if - (i32.lt_s - (tee_local $3 - (i32.or - (i32.add - (get_local $3) - (i32.const -128) - ) - (i32.shl - (get_local $15) - (i32.const 6) - ) - ) - ) - (i32.const 0) - ) - (block - (br_if $__rjti$8 - (i32.ne - (i32.and - (tee_local $4 - (i32.load8_u - (get_local $11) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (set_local $11 - (i32.add - (get_local $9) - (i32.const 2) - ) - ) - (if - (i32.lt_s - (tee_local $3 - (i32.or - (i32.add - (get_local $4) - (i32.const -128) - ) - (i32.shl - (get_local $3) - (i32.const 6) - ) - ) - ) - (i32.const 0) - ) - (block - (br_if $__rjti$9 - (i32.ne - (i32.and - (tee_local $4 - (i32.load8_u - (get_local $11) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (set_local $3 - (i32.or - (i32.add - (get_local $4) - (i32.const -128) - ) - (i32.shl - (get_local $3) - (i32.const 6) - ) - ) - ) - (set_local $11 - (i32.add - (get_local $9) - (i32.const 3) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $6) - (get_local $3) - ) - (set_local $17 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $16 - (i32.add - (get_local $7) - (i32.const -1) - ) - ) - (set_local $3 - (i32.const 6) - ) - (br $label$continue$L7) - ) - ) - ) - ) - (br $label$continue$L7) - ) - ) - ) - ) - (set_local $3 - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - (br $__rjti$10) - ) - (set_local $3 - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - (br $__rjti$10) - ) - (set_local $3 - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - (br $__rjti$10) - ) - (i32.store - (get_local $1) - (get_local $3) - ) - (br $__rjto$12) - ) - (set_local $0 - (get_local $6) - ) - (set_local $14 - (get_local $7) - ) - (set_local $12 - (get_local $15) - ) - (set_local $3 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (br $__rjti$10) - ) - (set_local $0 - (get_local $6) - ) - (set_local $3 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (br $__rjti$12) - ) - (set_local $0 - (get_local $6) - ) - (set_local $3 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (br $__rjti$12) - ) - (br_if $__rjti$12 - (get_local $12) - ) - ) - (br_if $__rjti$12 - (i32.load8_s - (get_local $3) - ) - ) - (if - (get_local $0) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (get_local $14) - ) - ) - (br $__rjto$12) - ) - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (set_local $2 - (if i32 - (get_local $0) - (block i32 - (i32.store - (get_local $1) - (get_local $3) - ) - (i32.const -1) - ) - (i32.const -1) - ) - ) - ) - (get_local $2) - ) - (func $__ZNSt3__211__money_putIcE8__formatEPcRS2_S3_jPKcS5_RKNS_5ctypeIcEEbRKNS_10money_base7patternEccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESL_SL_i (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (i32.store - (get_local $2) - (get_local $0) - ) - (set_local $21 - (i32.add - (get_local $13) - (i32.const 11) - ) - ) - (set_local $22 - (i32.add - (get_local $13) - (i32.const 4) - ) - ) - (set_local $26 - (i32.add - (get_local $12) - (i32.const 11) - ) - ) - (set_local $27 - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (set_local $28 - (i32.eqz - (i32.and - (get_local $3) - (i32.const 512) - ) - ) - ) - (set_local $29 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $30 - (i32.gt_s - (get_local $14) - (i32.const 0) - ) - ) - (set_local $23 - (i32.add - (get_local $11) - (i32.const 11) - ) - ) - (set_local $24 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (set_local $19 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $19) - (i32.const 4) - ) - (block - (block $label$break$L4 - (block $switch-default - (block $switch-case16 - (block $switch-case4 - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-case4 $switch-case1 $switch-case16 $switch-default - (i32.load8_s - (i32.add - (get_local $8) - (get_local $19) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $2) - ) - ) - (br $label$break$L4) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $2) - ) - ) - (set_local $15 - (call_indirect $FUNCSIG$iii - (get_local $6) - (i32.const 32) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $6) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $16 - (i32.load - (get_local $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $16) - (get_local $15) - ) - (br $label$break$L4) - ) - (if - (if i32 - (tee_local $16 - (i32.lt_s - (tee_local $15 - (i32.load8_s - (get_local $21) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $22) - ) - (i32.and - (get_local $15) - (i32.const 255) - ) - ) - (block - (set_local $15 - (i32.load8_s - (if i32 - (get_local $16) - (i32.load - (get_local $13) - ) - (get_local $13) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $16 - (i32.load - (get_local $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $16) - (get_local $15) - ) - ) - ) - (br $label$break$L4) - ) - (if - (i32.eqz - (i32.or - (get_local $28) - (i32.eqz - (tee_local $18 - (if i32 - (tee_local $16 - (i32.lt_s - (tee_local $15 - (i32.load8_s - (get_local $26) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $27) - ) - (i32.and - (get_local $15) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (block - (set_local $18 - (i32.add - (tee_local $15 - (if i32 - (get_local $16) - (i32.load - (get_local $12) - ) - (get_local $12) - ) - ) - (get_local $18) - ) - ) - (set_local $16 - (i32.load - (get_local $2) - ) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $15) - (get_local $18) - ) - (block - (i32.store8 - (get_local $16) - (i32.load8_s - (get_local $15) - ) - ) - (set_local $16 - (i32.add - (get_local $16) - (i32.const 1) - ) - ) - (set_local $15 - (i32.add - (get_local $15) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $16) - ) - ) - ) - (br $label$break$L4) - ) - (set_local $25 - (i32.load - (get_local $2) - ) - ) - (set_local $4 - (tee_local $18 - (if i32 - (get_local $7) - (i32.add - (get_local $4) - (i32.const 1) - ) - (get_local $4) - ) - ) - ) - (loop $while-in6 - (block $while-out5 - (br_if $while-out5 - (i32.ge_u - (get_local $4) - (get_local $5) - ) - ) - (br_if $while-out5 - (i32.le_s - (tee_local $15 - (i32.load8_s - (get_local $4) - ) - ) - (i32.const -1) - ) - ) - (if - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $29) - ) - (i32.shl - (get_local $15) - (i32.const 1) - ) - ) - ) - (i32.const 2048) - ) - (block - (set_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (br $while-in6) - ) - ) - ) - ) - (if - (get_local $30) - (block - (set_local $15 - (get_local $14) - ) - (loop $while-in8 - (if - (i32.and - (i32.gt_u - (get_local $4) - (get_local $18) - ) - (tee_local $16 - (i32.gt_s - (get_local $15) - (i32.const 0) - ) - ) - ) - (block - (set_local $16 - (i32.load8_s - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $17 - (i32.load - (get_local $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $17) - (get_local $16) - ) - (set_local $15 - (i32.add - (get_local $15) - (i32.const -1) - ) - ) - (br $while-in8) - ) - ) - ) - (set_local $17 - (if i32 - (get_local $16) - (call_indirect $FUNCSIG$iii - (get_local $6) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $6) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const 0) - ) - ) - (loop $while-in10 - (i32.store - (get_local $2) - (i32.add - (tee_local $16 - (i32.load - (get_local $2) - ) - ) - (i32.const 1) - ) - ) - (if - (i32.gt_s - (get_local $15) - (i32.const 0) - ) - (block - (i32.store8 - (get_local $16) - (get_local $17) - ) - (set_local $15 - (i32.add - (get_local $15) - (i32.const -1) - ) - ) - (br $while-in10) - ) - ) - ) - (i32.store8 - (get_local $16) - (get_local $9) - ) - ) - ) - (block $label$break$L35 - (if - (i32.eq - (get_local $4) - (get_local $18) - ) - (block - (set_local $4 - (call_indirect $FUNCSIG$iii - (get_local $6) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $6) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $15 - (i32.load - (get_local $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $15) - (get_local $4) - ) - ) - (block - (set_local $15 - (if i32 - (if i32 - (tee_local $17 - (i32.lt_s - (tee_local $15 - (i32.load8_s - (get_local $23) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $24) - ) - (i32.and - (get_local $15) - (i32.const 255) - ) - ) - (block i32 - (set_local $16 - (get_local $4) - ) - (set_local $4 - (i32.load8_s - (if i32 - (get_local $17) - (i32.load - (get_local $11) - ) - (get_local $11) - ) - ) - ) - (set_local $17 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $16 - (get_local $4) - ) - (set_local $4 - (i32.const -1) - ) - (set_local $17 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (loop $while-in13 - (br_if $label$break$L35 - (i32.eq - (get_local $16) - (get_local $18) - ) - ) - (if - (i32.eq - (get_local $17) - (get_local $4) - ) - (block - (i32.store - (get_local $2) - (i32.add - (tee_local $4 - (i32.load - (get_local $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $4) - (get_local $10) - ) - (set_local $17 - (if i32 - (i32.lt_u - (tee_local $15 - (i32.add - (get_local $15) - (i32.const 1) - ) - ) - (if i32 - (tee_local $20 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (get_local $23) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $24) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - (block i32 - (if - (i32.eq - (tee_local $4 - (i32.load8_s - (i32.add - (if i32 - (get_local $20) - (i32.load - (get_local $11) - ) - (get_local $11) - ) - (get_local $15) - ) - ) - ) - (i32.const 127) - ) - (set_local $4 - (i32.const -1) - ) - ) - (i32.const 0) - ) - (block i32 - (set_local $4 - (get_local $17) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (set_local $20 - (i32.load8_s - (tee_local $16 - (i32.add - (get_local $16) - (i32.const -1) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $31 - (i32.load - (get_local $2) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $31) - (get_local $20) - ) - (set_local $17 - (i32.add - (get_local $17) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - ) - (if - (i32.eq - (get_local $25) - (tee_local $4 - (i32.load - (get_local $2) - ) - ) - ) - (set_local $4 - (get_local $18) - ) - (block - (set_local $15 - (get_local $25) - ) - (loop $while-in15 - (if - (i32.ge_u - (get_local $15) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - ) - (block - (set_local $4 - (get_local $18) - ) - (br $label$break$L4) - ) - (block - (set_local $16 - (i32.load8_s - (get_local $15) - ) - ) - (i32.store8 - (get_local $15) - (i32.load8_s - (get_local $4) - ) - ) - (i32.store8 - (get_local $4) - (get_local $16) - ) - (set_local $15 - (i32.add - (get_local $15) - (i32.const 1) - ) - ) - (br $while-in15) - ) - ) - ) - ) - ) - ) - ) - (set_local $19 - (i32.add - (get_local $19) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (if - (i32.gt_u - (tee_local $6 - (if i32 - (tee_local $5 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (get_local $21) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $22) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - (i32.const 1) - ) - (block - (set_local $6 - (i32.add - (tee_local $4 - (if i32 - (get_local $5) - (i32.load - (get_local $13) - ) - (get_local $13) - ) - ) - (get_local $6) - ) - ) - (set_local $5 - (i32.load - (get_local $2) - ) - ) - (loop $while-in18 - (if - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (get_local $6) - ) - (block - (i32.store8 - (get_local $5) - (i32.load8_s - (get_local $4) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br $while-in18) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $5) - ) - ) - ) - (block $switch19 - (block $switch-default22 - (block $switch-case21 - (block $switch-case20 - (br_table $switch-case21 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-default22 $switch-case20 $switch-default22 - (i32.sub - (i32.and - (get_local $3) - (i32.const 176) - ) - (i32.const 16) - ) - ) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $2) - ) - ) - (br $switch19) - ) - (br $switch19) - ) - (i32.store - (get_local $1) - (get_local $0) - ) - ) - ) - (func $__ZNSt3__211__money_putIwE8__formatEPwRS2_S3_jPKwS5_RKNS_5ctypeIwEEbRKNS_10money_base7patternEwwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNSE_IwNSF_IwEENSH_IwEEEESQ_i (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (i32.store - (get_local $2) - (get_local $0) - ) - (set_local $23 - (i32.add - (get_local $13) - (i32.const 11) - ) - ) - (set_local $24 - (i32.add - (get_local $13) - (i32.const 4) - ) - ) - (set_local $26 - (i32.add - (get_local $12) - (i32.const 11) - ) - ) - (set_local $27 - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (set_local $28 - (i32.eqz - (i32.and - (get_local $3) - (i32.const 512) - ) - ) - ) - (set_local $29 - (i32.gt_s - (get_local $14) - (i32.const 0) - ) - ) - (set_local $30 - (i32.add - (get_local $11) - (i32.const 11) - ) - ) - (set_local $31 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (set_local $22 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $22) - (i32.const 4) - ) - (block - (block $label$break$L4 - (block $switch-default - (block $switch-case15 - (block $switch-case4 - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-case4 $switch-case1 $switch-case15 $switch-default - (i32.load8_s - (i32.add - (get_local $8) - (get_local $22) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $2) - ) - ) - (br $label$break$L4) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $2) - ) - ) - (set_local $16 - (call_indirect $FUNCSIG$iii - (get_local $6) - (i32.const 32) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $6) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $15 - (i32.load - (get_local $2) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $15) - (get_local $16) - ) - (br $label$break$L4) - ) - (if - (if i32 - (tee_local $15 - (i32.lt_s - (tee_local $16 - (i32.load8_s - (get_local $23) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $24) - ) - (i32.and - (get_local $16) - (i32.const 255) - ) - ) - (block - (set_local $16 - (i32.load - (if i32 - (get_local $15) - (i32.load - (get_local $13) - ) - (get_local $13) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $15 - (i32.load - (get_local $2) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $15) - (get_local $16) - ) - ) - ) - (br $label$break$L4) - ) - (if - (i32.eqz - (i32.or - (get_local $28) - (i32.eqz - (tee_local $19 - (if i32 - (tee_local $15 - (i32.lt_s - (tee_local $16 - (i32.load8_s - (get_local $26) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $27) - ) - (i32.and - (get_local $16) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (block - (set_local $18 - (i32.add - (tee_local $15 - (if i32 - (get_local $15) - (i32.load - (get_local $12) - ) - (get_local $12) - ) - ) - (i32.shl - (get_local $19) - (i32.const 2) - ) - ) - ) - (set_local $17 - (tee_local $16 - (i32.load - (get_local $2) - ) - ) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $15) - (get_local $18) - ) - (block - (i32.store - (get_local $17) - (i32.load - (get_local $15) - ) - ) - (set_local $17 - (i32.add - (get_local $17) - (i32.const 4) - ) - ) - (set_local $15 - (i32.add - (get_local $15) - (i32.const 4) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $16) - (i32.shl - (get_local $19) - (i32.const 2) - ) - ) - ) - ) - ) - (br $label$break$L4) - ) - (set_local $20 - (i32.load - (get_local $2) - ) - ) - (set_local $4 - (tee_local $19 - (if i32 - (get_local $7) - (i32.add - (get_local $4) - (i32.const 4) - ) - (get_local $4) - ) - ) - ) - (loop $while-in6 - (if - (i32.lt_u - (get_local $4) - (get_local $5) - ) - (if - (call_indirect $FUNCSIG$iiii - (get_local $6) - (i32.const 2048) - (i32.load - (get_local $4) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $6) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (block - (set_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (br $while-in6) - ) - ) - ) - ) - (if - (get_local $29) - (block - (set_local $15 - (get_local $14) - ) - (loop $while-in8 - (if - (i32.and - (i32.gt_u - (get_local $4) - (get_local $19) - ) - (tee_local $16 - (i32.gt_s - (get_local $15) - (i32.const 0) - ) - ) - ) - (block - (set_local $18 - (i32.load - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (tee_local $16 - (i32.load - (get_local $2) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $16) - (get_local $18) - ) - (set_local $15 - (i32.add - (get_local $15) - (i32.const -1) - ) - ) - (br $while-in8) - ) - ) - ) - (set_local $17 - (if i32 - (get_local $16) - (call_indirect $FUNCSIG$iii - (get_local $6) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $6) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const 0) - ) - ) - (set_local $16 - (i32.load - (get_local $2) - ) - ) - (set_local $18 - (get_local $15) - ) - (loop $while-in10 - (set_local $15 - (i32.add - (get_local $16) - (i32.const 4) - ) - ) - (if - (i32.gt_s - (get_local $18) - (i32.const 0) - ) - (block - (i32.store - (get_local $16) - (get_local $17) - ) - (set_local $16 - (get_local $15) - ) - (set_local $18 - (i32.add - (get_local $18) - (i32.const -1) - ) - ) - (br $while-in10) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $15) - ) - (i32.store - (get_local $16) - (get_local $9) - ) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $19) - ) - (block - (set_local $16 - (call_indirect $FUNCSIG$iii - (get_local $6) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $6) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $2) - (tee_local $4 - (i32.add - (tee_local $15 - (i32.load - (get_local $2) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $16) - ) - ) - (block - (set_local $4 - (if i32 - (tee_local $32 - (if i32 - (tee_local $25 - (i32.lt_s - (tee_local $15 - (i32.load8_s - (get_local $30) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $31) - ) - (i32.and - (get_local $15) - (i32.const 255) - ) - ) - ) - (block i32 - (set_local $16 - (get_local $4) - ) - (set_local $15 - (i32.load8_s - (if i32 - (get_local $25) - (i32.load - (get_local $11) - ) - (get_local $11) - ) - ) - ) - (set_local $17 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $16 - (get_local $4) - ) - (set_local $15 - (i32.const -1) - ) - (set_local $17 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (loop $while-in12 - (if - (i32.ne - (get_local $16) - (get_local $19) - ) - (block - (set_local $21 - (i32.load - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $17) - (get_local $15) - ) - (block - (i32.store - (get_local $2) - (tee_local $18 - (i32.add - (get_local $21) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $21) - (get_local $10) - ) - (set_local $17 - (if i32 - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (get_local $32) - ) - (block i32 - (if - (i32.eq - (tee_local $15 - (i32.load8_s - (i32.add - (if i32 - (get_local $25) - (i32.load - (get_local $11) - ) - (get_local $11) - ) - (get_local $4) - ) - ) - ) - (i32.const 127) - ) - (set_local $15 - (i32.const -1) - ) - ) - (i32.const 0) - ) - (block i32 - (set_local $15 - (get_local $17) - ) - (i32.const 0) - ) - ) - ) - ) - (set_local $18 - (get_local $21) - ) - ) - (set_local $21 - (i32.load - (tee_local $16 - (i32.add - (get_local $16) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $18) - (i32.const 4) - ) - ) - (i32.store - (get_local $18) - (get_local $21) - ) - (set_local $17 - (i32.add - (get_local $17) - (i32.const 1) - ) - ) - (br $while-in12) - ) - ) - ) - (set_local $4 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (get_local $20) - (get_local $4) - ) - (set_local $4 - (get_local $19) - ) - (loop $while-in14 - (if - (i32.ge_u - (get_local $20) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -4) - ) - ) - ) - (block - (set_local $4 - (get_local $19) - ) - (br $label$break$L4) - ) - (block - (set_local $15 - (i32.load - (get_local $20) - ) - ) - (i32.store - (get_local $20) - (i32.load - (get_local $4) - ) - ) - (i32.store - (get_local $4) - (get_local $15) - ) - (set_local $20 - (i32.add - (get_local $20) - (i32.const 4) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - ) - (set_local $22 - (i32.add - (get_local $22) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (if - (i32.gt_u - (tee_local $5 - (if i32 - (tee_local $4 - (i32.lt_s - (tee_local $5 - (i32.load8_s - (get_local $23) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $24) - ) - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - ) - (i32.const 1) - ) - (block - (set_local $4 - (i32.add - (if i32 - (get_local $4) - (tee_local $13 - (i32.load - (get_local $13) - ) - ) - (get_local $13) - ) - (i32.const 4) - ) - ) - (set_local $6 - (i32.sub - (tee_local $7 - (i32.add - (get_local $13) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (get_local $4) - ) - ) - (set_local $8 - (tee_local $5 - (i32.load - (get_local $2) - ) - ) - ) - (loop $while-in17 - (if - (i32.ne - (get_local $4) - (get_local $7) - ) - (block - (i32.store - (get_local $8) - (i32.load - (get_local $4) - ) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $5) - (i32.shl - (i32.shr_u - (get_local $6) - (i32.const 2) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block $switch18 - (block $switch-default21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case20 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-default21 $switch-case19 $switch-default21 - (i32.sub - (i32.and - (get_local $3) - (i32.const 176) - ) - (i32.const 16) - ) - ) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $2) - ) - ) - (br $switch18) - ) - (br $switch18) - ) - (i32.store - (get_local $1) - (get_local $0) - ) - ) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 352) - ) - ) - (call $__ZNSt3__29__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_ - (tee_local $11 - (i32.add - (get_local $9) - (i32.const 184) - ) - ) - (get_local $3) - (tee_local $20 - (i32.add - (get_local $9) - (i32.const 208) - ) - ) - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 200) - ) - ) - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 196) - ) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $9) - (i32.const 172) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $18 - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $9) - ) - (set_local $17 - (i32.add - (get_local $9) - (i32.const 337) - ) - ) - (set_local $19 - (i32.add - (get_local $9) - (i32.const 336) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $10 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $9) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (i32.store8 - (get_local $17) - (i32.const 1) - ) - (i32.store8 - (get_local $19) - (i32.const 69) - ) - (set_local $21 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (set_local $22 - (i32.load - (get_local $6) - ) - ) - (set_local $23 - (i32.load - (get_local $7) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L8 - (block $label$break$L8 - (set_local $7 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L8 - (i32.eqz - (get_local $7) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $7) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L8) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $7 - (if i32 - (i32.lt_s - (tee_local $7 - (i32.load8_s - (get_local $10) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $21) - ) - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (i32.shl - (get_local $7) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - (get_local $7) - ) - ) - ) - ) - (br_if $label$break$L8 - (call $__ZNSt3__29__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $24 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (get_local $17) - (get_local $19) - (get_local $3) - (get_local $16) - (get_local $22) - (get_local $23) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $12) - (get_local $20) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $24) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L8) - ) - (block - (i32.store - (get_local $7) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L8) - ) - ) - ) - ) - (set_local $7 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (set_local $10 - (i32.load - (get_local $15) - ) - ) - (if - (i32.eqz - (if i32 - (i32.load8_s - (get_local $17) - ) - (i32.eqz - (if i32 - (i32.lt_s - (get_local $7) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - ) - (i32.const 1) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $10) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $7 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $10) - (get_local $7) - ) - (set_local $10 - (get_local $12) - ) - ) - ) - ) - (f32.store - (get_local $5) - (f32.demote/f64 - (call $__ZNSt3__215__num_get_floatIeEET_PKcS3_Rj - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - ) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $10) - (get_local $4) - ) - (set_local $0 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 352) - ) - ) - (call $__ZNSt3__29__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_ - (tee_local $11 - (i32.add - (get_local $9) - (i32.const 184) - ) - ) - (get_local $3) - (tee_local $20 - (i32.add - (get_local $9) - (i32.const 208) - ) - ) - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 200) - ) - ) - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 196) - ) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $9) - (i32.const 172) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $18 - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $9) - ) - (set_local $17 - (i32.add - (get_local $9) - (i32.const 337) - ) - ) - (set_local $19 - (i32.add - (get_local $9) - (i32.const 336) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $10 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $9) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (i32.store8 - (get_local $17) - (i32.const 1) - ) - (i32.store8 - (get_local $19) - (i32.const 69) - ) - (set_local $21 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (set_local $22 - (i32.load - (get_local $6) - ) - ) - (set_local $23 - (i32.load - (get_local $7) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L8 - (block $label$break$L8 - (set_local $7 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L8 - (i32.eqz - (get_local $7) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $7) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L8) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $7 - (if i32 - (i32.lt_s - (tee_local $7 - (i32.load8_s - (get_local $10) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $21) - ) - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (i32.shl - (get_local $7) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - (get_local $7) - ) - ) - ) - ) - (br_if $label$break$L8 - (call $__ZNSt3__29__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $24 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (get_local $17) - (get_local $19) - (get_local $3) - (get_local $16) - (get_local $22) - (get_local $23) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $12) - (get_local $20) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $7) - ) - ) - (i32.load - (get_local $24) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L8) - ) - (block - (i32.store - (get_local $7) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L8) - ) - ) - ) - ) - (set_local $7 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (set_local $10 - (i32.load - (get_local $15) - ) - ) - (if - (i32.eqz - (if i32 - (i32.load8_s - (get_local $17) - ) - (i32.eqz - (if i32 - (i32.lt_s - (get_local $7) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - ) - (i32.const 1) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $10) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $7 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $10) - (get_local $7) - ) - (set_local $10 - (get_local $12) - ) - ) - ) - ) - (f64.store - (get_local $5) - (call $__ZNSt3__215__num_get_floatIeEET_PKcS3_Rj - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $10) - (get_local $4) - ) - (set_local $0 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 304) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 200) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $18 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw - (get_local $11) - (get_local $3) - (get_local $17) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (set_local $8 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (get_local $18) - (get_local $3) - (get_local $16) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $17) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $15) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__227__num_get_unsigned_integralIyEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - (get_local $18) - ) - ) - (i32.store offset=4 - (get_local $5) - (get_global $tempRet0) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $9) - (get_local $4) - ) - (set_local $0 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 304) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 200) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $18 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw - (get_local $11) - (get_local $3) - (get_local $17) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (set_local $8 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (get_local $18) - (get_local $3) - (get_local $16) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $17) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $15) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__225__num_get_signed_integralIxEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - (get_local $18) - ) - ) - (i32.store offset=4 - (get_local $5) - (get_global $tempRet0) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $9) - (get_local $4) - ) - (set_local $0 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 304) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 200) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $18 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw - (get_local $11) - (get_local $3) - (get_local $17) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (set_local $8 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (get_local $18) - (get_local $3) - (get_local $16) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $17) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $15) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store16 - (get_local $5) - (call $__ZNSt3__227__num_get_unsigned_integralItEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - (get_local $18) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $9) - (get_local $4) - ) - (set_local $0 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 304) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 200) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $18 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw - (get_local $11) - (get_local $3) - (get_local $17) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (set_local $8 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (get_local $18) - (get_local $3) - (get_local $16) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $17) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $15) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__227__num_get_unsigned_integralImEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - (get_local $18) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $9) - (get_local $4) - ) - (set_local $0 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 304) - ) - ) - (set_local $17 - (i32.add - (get_local $10) - (i32.const 200) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $18 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw - (get_local $11) - (get_local $3) - (get_local $17) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (set_local $8 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $19) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw - (tee_local $13 - (if i32 - (i32.eq - (tee_local $13 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $13) - ) - ) - ) - (get_local $18) - (get_local $3) - (get_local $16) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $17) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $15) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__225__num_get_signed_integralIlEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - (get_local $18) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $9) - (get_local $4) - ) - (set_local $0 - (if i32 - (get_local $0) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 320) - ) - ) - (set_local $14 - (i32.add - (get_local $9) - (i32.const 208) - ) - ) - (set_local $0 - (i32.add - (get_local $9) - (i32.const 192) - ) - ) - (set_local $7 - (i32.add - (get_local $9) - (i32.const 180) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $9) - (i32.const 196) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $10) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $10) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $10) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $0) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $0 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $0) - (i32.const 19240) - ) - ) - (i32.const 13937) - (i32.const 13963) - (get_local $14) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $0) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (set_local $15 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $16 - (get_local $9) - ) - (set_local $17 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - (set_local $18 - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - (set_local $19 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $15) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $13 - (i32.add - (get_local $9) - (i32.const 176) - ) - ) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $18) - (get_local $17) - ) - (i32.store - (get_local $19) - (i32.const 0) - ) - (set_local $21 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $3 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L12 - (block $label$break$L12 - (set_local $12 - (if i32 - (get_local $3) - (if i32 - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $3 - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $8 - (if i32 - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $8) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L12 - (i32.eqz - (get_local $12) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $12) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L12) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $13) - ) - (i32.add - (get_local $0) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $21) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $15) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.add - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L12 - (call $__ZNSt3__29__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw - (tee_local $12 - (if i32 - (i32.eq - (tee_local $12 - (i32.load - (tee_local $20 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $8 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $12) - ) - ) - ) - (i32.const 16) - (get_local $0) - (get_local $13) - (get_local $19) - (i32.const 0) - (get_local $10) - (get_local $17) - (get_local $18) - (get_local $14) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $20) - ) - ) - (i32.load - (get_local $8) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L12) - ) - (block - (i32.store - (get_local $20) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L12) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.sub - (i32.load - (get_local $13) - ) - (get_local $0) - ) - (i32.const 0) - ) - (set_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (set_local $8 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (get_local $16) - (get_local $5) - ) - (if - (i32.ne - (call $__ZNSt3__217__libcpp_sscanf_lEPKcP15__locale_structS1_z - (get_local $0) - (get_local $8) - (i32.const 13972) - (get_local $16) - ) - (i32.const 1) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - ) - (set_local $3 - (if i32 - (get_local $3) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $0) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $0) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $3) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $3) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $10) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 240) - ) - ) - (call $__ZNSt3__29__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_ - (tee_local $11 - (i32.add - (get_local $9) - (i32.const 184) - ) - ) - (get_local $3) - (tee_local $20 - (i32.add - (get_local $9) - (i32.const 200) - ) - ) - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 199) - ) - ) - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 198) - ) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $9) - (i32.const 172) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $17 - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $9) - ) - (set_local $13 - (i32.add - (get_local $9) - (i32.const 197) - ) - ) - (set_local $18 - (i32.add - (get_local $9) - (i32.const 196) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $10 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $17) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $9) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (i32.store8 - (get_local $13) - (i32.const 1) - ) - (i32.store8 - (get_local $18) - (i32.const 69) - ) - (set_local $21 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (set_local $22 - (i32.load8_s - (get_local $7) - ) - ) - (set_local $23 - (i32.load8_s - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L8 - (block $label$break$L8 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $6 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $7 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (get_local $6) - (br $__rjto$0) - (br $label$break$L8) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L8 - (i32.eqz - (get_local $6) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $6) - (block - (set_local $7 - (i32.const 0) - ) - (br $label$break$L8) - ) - (set_local $7 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $6 - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (get_local $10) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $21) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $17) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - (get_local $6) - ) - ) - ) - ) - (br_if $label$break$L8 - (call $__ZNSt3__29__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_ - (i32.and - (tee_local $19 - (if i32 - (i32.eq - (tee_local $19 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $24 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $19) - ) - ) - ) - (i32.const 255) - ) - (get_local $13) - (get_local $18) - (get_local $3) - (get_local $16) - (get_local $22) - (get_local $23) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $12) - (get_local $20) - ) - ) - (if - (i32.eq - (tee_local $7 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $24) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L8) - ) - (block - (i32.store - (get_local $6) - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $label$continue$L8) - ) - ) - ) - ) - (set_local $6 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (set_local $10 - (i32.load - (get_local $15) - ) - ) - (if - (i32.eqz - (if i32 - (i32.load8_s - (get_local $13) - ) - (i32.eqz - (if i32 - (i32.lt_s - (get_local $6) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - (i32.const 1) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $10) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $13 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $10) - (get_local $13) - ) - (set_local $10 - (get_local $12) - ) - ) - ) - ) - (f32.store - (get_local $5) - (f32.demote/f64 - (call $__ZNSt3__215__num_get_floatIeEET_PKcS3_Rj - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - ) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $10) - (get_local $4) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $7) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 240) - ) - ) - (call $__ZNSt3__29__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_ - (tee_local $11 - (i32.add - (get_local $9) - (i32.const 184) - ) - ) - (get_local $3) - (tee_local $20 - (i32.add - (get_local $9) - (i32.const 200) - ) - ) - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 199) - ) - ) - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 198) - ) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $9) - (i32.const 172) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $17 - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - (set_local $15 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $9) - ) - (set_local $13 - (i32.add - (get_local $9) - (i32.const 197) - ) - ) - (set_local $18 - (i32.add - (get_local $9) - (i32.const 196) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $10 - (i32.add - (get_local $8) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $17) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $9) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (i32.store8 - (get_local $13) - (i32.const 1) - ) - (i32.store8 - (get_local $18) - (i32.const 69) - ) - (set_local $21 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (set_local $22 - (i32.load8_s - (get_local $7) - ) - ) - (set_local $23 - (i32.load8_s - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L8 - (block $label$break$L8 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $6 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $7 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (get_local $6) - (br $__rjto$0) - (br $label$break$L8) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L8 - (i32.eqz - (get_local $6) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $6) - (block - (set_local $7 - (i32.const 0) - ) - (br $label$break$L8) - ) - (set_local $7 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $16) - ) - (i32.add - (get_local $3) - (tee_local $6 - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (get_local $10) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $21) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $8) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $17) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $16) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $10) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - (get_local $6) - ) - ) - ) - ) - (br_if $label$break$L8 - (call $__ZNSt3__29__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_ - (i32.and - (tee_local $19 - (if i32 - (i32.eq - (tee_local $19 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $24 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $19) - ) - ) - ) - (i32.const 255) - ) - (get_local $13) - (get_local $18) - (get_local $3) - (get_local $16) - (get_local $22) - (get_local $23) - (get_local $11) - (get_local $14) - (get_local $15) - (get_local $12) - (get_local $20) - ) - ) - (if - (i32.eq - (tee_local $7 - (i32.load - (get_local $6) - ) - ) - (i32.load - (get_local $24) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L8) - ) - (block - (i32.store - (get_local $6) - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $label$continue$L8) - ) - ) - ) - ) - (set_local $6 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (set_local $10 - (i32.load - (get_local $15) - ) - ) - (if - (i32.eqz - (if i32 - (i32.load8_s - (get_local $13) - ) - (i32.eqz - (if i32 - (i32.lt_s - (get_local $6) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - (i32.const 1) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $10) - (get_local $14) - ) - (i32.const 160) - ) - (block - (set_local $13 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $15) - (tee_local $12 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $10) - (get_local $13) - ) - (set_local $10 - (get_local $12) - ) - ) - ) - ) - (f64.store - (get_local $5) - (call $__ZNSt3__215__num_get_floatIeEET_PKcS3_Rj - (get_local $3) - (i32.load - (get_local $16) - ) - (get_local $4) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $14) - (get_local $10) - (get_local $4) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $7) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 224) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 198) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $17 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc - (get_local $11) - (get_local $3) - (get_local $16) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $18 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $15 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $13) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load8_s - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $8 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (get_local $8) - (br $__rjto$0) - (br $label$break$L13) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $15) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $15) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ - (i32.and - (tee_local $19 - (if i32 - (i32.eq - (tee_local $19 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $19) - ) - ) - ) - (i32.const 255) - ) - (get_local $17) - (get_local $3) - (get_local $15) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $13) - (get_local $14) - (get_local $16) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $14) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $13) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $14) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__227__num_get_unsigned_integralIyEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $15) - ) - (get_local $4) - (get_local $17) - ) - ) - (i32.store offset=4 - (get_local $5) - (get_global $tempRet0) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $13) - (get_local $9) - (get_local $4) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 224) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 198) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $17 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc - (get_local $11) - (get_local $3) - (get_local $16) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $18 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $15 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $13) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load8_s - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $8 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (get_local $8) - (br $__rjto$0) - (br $label$break$L13) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $15) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $15) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ - (i32.and - (tee_local $19 - (if i32 - (i32.eq - (tee_local $19 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $19) - ) - ) - ) - (i32.const 255) - ) - (get_local $17) - (get_local $3) - (get_local $15) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $13) - (get_local $14) - (get_local $16) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $14) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $13) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $14) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__225__num_get_signed_integralIxEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $15) - ) - (get_local $4) - (get_local $17) - ) - ) - (i32.store offset=4 - (get_local $5) - (get_global $tempRet0) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $13) - (get_local $9) - (get_local $4) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNSt3__29__num_putIwE23__widen_and_group_floatEPcS2_S2_PwRS3_S4_RKNS_6localeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (set_local $16 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $10 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19240) - ) - ) - (call_indirect $FUNCSIG$vii - (tee_local $12 - (get_local $16) - ) - (tee_local $13 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19248) - ) - ) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $13) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (block $label$break$L12 - (block $__rjti$0 - (if - (i32.gt_s - (i32.sub - (tee_local $18 - (get_local $2) - ) - (tee_local $6 - (block $switch i32 - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default - (i32.sub - (tee_local $6 - (i32.load8_s - (get_local $0) - ) - ) - (i32.const 43) - ) - ) - ) - (set_local $6 - (call_indirect $FUNCSIG$iii - (get_local $10) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $10) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $7) - (get_local $6) - ) - (br $switch - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - (if - (i32.eq - (i32.load8_s - (get_local $6) - ) - (i32.const 48) - ) - (block - (block $switch1 - (block $switch-default4 - (block $switch-case2 - (br_table $switch-case2 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-case2 $switch-default4 - (i32.sub - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - (i32.const 88) - ) - ) - ) - (br $switch1) - ) - (set_local $7 - (get_local $6) - ) - (br $__rjti$0) - ) - (set_local $8 - (call_indirect $FUNCSIG$iii - (get_local $10) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $10) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $9 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $7 - (call_indirect $FUNCSIG$iii - (get_local $10) - (i32.load8_s - (get_local $7) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $10) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $8) - (get_local $7) - ) - (set_local $7 - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 2) - ) - ) - ) - (loop $while-in - (br_if $label$break$L12 - (i32.ge_u - (get_local $7) - (get_local $2) - ) - ) - (br_if $label$break$L12 - (i32.eqz - (call $_isxdigit_l - (i32.load8_s - (get_local $7) - ) - (call $__ZNSt3__26__clocEv) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (block - (set_local $7 - (get_local $6) - ) - (br $__rjti$0) - ) - ) - (block - (set_local $7 - (get_local $6) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L12) - ) - (loop $while-in7 - (br_if $label$break$L12 - (i32.ge_u - (get_local $7) - (get_local $2) - ) - ) - (br_if $label$break$L12 - (i32.eqz - (call $_isdigit_l - (i32.load8_s - (get_local $7) - ) - (call $__ZNSt3__26__clocEv) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - (set_local $17 - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (block $label$break$L18 - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (tee_local $19 - (i32.add - (get_local $12) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $17) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (block - (block $label$break$L21 - (if - (i32.ne - (get_local $6) - (get_local $7) - ) - (block - (set_local $8 - (get_local $7) - ) - (set_local $9 - (get_local $6) - ) - (loop $while-in11 - (br_if $label$break$L21 - (i32.ge_u - (get_local $9) - (tee_local $8 - (i32.add - (get_local $8) - (i32.const -1) - ) - ) - ) - ) - (set_local $11 - (i32.load8_s - (get_local $9) - ) - ) - (i32.store8 - (get_local $9) - (i32.load8_s - (get_local $8) - ) - ) - (i32.store8 - (get_local $8) - (get_local $11) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - ) - (set_local $20 - (call_indirect $FUNCSIG$ii - (get_local $13) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $13) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $11 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $9 - (get_local $6) - ) - (loop $while-in13 - (if - (i32.lt_u - (get_local $9) - (get_local $7) - ) - (block - (if - (i32.and - (i32.gt_s - (tee_local $21 - (i32.load8_s - (i32.add - (if i32 - (tee_local $15 - (i32.lt_s - (tee_local $14 - (i32.load8_s - (get_local $19) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $12) - ) - (get_local $12) - ) - (get_local $8) - ) - ) - ) - (i32.const 0) - ) - (i32.eq - (get_local $11) - (get_local $21) - ) - ) - (block - (i32.store - (get_local $5) - (i32.add - (tee_local $11 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $11) - (get_local $20) - ) - (set_local $11 - (i32.const 0) - ) - (set_local $8 - (i32.add - (i32.lt_u - (get_local $8) - (i32.add - (if i32 - (get_local $15) - (i32.load - (get_local $17) - ) - (i32.and - (get_local $14) - (i32.const 255) - ) - ) - (i32.const -1) - ) - ) - (get_local $8) - ) - ) - ) - ) - (set_local $14 - (call_indirect $FUNCSIG$iii - (get_local $10) - (i32.load8_s - (get_local $9) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $10) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $15 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $15) - (get_local $14) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - (if - (i32.eq - (tee_local $9 - (i32.add - (get_local $3) - (i32.shl - (i32.sub - (get_local $6) - (get_local $0) - ) - (i32.const 2) - ) - ) - ) - (tee_local $11 - (i32.load - (get_local $5) - ) - ) - ) - (block - (set_local $8 - (get_local $10) - ) - (set_local $6 - (get_local $9) - ) - ) - (block - (set_local $6 - (get_local $11) - ) - (loop $while-in15 - (if - (i32.ge_u - (get_local $9) - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -4) - ) - ) - ) - (block - (set_local $8 - (get_local $10) - ) - (set_local $6 - (get_local $11) - ) - (br $label$break$L18) - ) - (block - (set_local $8 - (i32.load - (get_local $9) - ) - ) - (i32.store - (get_local $9) - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $6) - (get_local $8) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (br $while-in15) - ) - ) - ) - ) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $10) - (get_local $6) - (get_local $7) - (i32.load - (get_local $5) - ) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $10) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $5) - (tee_local $6 - (i32.add - (i32.load - (get_local $5) - ) - (i32.shl - (i32.sub - (get_local $7) - (get_local $6) - ) - (i32.const 2) - ) - ) - ) - ) - (set_local $8 - (get_local $10) - ) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in17 - (if - (i32.lt_u - (get_local $7) - (get_local $2) - ) - (block - (br_if $__rjti$1 - (i32.eq - (tee_local $6 - (i32.load8_s - (get_local $7) - ) - ) - (i32.const 46) - ) - ) - (set_local $9 - (call_indirect $FUNCSIG$iii - (get_local $10) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $8) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (tee_local $6 - (i32.add - (tee_local $11 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $11) - (get_local $9) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in17) - ) - ) - ) - (br $__rjto$1) - ) - (set_local $8 - (call_indirect $FUNCSIG$ii - (get_local $13) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $13) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $5) - (tee_local $6 - (i32.add - (tee_local $9 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $10) - (get_local $7) - (get_local $2) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $10) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $5) - (tee_local $5 - (i32.add - (i32.load - (get_local $5) - ) - (i32.shl - (i32.sub - (get_local $18) - (get_local $7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $4) - (if i32 - (i32.eq - (get_local $1) - (get_local $2) - ) - (get_local $5) - (i32.add - (get_local $3) - (i32.shl - (i32.sub - (get_local $1) - (get_local $0) - ) - (i32.const 2) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (set_global $STACKTOP - (get_local $16) - ) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 224) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 198) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $17 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc - (get_local $11) - (get_local $3) - (get_local $16) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $18 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $15 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $13) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load8_s - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $8 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (get_local $8) - (br $__rjto$0) - (br $label$break$L13) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $15) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $15) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ - (i32.and - (tee_local $19 - (if i32 - (i32.eq - (tee_local $19 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $19) - ) - ) - ) - (i32.const 255) - ) - (get_local $17) - (get_local $3) - (get_local $15) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $13) - (get_local $14) - (get_local $16) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $14) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $13) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $14) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store16 - (get_local $5) - (call $__ZNSt3__227__num_get_unsigned_integralItEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $15) - ) - (get_local $4) - (get_local $17) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $13) - (get_local $9) - (get_local $4) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 224) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 198) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $17 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc - (get_local $11) - (get_local $3) - (get_local $16) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $18 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $15 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $13) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load8_s - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $8 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (get_local $8) - (br $__rjto$0) - (br $label$break$L13) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $15) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $15) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ - (i32.and - (tee_local $19 - (if i32 - (i32.eq - (tee_local $19 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $19) - ) - ) - ) - (i32.const 255) - ) - (get_local $17) - (get_local $3) - (get_local $15) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $13) - (get_local $14) - (get_local $16) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $14) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $13) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $14) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__227__num_get_unsigned_integralImEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $15) - ) - (get_local $4) - (get_local $17) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $13) - (get_local $9) - (get_local $4) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 224) - ) - ) - (set_local $16 - (i32.add - (get_local $10) - (i32.const 198) - ) - ) - (set_local $6 - (i32.add - (get_local $10) - (i32.const 196) - ) - ) - (set_local $11 - (i32.add - (get_local $10) - (i32.const 184) - ) - ) - (set_local $7 - (i32.add - (get_local $10) - (i32.const 172) - ) - ) - (set_local $17 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 74) - ) - ) - ) - (br $switch - (i32.const 8) - ) - ) - (br $switch - (i32.const 16) - ) - ) - (br $switch - (i32.const 0) - ) - ) - (i32.const 10) - ) - ) - (call $__ZNSt3__29__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc - (get_local $11) - (get_local $3) - (get_local $16) - (get_local $6) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $18 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $10) - (i32.const 4) - ) - ) - (set_local $12 - (get_local $10) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $15 - (i32.add - (get_local $10) - (i32.const 168) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $13) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $21 - (i32.load8_s - (get_local $6) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L13 - (block $label$break$L13 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $8 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $6 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (get_local $8) - (br $__rjto$0) - (br $label$break$L13) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L13 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $6 - (i32.const 0) - ) - (br $label$break$L13) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $15) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $20) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $7) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $18) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $15) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $9) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L13 - (call $__ZNSt3__29__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ - (i32.and - (tee_local $19 - (if i32 - (i32.eq - (tee_local $19 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $19) - ) - ) - ) - (i32.const 255) - ) - (get_local $17) - (get_local $3) - (get_local $15) - (get_local $12) - (get_local $21) - (get_local $11) - (get_local $13) - (get_local $14) - (get_local $16) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.load - (get_local $22) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L13) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $label$continue$L13) - ) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $14) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $11) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $9) - (get_local $13) - ) - (i32.const 160) - ) - (block - (set_local $8 - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $14) - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $9) - (get_local $8) - ) - (set_local $9 - (get_local $12) - ) - ) - ) - ) - (i32.store - (get_local $5) - (call $__ZNSt3__225__num_get_signed_integralIlEET_PKcS3_Rji - (get_local $3) - (i32.load - (get_local $15) - ) - (get_local $4) - (get_local $17) - ) - ) - (call $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj - (get_local $11) - (get_local $13) - (get_local $9) - (get_local $4) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 240) - ) - ) - (set_local $13 - (i32.add - (get_local $9) - (i32.const 208) - ) - ) - (set_local $0 - (i32.add - (get_local $9) - (i32.const 192) - ) - ) - (set_local $6 - (i32.add - (get_local $9) - (i32.const 180) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $9) - (i32.const 196) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $10) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $10) - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $7) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $10) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $0) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $0 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $0) - (i32.const 19208) - ) - ) - (i32.const 13937) - (i32.const 13963) - (get_local $13) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $0) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $6) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $6) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (set_local $14 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $15 - (get_local $9) - ) - (set_local $16 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - (set_local $17 - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - (set_local $18 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $6) - (tee_local $0 - (if i32 - (i32.lt_s - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $14) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $9) - (i32.const 176) - ) - ) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - ) - (i32.store - (get_local $17) - (get_local $16) - ) - (i32.store - (get_local $18) - (i32.const 0) - ) - (set_local $21 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $label$continue$L12 - (block $label$break$L12 - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $8 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $7 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (get_local $8) - (br $__rjto$0) - (br $label$break$L12) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L12 - (i32.eqz - (get_local $8) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $8) - (block - (set_local $7 - (i32.const 0) - ) - (br $label$break$L12) - ) - (set_local $7 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (i32.load - (get_local $12) - ) - (i32.add - (get_local $3) - (tee_local $8 - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (get_local $11) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $21) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $6) - (i32.shl - (get_local $8) - (i32.const 1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $6) - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.add - (i32.and - (i32.load - (get_local $14) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $12) - (i32.add - (tee_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - (get_local $8) - ) - ) - ) - ) - (br_if $label$break$L12 - (call $__ZNSt3__29__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ - (i32.and - (tee_local $20 - (if i32 - (i32.eq - (tee_local $20 - (i32.load - (tee_local $19 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $20) - ) - ) - ) - (i32.const 255) - ) - (i32.const 16) - (get_local $3) - (get_local $12) - (get_local $18) - (i32.const 0) - (get_local $10) - (get_local $16) - (get_local $17) - (get_local $13) - ) - ) - (if - (i32.eq - (tee_local $7 - (i32.load - (get_local $19) - ) - ) - (i32.load - (get_local $8) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L12) - ) - (block - (i32.store - (get_local $19) - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $label$continue$L12) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc - (get_local $6) - (i32.sub - (i32.load - (get_local $12) - ) - (get_local $3) - ) - (i32.const 0) - ) - (set_local $3 - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $11) - ) - (i32.const 0) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - (set_local $8 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (get_local $15) - (get_local $5) - ) - (if - (i32.ne - (call $__ZNSt3__217__libcpp_sscanf_lEPKcP15__locale_structS1_z - (get_local $3) - (get_local $8) - (i32.const 13972) - (get_local $15) - ) - (i32.const 1) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - ) - (if - (get_local $0) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $7) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $0) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $6) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $10) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $0) - ) - (func $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (set_local $7 - (if i32 - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $5 - (if i32 - (i32.eq - (tee_local $5 - (i32.load offset=12 - (get_local $6) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $5) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $label$break$L22 - (block $__rjti$3 - (block $__rjti$2 - (if - (tee_local $5 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $5) - ) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - (if - (get_local $7) - (br $__rjti$3) - (br $__rjti$2) - ) - ) - ) - (if - (i32.eqz - (get_local $7) - ) - (block - (set_local $5 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - ) - (i32.store - (get_local $2) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 6) - ) - ) - (set_local $3 - (i32.const 0) - ) - (br $label$break$L22) - ) - (if - (i32.eqz - (call_indirect $FUNCSIG$iiii - (get_local $3) - (i32.const 2048) - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $3) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (block - (i32.store - (get_local $2) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 4) - ) - ) - (set_local $3 - (i32.const 0) - ) - (br $label$break$L22) - ) - ) - (set_local $9 - (i32.shr_s - (i32.shl - (call_indirect $FUNCSIG$iiii - (get_local $3) - (get_local $6) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $3) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (set_local $5 - (if i32 - (i32.eq - (tee_local $6 - (i32.load - (tee_local $7 - (i32.add - (tee_local $8 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (block i32 - (drop - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $6 - (get_local $4) - ) - (set_local $4 - (get_local $5) - ) - (set_local $7 - (get_local $5) - ) - (get_local $9) - ) - (block i32 - (i32.store - (get_local $7) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $6 - (get_local $4) - ) - (set_local $4 - (get_local $5) - ) - (set_local $7 - (get_local $5) - ) - (get_local $9) - ) - ) - ) - (loop $while-in - (block $while-out - (set_local $9 - (i32.add - (get_local $5) - (i32.const -48) - ) - ) - (set_local $10 - (if i32 - (tee_local $8 - (i32.load - (get_local $0) - ) - ) - (if i32 - (i32.eq - (tee_local $5 - (if i32 - (i32.eq - (tee_local $5 - (i32.load offset=12 - (get_local $8) - ) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $5) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (set_local $5 - (if i32 - (get_local $7) - (if i32 - (i32.eq - (tee_local $5 - (if i32 - (i32.eq - (tee_local $5 - (i32.load offset=12 - (get_local $7) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $5) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 1) - ) - (i32.const 0) - ) - (block i32 - (set_local $7 - (get_local $4) - ) - (set_local $8 - (i32.eqz - (get_local $4) - ) - ) - (get_local $4) - ) - ) - (block i32 - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 1) - ) - (get_local $4) - ) - ) - ) - (set_local $4 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eqz - (i32.and - (i32.gt_s - (get_local $6) - (i32.const 1) - ) - (i32.xor - (get_local $10) - (get_local $8) - ) - ) - ) - (block - (set_local $3 - (get_local $9) - ) - (br $while-out) - ) - ) - (if - (i32.eqz - (call_indirect $FUNCSIG$iiii - (get_local $3) - (i32.const 2048) - (tee_local $4 - (if i32 - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $4) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $8) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $3) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (block - (set_local $3 - (get_local $9) - ) - (br $label$break$L22) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $9 - (i32.add - (i32.shr_s - (i32.shl - (call_indirect $FUNCSIG$iiii - (get_local $3) - (get_local $4) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $3) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.mul - (get_local $9) - (i32.const 10) - ) - ) - ) - (if - (i32.eq - (tee_local $4 - (i32.load - (tee_local $8 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $4 - (get_local $5) - ) - (set_local $5 - (get_local $9) - ) - (br $while-in) - ) - (block - (i32.store - (get_local $8) - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (set_local $4 - (get_local $5) - ) - (set_local $5 - (get_local $9) - ) - (br $while-in) - ) - ) - ) - ) - (set_local $4 - (if i32 - (get_local $4) - (if i32 - (i32.eq - (tee_local $4 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $4) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $5) - ) - ) - (if - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $5) - ) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $0) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L22 - (get_local $4) - ) - ) - (br $__rjto$0) - ) - (br_if $label$break$L22 - (i32.eqz - (get_local $4) - ) - ) - ) - (i32.store - (get_local $2) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 2) - ) - ) - ) - (get_local $3) - ) - (func $__ZNSt3__29__num_putIcE23__widen_and_group_floatEPcS2_S2_S2_RS2_S3_RKNS_6localeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (set_local $15 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19208) - ) - ) - (call_indirect $FUNCSIG$vii - (tee_local $12 - (get_local $15) - ) - (tee_local $13 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19220) - ) - ) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $13) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (block $label$break$L12 - (block $__rjti$0 - (if - (i32.gt_s - (i32.sub - (tee_local $18 - (get_local $2) - ) - (tee_local $6 - (block $switch i32 - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default - (i32.sub - (tee_local $6 - (i32.load8_s - (get_local $0) - ) - ) - (i32.const 43) - ) - ) - ) - (set_local $6 - (call_indirect $FUNCSIG$iii - (get_local $9) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $7) - (get_local $6) - ) - (br $switch - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - (if - (i32.eq - (i32.load8_s - (get_local $6) - ) - (i32.const 48) - ) - (block - (block $switch1 - (block $switch-default4 - (block $switch-case2 - (br_table $switch-case2 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-case2 $switch-default4 - (i32.sub - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - (i32.const 88) - ) - ) - ) - (br $switch1) - ) - (set_local $7 - (get_local $6) - ) - (br $__rjti$0) - ) - (set_local $8 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $10 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $10) - (get_local $8) - ) - (set_local $7 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.load8_s - (get_local $7) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $8) - (get_local $7) - ) - (set_local $7 - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 2) - ) - ) - ) - (loop $while-in - (br_if $label$break$L12 - (i32.ge_u - (get_local $7) - (get_local $2) - ) - ) - (br_if $label$break$L12 - (i32.eqz - (call $_isxdigit_l - (i32.load8_s - (get_local $7) - ) - (call $__ZNSt3__26__clocEv) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (block - (set_local $7 - (get_local $6) - ) - (br $__rjti$0) - ) - ) - (block - (set_local $7 - (get_local $6) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L12) - ) - (loop $while-in7 - (br_if $label$break$L12 - (i32.ge_u - (get_local $7) - (get_local $2) - ) - ) - (br_if $label$break$L12 - (i32.eqz - (call $_isdigit_l - (i32.load8_s - (get_local $7) - ) - (call $__ZNSt3__26__clocEv) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - (set_local $16 - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (block $label$break$L18 - (if - (if i32 - (i32.lt_s - (tee_local $8 - (i32.load8_s - (tee_local $17 - (i32.add - (get_local $12) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $16) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - (block - (block $label$break$L21 - (if - (i32.ne - (get_local $6) - (get_local $7) - ) - (block - (set_local $8 - (get_local $7) - ) - (set_local $10 - (get_local $6) - ) - (loop $while-in11 - (br_if $label$break$L21 - (i32.ge_u - (get_local $10) - (tee_local $8 - (i32.add - (get_local $8) - (i32.const -1) - ) - ) - ) - ) - (set_local $11 - (i32.load8_s - (get_local $10) - ) - ) - (i32.store8 - (get_local $10) - (i32.load8_s - (get_local $8) - ) - ) - (i32.store8 - (get_local $8) - (get_local $11) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (br $while-in11) - ) - ) - ) - ) - (set_local $19 - (call_indirect $FUNCSIG$ii - (get_local $13) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $13) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $11 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $10 - (get_local $6) - ) - (loop $while-in13 - (if - (i32.lt_u - (get_local $10) - (get_local $7) - ) - (block - (if - (i32.and - (i32.gt_s - (tee_local $14 - (i32.load8_s - (i32.add - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $17) - ) - (i32.const 0) - ) - (i32.load - (get_local $12) - ) - (get_local $12) - ) - (get_local $8) - ) - ) - ) - (i32.const 0) - ) - (i32.eq - (get_local $11) - (get_local $14) - ) - ) - (block - (i32.store - (get_local $5) - (i32.add - (tee_local $11 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $11) - (get_local $19) - ) - (set_local $11 - (i32.const 0) - ) - (set_local $8 - (i32.add - (i32.lt_u - (get_local $8) - (i32.add - (if i32 - (i32.lt_s - (tee_local $14 - (i32.load8_s - (get_local $17) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $16) - ) - (i32.and - (get_local $14) - (i32.const 255) - ) - ) - (i32.const -1) - ) - ) - (get_local $8) - ) - ) - ) - ) - (set_local $14 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.load8_s - (get_local $10) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $20 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $20) - (get_local $14) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - (if - (i32.eq - (tee_local $8 - (i32.add - (get_local $3) - (i32.sub - (get_local $6) - (get_local $0) - ) - ) - ) - (tee_local $6 - (i32.load - (get_local $5) - ) - ) - ) - (set_local $6 - (get_local $9) - ) - (loop $while-in15 - (if - (i32.ge_u - (get_local $8) - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - ) - (block - (set_local $6 - (get_local $9) - ) - (br $label$break$L18) - ) - (block - (set_local $10 - (i32.load8_s - (get_local $8) - ) - ) - (i32.store8 - (get_local $8) - (i32.load8_s - (get_local $6) - ) - ) - (i32.store8 - (get_local $6) - (get_local $10) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in15) - ) - ) - ) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $9) - (get_local $6) - (get_local $7) - (i32.load - (get_local $5) - ) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $9) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (i32.sub - (get_local $7) - (get_local $6) - ) - ) - ) - (set_local $6 - (get_local $9) - ) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in17 - (if - (i32.lt_u - (get_local $7) - (get_local $2) - ) - (block - (br_if $__rjti$1 - (i32.eq - (tee_local $8 - (i32.load8_s - (get_local $7) - ) - ) - (i32.const 46) - ) - ) - (set_local $8 - (call_indirect $FUNCSIG$iii - (get_local $9) - (get_local $8) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $6) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $10 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $10) - (get_local $8) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in17) - ) - ) - ) - (br $__rjto$1) - ) - (set_local $6 - (call_indirect $FUNCSIG$ii - (get_local $13) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $13) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $8) - (get_local $6) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $9) - (get_local $7) - (get_local $2) - (i32.load - (get_local $5) - ) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $9) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $5) - (tee_local $5 - (i32.add - (i32.load - (get_local $5) - ) - (i32.sub - (get_local $18) - (get_local $7) - ) - ) - ) - ) - (i32.store - (get_local $4) - (if i32 - (i32.eq - (get_local $1) - (get_local $2) - ) - (get_local $5) - (i32.add - (get_local $3) - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (set_global $STACKTOP - (get_local $15) - ) - ) - (func $__ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (block $label$break$L1 - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=4 - (get_local $1) - ) - (get_local $2) - ) - (if - (i32.ne - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 28) - ) - ) - ) - (i32.const 1) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - ) - ) - (block - (if - (i32.ne - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (block - (set_local $5 - (i32.load offset=12 - (get_local $0) - ) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib - (i32.add - (get_local $0) - (i32.const 16) - ) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - ) - (br_if $label$break$L1 - (i32.le_s - (get_local $5) - (i32.const 1) - ) - ) - (set_local $7 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (get_local $5) - (i32.const 3) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (if - (i32.eqz - (i32.and - (tee_local $6 - (i32.load offset=8 - (get_local $0) - ) - ) - (i32.const 2) - ) - ) - (if - (i32.ne - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 36) - ) - ) - ) - (i32.const 1) - ) - (block - (if - (i32.eqz - (i32.and - (get_local $6) - (i32.const 1) - ) - ) - (block - (set_local $6 - (i32.add - (get_local $1) - (i32.const 54) - ) - ) - (loop $while-in - (br_if $label$break$L1 - (i32.load8_s - (get_local $6) - ) - ) - (br_if $label$break$L1 - (i32.eq - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib - (get_local $5) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - ) - (br_if $while-in - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 8) - ) - ) - (get_local $7) - ) - ) - (br $label$break$L1) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $1) - (i32.const 24) - ) - ) - (set_local $8 - (i32.add - (get_local $1) - (i32.const 54) - ) - ) - (loop $while-in1 - (br_if $label$break$L1 - (i32.load8_s - (get_local $8) - ) - ) - (if - (i32.eq - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - (br_if $label$break$L1 - (i32.eq - (i32.load - (get_local $6) - ) - (i32.const 1) - ) - ) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib - (get_local $5) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - ) - (br_if $while-in1 - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 8) - ) - ) - (get_local $7) - ) - ) - (br $label$break$L1) - ) - ) - ) - ) - (set_local $0 - (i32.add - (get_local $1) - (i32.const 54) - ) - ) - (loop $while-in3 - (br_if $label$break$L1 - (i32.load8_s - (get_local $0) - ) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib - (get_local $5) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - ) - (br_if $while-in3 - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 8) - ) - ) - (get_local $7) - ) - ) - (br $label$break$L1) - ) - ) - ) - (if - (i32.ne - (i32.load offset=16 - (get_local $1) - ) - (get_local $2) - ) - (if - (i32.ne - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - (get_local $2) - ) - (block - (i32.store offset=32 - (get_local $1) - (get_local $3) - ) - (br_if $label$break$L1 - (i32.eq - (i32.load - (tee_local $12 - (i32.add - (get_local $1) - (i32.const 44) - ) - ) - ) - (i32.const 4) - ) - ) - (set_local $13 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.load offset=12 - (get_local $0) - ) - (i32.const 3) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $1) - (i32.const 52) - ) - ) - (set_local $6 - (i32.add - (get_local $1) - (i32.const 53) - ) - ) - (set_local $8 - (i32.add - (get_local $1) - (i32.const 54) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $10 - (i32.add - (get_local $1) - (i32.const 24) - ) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.store - (get_local $12) - (tee_local $0 - (block $__rjto$1 i32 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L34 - (br_if $__rjti$0 - (i32.ge_u - (get_local $0) - (get_local $13) - ) - ) - (i32.store8 - (get_local $7) - (i32.const 0) - ) - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $2) - (i32.const 1) - (get_local $4) - ) - (br_if $__rjti$0 - (i32.load8_s - (get_local $8) - ) - ) - (block $do-once - (if - (i32.load8_s - (get_local $6) - ) - (block - (if - (i32.eqz - (i32.load8_s - (get_local $7) - ) - ) - (if - (i32.and - (i32.load - (get_local $9) - ) - (i32.const 1) - ) - (block - (set_local $5 - (i32.const 1) - ) - (br $do-once) - ) - (block - (set_local $5 - (i32.const 1) - ) - (br $__rjti$0) - ) - ) - ) - (br_if $__rjti$1 - (i32.eq - (i32.load - (get_local $10) - ) - (i32.const 1) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (i32.and - (i32.load - (get_local $9) - ) - (i32.const 2) - ) - ) - ) - (set_local $3 - (i32.const 1) - ) - (set_local $5 - (i32.const 1) - ) - ) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (br $label$continue$L34) - ) - ) - (if - (i32.eqz - (get_local $3) - ) - (block - (i32.store - (get_local $11) - (get_local $2) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 40) - ) - ) - (i32.add - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - (if - (i32.eq - (i32.load offset=36 - (get_local $1) - ) - (i32.const 1) - ) - (if - (i32.eq - (i32.load - (get_local $10) - ) - (i32.const 2) - ) - (block - (i32.store8 - (get_local $8) - (i32.const 1) - ) - (br_if $__rjti$1 - (get_local $5) - ) - (br $__rjto$1 - (i32.const 4) - ) - ) - ) - ) - ) - ) - (br_if $__rjti$1 - (get_local $5) - ) - (br $__rjto$1 - (i32.const 4) - ) - ) - (i32.const 3) - ) - ) - ) - (br $label$break$L1) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (i32.const 1) - ) - (i32.store offset=32 - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (func $_try_realloc_chunk (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (set_local $6 - (i32.add - (get_local $0) - (tee_local $3 - (i32.and - (tee_local $8 - (i32.load - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.and - (i32.ne - (tee_local $7 - (i32.and - (get_local $8) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (i32.ge_u - (get_local $0) - (tee_local $11 - (i32.load - (i32.const 17680) - ) - ) - ) - ) - (i32.lt_u - (get_local $0) - (get_local $6) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (tee_local $5 - (i32.load offset=4 - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.eqz - (get_local $7) - ) - (block - (if - (i32.lt_u - (get_local $1) - (i32.const 256) - ) - (return - (i32.const 0) - ) - ) - (if - (i32.ge_u - (get_local $3) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (if - (i32.le_u - (i32.sub - (get_local $3) - (get_local $1) - ) - (i32.shl - (i32.load - (i32.const 18144) - ) - (i32.const 1) - ) - ) - (return - (get_local $0) - ) - ) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (i32.ge_u - (get_local $3) - (get_local $1) - ) - (block - (if - (i32.le_u - (tee_local $2 - (i32.sub - (get_local $3) - (get_local $1) - ) - ) - (i32.const 15) - ) - (return - (get_local $0) - ) - ) - (i32.store - (get_local $9) - (i32.or - (i32.or - (i32.and - (get_local $8) - (i32.const 1) - ) - (get_local $1) - ) - (i32.const 2) - ) - ) - (i32.store offset=4 - (tee_local $1 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (i32.or - (get_local $2) - (i32.const 3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (i32.add - (get_local $1) - (get_local $2) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 1) - ) - ) - (call $_dispose_chunk - (get_local $1) - (get_local $2) - ) - (return - (get_local $0) - ) - ) - ) - (if - (i32.eq - (get_local $6) - (i32.load - (i32.const 17688) - ) - ) - (block - (if - (i32.le_u - (tee_local $2 - (i32.add - (i32.load - (i32.const 17676) - ) - (get_local $3) - ) - ) - (get_local $1) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (get_local $9) - (i32.or - (i32.or - (i32.and - (get_local $8) - (i32.const 1) - ) - (get_local $1) - ) - (i32.const 2) - ) - ) - (i32.store offset=4 - (tee_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (i32.or - (tee_local $1 - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.const 17688) - (get_local $3) - ) - (i32.store - (i32.const 17676) - (get_local $1) - ) - (return - (get_local $0) - ) - ) - ) - (if - (i32.eq - (get_local $6) - (i32.load - (i32.const 17684) - ) - ) - (block - (if - (i32.lt_u - (tee_local $3 - (i32.add - (i32.load - (i32.const 17672) - ) - (get_local $3) - ) - ) - (get_local $1) - ) - (return - (i32.const 0) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $3) - (get_local $1) - ) - ) - (i32.const 15) - ) - (block - (set_local $4 - (i32.add - (tee_local $3 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $9) - (i32.or - (i32.or - (i32.and - (get_local $8) - (i32.const 1) - ) - (get_local $1) - ) - (i32.const 2) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (i32.and - (i32.load - (get_local $1) - ) - (i32.const -2) - ) - ) - ) - (block - (i32.store - (get_local $9) - (i32.or - (i32.or - (i32.and - (get_local $8) - (i32.const 1) - ) - (get_local $3) - ) - (i32.const 2) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (i32.add - (get_local $0) - (get_local $3) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $1) - ) - (i32.const 1) - ) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - ) - ) - (i32.store - (i32.const 17672) - (get_local $2) - ) - (i32.store - (i32.const 17684) - (get_local $3) - ) - (return - (get_local $0) - ) - ) - ) - (if - (i32.and - (get_local $5) - (i32.const 2) - ) - (return - (i32.const 0) - ) - ) - (if - (i32.lt_u - (tee_local $13 - (i32.add - (i32.and - (get_local $5) - (i32.const -8) - ) - (get_local $3) - ) - ) - (get_local $1) - ) - (return - (i32.const 0) - ) - ) - (set_local $12 - (i32.sub - (get_local $13) - (get_local $1) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $5) - (i32.const 3) - ) - ) - (block $do-once - (if - (i32.lt_u - (get_local $5) - (i32.const 256) - ) - (block - (set_local $4 - (i32.load offset=12 - (get_local $6) - ) - ) - (if - (i32.ne - (tee_local $5 - (i32.load offset=8 - (get_local $6) - ) - ) - (tee_local $7 - (i32.add - (i32.shl - (get_local $3) - (i32.const 3) - ) - (i32.const 17704) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $5) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $5) - ) - (get_local $6) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $5) - ) - (block - (i32.store - (i32.const 17664) - (i32.and - (i32.load - (i32.const 17664) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $7) - ) - (set_local $2 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $4) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (get_local $6) - ) - (set_local $2 - (get_local $3) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $5) - (get_local $4) - ) - (i32.store - (get_local $2) - (get_local $5) - ) - ) - (block - (set_local $10 - (i32.load offset=24 - (get_local $6) - ) - ) - (block $do-once0 - (if - (i32.eq - (tee_local $2 - (i32.load offset=12 - (get_local $6) - ) - ) - (get_local $6) - ) - (block - (if - (tee_local $2 - (i32.load - (tee_local $5 - (i32.add - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (set_local $3 - (get_local $5) - ) - (if - (i32.eqz - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - ) - (block - (set_local $4 - (i32.const 0) - ) - (br $do-once0) - ) - ) - ) - (loop $while-in - (if - (tee_local $7 - (i32.load - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $7) - ) - (set_local $3 - (get_local $5) - ) - (br $while-in) - ) - ) - (if - (tee_local $7 - (i32.load - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $7) - ) - (set_local $3 - (get_local $5) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (get_local $3) - (get_local $11) - ) - (call $_abort) - (block - (i32.store - (get_local $3) - (i32.const 0) - ) - (set_local $4 - (get_local $2) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $3 - (i32.load offset=8 - (get_local $6) - ) - ) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - ) - (get_local $6) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $7 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - (get_local $6) - ) - (block - (i32.store - (get_local $5) - (get_local $2) - ) - (i32.store - (get_local $7) - (get_local $3) - ) - (set_local $4 - (get_local $2) - ) - ) - (call $_abort) - ) - ) - ) - ) - (if - (get_local $10) - (block - (if - (i32.eq - (get_local $6) - (i32.load - (tee_local $3 - (i32.add - (i32.shl - (tee_local $2 - (i32.load offset=28 - (get_local $6) - ) - ) - (i32.const 2) - ) - (i32.const 17968) - ) - ) - ) - ) - (block - (i32.store - (get_local $3) - (get_local $4) - ) - (if - (i32.eqz - (get_local $4) - ) - (block - (i32.store - (i32.const 17668) - (i32.and - (i32.load - (i32.const 17668) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $2) - ) - (i32.const -1) - ) - ) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $10) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $2 - (i32.add - (get_local $10) - (i32.const 16) - ) - ) - ) - (get_local $6) - ) - (i32.store - (get_local $2) - (get_local $4) - ) - (i32.store offset=20 - (get_local $10) - (get_local $4) - ) - ) - (br_if $do-once - (i32.eqz - (get_local $4) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $4) - (tee_local $3 - (i32.load - (i32.const 17680) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $4) - (get_local $10) - ) - (if - (tee_local $2 - (i32.load - (tee_local $5 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $2) - (get_local $3) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $4) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $4) - ) - ) - ) - ) - (if - (tee_local $2 - (i32.load offset=4 - (get_local $5) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.load - (i32.const 17680) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $4) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if i32 - (i32.lt_u - (get_local $12) - (i32.const 16) - ) - (block i32 - (i32.store - (get_local $9) - (i32.or - (i32.or - (get_local $13) - (i32.and - (get_local $8) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (i32.add - (get_local $0) - (get_local $13) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $1) - ) - (i32.const 1) - ) - ) - (get_local $0) - ) - (block i32 - (i32.store - (get_local $9) - (i32.or - (i32.or - (i32.and - (get_local $8) - (i32.const 1) - ) - (get_local $1) - ) - (i32.const 2) - ) - ) - (i32.store offset=4 - (tee_local $1 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (i32.or - (get_local $12) - (i32.const 3) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (i32.add - (get_local $1) - (get_local $12) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 1) - ) - ) - (call $_dispose_chunk - (get_local $1) - (get_local $12) - ) - (get_local $0) - ) - ) - ) - (func $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (if - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (set_local $6 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $6 - (i32.const 0) - ) - ) - (set_local $6 - (i32.eqz - (get_local $6) - ) - ) - (tee_local $0 - (block $label$break$L16 i32 - (block $__rjti$3 - (block $__rjti$2 - (block $__rjti$1 - (if - (tee_local $5 - (i32.load - (get_local $1) - ) - ) - (block - (if - (i32.eq - (i32.load offset=12 - (get_local $5) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $6) - ) - ) - (br $__rjti$3) - ) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $5 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - ) - (i32.store - (get_local $2) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 6) - ) - ) - (br $label$break$L16 - (i32.const 0) - ) - ) - (if - (i32.gt_s - (i32.shr_s - (i32.shl - (tee_local $6 - (i32.and - (tee_local $8 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (tee_local $8 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $6) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - (if - (i32.and - (i32.load16_s - (i32.add - (i32.load - (tee_local $11 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $8) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 2048) - ) - (block - (set_local $8 - (i32.shr_s - (i32.shl - (call_indirect $FUNCSIG$iiii - (get_local $3) - (get_local $6) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (set_local $4 - (if i32 - (i32.eq - (tee_local $6 - (i32.load - (tee_local $9 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (block i32 - (drop - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $9 - (get_local $4) - ) - (get_local $5) - ) - (block i32 - (i32.store - (get_local $9) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (set_local $9 - (get_local $4) - ) - (get_local $5) - ) - ) - ) - (loop $while-in - (block $while-out - (if - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $7) - ) - (i32.load offset=16 - (get_local $7) - ) - ) - (set_local $7 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $7) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $7) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $7 - (i32.const 0) - ) - ) - (set_local $6 - (if i32 - (get_local $5) - (if i32 - (i32.eq - (i32.load offset=12 - (get_local $5) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $5 - (get_local $4) - ) - (get_local $4) - ) - ) - (get_local $4) - ) - (block i32 - (set_local $5 - (i32.const 0) - ) - (get_local $4) - ) - ) - ) - (set_local $4 - (i32.add - (get_local $8) - (i32.const -48) - ) - ) - (set_local $8 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eqz - (i32.and - (i32.gt_s - (get_local $9) - (i32.const 1) - ) - (i32.xor - (i32.eqz - (get_local $7) - ) - (i32.eqz - (get_local $5) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $8) - ) - (set_local $3 - (get_local $4) - ) - (br $while-out) - ) - ) - (drop - (br_if $label$break$L16 - (get_local $4) - (i32.le_s - (i32.shr_s - (i32.shl - (tee_local $8 - (i32.and - (tee_local $7 - (if i32 - (i32.eq - (tee_local $7 - (i32.load offset=12 - (get_local $8) - ) - ) - (i32.load offset=16 - (get_local $8) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $8) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $7) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - ) - (drop - (br_if $label$break$L16 - (get_local $4) - (i32.eqz - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $11) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 2048) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (set_local $8 - (i32.add - (i32.shr_s - (i32.shl - (call_indirect $FUNCSIG$iiii - (get_local $3) - (get_local $8) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.mul - (get_local $4) - (i32.const 10) - ) - ) - ) - (if - (i32.eq - (tee_local $4 - (i32.load - (tee_local $7 - (i32.add - (tee_local $10 - (i32.load - (get_local $0) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $10) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $4 - (get_local $6) - ) - (br $while-in) - ) - (block - (i32.store - (get_local $7) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (set_local $4 - (get_local $6) - ) - (br $while-in) - ) - ) - ) - ) - (if - (get_local $5) - (if - (i32.eq - (i32.load offset=12 - (get_local $5) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (set_local $5 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $5 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $5) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $6) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $6) - ) - (i32.load offset=16 - (get_local $6) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $6) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $6) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - ) - (drop - (br_if $label$break$L16 - (get_local $3) - (get_local $0) - ) - ) - (br $__rjto$0) - ) - (drop - (br_if $label$break$L16 - (get_local $3) - (i32.eqz - (get_local $0) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 2) - ) - ) - (br $label$break$L16 - (get_local $3) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 4) - ) - ) - (i32.const 0) - ) - ) - ) - (func $_fmod (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (f64.store - (get_global $tempDoublePtr) - (get_local $0) - ) - (set_local $7 - (i32.load - (get_global $tempDoublePtr) - ) - ) - (set_local $8 - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - ) - (f64.store - (get_global $tempDoublePtr) - (get_local $1) - ) - (set_local $9 - (i32.load - (get_global $tempDoublePtr) - ) - ) - (set_local $5 - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - ) - (set_local $4 - (i32.and - (call $_bitshift64Lshr - (get_local $7) - (get_local $8) - (i32.const 52) - ) - (i32.const 2047) - ) - ) - (set_local $11 - (i32.and - (call $_bitshift64Lshr - (get_local $9) - (get_local $5) - (i32.const 52) - ) - (i32.const 2047) - ) - ) - (set_local $12 - (i32.and - (get_local $8) - (i32.const -2147483648) - ) - ) - (tee_local $0 - (block $__rjto$0 f64 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.and - (i32.eqz - (tee_local $10 - (call $_bitshift64Shl - (get_local $9) - (get_local $5) - (i32.const 1) - ) - ) - ) - (i32.eqz - (tee_local $6 - (get_global $tempRet0) - ) - ) - ) - ) - (f64.store - (get_global $tempDoublePtr) - (f64.abs - (get_local $1) - ) - ) - (br_if $__rjti$0 - (i32.or - (i32.or - (i32.gt_u - (tee_local $2 - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - ) - (i32.const 2146435072) - ) - (i32.and - (i32.eq - (get_local $2) - (i32.const 2146435072) - ) - (i32.gt_u - (i32.load - (get_global $tempDoublePtr) - ) - (i32.const 0) - ) - ) - ) - (i32.eq - (get_local $4) - (i32.const 2047) - ) - ) - ) - (set_local $3 - (call $_bitshift64Shl - (get_local $7) - (get_local $8) - (i32.const 1) - ) - ) - (if - (i32.eqz - (i32.or - (i32.gt_u - (tee_local $2 - (get_global $tempRet0) - ) - (get_local $6) - ) - (i32.and - (i32.eq - (get_local $2) - (get_local $6) - ) - (i32.gt_u - (get_local $3) - (get_local $10) - ) - ) - ) - ) - (return - (if f64 - (i32.and - (i32.eq - (get_local $3) - (get_local $10) - ) - (i32.eq - (get_local $2) - (get_local $6) - ) - ) - (f64.mul - (get_local $0) - (f64.const 0) - ) - (get_local $0) - ) - ) - ) - (set_local $10 - (if i32 - (get_local $4) - (i32.or - (i32.and - (get_local $8) - (i32.const 1048575) - ) - (i32.const 1048576) - ) - (block i32 - (set_local $2 - (call $_bitshift64Shl - (get_local $7) - (get_local $8) - (i32.const 12) - ) - ) - (if - (i32.or - (i32.gt_s - (tee_local $4 - (get_global $tempRet0) - ) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $4) - (i32.const -1) - ) - (i32.gt_u - (get_local $2) - (i32.const -1) - ) - ) - ) - (block - (set_local $3 - (get_local $2) - ) - (set_local $2 - (get_local $4) - ) - (set_local $4 - (i32.const 0) - ) - (loop $while-in - (set_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - (set_local $3 - (call $_bitshift64Shl - (get_local $3) - (get_local $2) - (i32.const 1) - ) - ) - (br_if $while-in - (i32.or - (i32.gt_s - (tee_local $2 - (get_global $tempRet0) - ) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $2) - (i32.const -1) - ) - (i32.gt_u - (get_local $3) - (i32.const -1) - ) - ) - ) - ) - ) - ) - (set_local $4 - (i32.const 0) - ) - ) - (set_local $7 - (call $_bitshift64Shl - (get_local $7) - (get_local $8) - (i32.sub - (i32.const 1) - (get_local $4) - ) - ) - ) - (get_global $tempRet0) - ) - ) - ) - (set_local $8 - (if i32 - (get_local $11) - (i32.or - (i32.and - (get_local $5) - (i32.const 1048575) - ) - (i32.const 1048576) - ) - (block i32 - (set_local $3 - (call $_bitshift64Shl - (get_local $9) - (get_local $5) - (i32.const 12) - ) - ) - (if - (i32.or - (i32.gt_s - (tee_local $2 - (get_global $tempRet0) - ) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $2) - (i32.const -1) - ) - (i32.gt_u - (get_local $3) - (i32.const -1) - ) - ) - ) - (block - (set_local $6 - (get_local $3) - ) - (set_local $3 - (get_local $2) - ) - (set_local $2 - (i32.const 0) - ) - (loop $while-in1 - (set_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (set_local $6 - (call $_bitshift64Shl - (get_local $6) - (get_local $3) - (i32.const 1) - ) - ) - (br_if $while-in1 - (i32.or - (i32.gt_s - (tee_local $3 - (get_global $tempRet0) - ) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $3) - (i32.const -1) - ) - (i32.gt_u - (get_local $6) - (i32.const -1) - ) - ) - ) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - (set_local $9 - (call $_bitshift64Shl - (get_local $9) - (get_local $5) - (i32.sub - (i32.const 1) - (get_local $2) - ) - ) - ) - (set_local $11 - (get_local $2) - ) - (get_global $tempRet0) - ) - ) - ) - (set_local $2 - (call $_i64Subtract - (get_local $7) - (get_local $10) - (get_local $9) - (get_local $8) - ) - ) - (set_local $6 - (i32.or - (i32.gt_s - (tee_local $5 - (get_global $tempRet0) - ) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $5) - (i32.const -1) - ) - (i32.gt_u - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (block $label$break$L23 - (if - (i32.gt_s - (get_local $4) - (get_local $11) - ) - (block - (set_local $3 - (get_local $2) - ) - (set_local $2 - (get_local $5) - ) - (loop $while-in4 - (block $while-out3 - (if - (get_local $6) - (br_if $while-out3 - (i32.and - (i32.eq - (get_local $7) - (get_local $9) - ) - (i32.eq - (get_local $10) - (get_local $8) - ) - ) - ) - (block - (set_local $3 - (get_local $7) - ) - (set_local $2 - (get_local $10) - ) - ) - ) - (set_local $3 - (call $_i64Subtract - (tee_local $7 - (call $_bitshift64Shl - (get_local $3) - (get_local $2) - (i32.const 1) - ) - ) - (tee_local $10 - (get_global $tempRet0) - ) - (get_local $9) - (get_local $8) - ) - ) - (set_local $2 - (i32.or - (i32.gt_s - (tee_local $5 - (get_global $tempRet0) - ) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $5) - (i32.const -1) - ) - (i32.gt_u - (get_local $3) - (i32.const -1) - ) - ) - ) - ) - (if - (i32.gt_s - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - (get_local $11) - ) - (block - (set_local $6 - (get_local $2) - ) - (set_local $2 - (get_local $5) - ) - (br $while-in4) - ) - (block - (set_local $6 - (get_local $2) - ) - (set_local $2 - (get_local $3) - ) - (set_local $3 - (get_local $5) - ) - (br $label$break$L23) - ) - ) - ) - ) - (br $__rjto$0 - (f64.mul - (get_local $0) - (f64.const 0) - ) - ) - ) - (set_local $3 - (get_local $5) - ) - ) - ) - (if - (get_local $6) - (drop - (br_if $__rjto$0 - (f64.mul - (get_local $0) - (f64.const 0) - ) - (i32.and - (i32.eq - (get_local $7) - (get_local $9) - ) - (i32.eq - (get_local $10) - (get_local $8) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $10) - ) - (set_local $2 - (get_local $7) - ) - ) - ) - (if - (i32.or - (i32.lt_u - (get_local $3) - (i32.const 1048576) - ) - (i32.and - (i32.eq - (get_local $3) - (i32.const 1048576) - ) - (i32.lt_u - (get_local $2) - (i32.const 0) - ) - ) - ) - (loop $while-in6 - (set_local $2 - (call $_bitshift64Shl - (get_local $2) - (get_local $3) - (i32.const 1) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - (br_if $while-in6 - (i32.or - (i32.lt_u - (tee_local $3 - (get_global $tempRet0) - ) - (i32.const 1048576) - ) - (i32.and - (i32.eq - (get_local $3) - (i32.const 1048576) - ) - (i32.lt_u - (get_local $2) - (i32.const 0) - ) - ) - ) - ) - ) - ) - (set_local $2 - (if i32 - (i32.gt_s - (get_local $4) - (i32.const 0) - ) - (block i32 - (set_local $3 - (call $_i64Add - (get_local $2) - (get_local $3) - (i32.const 0) - (i32.const -1048576) - ) - ) - (set_local $2 - (get_global $tempRet0) - ) - (set_local $4 - (i32.or - (get_local $3) - (tee_local $4 - (call $_bitshift64Shl - (get_local $4) - (i32.const 0) - (i32.const 52) - ) - ) - ) - ) - (i32.or - (get_local $2) - (get_global $tempRet0) - ) - ) - (block i32 - (set_local $4 - (call $_bitshift64Lshr - (get_local $2) - (get_local $3) - (i32.sub - (i32.const 1) - (get_local $4) - ) - ) - ) - (get_global $tempRet0) - ) - ) - ) - (i32.store - (get_global $tempDoublePtr) - (get_local $4) - ) - (i32.store offset=4 - (get_global $tempDoublePtr) - (i32.or - (get_local $2) - (get_local $12) - ) - ) - (br $__rjto$0 - (f64.load - (get_global $tempDoublePtr) - ) - ) - ) - (f64.div - (tee_local $0 - (f64.mul - (get_local $0) - (get_local $1) - ) - ) - (get_local $0) - ) - ) - ) - ) - (func $__ZNKSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 f64) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 1008) - ) - ) - (set_local $0 - (get_local $7) - ) - (set_local $10 - (i32.add - (get_local $7) - (i32.const 488) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 888) - ) - ) - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 896) - ) - ) - ) - (f64.store - (tee_local $15 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (get_local $5) - ) - (set_local $0 - (if i32 - (i32.gt_u - (tee_local $6 - (call $_snprintf - (get_local $13) - (i32.const 100) - (i32.const 15437) - (get_local $15) - ) - ) - (i32.const 99) - ) - (block i32 - (set_local $10 - (call $__ZNSt3__26__clocEv) - ) - (f64.store - (get_local $0) - (get_local $5) - ) - (set_local $6 - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $8) - (get_local $10) - (i32.const 15437) - (get_local $0) - ) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load - (get_local $8) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $8) - ) - ) - ) - (set_local $13 - (tee_local $10 - (call $_malloc - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - ) - ) - (if i32 - (get_local $10) - (block i32 - (set_local $14 - (get_local $0) - ) - (get_local $6) - ) - (block i32 - (set_local $10 - (i32.const 0) - ) - (set_local $14 - (get_local $0) - ) - (get_local $6) - ) - ) - ) - (block i32 - (set_local $13 - (i32.const 0) - ) - (set_local $14 - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $7) - (i32.const 480) - ) - ) - (tee_local $22 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $17 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $16) - (i32.const 19240) - ) - ) - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.add - (get_local $6) - (get_local $0) - ) - (get_local $10) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $17) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (set_local $18 - (if i32 - (get_local $0) - (i32.eq - (i32.load8_s - (i32.load - (get_local $8) - ) - ) - (i32.const 45) - ) - (i32.const 0) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 892) - ) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 476) - ) - ) - (set_local $21 - (i32.add - (get_local $7) - (i32.const 472) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 448) - ) - ) - (set_local $9 - (i32.add - (get_local $7) - (i32.const 436) - ) - ) - (set_local $11 - (i32.add - (get_local $7) - (i32.const 432) - ) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 460) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $12) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $12) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $9) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $9) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $9) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__211__money_putIwE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_Ri - (get_local $2) - (get_local $18) - (get_local $16) - (get_local $19) - (get_local $20) - (get_local $21) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $11) - ) - (set_local $2 - (if i32 - (i32.gt_s - (get_local $0) - (tee_local $11 - (i32.load - (get_local $11) - ) - ) - ) - (block i32 - (set_local $2 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.or - (i32.shl - (i32.sub - (get_local $0) - (get_local $11) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (if i32 - (i32.lt_s - (get_local $2) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - ) - ) - (block i32 - (set_local $2 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.const 2) - ) - (if i32 - (i32.lt_s - (get_local $2) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $7) - (i32.const 32) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.add - (get_local $2) - (get_local $11) - ) - ) - (i32.const 100) - ) - (block - (set_local $2 - (tee_local $6 - (call $_malloc - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - (call $__ZNSt3__211__money_putIwE8__formatEPwRS2_S3_jPKwS5_RKNS_5ctypeIwEEbRKNS_10money_base7patternEwwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNSE_IwNSF_IwEENSH_IwEEEESQ_i - (get_local $6) - (tee_local $23 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - (tee_local $24 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.load offset=4 - (get_local $3) - ) - (get_local $10) - (i32.add - (get_local $10) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (get_local $17) - (get_local $18) - (get_local $19) - (i32.load - (get_local $20) - ) - (i32.load - (get_local $21) - ) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $11) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $23) - ) - ) - (set_local $10 - (i32.load - (get_local $24) - ) - ) - (i32.store - (get_local $15) - (i32.load - (get_local $0) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $15) - (get_local $6) - (get_local $1) - (get_local $10) - (get_local $3) - (get_local $4) - ) - ) - (set_local $0 - (if i32 - (get_local $2) - (block i32 - (call $_free - (get_local $2) - ) - (i32.load - (get_local $16) - ) - ) - (get_local $22) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $9) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - (if - (get_local $13) - (call $_free - (get_local $13) - ) - ) - (if - (get_local $14) - (call $_free - (get_local $14) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $1) - ) - (func $__ZNKSt3__29money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEce (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 f64) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 384) - ) - ) - (set_local $0 - (get_local $7) - ) - (set_local $10 - (i32.add - (get_local $7) - (i32.const 184) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 72) - ) - ) - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 284) - ) - ) - ) - (f64.store - (tee_local $15 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (get_local $5) - ) - (set_local $0 - (if i32 - (i32.gt_u - (tee_local $6 - (call $_snprintf - (get_local $13) - (i32.const 100) - (i32.const 15437) - (get_local $15) - ) - ) - (i32.const 99) - ) - (block i32 - (set_local $10 - (call $__ZNSt3__26__clocEv) - ) - (f64.store - (get_local $0) - (get_local $5) - ) - (set_local $6 - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $8) - (get_local $10) - (i32.const 15437) - (get_local $0) - ) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load - (get_local $8) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $8) - ) - ) - ) - (set_local $13 - (tee_local $10 - (call $_malloc - (get_local $6) - ) - ) - ) - (if i32 - (get_local $10) - (block i32 - (set_local $14 - (get_local $0) - ) - (get_local $6) - ) - (block i32 - (set_local $10 - (i32.const 0) - ) - (set_local $14 - (get_local $0) - ) - (get_local $6) - ) - ) - ) - (block i32 - (set_local $13 - (i32.const 0) - ) - (set_local $14 - (i32.const 0) - ) - (get_local $6) - ) - ) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $7) - (i32.const 68) - ) - ) - (tee_local $22 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $17 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $16) - (i32.const 19208) - ) - ) - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.add - (get_local $6) - (get_local $0) - ) - (get_local $10) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $17) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (set_local $18 - (if i32 - (get_local $0) - (i32.eq - (i32.load8_s - (i32.load - (get_local $8) - ) - ) - (i32.const 45) - ) - (i32.const 0) - ) - ) - (set_local $19 - (i32.add - (get_local $7) - (i32.const 180) - ) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 177) - ) - ) - (set_local $21 - (i32.add - (get_local $7) - (i32.const 176) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 44) - ) - ) - (set_local $9 - (i32.add - (get_local $7) - (i32.const 32) - ) - ) - (set_local $11 - (i32.add - (get_local $7) - (i32.const 28) - ) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 56) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $12) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $12) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $9) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $9) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $9) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__211__money_putIcE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_Ri - (get_local $2) - (get_local $18) - (get_local $16) - (get_local $19) - (get_local $20) - (get_local $21) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $11) - ) - (set_local $2 - (if i32 - (i32.gt_s - (get_local $0) - (tee_local $11 - (i32.load - (get_local $11) - ) - ) - ) - (block i32 - (set_local $2 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.or - (i32.shl - (i32.sub - (get_local $0) - (get_local $11) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (if i32 - (i32.lt_s - (get_local $2) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - ) - ) - (block i32 - (set_local $2 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.const 2) - ) - (if i32 - (i32.lt_s - (get_local $2) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $7) - (i32.const 76) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.add - (get_local $2) - (get_local $11) - ) - ) - (i32.const 100) - ) - (block - (set_local $2 - (tee_local $6 - (call $_malloc - (get_local $2) - ) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - (call $__ZNSt3__211__money_putIcE8__formatEPcRS2_S3_jPKcS5_RKNS_5ctypeIcEEbRKNS_10money_base7patternEccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESL_SL_i - (get_local $6) - (tee_local $23 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - (tee_local $24 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.load offset=4 - (get_local $3) - ) - (get_local $10) - (i32.add - (get_local $10) - (get_local $0) - ) - (get_local $17) - (get_local $18) - (get_local $19) - (i32.load8_s - (get_local $20) - ) - (i32.load8_s - (get_local $21) - ) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $11) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $23) - ) - ) - (set_local $10 - (i32.load - (get_local $24) - ) - ) - (i32.store - (get_local $15) - (i32.load - (get_local $0) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $15) - (get_local $6) - (get_local $1) - (get_local $10) - (get_local $3) - (get_local $4) - ) - ) - (set_local $0 - (if i32 - (get_local $2) - (block i32 - (call $_free - (get_local $2) - ) - (i32.load - (get_local $16) - ) - ) - (get_local $22) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $9) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - (if - (get_local $13) - (call $_free - (get_local $13) - ) - ) - (if - (get_local $14) - (call $_free - (get_local $14) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $1) - ) - (func $__ZNSt3__2L20utf8_to_utf16_lengthEPKhS1_jmNS_12codecvt_modeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (set_local $10 - (get_local $1) - ) - (set_local $4 - (if i32 - (i32.and - (get_local $4) - (i32.const 4) - ) - (if i32 - (i32.gt_s - (i32.sub - (get_local $10) - (get_local $0) - ) - (i32.const 2) - ) - (if i32 - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.const -17) - ) - (if i32 - (i32.eq - (i32.load8_s offset=1 - (get_local $0) - ) - (i32.const -69) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (if i32 - (i32.eq - (i32.load8_s offset=2 - (get_local $0) - ) - (i32.const -65) - ) - (i32.add - (get_local $0) - (i32.const 3) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (get_local $0) - ) - ) - ) - (tee_local $0 - (block $__rjto$6 i32 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L6 - (br_if $__rjti$6 - (i32.eqz - (i32.and - (i32.lt_u - (get_local $6) - (get_local $2) - ) - (i32.lt_u - (get_local $4) - (get_local $1) - ) - ) - ) - ) - (br_if $__rjti$6 - (i32.gt_u - (tee_local $8 - (i32.and - (tee_local $5 - (i32.load8_s - (get_local $4) - ) - ) - (i32.const 255) - ) - ) - (get_local $3) - ) - ) - (set_local $4 - (block $do-once i32 - (if i32 - (i32.gt_s - (get_local $5) - (i32.const -1) - ) - (i32.add - (get_local $4) - (i32.const 1) - ) - (block i32 - (br_if $__rjti$6 - (i32.lt_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 194) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 224) - ) - (block - (br_if $__rjti$6 - (i32.lt_s - (i32.sub - (get_local $10) - (get_local $4) - ) - (i32.const 2) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $5 - (i32.load8_u offset=1 - (get_local $4) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.gt_u - (i32.or - (i32.and - (get_local $5) - (i32.const 63) - ) - (i32.and - (i32.shl - (get_local $8) - (i32.const 6) - ) - (i32.const 1984) - ) - ) - (get_local $3) - ) - ) - (br $do-once - (i32.add - (get_local $4) - (i32.const 2) - ) - ) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 240) - ) - (block - (br_if $__rjti$6 - (i32.lt_s - (i32.sub - (get_local $10) - (tee_local $5 - (get_local $4) - ) - ) - (i32.const 3) - ) - ) - (set_local $7 - (i32.load8_s offset=1 - (get_local $4) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $4) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (get_local $8) - (i32.const 224) - ) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.and - (get_local $7) - (i32.const 224) - ) - (i32.const 160) - ) - ) - (br $switch) - ) - (br_if $__rjti$1 - (i32.ne - (i32.and - (get_local $7) - (i32.const 224) - ) - (i32.const 128) - ) - ) - (br $switch) - ) - (br_if $__rjti$2 - (i32.ne - (i32.and - (get_local $7) - (i32.const 192) - ) - (i32.const 128) - ) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $5 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.gt_u - (i32.or - (i32.or - (i32.and - (i32.shl - (i32.and - (get_local $7) - (i32.const 255) - ) - (i32.const 6) - ) - (i32.const 4032) - ) - (i32.and - (i32.shl - (get_local $8) - (i32.const 12) - ) - (i32.const 61440) - ) - ) - (i32.and - (get_local $5) - (i32.const 63) - ) - ) - (get_local $3) - ) - ) - (br $do-once - (i32.add - (get_local $4) - (i32.const 3) - ) - ) - ) - ) - (br_if $__rjti$6 - (i32.ge_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 245) - ) - ) - (br_if $__rjti$6 - (i32.or - (i32.lt_u - (i32.sub - (get_local $2) - (get_local $6) - ) - (i32.const 2) - ) - (i32.lt_s - (i32.sub - (get_local $10) - (tee_local $5 - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (set_local $7 - (i32.load8_s offset=1 - (get_local $4) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $4) - ) - ) - (set_local $11 - (i32.load8_u offset=3 - (get_local $4) - ) - ) - (block $switch1 - (block $switch-default4 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case2 $switch-default4 $switch-default4 $switch-default4 $switch-case3 $switch-default4 - (i32.sub - (get_local $8) - (i32.const 240) - ) - ) - ) - (br_if $__rjti$3 - (i32.ge_s - (i32.and - (i32.add - (get_local $7) - (i32.const 112) - ) - (i32.const 255) - ) - (i32.const 48) - ) - ) - (br $switch1) - ) - (br_if $__rjti$4 - (i32.ne - (i32.and - (get_local $7) - (i32.const 240) - ) - (i32.const 128) - ) - ) - (br $switch1) - ) - (br_if $__rjti$5 - (i32.ne - (i32.and - (get_local $7) - (i32.const 192) - ) - (i32.const 128) - ) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $5 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $9 - (get_local $11) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.gt_u - (i32.or - (i32.or - (i32.or - (i32.and - (i32.shl - (i32.and - (get_local $7) - (i32.const 255) - ) - (i32.const 12) - ) - (i32.const 258048) - ) - (i32.and - (i32.shl - (get_local $8) - (i32.const 18) - ) - (i32.const 1835008) - ) - ) - (i32.and - (i32.shl - (get_local $5) - (i32.const 6) - ) - (i32.const 4032) - ) - ) - (i32.and - (get_local $9) - (i32.const 63) - ) - ) - (get_local $3) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $label$continue$L6) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (i32.sub - (get_local $4) - (get_local $0) - ) - ) - ) - ) - (func $__ZNKSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwRKNS_12basic_stringIwS3_NS_9allocatorIwEEEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 480) - ) - ) - (i32.store - (tee_local $15 - (i32.add - (get_local $7) - (i32.const 464) - ) - ) - (tee_local $18 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $16 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $15) - (i32.const 19240) - ) - ) - (set_local $13 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (set_local $19 - (if i32 - (if i32 - (tee_local $0 - (i32.lt_s - (tee_local $10 - (i32.load8_s - (tee_local $14 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $13) - ) - (i32.and - (get_local $10) - (i32.const 255) - ) - ) - (i32.eq - (i32.load - (if i32 - (get_local $0) - (i32.load - (get_local $5) - ) - (get_local $5) - ) - ) - (call_indirect $FUNCSIG$iii - (get_local $16) - (i32.const 45) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $16) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.const 0) - ) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 472) - ) - ) - (set_local $21 - (i32.add - (get_local $7) - (i32.const 460) - ) - ) - (set_local $22 - (i32.add - (get_local $7) - (i32.const 456) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 432) - ) - ) - (set_local $9 - (i32.add - (get_local $7) - (i32.const 420) - ) - ) - (set_local $6 - (i32.add - (get_local $7) - (i32.const 416) - ) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 444) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $12) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $12) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $9) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $9) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $9) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__211__money_putIwE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_Ri - (get_local $2) - (get_local $19) - (get_local $15) - (get_local $20) - (get_local $21) - (get_local $22) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $6) - ) - (set_local $0 - (i32.load - (get_local $13) - ) - ) - (set_local $6 - (if i32 - (i32.gt_s - (tee_local $2 - (if i32 - (i32.lt_s - (tee_local $10 - (i32.load8_s - (get_local $14) - ) - ) - (i32.const 0) - ) - (get_local $0) - (i32.and - (get_local $10) - (i32.const 255) - ) - ) - ) - (tee_local $17 - (i32.load - (get_local $6) - ) - ) - ) - (block i32 - (set_local $11 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.or - (i32.shl - (i32.sub - (get_local $2) - (get_local $17) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (if i32 - (i32.lt_s - (get_local $11) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - ) - ) - (block i32 - (set_local $6 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $2 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - (i32.const 2) - ) - (if i32 - (i32.lt_s - (get_local $6) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (if - (i32.gt_u - (tee_local $6 - (i32.add - (get_local $6) - (get_local $17) - ) - ) - (i32.const 100) - ) - (block - (set_local $2 - (tee_local $11 - (call $_malloc - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - ) - ) - (set_local $2 - (if i32 - (get_local $11) - (block i32 - (set_local $6 - (get_local $10) - ) - (set_local $10 - (get_local $2) - ) - (get_local $11) - ) - (block i32 - (set_local $6 - (i32.load8_s - (get_local $14) - ) - ) - (set_local $0 - (i32.load - (get_local $13) - ) - ) - (set_local $10 - (get_local $2) - ) - (i32.const 0) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $10) - ) - (set_local $10 - (i32.const 0) - ) - ) - ) - (set_local $23 - (i32.add - (get_local $7) - (i32.const 468) - ) - ) - (set_local $11 - (get_local $7) - ) - (call $__ZNSt3__211__money_putIwE8__formatEPwRS2_S3_jPKwS5_RKNS_5ctypeIwEEbRKNS_10money_base7patternEwwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNSE_IwNSF_IwEENSH_IwEEEESQ_i - (get_local $2) - (tee_local $24 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (i32.load offset=4 - (get_local $3) - ) - (if i32 - (tee_local $14 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (tee_local $5 - (i32.load - (get_local $5) - ) - ) - (get_local $5) - ) - (i32.add - (get_local $5) - (i32.shl - (if i32 - (get_local $14) - (get_local $0) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - (get_local $16) - (get_local $19) - (get_local $20) - (i32.load - (get_local $21) - ) - (i32.load - (get_local $22) - ) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $17) - ) - (i32.store - (get_local $11) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $24) - ) - ) - (set_local $0 - (i32.load - (get_local $13) - ) - ) - (i32.store - (get_local $23) - (i32.load - (get_local $11) - ) - ) - (set_local $0 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $23) - (get_local $2) - (get_local $1) - (get_local $0) - (get_local $3) - (get_local $4) - ) - ) - (if - (get_local $10) - (block - (call $_free - (get_local $10) - ) - (set_local $18 - (i32.load - (get_local $15) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $9) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $18) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $0) - ) - (func $__ZNKSt3__29money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEcRKNS_12basic_stringIcS3_NS_9allocatorIcEEEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 176) - ) - ) - (i32.store - (tee_local $15 - (i32.add - (get_local $7) - (i32.const 52) - ) - ) - (tee_local $18 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $16 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $15) - (i32.const 19208) - ) - ) - (set_local $13 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (set_local $19 - (if i32 - (if i32 - (tee_local $0 - (i32.lt_s - (tee_local $10 - (i32.load8_s - (tee_local $14 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $13) - ) - (i32.and - (get_local $10) - (i32.const 255) - ) - ) - (i32.eq - (i32.load8_u - (if i32 - (get_local $0) - (i32.load - (get_local $5) - ) - (get_local $5) - ) - ) - (i32.and - (call_indirect $FUNCSIG$iii - (get_local $16) - (i32.const 45) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $16) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const 255) - ) - ) - (i32.const 0) - ) - ) - (set_local $20 - (i32.add - (get_local $7) - (i32.const 164) - ) - ) - (set_local $21 - (i32.add - (get_local $7) - (i32.const 161) - ) - ) - (set_local $22 - (i32.add - (get_local $7) - (i32.const 160) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 28) - ) - ) - (set_local $9 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (set_local $6 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 40) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $12) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $12) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $12) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $9) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $9) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $9) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (call $__ZNSt3__211__money_putIcE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_Ri - (get_local $2) - (get_local $19) - (get_local $15) - (get_local $20) - (get_local $21) - (get_local $22) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $6) - ) - (set_local $0 - (i32.load - (get_local $13) - ) - ) - (set_local $6 - (if i32 - (i32.gt_s - (tee_local $2 - (if i32 - (i32.lt_s - (tee_local $10 - (i32.load8_s - (get_local $14) - ) - ) - (i32.const 0) - ) - (get_local $0) - (i32.and - (get_local $10) - (i32.const 255) - ) - ) - ) - (tee_local $17 - (i32.load - (get_local $6) - ) - ) - ) - (block i32 - (set_local $11 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (i32.or - (i32.shl - (i32.sub - (get_local $2) - (get_local $17) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (if i32 - (i32.lt_s - (get_local $11) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - ) - ) - (block i32 - (set_local $6 - (i32.load8_s offset=11 - (get_local $8) - ) - ) - (i32.add - (i32.add - (if i32 - (i32.lt_s - (tee_local $2 - (i32.load8_s offset=11 - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $9) - ) - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - (i32.const 2) - ) - (if i32 - (i32.lt_s - (get_local $6) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $8) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $7) - (i32.const 60) - ) - ) - (if - (i32.gt_u - (tee_local $6 - (i32.add - (get_local $6) - (get_local $17) - ) - ) - (i32.const 100) - ) - (block - (set_local $2 - (tee_local $11 - (call $_malloc - (get_local $6) - ) - ) - ) - (set_local $2 - (if i32 - (get_local $11) - (block i32 - (set_local $6 - (get_local $10) - ) - (set_local $10 - (get_local $2) - ) - (get_local $11) - ) - (block i32 - (set_local $6 - (i32.load8_s - (get_local $14) - ) - ) - (set_local $0 - (i32.load - (get_local $13) - ) - ) - (set_local $10 - (get_local $2) - ) - (i32.const 0) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $10) - ) - (set_local $10 - (i32.const 0) - ) - ) - ) - (set_local $23 - (i32.add - (get_local $7) - (i32.const 56) - ) - ) - (set_local $11 - (get_local $7) - ) - (call $__ZNSt3__211__money_putIcE8__formatEPcRS2_S3_jPKcS5_RKNS_5ctypeIcEEbRKNS_10money_base7patternEccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESL_SL_i - (get_local $2) - (tee_local $24 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (i32.load offset=4 - (get_local $3) - ) - (if i32 - (tee_local $14 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (tee_local $5 - (i32.load - (get_local $5) - ) - ) - (get_local $5) - ) - (i32.add - (get_local $5) - (if i32 - (get_local $14) - (get_local $0) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - (get_local $16) - (get_local $19) - (get_local $20) - (i32.load8_s - (get_local $21) - ) - (i32.load8_s - (get_local $22) - ) - (get_local $12) - (get_local $8) - (get_local $9) - (get_local $17) - ) - (i32.store - (get_local $11) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $24) - ) - ) - (set_local $0 - (i32.load - (get_local $13) - ) - ) - (i32.store - (get_local $23) - (i32.load - (get_local $11) - ) - ) - (set_local $0 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $23) - (get_local $2) - (get_local $1) - (get_local $0) - (get_local $3) - (get_local $4) - ) - ) - (if - (get_local $10) - (block - (call $_free - (get_local $10) - ) - (set_local $18 - (i32.load - (get_local $15) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $9) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $12) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $18) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $0) - ) - (func $__ZNSt3__2L19utf8_to_ucs4_lengthEPKhS1_jmNS_12codecvt_modeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (set_local $10 - (get_local $1) - ) - (set_local $4 - (if i32 - (i32.and - (get_local $4) - (i32.const 4) - ) - (if i32 - (i32.gt_s - (i32.sub - (get_local $10) - (get_local $0) - ) - (i32.const 2) - ) - (if i32 - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.const -17) - ) - (if i32 - (i32.eq - (i32.load8_s offset=1 - (get_local $0) - ) - (i32.const -69) - ) - (block i32 - (set_local $7 - (i32.const 0) - ) - (if i32 - (i32.eq - (i32.load8_s offset=2 - (get_local $0) - ) - (i32.const -65) - ) - (i32.add - (get_local $0) - (i32.const 3) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $7 - (i32.const 0) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $7 - (i32.const 0) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $7 - (i32.const 0) - ) - (get_local $0) - ) - ) - (block i32 - (set_local $7 - (i32.const 0) - ) - (get_local $0) - ) - ) - ) - (tee_local $0 - (block $__rjto$6 i32 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L6 - (br_if $__rjti$6 - (i32.eqz - (i32.and - (i32.lt_u - (get_local $7) - (get_local $2) - ) - (i32.lt_u - (get_local $4) - (get_local $1) - ) - ) - ) - ) - (set_local $8 - (i32.and - (tee_local $5 - (i32.load8_s - (get_local $4) - ) - ) - (i32.const 255) - ) - ) - (block $do-once - (if - (i32.gt_s - (get_local $5) - (i32.const -1) - ) - (block - (br_if $__rjti$6 - (i32.gt_u - (get_local $8) - (get_local $3) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - ) - (block - (br_if $__rjti$6 - (i32.lt_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 194) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 224) - ) - (block - (br_if $__rjti$6 - (i32.lt_s - (i32.sub - (get_local $10) - (get_local $4) - ) - (i32.const 2) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $5 - (i32.load8_u offset=1 - (get_local $4) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.gt_u - (i32.or - (i32.and - (get_local $5) - (i32.const 63) - ) - (i32.and - (i32.shl - (get_local $8) - (i32.const 6) - ) - (i32.const 1984) - ) - ) - (get_local $3) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 2) - ) - ) - (br $do-once) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 240) - ) - (block - (br_if $__rjti$6 - (i32.lt_s - (i32.sub - (get_local $10) - (tee_local $5 - (get_local $4) - ) - ) - (i32.const 3) - ) - ) - (set_local $6 - (i32.load8_s offset=1 - (get_local $4) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $4) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (get_local $8) - (i32.const 224) - ) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.and - (get_local $6) - (i32.const 224) - ) - (i32.const 160) - ) - ) - (br $switch) - ) - (br_if $__rjti$1 - (i32.ne - (i32.and - (get_local $6) - (i32.const 224) - ) - (i32.const 128) - ) - ) - (br $switch) - ) - (br_if $__rjti$2 - (i32.ne - (i32.and - (get_local $6) - (i32.const 192) - ) - (i32.const 128) - ) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $5 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.gt_u - (i32.or - (i32.or - (i32.and - (i32.shl - (i32.and - (get_local $6) - (i32.const 255) - ) - (i32.const 6) - ) - (i32.const 4032) - ) - (i32.and - (i32.shl - (get_local $8) - (i32.const 12) - ) - (i32.const 61440) - ) - ) - (i32.and - (get_local $5) - (i32.const 63) - ) - ) - (get_local $3) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 3) - ) - ) - (br $do-once) - ) - ) - (br_if $__rjti$6 - (i32.ge_s - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.const 245) - ) - ) - (br_if $__rjti$6 - (i32.lt_s - (i32.sub - (get_local $10) - (tee_local $5 - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - (set_local $6 - (i32.load8_s offset=1 - (get_local $4) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $4) - ) - ) - (set_local $11 - (i32.load8_u offset=3 - (get_local $4) - ) - ) - (block $switch1 - (block $switch-default4 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case2 $switch-default4 $switch-default4 $switch-default4 $switch-case3 $switch-default4 - (i32.sub - (get_local $8) - (i32.const 240) - ) - ) - ) - (br_if $__rjti$3 - (i32.ge_s - (i32.and - (i32.add - (get_local $6) - (i32.const 112) - ) - (i32.const 255) - ) - (i32.const 48) - ) - ) - (br $switch1) - ) - (br_if $__rjti$4 - (i32.ne - (i32.and - (get_local $6) - (i32.const 240) - ) - (i32.const 128) - ) - ) - (br $switch1) - ) - (br_if $__rjti$5 - (i32.ne - (i32.and - (get_local $6) - (i32.const 192) - ) - (i32.const 128) - ) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $5 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.ne - (i32.and - (tee_local $9 - (get_local $11) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br_if $__rjti$6 - (i32.gt_u - (i32.or - (i32.or - (i32.or - (i32.and - (i32.shl - (i32.and - (get_local $6) - (i32.const 255) - ) - (i32.const 12) - ) - (i32.const 258048) - ) - (i32.and - (i32.shl - (get_local $8) - (i32.const 18) - ) - (i32.const 1835008) - ) - ) - (i32.and - (i32.shl - (get_local $5) - (i32.const 6) - ) - (i32.const 4032) - ) - ) - (i32.and - (get_local $9) - (i32.const 63) - ) - ) - (get_local $3) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $label$continue$L6) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (br $__rjto$6 - (i32.sub - (get_local $5) - (get_local $0) - ) - ) - ) - (i32.sub - (get_local $4) - (get_local $0) - ) - ) - ) - ) - (func $__ZNSt3__26locale5__impC2Ej (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.store - (get_local $0) - (i32.const 9184) - ) - (call $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEEC2Ej - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const 28) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 144) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $1) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (get_local $1) - (i32.const 13970) - (i32.const 1) - ) - (set_local $2 - (i32.load - (get_local $2) - ) - ) - (set_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store - (get_local $3) - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (i32.const 17116) - (i32.const 0) - ) - (i32.store - (i32.const 17112) - (i32.const 6848) - ) - (call $__ZNSt3__26locale5__imp7installINS_7collateIcEEEEvPT_ - (get_local $0) - (i32.const 17112) - ) - (i32.store - (i32.const 17124) - (i32.const 0) - ) - (i32.store - (i32.const 17120) - (i32.const 6880) - ) - (call $__ZNSt3__26locale5__imp7installINS_7collateIwEEEEvPT_ - (get_local $0) - (i32.const 17120) - ) - (call $__ZNSt3__25ctypeIcEC2EPKtbj - (i32.const 17128) - (i32.const 0) - (i32.const 0) - (i32.const 1) - ) - (call $__ZNSt3__26locale5__imp7installINS_5ctypeIcEEEEvPT_ - (get_local $0) - (i32.const 17128) - ) - (i32.store - (i32.const 17148) - (i32.const 0) - ) - (i32.store - (i32.const 17144) - (i32.const 9400) - ) - (call $__ZNSt3__26locale5__imp7installINS_5ctypeIwEEEEvPT_ - (get_local $0) - (i32.const 17144) - ) - (i32.store - (i32.const 17156) - (i32.const 0) - ) - (i32.store - (i32.const 17152) - (i32.const 9468) - ) - (call $__ZNSt3__26locale5__imp7installINS_7codecvtIcc11__mbstate_tEEEEvPT_ - (get_local $0) - (i32.const 17152) - ) - (i32.store - (i32.const 17164) - (i32.const 0) - ) - (i32.store - (i32.const 17160) - (i32.const 9136) - ) - (i32.store - (i32.const 17168) - (call $__ZNSt3__26__clocEv) - ) - (call $__ZNSt3__26locale5__imp7installINS_7codecvtIwc11__mbstate_tEEEEvPT_ - (get_local $0) - (i32.const 17160) - ) - (i32.store - (i32.const 17180) - (i32.const 0) - ) - (i32.store - (i32.const 17176) - (i32.const 9516) - ) - (call $__ZNSt3__26locale5__imp7installINS_7codecvtIDsc11__mbstate_tEEEEvPT_ - (get_local $0) - (i32.const 17176) - ) - (i32.store - (i32.const 17188) - (i32.const 0) - ) - (i32.store - (i32.const 17184) - (i32.const 9564) - ) - (call $__ZNSt3__26locale5__imp7installINS_7codecvtIDic11__mbstate_tEEEEvPT_ - (get_local $0) - (i32.const 17184) - ) - (call $__ZNSt3__28numpunctIcEC2Ej - (i32.const 17192) - (i32.const 1) - ) - (call $__ZNSt3__26locale5__imp7installINS_8numpunctIcEEEEvPT_ - (get_local $0) - (i32.const 17192) - ) - (call $__ZNSt3__28numpunctIwEC2Ej - (i32.const 17216) - (i32.const 1) - ) - (call $__ZNSt3__26locale5__imp7installINS_8numpunctIwEEEEvPT_ - (get_local $0) - (i32.const 17216) - ) - (i32.store - (i32.const 17252) - (i32.const 0) - ) - (i32.store - (i32.const 17248) - (i32.const 6912) - ) - (call $__ZNSt3__26locale5__imp7installINS_7num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ - (get_local $0) - (i32.const 17248) - ) - (i32.store - (i32.const 17260) - (i32.const 0) - ) - (i32.store - (i32.const 17256) - (i32.const 6976) - ) - (call $__ZNSt3__26locale5__imp7installINS_7num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ - (get_local $0) - (i32.const 17256) - ) - (i32.store - (i32.const 17268) - (i32.const 0) - ) - (i32.store - (i32.const 17264) - (i32.const 7040) - ) - (call $__ZNSt3__26locale5__imp7installINS_7num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ - (get_local $0) - (i32.const 17264) - ) - (i32.store - (i32.const 17276) - (i32.const 0) - ) - (i32.store - (i32.const 17272) - (i32.const 7092) - ) - (call $__ZNSt3__26locale5__imp7installINS_7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ - (get_local $0) - (i32.const 17272) - ) - (i32.store - (i32.const 17284) - (i32.const 0) - ) - (i32.store - (i32.const 17280) - (i32.const 8640) - ) - (call $__ZNSt3__26locale5__imp7installINS_10moneypunctIcLb0EEEEEvPT_ - (get_local $0) - (i32.const 17280) - ) - (i32.store - (i32.const 17292) - (i32.const 0) - ) - (i32.store - (i32.const 17288) - (i32.const 8696) - ) - (call $__ZNSt3__26locale5__imp7installINS_10moneypunctIcLb1EEEEEvPT_ - (get_local $0) - (i32.const 17288) - ) - (i32.store - (i32.const 17300) - (i32.const 0) - ) - (i32.store - (i32.const 17296) - (i32.const 8752) - ) - (call $__ZNSt3__26locale5__imp7installINS_10moneypunctIwLb0EEEEEvPT_ - (get_local $0) - (i32.const 17296) - ) - (i32.store - (i32.const 17308) - (i32.const 0) - ) - (i32.store - (i32.const 17304) - (i32.const 8808) - ) - (call $__ZNSt3__26locale5__imp7installINS_10moneypunctIwLb1EEEEEvPT_ - (get_local $0) - (i32.const 17304) - ) - (i32.store - (i32.const 17316) - (i32.const 0) - ) - (i32.store - (i32.const 17312) - (i32.const 8864) - ) - (call $__ZNSt3__26locale5__imp7installINS_9money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ - (get_local $0) - (i32.const 17312) - ) - (i32.store - (i32.const 17324) - (i32.const 0) - ) - (i32.store - (i32.const 17320) - (i32.const 8892) - ) - (call $__ZNSt3__26locale5__imp7installINS_9money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ - (get_local $0) - (i32.const 17320) - ) - (i32.store - (i32.const 17332) - (i32.const 0) - ) - (i32.store - (i32.const 17328) - (i32.const 8920) - ) - (call $__ZNSt3__26locale5__imp7installINS_9money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ - (get_local $0) - (i32.const 17328) - ) - (i32.store - (i32.const 17340) - (i32.const 0) - ) - (i32.store - (i32.const 17336) - (i32.const 8948) - ) - (call $__ZNSt3__26locale5__imp7installINS_9money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ - (get_local $0) - (i32.const 17336) - ) - (i32.store - (i32.const 17348) - (i32.const 0) - ) - (i32.store - (i32.const 17344) - (i32.const 7144) - ) - (i32.store - (i32.const 17352) - (i32.const 7192) - ) - (call $__ZNSt3__26locale5__imp7installINS_8time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ - (get_local $0) - (i32.const 17344) - ) - (i32.store - (i32.const 17364) - (i32.const 0) - ) - (i32.store - (i32.const 17360) - (i32.const 7228) - ) - (i32.store - (i32.const 17368) - (i32.const 7276) - ) - (call $__ZNSt3__26locale5__imp7installINS_8time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ - (get_local $0) - (i32.const 17360) - ) - (i32.store - (i32.const 17380) - (i32.const 0) - ) - (i32.store - (i32.const 17376) - (i32.const 9380) - ) - (i32.store - (i32.const 17384) - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (i32.const 17376) - (i32.const 8592) - ) - (call $__ZNSt3__26locale5__imp7installINS_8time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ - (get_local $0) - (i32.const 17376) - ) - (i32.store - (i32.const 17396) - (i32.const 0) - ) - (i32.store - (i32.const 17392) - (i32.const 9380) - ) - (i32.store - (i32.const 17400) - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (i32.const 17392) - (i32.const 8616) - ) - (call $__ZNSt3__26locale5__imp7installINS_8time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ - (get_local $0) - (i32.const 17392) - ) - (i32.store - (i32.const 17412) - (i32.const 0) - ) - (i32.store - (i32.const 17408) - (i32.const 8976) - ) - (call $__ZNSt3__26locale5__imp7installINS_8messagesIcEEEEvPT_ - (get_local $0) - (i32.const 17408) - ) - (i32.store - (i32.const 17420) - (i32.const 0) - ) - (i32.store - (i32.const 17416) - (i32.const 9008) - ) - (call $__ZNSt3__26locale5__imp7installINS_8messagesIwEEEEvPT_ - (get_local $0) - (i32.const 17416) - ) - ) - (func $__ZNSt3__29__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (set_local $15 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19240) - ) - ) - (call_indirect $FUNCSIG$vii - (tee_local $11 - (get_local $15) - ) - (tee_local $10 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19248) - ) - ) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $16 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (block $label$break$L1 - (if - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (tee_local $17 - (i32.add - (get_local $11) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $16) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (block - (i32.store - (get_local $5) - (get_local $3) - ) - (block $label$break$L7 - (if - (i32.gt_s - (i32.sub - (get_local $2) - (tee_local $6 - (block $switch i32 - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default - (i32.sub - (tee_local $6 - (i32.load8_s - (get_local $0) - ) - ) - (i32.const 43) - ) - ) - ) - (set_local $6 - (call_indirect $FUNCSIG$iii - (get_local $9) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $7) - (get_local $6) - ) - (br $switch - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - (if - (i32.eq - (i32.load8_s - (get_local $6) - ) - (i32.const 48) - ) - (block - (block $switch2 - (block $switch-default5 - (block $switch-case3 - (br_table $switch-case3 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-case3 $switch-default5 - (i32.sub - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - (i32.const 88) - ) - ) - ) - (br $switch2) - ) - (br $label$break$L7) - ) - (set_local $8 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $12 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $12) - (get_local $8) - ) - (set_local $7 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.load8_s - (get_local $7) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $8) - (get_local $7) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (block $label$break$L12 - (if - (i32.ne - (get_local $6) - (get_local $2) - ) - (block - (set_local $7 - (get_local $2) - ) - (set_local $8 - (get_local $6) - ) - (loop $while-in - (br_if $label$break$L12 - (i32.ge_u - (get_local $8) - (tee_local $7 - (i32.add - (get_local $7) - (i32.const -1) - ) - ) - ) - ) - (set_local $12 - (i32.load8_s - (get_local $8) - ) - ) - (i32.store8 - (get_local $8) - (i32.load8_s - (get_local $7) - ) - ) - (i32.store8 - (get_local $7) - (get_local $12) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (set_local $12 - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $10 - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (get_local $6) - ) - (loop $while-in8 - (if - (i32.lt_u - (get_local $8) - (get_local $2) - ) - (block - (if - (i32.and - (i32.ne - (tee_local $18 - (i32.load8_s - (i32.add - (if i32 - (tee_local $14 - (i32.lt_s - (tee_local $13 - (i32.load8_s - (get_local $17) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $11) - ) - (get_local $11) - ) - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (i32.eq - (get_local $10) - (get_local $18) - ) - ) - (block - (i32.store - (get_local $5) - (i32.add - (tee_local $10 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $10) - (get_local $12) - ) - (set_local $10 - (i32.const 0) - ) - (set_local $7 - (i32.add - (i32.lt_u - (get_local $7) - (i32.add - (if i32 - (get_local $14) - (i32.load - (get_local $16) - ) - (i32.and - (get_local $13) - (i32.const 255) - ) - ) - (i32.const -1) - ) - ) - (get_local $7) - ) - ) - ) - ) - (set_local $13 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.load8_s - (get_local $8) - ) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $14 - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $14) - (get_local $13) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in8) - ) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.add - (get_local $3) - (i32.shl - (i32.sub - (get_local $6) - (get_local $0) - ) - (i32.const 2) - ) - ) - ) - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - ) - (set_local $5 - (get_local $6) - ) - (block - (set_local $5 - (get_local $7) - ) - (loop $while-in10 - (if - (i32.ge_u - (get_local $6) - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -4) - ) - ) - ) - (block - (set_local $5 - (get_local $7) - ) - (br $label$break$L1) - ) - (block - (set_local $8 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $6) - (i32.load - (get_local $5) - ) - ) - (i32.store - (get_local $5) - (get_local $8) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $while-in10) - ) - ) - ) - ) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $9) - (get_local $0) - (get_local $2) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $9) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $5) - (tee_local $5 - (i32.add - (get_local $3) - (i32.shl - (i32.sub - (get_local $2) - (get_local $0) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (if i32 - (i32.eq - (get_local $1) - (get_local $2) - ) - (get_local $5) - (i32.add - (get_local $3) - (i32.shl - (i32.sub - (get_local $1) - (get_local $0) - ) - (i32.const 2) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $15) - ) - ) - (func $__ZNSt3__29__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (set_local $14 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19208) - ) - ) - (call_indirect $FUNCSIG$vii - (tee_local $11 - (get_local $14) - ) - (tee_local $10 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19220) - ) - ) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (set_local $15 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (tee_local $16 - (i32.add - (get_local $11) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $15) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (block - (i32.store - (get_local $5) - (get_local $3) - ) - (block $label$break$L7 - (if - (i32.gt_s - (i32.sub - (get_local $2) - (tee_local $6 - (block $switch i32 - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default - (i32.sub - (tee_local $6 - (i32.load8_s - (get_local $0) - ) - ) - (i32.const 43) - ) - ) - ) - (set_local $6 - (call_indirect $FUNCSIG$iii - (get_local $9) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $7) - (get_local $6) - ) - (br $switch - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $0) - ) - ) - ) - (i32.const 1) - ) - (if - (i32.eq - (i32.load8_s - (get_local $6) - ) - (i32.const 48) - ) - (block - (block $switch1 - (block $switch-default4 - (block $switch-case2 - (br_table $switch-case2 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-default4 $switch-case2 $switch-default4 - (i32.sub - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - (i32.const 88) - ) - ) - ) - (br $switch1) - ) - (br $label$break$L7) - ) - (set_local $8 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $12 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $12) - (get_local $8) - ) - (set_local $7 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.load8_s - (get_local $7) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $8) - (get_local $7) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (block $label$break$L12 - (if - (i32.ne - (get_local $6) - (get_local $2) - ) - (block - (set_local $7 - (get_local $2) - ) - (set_local $8 - (get_local $6) - ) - (loop $while-in - (br_if $label$break$L12 - (i32.ge_u - (get_local $8) - (tee_local $7 - (i32.add - (get_local $7) - (i32.const -1) - ) - ) - ) - ) - (set_local $12 - (i32.load8_s - (get_local $8) - ) - ) - (i32.store8 - (get_local $8) - (i32.load8_s - (get_local $7) - ) - ) - (i32.store8 - (get_local $7) - (get_local $12) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (set_local $12 - (call_indirect $FUNCSIG$ii - (get_local $10) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (set_local $10 - (i32.const 0) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (get_local $6) - ) - (loop $while-in7 - (if - (i32.lt_u - (get_local $8) - (get_local $2) - ) - (block - (if - (i32.and - (i32.ne - (tee_local $13 - (i32.load8_s - (i32.add - (if i32 - (i32.lt_s - (i32.load8_s - (get_local $16) - ) - (i32.const 0) - ) - (i32.load - (get_local $11) - ) - (get_local $11) - ) - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (i32.eq - (get_local $10) - (get_local $13) - ) - ) - (block - (i32.store - (get_local $5) - (i32.add - (tee_local $10 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $10) - (get_local $12) - ) - (set_local $10 - (i32.const 0) - ) - (set_local $7 - (i32.add - (i32.lt_u - (get_local $7) - (i32.add - (if i32 - (i32.lt_s - (tee_local $13 - (i32.load8_s - (get_local $16) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $15) - ) - (i32.and - (get_local $13) - (i32.const 255) - ) - ) - (i32.const -1) - ) - ) - (get_local $7) - ) - ) - ) - ) - (set_local $13 - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.load8_s - (get_local $8) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $17 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $17) - (get_local $13) - ) - (set_local $10 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in7) - ) - ) - ) - (set_local $5 - (if i32 - (i32.eq - (tee_local $7 - (i32.add - (get_local $3) - (i32.sub - (get_local $6) - (get_local $0) - ) - ) - ) - (tee_local $6 - (i32.load - (get_local $5) - ) - ) - ) - (get_local $7) - (block i32 - (loop $while-in9 - (if - (i32.lt_u - (get_local $7) - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - ) - (block - (set_local $8 - (i32.load8_s - (get_local $7) - ) - ) - (i32.store8 - (get_local $7) - (i32.load8_s - (get_local $6) - ) - ) - (i32.store8 - (get_local $6) - (get_local $8) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (br $while-in9) - ) - ) - ) - (i32.load - (get_local $5) - ) - ) - ) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $9) - (get_local $0) - (get_local $2) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $9) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $5) - (tee_local $5 - (i32.add - (get_local $3) - (i32.sub - (get_local $2) - (get_local $0) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (if i32 - (i32.eq - (get_local $1) - (get_local $2) - ) - (get_local $5) - (i32.add - (get_local $3) - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $11) - ) - (set_global $STACKTOP - (get_local $14) - ) - ) - (func $__ZNKSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 576) - ) - ) - (set_local $14 - (get_local $7) - ) - (set_local $15 - (i32.add - (get_local $7) - (i32.const 464) - ) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - ) - (i32.store - (tee_local $17 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (i32.const 107) - ) - (i32.store - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $4) - ) - ) - (set_local $0 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $13) - (i32.const 19240) - ) - ) - (i32.store8 - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 564) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (i32.load - (get_local $2) - ) - ) - (set_local $10 - (i32.load offset=4 - (get_local $4) - ) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $7) - (i32.const 424) - ) - ) - (i32.load - (get_local $12) - ) - ) - (if - (call $__ZNSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_ - (get_local $1) - (get_local $4) - (get_local $3) - (get_local $13) - (get_local $10) - (get_local $5) - (get_local $8) - (get_local $0) - (get_local $11) - (tee_local $16 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (i32.add - (get_local $9) - (i32.const 400) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $0) - (i32.const 15331) - (i32.const 15341) - (get_local $4) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $0) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (if - (i32.gt_s - (tee_local $0 - (i32.sub - (tee_local $10 - (i32.load - (get_local $16) - ) - ) - (tee_local $9 - (i32.load - (get_local $11) - ) - ) - ) - ) - (i32.const 392) - ) - (block - (set_local $3 - (tee_local $0 - (call $_malloc - (i32.add - (i32.shr_s - (get_local $0) - (i32.const 2) - ) - (i32.const 2) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - (block - (set_local $3 - (i32.const 0) - ) - (set_local $0 - (get_local $15) - ) - ) - ) - (if - (i32.load8_s - (get_local $8) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 45) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (set_local $12 - (i32.add - (get_local $4) - (i32.const 40) - ) - ) - (set_local $18 - (get_local $4) - ) - (set_local $8 - (get_local $0) - ) - (loop $while-in - (if - (i32.lt_u - (get_local $9) - (get_local $10) - ) - (block - (set_local $10 - (i32.load - (get_local $9) - ) - ) - (set_local $0 - (get_local $4) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eq - (get_local $0) - (get_local $12) - ) - (block - (set_local $0 - (get_local $12) - ) - (br $while-out0) - ) - ) - (if - (i32.ne - (i32.load - (get_local $0) - ) - (get_local $10) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (i32.store8 - (get_local $8) - (i32.load8_s - (i32.add - (i32.shr_s - (i32.sub - (get_local $0) - (get_local $18) - ) - (i32.const 2) - ) - (i32.const 15331) - ) - ) - ) - (set_local $10 - (i32.load - (get_local $16) - ) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $14) - (get_local $6) - ) - (drop - (call $_sscanf - (get_local $15) - (i32.const 15232) - (get_local $14) - ) - ) - (if - (get_local $3) - (call $_free - (get_local $3) - ) - ) - ) - ) - (set_local $0 - (if i32 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $3) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $1) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $3 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $__rjti$1 - (i32.eqz - (get_local $0) - ) - ) - ) - (br $__rjto$1) - ) - (br_if $__rjti$1 - (get_local $0) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 2) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $1) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (i32.load - (get_local $13) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $11) - ) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (if - (get_local $0) - (call_indirect $FUNCSIG$vi - (get_local $0) - (i32.add - (i32.and - (i32.load - (get_local $17) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $1) - ) - (func $__ZNSt3__2L13utf8_to_utf16EPKhS1_RS1_PtS3_RS3_mNS_12codecvt_modeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (i32.store - (get_local $2) - (get_local $0) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (if - (i32.and - (get_local $7) - (i32.const 4) - ) - (if - (i32.gt_s - (i32.sub - (tee_local $0 - (get_local $1) - ) - (tee_local $3 - (i32.load - (get_local $2) - ) - ) - ) - (i32.const 2) - ) - (if - (i32.eq - (i32.load8_s - (get_local $3) - ) - (i32.const -17) - ) - (if - (i32.eq - (i32.load8_s offset=1 - (get_local $3) - ) - (i32.const -69) - ) - (if - (i32.eq - (i32.load8_s offset=2 - (get_local $3) - ) - (i32.const -65) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $3) - (i32.const 3) - ) - ) - ) - ) - ) - ) - (set_local $0 - (get_local $1) - ) - ) - (set_local $7 - (get_local $4) - ) - (block $__rjto$0 - (block $__rjti$0 - (loop $label$continue$L9 - (block $label$break$L9 - (br_if $__rjti$0 - (i32.eqz - (tee_local $3 - (i32.lt_u - (tee_local $8 - (i32.load - (get_local $2) - ) - ) - (get_local $1) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.ge_u - (tee_local $11 - (i32.load - (get_local $5) - ) - ) - (get_local $4) - ) - ) - (if - (i32.gt_u - (tee_local $10 - (i32.and - (tee_local $3 - (i32.load8_s - (get_local $8) - ) - ) - (i32.const 255) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (block $do-once - (if - (i32.gt_s - (get_local $3) - (i32.const -1) - ) - (block - (i32.store16 - (get_local $11) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - ) - (block - (if - (i32.lt_s - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 194) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 224) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $0) - (get_local $8) - ) - (i32.const 2) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $3 - (i32.load8_u offset=1 - (get_local $8) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.gt_u - (tee_local $3 - (i32.or - (i32.and - (get_local $3) - (i32.const 63) - ) - (i32.and - (i32.shl - (get_local $10) - (i32.const 6) - ) - (i32.const 1984) - ) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (i32.store16 - (get_local $11) - (get_local $3) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $8) - (i32.const 2) - ) - ) - (br $do-once) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 240) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $0) - (get_local $8) - ) - (i32.const 3) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (set_local $3 - (i32.load8_s offset=1 - (get_local $8) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $8) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (get_local $10) - (i32.const 224) - ) - ) - ) - (if - (i32.ne - (i32.and - (get_local $3) - (i32.const 224) - ) - (i32.const 160) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch) - ) - (if - (i32.ne - (i32.and - (get_local $3) - (i32.const 224) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch) - ) - (if - (i32.ne - (i32.and - (get_local $3) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $9 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.gt_u - (i32.and - (tee_local $3 - (i32.or - (i32.or - (i32.and - (i32.shl - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 6) - ) - (i32.const 4032) - ) - (i32.shl - (get_local $10) - (i32.const 12) - ) - ) - (i32.and - (get_local $9) - (i32.const 63) - ) - ) - ) - (i32.const 65535) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (i32.store16 - (get_local $11) - (get_local $3) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $8) - (i32.const 3) - ) - ) - (br $do-once) - ) - ) - (if - (i32.ge_s - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 245) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $0) - (get_local $8) - ) - (i32.const 4) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (set_local $3 - (i32.load8_s offset=1 - (get_local $8) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $8) - ) - ) - (set_local $12 - (i32.load8_u offset=3 - (get_local $8) - ) - ) - (block $switch1 - (block $switch-default4 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case2 $switch-default4 $switch-default4 $switch-default4 $switch-case3 $switch-default4 - (i32.sub - (get_local $10) - (i32.const 240) - ) - ) - ) - (if - (i32.ge_s - (i32.and - (i32.add - (get_local $3) - (i32.const 112) - ) - (i32.const 255) - ) - (i32.const 48) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch1) - ) - (if - (i32.ne - (i32.and - (get_local $3) - (i32.const 240) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch1) - ) - (if - (i32.ne - (i32.and - (get_local $3) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $8 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $9 - (i32.and - (get_local $12) - (i32.const 255) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $7) - (get_local $11) - ) - (i32.const 4) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (if - (i32.gt_u - (i32.or - (i32.or - (i32.or - (i32.and - (i32.shl - (tee_local $3 - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.const 12) - ) - (i32.const 258048) - ) - (i32.shl - (tee_local $10 - (i32.and - (get_local $10) - (i32.const 7) - ) - ) - (i32.const 18) - ) - ) - (i32.and - (tee_local $12 - (i32.shl - (get_local $8) - (i32.const 6) - ) - ) - (i32.const 4032) - ) - ) - (tee_local $9 - (i32.and - (get_local $9) - (i32.const 63) - ) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (i32.store16 - (get_local $11) - (i32.or - (i32.or - (i32.or - (i32.and - (i32.shl - (get_local $3) - (i32.const 2) - ) - (i32.const 60) - ) - (i32.and - (i32.shr_u - (get_local $8) - (i32.const 4) - ) - (i32.const 3) - ) - ) - (i32.add - (i32.shl - (i32.or - (i32.and - (i32.shr_u - (get_local $3) - (i32.const 4) - ) - (i32.const 3) - ) - (i32.shl - (get_local $10) - (i32.const 2) - ) - ) - (i32.const 6) - ) - (i32.const 16320) - ) - ) - (i32.const 55296) - ) - ) - (i32.store - (get_local $5) - (tee_local $3 - (i32.add - (get_local $11) - (i32.const 2) - ) - ) - ) - (i32.store16 - (get_local $3) - (i32.or - (i32.or - (get_local $9) - (i32.and - (get_local $12) - (i32.const 960) - ) - ) - (i32.const 56320) - ) - ) - (i32.store - (get_local $2) - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (i32.const 2) - ) - ) - (br $label$continue$L9) - ) - ) - (br $__rjto$0) - ) - (set_local $0 - (i32.and - (get_local $3) - (i32.const 1) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__27codecvtIwc11__mbstate_tE5do_inERS1_PKcS5_RS5_PwS7_RS7_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $12 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $13 - (get_local $12) - ) - (set_local $8 - (get_local $2) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $8) - (get_local $3) - ) - (block - (set_local $8 - (get_local $3) - ) - (br $while-out) - ) - ) - (if - (i32.load8_s - (get_local $8) - ) - (block - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (i32.store - (get_local $7) - (get_local $5) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (set_local $14 - (get_local $6) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $0 - (get_local $8) - ) - (block $__rjto$6 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (loop $while-in1 - (br_if $__rjti$6 - (i32.or - (i32.eq - (get_local $5) - (get_local $6) - ) - (i32.eq - (get_local $2) - (get_local $3) - ) - ) - ) - (set_local $9 - (i32.load offset=4 - (tee_local $8 - (get_local $1) - ) - ) - ) - (i32.store - (tee_local $10 - (get_local $13) - ) - (i32.load - (get_local $8) - ) - ) - (i32.store offset=4 - (get_local $10) - (get_local $9) - ) - (set_local $10 - (call $_uselocale - (i32.load - (get_local $11) - ) - ) - ) - (set_local $9 - (call $_mbsnrtowcs - (get_local $5) - (get_local $4) - (i32.sub - (tee_local $8 - (get_local $0) - ) - (get_local $2) - ) - (i32.shr_s - (i32.sub - (get_local $14) - (get_local $5) - ) - (i32.const 2) - ) - (get_local $1) - ) - ) - (if - (get_local $10) - (drop - (call $_uselocale - (get_local $10) - ) - ) - ) - (if - (i32.eq - (get_local $9) - (i32.const -1) - ) - (block - (set_local $0 - (get_local $2) - ) - (br $__rjti$3) - ) - ) - (i32.store - (get_local $7) - (tee_local $5 - (i32.add - (i32.load - (get_local $7) - ) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (br_if $__rjti$4 - (i32.eq - (get_local $5) - (get_local $6) - ) - ) - (set_local $2 - (i32.load - (get_local $4) - ) - ) - (if - (i32.eq - (get_local $0) - (get_local $3) - ) - (set_local $0 - (get_local $3) - ) - (block - (set_local $0 - (call $_uselocale - (i32.load - (get_local $11) - ) - ) - ) - (set_local $2 - (call $_mbrtowc - (get_local $5) - (get_local $2) - (i32.const 1) - (get_local $1) - ) - ) - (if - (get_local $0) - (drop - (call $_uselocale - (get_local $0) - ) - ) - ) - (if - (get_local $2) - (block - (set_local $0 - (i32.const 2) - ) - (br $__rjto$6) - ) - ) - (i32.store - (get_local $7) - (i32.add - (i32.load - (get_local $7) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $4) - (tee_local $2 - (i32.add - (i32.load - (get_local $4) - ) - (i32.const 1) - ) - ) - ) - (set_local $0 - (get_local $2) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eq - (get_local $0) - (get_local $3) - ) - (block - (set_local $0 - (get_local $3) - ) - (br $while-out2) - ) - ) - (if - (i32.load8_s - (get_local $0) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - ) - (set_local $5 - (i32.load - (get_local $7) - ) - ) - ) - ) - (br $while-in1) - ) - ) - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L29 - (i32.store - (get_local $7) - (get_local $5) - ) - (br_if $__rjti$2 - (i32.eq - (get_local $0) - (i32.load - (get_local $4) - ) - ) - ) - (set_local $1 - (call $_uselocale - (i32.load - (get_local $11) - ) - ) - ) - (set_local $2 - (call $_mbrtowc - (get_local $5) - (get_local $0) - (i32.sub - (get_local $8) - (get_local $0) - ) - (get_local $13) - ) - ) - (if - (get_local $1) - (drop - (call $_uselocale - (get_local $1) - ) - ) - ) - (set_local $0 - (block $switch i32 - (block $switch-default - (block $switch-case5 - (block $switch-case4 - (block $switch-case - (br_table $switch-case4 $switch-case $switch-case5 $switch-default - (i32.sub - (get_local $2) - (i32.const -2) - ) - ) - ) - (br $__rjti$0) - ) - (br $__rjti$1) - ) - (br $switch - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.add - (get_local $0) - (get_local $2) - ) - ) - ) - (set_local $5 - (i32.add - (i32.load - (get_local $7) - ) - (i32.const 4) - ) - ) - (br $label$continue$L29) - ) - ) - (i32.store - (get_local $4) - (get_local $0) - ) - (set_local $0 - (i32.const 2) - ) - (br $__rjto$6) - ) - (i32.store - (get_local $4) - (get_local $0) - ) - (set_local $0 - (i32.const 1) - ) - (br $__rjto$6) - ) - (i32.store - (get_local $4) - (get_local $0) - ) - (set_local $0 - (i32.ne - (get_local $0) - (get_local $3) - ) - ) - (br $__rjto$6) - ) - (set_local $2 - (i32.load - (get_local $4) - ) - ) - (br $__rjti$6) - ) - (br $__rjto$6) - ) - (set_local $0 - (i32.ne - (get_local $2) - (get_local $3) - ) - ) - ) - (set_global $STACKTOP - (get_local $12) - ) - (get_local $0) - ) - (func $__ZNKSt3__27codecvtIwc11__mbstate_tE6do_outERS1_PKwS5_RS5_PcS7_RS7_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (set_local $10 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $12 - (get_local $10) - ) - (set_local $13 - (i32.add - (get_local $10) - (i32.const 8) - ) - ) - (set_local $8 - (get_local $2) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $8) - (get_local $3) - ) - (block - (set_local $8 - (get_local $3) - ) - (br $while-out) - ) - ) - (if - (i32.load - (get_local $8) - ) - (block - (set_local $8 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - (i32.store - (get_local $7) - (get_local $5) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (set_local $14 - (get_local $6) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $0 - (get_local $8) - ) - (block $__rjto$4 - (block $__rjti$4 - (block $__rjti$3 - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L6 - (br_if $__rjti$4 - (i32.or - (i32.eq - (get_local $5) - (get_local $6) - ) - (i32.eq - (get_local $2) - (get_local $3) - ) - ) - ) - (set_local $15 - (i32.load offset=4 - (tee_local $8 - (get_local $1) - ) - ) - ) - (i32.store - (tee_local $9 - (get_local $12) - ) - (i32.load - (get_local $8) - ) - ) - (i32.store offset=4 - (get_local $9) - (get_local $15) - ) - (set_local $8 - (call $_uselocale - (i32.load - (get_local $11) - ) - ) - ) - (set_local $9 - (call $_wcsnrtombs - (get_local $5) - (get_local $4) - (i32.shr_s - (i32.sub - (get_local $0) - (get_local $2) - ) - (i32.const 2) - ) - (i32.sub - (get_local $14) - (get_local $5) - ) - (get_local $1) - ) - ) - (if - (get_local $8) - (drop - (call $_uselocale - (get_local $8) - ) - ) - ) - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-default - (i32.sub - (get_local $9) - (i32.const -1) - ) - ) - ) - (set_local $0 - (get_local $2) - ) - (set_local $1 - (get_local $5) - ) - (br $__rjti$0) - ) - (set_local $0 - (i32.const 1) - ) - (br $__rjto$4) - ) - (i32.store - (get_local $7) - (tee_local $5 - (i32.add - (i32.load - (get_local $7) - ) - (get_local $9) - ) - ) - ) - (br_if $__rjti$2 - (i32.eq - (get_local $5) - (get_local $6) - ) - ) - (if - (i32.eq - (get_local $0) - (get_local $3) - ) - (block - (set_local $2 - (i32.load - (get_local $4) - ) - ) - (set_local $0 - (get_local $3) - ) - ) - (block - (set_local $2 - (call $_uselocale - (i32.load - (get_local $11) - ) - ) - ) - (set_local $0 - (call $_wcrtomb - (get_local $13) - (i32.const 0) - (get_local $1) - ) - ) - (if - (get_local $2) - (drop - (call $_uselocale - (get_local $2) - ) - ) - ) - (if - (i32.eq - (get_local $0) - (i32.const -1) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $__rjto$4) - ) - ) - (if - (i32.gt_u - (get_local $0) - (i32.sub - (get_local $14) - (i32.load - (get_local $7) - ) - ) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $__rjto$4) - ) - (set_local $2 - (get_local $13) - ) - ) - (loop $while-in2 - (if - (get_local $0) - (block - (set_local $5 - (i32.load8_s - (get_local $2) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $8 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $8) - (get_local $5) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in2) - ) - ) - ) - (i32.store - (get_local $4) - (tee_local $2 - (i32.add - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - ) - (set_local $0 - (get_local $2) - ) - (loop $while-in4 - (block $while-out3 - (if - (i32.eq - (get_local $0) - (get_local $3) - ) - (block - (set_local $0 - (get_local $3) - ) - (br $while-out3) - ) - ) - (if - (i32.load - (get_local $0) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in4) - ) - ) - ) - ) - (set_local $5 - (i32.load - (get_local $7) - ) - ) - ) - ) - (br $label$continue$L6) - ) - ) - (i32.store - (get_local $7) - (get_local $1) - ) - (loop $while-in6 - (if - (i32.ne - (get_local $0) - (i32.load - (get_local $4) - ) - ) - (block - (set_local $3 - (i32.load - (get_local $0) - ) - ) - (set_local $2 - (call $_uselocale - (i32.load - (get_local $11) - ) - ) - ) - (set_local $1 - (call $_wcrtomb - (get_local $1) - (get_local $3) - (get_local $12) - ) - ) - (if - (get_local $2) - (drop - (call $_uselocale - (get_local $2) - ) - ) - ) - (if - (i32.ne - (get_local $1) - (i32.const -1) - ) - (block - (i32.store - (get_local $7) - (tee_local $1 - (i32.add - (i32.load - (get_local $7) - ) - (get_local $1) - ) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in6) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $0) - ) - (set_local $0 - (i32.const 2) - ) - (br $__rjto$4) - ) - (br $__rjto$4) - ) - (set_local $2 - (i32.load - (get_local $4) - ) - ) - (br $__rjti$4) - ) - (br $__rjto$4) - ) - (set_local $0 - (i32.ne - (get_local $2) - (get_local $3) - ) - ) - ) - (set_global $STACKTOP - (get_local $10) - ) - (get_local $0) - ) - (func $__ZNKSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 240) - ) - ) - (set_local $14 - (get_local $7) - ) - (set_local $15 - (i32.add - (get_local $7) - (i32.const 36) - ) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 140) - ) - ) - ) - (i32.store - (tee_local $17 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (i32.const 107) - ) - (i32.store - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $4) - ) - ) - (set_local $0 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $13) - (i32.const 19208) - ) - ) - (i32.store8 - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 136) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (i32.load - (get_local $2) - ) - ) - (set_local $10 - (i32.load offset=4 - (get_local $4) - ) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - (i32.load - (get_local $12) - ) - ) - (if - (call $__ZNSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_ - (get_local $1) - (get_local $4) - (get_local $3) - (get_local $13) - (get_local $10) - (get_local $5) - (get_local $8) - (get_local $0) - (get_local $11) - (tee_local $16 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (i32.add - (get_local $9) - (i32.const 100) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $0) - (i32.const 15221) - (i32.const 15231) - (get_local $4) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $0) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (if - (i32.gt_s - (tee_local $0 - (i32.sub - (tee_local $10 - (i32.load - (get_local $16) - ) - ) - (tee_local $9 - (i32.load - (get_local $11) - ) - ) - ) - ) - (i32.const 98) - ) - (block - (set_local $3 - (tee_local $0 - (call $_malloc - (i32.add - (get_local $0) - (i32.const 2) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - (block - (set_local $3 - (i32.const 0) - ) - (set_local $0 - (get_local $15) - ) - ) - ) - (if - (i32.load8_s - (get_local $8) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 45) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (set_local $12 - (i32.add - (get_local $4) - (i32.const 10) - ) - ) - (set_local $18 - (get_local $4) - ) - (set_local $8 - (get_local $0) - ) - (loop $while-in - (if - (i32.lt_u - (get_local $9) - (get_local $10) - ) - (block - (set_local $10 - (i32.load8_s - (get_local $9) - ) - ) - (set_local $0 - (get_local $4) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eq - (get_local $0) - (get_local $12) - ) - (block - (set_local $0 - (get_local $12) - ) - (br $while-out0) - ) - ) - (if - (i32.ne - (i32.load8_s - (get_local $0) - ) - (get_local $10) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (i32.store8 - (get_local $8) - (i32.load8_s - (i32.add - (i32.sub - (get_local $0) - (get_local $18) - ) - (i32.const 15221) - ) - ) - ) - (set_local $10 - (i32.load - (get_local $16) - ) - ) - (set_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store8 - (get_local $8) - (i32.const 0) - ) - (i32.store - (get_local $14) - (get_local $6) - ) - (drop - (call $_sscanf - (get_local $15) - (i32.const 15232) - (get_local $14) - ) - ) - (if - (get_local $3) - (call $_free - (get_local $3) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $3 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $0 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (get_local $3) - ) - ) - (br $__rjto$1) - ) - (br_if $__rjti$1 - (get_local $3) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 2) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $1) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (i32.load - (get_local $13) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $11) - ) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (if - (get_local $0) - (call_indirect $FUNCSIG$vi - (get_local $0) - (i32.add - (i32.and - (i32.load - (get_local $17) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $1) - ) - (func $__ZNSt3__2L13utf16_to_utf8EPKtS1_RS1_PhS3_RS3_mNS_12codecvt_modeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (i32.store - (get_local $2) - (get_local $0) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (block $label$break$L4 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (i32.and - (get_local $7) - (i32.const 2) - ) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $4) - (get_local $3) - ) - (i32.const 3) - ) - (set_local $0 - (i32.const 1) - ) - (block - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.const -17) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.const -69) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.const -65) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L4) - ) - (set_local $3 - (get_local $1) - ) - (set_local $0 - (i32.load - (get_local $2) - ) - ) - (loop $while-in - (if - (i32.ge_u - (get_local $0) - (get_local $1) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $label$break$L4) - ) - ) - (if - (i32.gt_u - (tee_local $7 - (i32.and - (tee_local $8 - (i32.load16_s - (get_local $0) - ) - ) - (i32.const 65535) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L4) - ) - ) - (block $do-once - (if - (i32.lt_s - (i32.and - (get_local $8) - (i32.const 65535) - ) - (i32.const 128) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $4) - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 1) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (get_local $8) - ) - ) - (block - (if - (i32.lt_s - (i32.and - (get_local $8) - (i32.const 65535) - ) - (i32.const 2048) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $4) - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 2) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $7) - (i32.const 6) - ) - (i32.const 192) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.and - (get_local $7) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $8) - (i32.const 65535) - ) - (i32.const 55296) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $4) - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 3) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $7) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $7) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.and - (get_local $7) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once) - ) - ) - (if - (i32.ge_s - (i32.and - (get_local $8) - (i32.const 65535) - ) - (i32.const 56320) - ) - (block - (if - (i32.lt_s - (i32.and - (get_local $8) - (i32.const 65535) - ) - (i32.const 57344) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L4) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $4) - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 3) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $7) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $7) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.or - (i32.and - (get_local $7) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $3) - (get_local $0) - ) - (i32.const 4) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $0 - (i32.load16_u - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 2) - ) - ) - ) - ) - (i32.const 64512) - ) - (i32.const 56320) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L4) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $4) - (i32.load - (get_local $5) - ) - ) - (i32.const 4) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (if - (i32.gt_u - (i32.or - (i32.or - (i32.add - (i32.shl - (tee_local $9 - (i32.and - (get_local $7) - (i32.const 960) - ) - ) - (i32.const 10) - ) - (i32.const 65536) - ) - (i32.and - (i32.shl - (get_local $7) - (i32.const 10) - ) - (i32.const 64512) - ) - ) - (i32.and - (get_local $0) - (i32.const 1023) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $2) - (get_local $8) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $8) - (i32.or - (i32.shr_u - (tee_local $8 - (i32.add - (i32.shr_u - (get_local $9) - (i32.const 6) - ) - (i32.const 1) - ) - ) - (i32.const 2) - ) - (i32.const 240) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $9 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $9) - (i32.or - (i32.or - (i32.and - (i32.shr_u - (get_local $7) - (i32.const 2) - ) - (i32.const 15) - ) - (i32.and - (i32.shl - (get_local $8) - (i32.const 4) - ) - (i32.const 48) - ) - ) - (i32.const 128) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $8) - (i32.or - (i32.or - (i32.and - (i32.shl - (get_local $7) - (i32.const 4) - ) - (i32.const 48) - ) - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 6) - ) - (i32.const 15) - ) - ) - (i32.const 128) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $7) - (i32.or - (i32.and - (get_local $0) - (i32.const 63) - ) - (i32.const 128) - ) - ) - ) - ) - ) - (i32.store - (get_local $2) - (tee_local $0 - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 2) - ) - ) - ) - (br $while-in) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__2L12utf8_to_ucs4EPKhS1_RS1_PjS3_RS3_mNS_12codecvt_modeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (i32.store - (get_local $2) - (get_local $0) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (if - (i32.and - (get_local $7) - (i32.const 4) - ) - (if - (i32.gt_s - (i32.sub - (tee_local $0 - (get_local $1) - ) - (tee_local $3 - (i32.load - (get_local $2) - ) - ) - ) - (i32.const 2) - ) - (if - (i32.eq - (i32.load8_s - (get_local $3) - ) - (i32.const -17) - ) - (if - (i32.eq - (i32.load8_s offset=1 - (get_local $3) - ) - (i32.const -69) - ) - (if - (i32.eq - (i32.load8_s offset=2 - (get_local $3) - ) - (i32.const -65) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $3) - (i32.const 3) - ) - ) - ) - ) - ) - ) - (set_local $0 - (get_local $1) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (loop $label$continue$L9 - (block $label$break$L9 - (br_if $__rjti$0 - (i32.eqz - (tee_local $3 - (i32.lt_u - (tee_local $7 - (i32.load - (get_local $2) - ) - ) - (get_local $1) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.ge_u - (tee_local $10 - (i32.load - (get_local $5) - ) - ) - (get_local $4) - ) - ) - (set_local $3 - (i32.and - (tee_local $8 - (i32.load8_s - (get_local $7) - ) - ) - (i32.const 255) - ) - ) - (block $do-once - (if - (i32.gt_s - (get_local $8) - (i32.const -1) - ) - (block - (if - (i32.gt_u - (get_local $3) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (i32.store - (get_local $10) - (get_local $3) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - ) - (block - (if - (i32.lt_s - (i32.and - (get_local $8) - (i32.const 255) - ) - (i32.const 194) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $8) - (i32.const 255) - ) - (i32.const 224) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $0) - (get_local $7) - ) - (i32.const 2) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $8 - (i32.load8_u offset=1 - (get_local $7) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.gt_u - (tee_local $3 - (i32.or - (i32.and - (get_local $8) - (i32.const 63) - ) - (i32.and - (i32.shl - (get_local $3) - (i32.const 6) - ) - (i32.const 1984) - ) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (i32.store - (get_local $10) - (get_local $3) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $7) - (i32.const 2) - ) - ) - (br $do-once) - ) - ) - (if - (i32.lt_s - (i32.and - (get_local $8) - (i32.const 255) - ) - (i32.const 240) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $0) - (get_local $7) - ) - (i32.const 3) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (set_local $8 - (i32.load8_s offset=1 - (get_local $7) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $7) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (get_local $3) - (i32.const 224) - ) - ) - ) - (if - (i32.ne - (i32.and - (get_local $8) - (i32.const 224) - ) - (i32.const 160) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch) - ) - (if - (i32.ne - (i32.and - (get_local $8) - (i32.const 224) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch) - ) - (if - (i32.ne - (i32.and - (get_local $8) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $9 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.gt_u - (tee_local $3 - (i32.or - (i32.or - (i32.and - (i32.shl - (i32.and - (get_local $8) - (i32.const 255) - ) - (i32.const 6) - ) - (i32.const 4032) - ) - (i32.and - (i32.shl - (get_local $3) - (i32.const 12) - ) - (i32.const 61440) - ) - ) - (i32.and - (get_local $9) - (i32.const 63) - ) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (i32.store - (get_local $10) - (get_local $3) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $7) - (i32.const 3) - ) - ) - (br $do-once) - ) - ) - (if - (i32.ge_s - (i32.and - (get_local $8) - (i32.const 255) - ) - (i32.const 245) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $0) - (get_local $7) - ) - (i32.const 4) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (set_local $8 - (i32.load8_s offset=1 - (get_local $7) - ) - ) - (set_local $9 - (i32.load8_u offset=2 - (get_local $7) - ) - ) - (set_local $11 - (i32.load8_u offset=3 - (get_local $7) - ) - ) - (block $switch1 - (block $switch-default4 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case2 $switch-default4 $switch-default4 $switch-default4 $switch-case3 $switch-default4 - (i32.sub - (get_local $3) - (i32.const 240) - ) - ) - ) - (if - (i32.ge_s - (i32.and - (i32.add - (get_local $8) - (i32.const 112) - ) - (i32.const 255) - ) - (i32.const 48) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch1) - ) - (if - (i32.ne - (i32.and - (get_local $8) - (i32.const 240) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (br $switch1) - ) - (if - (i32.ne - (i32.and - (get_local $8) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $9 - (get_local $9) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.ne - (i32.and - (tee_local $11 - (get_local $11) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (if - (i32.gt_u - (tee_local $3 - (i32.or - (i32.or - (i32.or - (i32.and - (i32.shl - (i32.and - (get_local $8) - (i32.const 255) - ) - (i32.const 12) - ) - (i32.const 258048) - ) - (i32.and - (i32.shl - (get_local $3) - (i32.const 18) - ) - (i32.const 1835008) - ) - ) - (i32.and - (i32.shl - (get_local $9) - (i32.const 6) - ) - (i32.const 4032) - ) - ) - (i32.and - (get_local $11) - (i32.const 63) - ) - ) - ) - (get_local $6) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L9) - ) - ) - (i32.store - (get_local $10) - (get_local $3) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (i32.const 4) - ) - ) - (br $label$continue$L9) - ) - ) - (br $__rjto$0) - ) - (set_local $0 - (i32.and - (get_local $3) - (i32.const 1) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIwS3_NS_9allocatorIwEEEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 432) - ) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - ) - (i32.store - (tee_local $14 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (i32.const 107) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (tee_local $15 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $4) - ) - ) - ) - (set_local $8 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $11) - (i32.const 19240) - ) - ) - (i32.store8 - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 428) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $0 - (get_local $7) - ) - (tee_local $10 - (i32.load - (get_local $2) - ) - ) - ) - (set_local $4 - (i32.load offset=4 - (get_local $4) - ) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $7) - (i32.const 424) - ) - ) - (i32.load - (get_local $0) - ) - ) - (if - (call $__ZNSt3__29money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_ - (get_local $1) - (get_local $16) - (get_local $3) - (get_local $11) - (get_local $4) - (get_local $5) - (get_local $12) - (get_local $8) - (get_local $9) - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (i32.add - (get_local $13) - (i32.const 400) - ) - ) - (block - (if - (i32.lt_s - (i32.load8_s - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $3) - (i32.const 0) - ) - ) - ) - (if - (i32.load8_s - (get_local $12) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw - (get_local $6) - (call_indirect $FUNCSIG$iii - (get_local $8) - (i32.const 45) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $8) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - ) - (set_local $3 - (call_indirect $FUNCSIG$iii - (get_local $8) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=44 - (i32.load - (get_local $8) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (set_local $8 - (i32.add - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - (i32.const -4) - ) - ) - (set_local $0 - (i32.load - (get_local $9) - ) - ) - (loop $while-in - (if - (i32.lt_u - (get_local $0) - (get_local $8) - ) - (if - (i32.eq - (i32.load - (get_local $0) - ) - (get_local $3) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendIPwEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_ - (get_local $6) - (get_local $0) - (get_local $4) - ) - ) - ) - ) - (set_local $0 - (get_local $10) - ) - (set_local $3 - (if i32 - (tee_local $3 - (i32.load - (get_local $1) - ) - ) - (if i32 - (i32.eq - (tee_local $3 - (if i32 - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $3) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $1) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $10) - ) - ) - (if - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $__rjti$1 - (i32.eqz - (get_local $3) - ) - ) - ) - (br $__rjto$1) - ) - (br_if $__rjti$1 - (get_local $3) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 2) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $1) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $15) - ) - ) - (set_local $0 - (i32.load - (get_local $9) - ) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (if - (get_local $0) - (call_indirect $FUNCSIG$vi - (get_local $0) - (i32.add - (i32.and - (i32.load - (get_local $14) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $1) - ) - (func $__ZNSt3__29__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (result i32) - (tee_local $0 - (block $label$break$L1 i32 - (if i32 - (i32.eq - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (if i32 - (i32.load8_s - (get_local $1) - ) - (block i32 - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (i32.store - (get_local $4) - (i32.add - (tee_local $0 - (i32.load - (get_local $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 46) - ) - (if i32 - (if i32 - (i32.lt_s - (tee_local $0 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - (if i32 - (i32.lt_s - (i32.sub - (tee_local $0 - (i32.load - (get_local $9) - ) - ) - (get_local $8) - ) - (i32.const 160) - ) - (block i32 - (set_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block i32 - (if - (i32.eq - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $5 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (block - (drop - (br_if $label$break$L1 - (i32.const -1) - (i32.eqz - (i32.load8_s - (get_local $1) - ) - ) - ) - ) - (drop - (br_if $label$break$L1 - (i32.const 0) - (i32.ge_s - (i32.sub - (tee_local $0 - (i32.load - (get_local $9) - ) - ) - (get_local $8) - ) - (i32.const 160) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.store - (get_local $10) - (i32.const 0) - ) - (br $label$break$L1 - (i32.const 0) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $11) - (i32.const 32) - ) - ) - (set_local $5 - (get_local $11) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $5) - (get_local $6) - ) - (block - (set_local $5 - (get_local $6) - ) - (br $while-out) - ) - ) - (if - (i32.ne - (i32.load8_u - (get_local $5) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - (block - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (if i32 - (i32.gt_s - (tee_local $5 - (i32.sub - (get_local $5) - (get_local $11) - ) - ) - (i32.const 31) - ) - (i32.const -1) - (block i32 - (set_local $0 - (i32.load8_s - (i32.add - (get_local $5) - (i32.const 13937) - ) - ) - ) - (block $switch-default - (block $switch-case1 - (block $switch-case - (br_table $switch-case1 $switch-case1 $switch-case $switch-case $switch-default - (i32.sub - (get_local $5) - (i32.const 22) - ) - ) - ) - (if - (i32.ne - (tee_local $1 - (i32.load - (get_local $4) - ) - ) - (get_local $3) - ) - (drop - (br_if $label$break$L1 - (i32.const -1) - (i32.ne - (i32.and - (i32.load8_u - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.const 95) - ) - (i32.and - (i32.load8_u - (get_local $2) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $1) - (get_local $0) - ) - (br $label$break$L1 - (i32.const 0) - ) - ) - (i32.store8 - (get_local $2) - (i32.const 80) - ) - (i32.store - (get_local $4) - (i32.add - (tee_local $1 - (i32.load - (get_local $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $1) - (get_local $0) - ) - (br $label$break$L1 - (i32.const 0) - ) - ) - (if - (i32.eq - (tee_local $3 - (i32.and - (get_local $0) - (i32.const 95) - ) - ) - (i32.load8_s - (get_local $2) - ) - ) - (block - (i32.store8 - (get_local $2) - (i32.or - (get_local $3) - (i32.const 128) - ) - ) - (if - (i32.load8_s - (get_local $1) - ) - (block - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (if - (if i32 - (i32.lt_s - (tee_local $1 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (tee_local $1 - (i32.load - (get_local $9) - ) - ) - (get_local $8) - ) - (i32.const 160) - ) - (block - (set_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.add - (tee_local $1 - (i32.load - (get_local $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $1) - (get_local $0) - ) - (drop - (br_if $label$break$L1 - (i32.const 0) - (i32.gt_s - (get_local $5) - (i32.const 21) - ) - ) - ) - (i32.store - (get_local $10) - (i32.add - (i32.load - (get_local $10) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - ) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 f64) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 352) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 24) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.store - (tee_local $8 - (tee_local $0 - (get_local $6) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (set_local $11 - (call $__ZNSt3__214__num_put_base14__format_floatEPcPKcj - (i32.add - (get_local $0) - (i32.const 1) - ) - (i32.const 14191) - (i32.load offset=4 - (get_local $2) - ) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $6) - (i32.const 300) - ) - ) - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 308) - ) - ) - ) - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $7 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 48) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - (set_local $5 - (if i32 - (i32.gt_s - (get_local $7) - (i32.const 29) - ) - (block i32 - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $0 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (if i32 - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - (get_local $9) - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - ) - ) - (block i32 - (set_local $9 - (i32.const 0) - ) - (set_local $0 - (get_local $7) - ) - (i32.load - (get_local $10) - ) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 72) - ) - ) - (set_local $12 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $5) - (tee_local $11 - (i32.add - (get_local $5) - (get_local $0) - ) - ) - (get_local $2) - ) - ) - (set_local $5 - (if i32 - (i32.eq - (get_local $5) - (get_local $8) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (get_local $7) - ) - (if i32 - (tee_local $0 - (call $_malloc - (i32.shl - (get_local $0) - (i32.const 3) - ) - ) - ) - (block i32 - (set_local $8 - (get_local $5) - ) - (get_local $0) - ) - (block i32 - (set_local $8 - (i32.load - (get_local $10) - ) - ) - (get_local $0) - ) - ) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 60) - ) - ) - (tee_local $10 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIwE23__widen_and_group_floatEPcS2_S2_PwRS3_S4_RKNS_6localeE - (get_local $8) - (get_local $12) - (get_local $11) - (get_local $5) - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 68) - ) - ) - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 64) - ) - ) - (get_local $7) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $10) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 56) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $8 - (i32.load - (get_local $8) - ) - ) - (set_local $10 - (i32.load - (get_local $11) - ) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 304) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (get_local $1) - (tee_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $11) - (get_local $5) - (get_local $8) - (get_local $10) - (get_local $2) - (get_local $3) - ) - ) - ) - (if - (get_local $0) - (call $_free - (get_local $0) - ) - ) - (call $_free - (get_local $9) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwd (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 f64) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 352) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 24) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.store - (tee_local $8 - (tee_local $0 - (get_local $6) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (set_local $11 - (call $__ZNSt3__214__num_put_base14__format_floatEPcPKcj - (i32.add - (get_local $0) - (i32.const 1) - ) - (i32.const 23209) - (i32.load offset=4 - (get_local $2) - ) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $6) - (i32.const 300) - ) - ) - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 308) - ) - ) - ) - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $7 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 48) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - (set_local $5 - (if i32 - (i32.gt_s - (get_local $7) - (i32.const 29) - ) - (block i32 - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $0 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (if i32 - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - (get_local $9) - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - ) - ) - (block i32 - (set_local $9 - (i32.const 0) - ) - (set_local $0 - (get_local $7) - ) - (i32.load - (get_local $10) - ) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 72) - ) - ) - (set_local $12 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $5) - (tee_local $11 - (i32.add - (get_local $5) - (get_local $0) - ) - ) - (get_local $2) - ) - ) - (set_local $5 - (if i32 - (i32.eq - (get_local $5) - (get_local $8) - ) - (block i32 - (set_local $0 - (i32.const 0) - ) - (get_local $7) - ) - (if i32 - (tee_local $0 - (call $_malloc - (i32.shl - (get_local $0) - (i32.const 3) - ) - ) - ) - (block i32 - (set_local $8 - (get_local $5) - ) - (get_local $0) - ) - (block i32 - (set_local $8 - (i32.load - (get_local $10) - ) - ) - (get_local $0) - ) - ) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 60) - ) - ) - (tee_local $10 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIwE23__widen_and_group_floatEPcS2_S2_PwRS3_S4_RKNS_6localeE - (get_local $8) - (get_local $12) - (get_local $11) - (get_local $5) - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 68) - ) - ) - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 64) - ) - ) - (get_local $7) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $10) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 56) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $8 - (i32.load - (get_local $8) - ) - ) - (set_local $10 - (i32.load - (get_local $11) - ) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 304) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (get_local $1) - (tee_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $11) - (get_local $5) - (get_local $8) - (get_local $10) - (get_local $2) - (get_local $3) - ) - ) - ) - (if - (get_local $0) - (call $_free - (get_local $0) - ) - ) - (call $_free - (get_local $9) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEce (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 f64) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 176) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 24) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.store - (tee_local $8 - (tee_local $0 - (get_local $6) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (set_local $11 - (call $__ZNSt3__214__num_put_base14__format_floatEPcPKcj - (i32.add - (get_local $0) - (i32.const 1) - ) - (i32.const 14191) - (i32.load offset=4 - (get_local $2) - ) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $6) - (i32.const 72) - ) - ) - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 138) - ) - ) - ) - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $7 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 48) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - (set_local $5 - (if i32 - (i32.gt_s - (get_local $7) - (i32.const 29) - ) - (block i32 - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $0 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (if i32 - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - (get_local $9) - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - ) - ) - (block i32 - (set_local $9 - (i32.const 0) - ) - (set_local $0 - (get_local $7) - ) - (i32.load - (get_local $10) - ) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 80) - ) - ) - (set_local $12 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $5) - (tee_local $11 - (i32.add - (get_local $5) - (get_local $0) - ) - ) - (get_local $2) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (get_local $5) - (get_local $8) - ) - (block i32 - (set_local $5 - (get_local $8) - ) - (set_local $8 - (i32.const 0) - ) - (get_local $7) - ) - (if i32 - (tee_local $8 - (call $_malloc - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $8) - (block i32 - (set_local $5 - (i32.load - (get_local $10) - ) - ) - (set_local $8 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 60) - ) - ) - (tee_local $10 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIcE23__widen_and_group_floatEPcS2_S2_S2_RS2_S3_RKNS_6localeE - (get_local $5) - (get_local $12) - (get_local $11) - (get_local $0) - (tee_local $5 - (i32.add - (get_local $6) - (i32.const 68) - ) - ) - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 64) - ) - ) - (get_local $7) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $10) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 56) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $11) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $6) - (i32.const 76) - ) - ) - (i32.load - (get_local $7) - ) - ) - (set_local $0 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $10) - (get_local $0) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (call $_free - (get_local $8) - ) - (call $_free - (get_local $9) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcd (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 f64) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 176) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 24) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.store - (tee_local $8 - (tee_local $0 - (get_local $6) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (set_local $11 - (call $__ZNSt3__214__num_put_base14__format_floatEPcPKcj - (i32.add - (get_local $0) - (i32.const 1) - ) - (i32.const 23209) - (i32.load offset=4 - (get_local $2) - ) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $6) - (i32.const 72) - ) - ) - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 138) - ) - ) - ) - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $7 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $8) - (i32.const 30) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 48) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - (set_local $5 - (if i32 - (i32.gt_s - (get_local $7) - (i32.const 29) - ) - (block i32 - (set_local $7 - (call $__ZNSt3__26__clocEv) - ) - (set_local $0 - (if i32 - (get_local $11) - (block i32 - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $2) - ) - ) - (f64.store offset=8 - (get_local $5) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (f64.store - (get_local $9) - (get_local $4) - ) - (call $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz - (get_local $10) - (get_local $7) - (get_local $0) - (get_local $9) - ) - ) - ) - ) - (if i32 - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - (get_local $9) - (tee_local $9 - (i32.load - (get_local $10) - ) - ) - ) - ) - (block i32 - (set_local $9 - (i32.const 0) - ) - (set_local $0 - (get_local $7) - ) - (i32.load - (get_local $10) - ) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 80) - ) - ) - (set_local $12 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $5) - (tee_local $11 - (i32.add - (get_local $5) - (get_local $0) - ) - ) - (get_local $2) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (get_local $5) - (get_local $8) - ) - (block i32 - (set_local $5 - (get_local $8) - ) - (set_local $8 - (i32.const 0) - ) - (get_local $7) - ) - (if i32 - (tee_local $8 - (call $_malloc - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $8) - (block i32 - (set_local $5 - (i32.load - (get_local $10) - ) - ) - (set_local $8 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 60) - ) - ) - (tee_local $10 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIcE23__widen_and_group_floatEPcS2_S2_S2_RS2_S3_RKNS_6localeE - (get_local $5) - (get_local $12) - (get_local $11) - (get_local $0) - (tee_local $5 - (i32.add - (get_local $6) - (i32.const 68) - ) - ) - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 64) - ) - ) - (get_local $7) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $10) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 56) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $11) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $6) - (i32.const 76) - ) - ) - (i32.load - (get_local $7) - ) - ) - (set_local $0 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $10) - (get_local $0) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (call $_free - (get_local $8) - ) - (call $_free - (get_local $9) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNSt3__29__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (result i32) - (tee_local $0 - (block $label$break$L1 i32 - (if i32 - (i32.eq - (get_local $0) - (get_local $5) - ) - (if i32 - (i32.load8_s - (get_local $1) - ) - (block i32 - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (i32.store - (get_local $4) - (i32.add - (tee_local $0 - (i32.load - (get_local $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 46) - ) - (if i32 - (if i32 - (i32.lt_s - (tee_local $0 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - (if i32 - (i32.lt_s - (i32.sub - (tee_local $0 - (i32.load - (get_local $9) - ) - ) - (get_local $8) - ) - (i32.const 160) - ) - (block i32 - (set_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block i32 - (if - (i32.eq - (get_local $0) - (get_local $6) - ) - (if - (if i32 - (i32.lt_s - (tee_local $5 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (block - (drop - (br_if $label$break$L1 - (i32.const -1) - (i32.eqz - (i32.load8_s - (get_local $1) - ) - ) - ) - ) - (drop - (br_if $label$break$L1 - (i32.const 0) - (i32.ge_s - (i32.sub - (tee_local $0 - (i32.load - (get_local $9) - ) - ) - (get_local $8) - ) - (i32.const 160) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.store - (get_local $10) - (i32.const 0) - ) - (br $label$break$L1 - (i32.const 0) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $11) - (i32.const 128) - ) - ) - (set_local $5 - (get_local $11) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $5) - (get_local $6) - ) - (block - (set_local $5 - (get_local $6) - ) - (br $while-out) - ) - ) - (if - (i32.ne - (i32.load - (get_local $5) - ) - (get_local $0) - ) - (block - (set_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - (set_local $6 - (i32.shr_s - (tee_local $5 - (i32.sub - (get_local $5) - (get_local $11) - ) - ) - (i32.const 2) - ) - ) - (if i32 - (i32.gt_s - (get_local $5) - (i32.const 124) - ) - (i32.const -1) - (block i32 - (set_local $0 - (i32.load8_s - (i32.add - (get_local $6) - (i32.const 13937) - ) - ) - ) - (block $switch - (block $switch-default - (block $switch-case1 - (block $switch-case - (br_table $switch-case1 $switch-case1 $switch-case $switch-case $switch-default - (i32.sub - (get_local $6) - (i32.const 22) - ) - ) - ) - (if - (i32.ne - (tee_local $1 - (i32.load - (get_local $4) - ) - ) - (get_local $3) - ) - (drop - (br_if $label$break$L1 - (i32.const -1) - (i32.ne - (i32.and - (i32.load8_u - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.const 95) - ) - (i32.and - (i32.load8_u - (get_local $2) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $1) - (get_local $0) - ) - (br $label$break$L1 - (i32.const 0) - ) - ) - (i32.store8 - (get_local $2) - (i32.const 80) - ) - (br $switch) - ) - (if - (i32.eq - (tee_local $3 - (i32.and - (get_local $0) - (i32.const 95) - ) - ) - (i32.load8_s - (get_local $2) - ) - ) - (block - (i32.store8 - (get_local $2) - (i32.or - (get_local $3) - (i32.const 128) - ) - ) - (if - (i32.load8_s - (get_local $1) - ) - (block - (i32.store8 - (get_local $1) - (i32.const 0) - ) - (if - (if i32 - (i32.lt_s - (tee_local $1 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (if - (i32.lt_s - (i32.sub - (tee_local $1 - (i32.load - (get_local $9) - ) - ) - (get_local $8) - ) - (i32.const 160) - ) - (block - (set_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.add - (tee_local $1 - (i32.load - (get_local $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $1) - (get_local $0) - ) - (if i32 - (i32.gt_s - (get_local $5) - (i32.const 84) - ) - (i32.const 0) - (block i32 - (i32.store - (get_local $10) - (i32.add - (i32.load - (get_local $10) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (func $__ZNKSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIcS3_NS_9allocatorIcEEEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 144) - ) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (tee_local $13 - (i32.add - (get_local $7) - (i32.const 32) - ) - ) - ) - (i32.store - (tee_local $14 - (i32.add - (get_local $9) - (i32.const 4) - ) - ) - (i32.const 107) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (tee_local $15 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $4) - ) - ) - ) - (set_local $8 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $11) - (i32.const 19208) - ) - ) - (i32.store8 - (tee_local $12 - (i32.add - (get_local $7) - (i32.const 28) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $0 - (get_local $7) - ) - (tee_local $10 - (i32.load - (get_local $2) - ) - ) - ) - (set_local $4 - (i32.load offset=4 - (get_local $4) - ) - ) - (i32.store - (tee_local $16 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - (i32.load - (get_local $0) - ) - ) - (if - (call $__ZNSt3__29money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_ - (get_local $1) - (get_local $16) - (get_local $3) - (get_local $11) - (get_local $4) - (get_local $5) - (get_local $12) - (get_local $8) - (get_local $9) - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (i32.add - (get_local $13) - (i32.const 100) - ) - ) - (block - (if - (i32.lt_s - (i32.load8_s - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 11) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store8 - (i32.load - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - ) - (block - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $3) - (i32.const 0) - ) - ) - ) - (if - (i32.load8_s - (get_local $12) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc - (get_local $6) - (call_indirect $FUNCSIG$iii - (get_local $8) - (i32.const 45) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $8) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - ) - (set_local $3 - (call_indirect $FUNCSIG$iii - (get_local $8) - (i32.const 48) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $8) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (set_local $8 - (i32.add - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - (i32.const -1) - ) - ) - (set_local $0 - (i32.load - (get_local $9) - ) - ) - (loop $while-in - (if - (i32.lt_u - (get_local $0) - (get_local $8) - ) - (if - (i32.eq - (i32.load8_u - (get_local $0) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPcEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_ - (get_local $6) - (get_local $0) - (get_local $4) - ) - ) - ) - ) - (set_local $3 - (get_local $10) - ) - (if - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (get_local $10) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $3) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $10) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjto$1) - ) - (br_if $__rjti$1 - (get_local $0) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.or - (i32.load - (get_local $5) - ) - (i32.const 2) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $1) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $15) - ) - ) - (set_local $0 - (i32.load - (get_local $9) - ) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (if - (get_local $0) - (call_indirect $FUNCSIG$vi - (get_local $0) - (i32.add - (i32.and - (i32.load - (get_local $14) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $1) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $0 - (if i32 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $5 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $5) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $1) - ) - ) - ) - (i32.const 1) - ) - ) - (block $label$break$L22 - (block $__rjti$4 - (block $__rjti$3 - (if - (tee_local $5 - (i32.load - (get_local $2) - ) - ) - (if - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $5) - ) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (i32.store - (get_local $2) - (i32.const 0) - ) - (if - (get_local $0) - (br $__rjti$4) - (br $__rjti$3) - ) - ) - ) - (if - (i32.eqz - (get_local $0) - ) - (block - (set_local $5 - (i32.const 0) - ) - (br $__rjti$4) - ) - ) - ) - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 6) - ) - ) - (br $label$break$L22) - ) - (if - (i32.ne - (i32.and - (call_indirect $FUNCSIG$iiii - (get_local $4) - (tee_local $0 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $4) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 255) - ) - (i32.const 37) - ) - (block - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 4) - ) - ) - (br $label$break$L22) - ) - ) - (block $do-once3 - (block $__rjti$0 - (if - (i32.eq - (tee_local $6 - (i32.load - (tee_local $4 - (i32.add - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br_if $__rjti$0 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - ) - (set_local $0 - (i32.const 1) - ) - ) - (block - (i32.store - (get_local $4) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $__rjti$0) - ) - ) - (br $do-once3) - ) - (set_local $0 - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $1) - ) - ) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $5) - ) - ) - (if - (i32.eq - (tee_local $1 - (if i32 - (i32.eq - (tee_local $1 - (i32.load offset=12 - (get_local $5) - ) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $1) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $label$break$L22 - (get_local $0) - ) - ) - (br $__rjto$1) - ) - (br_if $label$break$L22 - (i32.eqz - (get_local $0) - ) - ) - ) - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 2) - ) - ) - ) - ) - (func $__ZNSt3__210__stdinbufIcE9__getcharEb (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $8 - (get_local $6) - ) - (if - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 52) - ) - ) - ) - (block - (set_local $0 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - ) - (if - (get_local $1) - (block - (i32.store - (get_local $8) - (i32.const -1) - ) - (i32.store8 - (get_local $2) - (i32.const 0) - ) - ) - ) - ) - (block - (if - (i32.le_s - (tee_local $2 - (i32.load offset=44 - (get_local $0) - ) - ) - (i32.const 1) - ) - (set_local $2 - (i32.const 1) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (set_local $3 - (i32.const 0) - ) - (block $__rjto$3 - (block $__rjti$3 - (loop $while-in - (br_if $__rjti$3 - (i32.ge_s - (get_local $3) - (get_local $2) - ) - ) - (if - (i32.eq - (tee_local $10 - (call $_getc - (i32.load - (get_local $9) - ) - ) - ) - (i32.const -1) - ) - (set_local $0 - (i32.const -1) - ) - (block - (i32.store8 - (i32.add - (get_local $4) - (get_local $3) - ) - (get_local $10) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br $__rjto$3) - ) - (block $label$break$L21 - (block $__rjti$2 - (if - (i32.load8_s offset=53 - (get_local $0) - ) - (block - (i32.store8 - (get_local $5) - (i32.load8_s - (get_local $4) - ) - ) - (br $__rjti$2) - ) - (block - (set_local $3 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (set_local $14 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L11 - (block $label$break$L11 - (set_local $15 - (i32.load - (tee_local $7 - (tee_local $11 - (i32.load - (get_local $3) - ) - ) - ) - ) - ) - (set_local $7 - (i32.load offset=4 - (get_local $7) - ) - ) - (block $switch - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-case0 $switch-case $switch-default - (i32.sub - (call_indirect $FUNCSIG$iiiiiiiii - (tee_local $12 - (i32.load - (get_local $10) - ) - ) - (get_local $11) - (get_local $4) - (tee_local $11 - (i32.add - (get_local $4) - (get_local $2) - ) - ) - (get_local $13) - (get_local $5) - (get_local $14) - (get_local $8) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $12) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - (i32.const 1) - ) - ) - ) - (br $__rjti$0) - ) - (br $__rjti$1) - ) - (br $switch) - ) - (br $label$break$L11) - ) - (i32.store - (tee_local $12 - (i32.load - (get_local $3) - ) - ) - (get_local $15) - ) - (i32.store offset=4 - (get_local $12) - (get_local $7) - ) - (br_if $__rjti$1 - (i32.eq - (get_local $2) - (i32.const 8) - ) - ) - (br_if $__rjti$1 - (i32.eq - (tee_local $7 - (call $_getc - (i32.load - (get_local $9) - ) - ) - ) - (i32.const -1) - ) - ) - (i32.store8 - (get_local $11) - (get_local $7) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $label$continue$L11) - ) - ) - (br $__rjto$1) - ) - (i32.store8 - (get_local $5) - (i32.load8_s - (get_local $4) - ) - ) - (br $__rjto$1) - ) - (set_local $0 - (i32.const -1) - ) - (br $label$break$L21) - ) - (br $__rjti$2) - ) - ) - (br $label$break$L21) - ) - (if - (get_local $1) - (i32.store offset=48 - (get_local $0) - (i32.and - (tee_local $0 - (i32.load8_s - (get_local $5) - ) - ) - (i32.const 255) - ) - ) - (block - (loop $while-in4 - (if - (i32.gt_s - (get_local $2) - (i32.const 0) - ) - (block - (br_if $while-in4 - (i32.ne - (call $_ungetc - (i32.load8_u - (i32.add - (get_local $4) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (i32.load - (get_local $9) - ) - ) - (i32.const -1) - ) - ) - (set_local $0 - (i32.const -1) - ) - (br $label$break$L21) - ) - ) - ) - (set_local $0 - (i32.load8_u - (get_local $5) - ) - ) - ) - ) - (set_local $0 - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $_scanexp (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $4 - (block $switch i32 - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default - (i32.sub - (tee_local $2 - (if i32 - (i32.lt_u - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 100) - ) - ) - ) - ) - (block i32 - (i32.store - (get_local $3) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $4) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const 43) - ) - ) - ) - (set_local $2 - (i32.eq - (get_local $2) - (i32.const 45) - ) - ) - (br $switch - (if i32 - (i32.and - (i32.ne - (get_local $1) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (tee_local $4 - (if i32 - (i32.lt_u - (tee_local $4 - (i32.load - (get_local $3) - ) - ) - (i32.load - (get_local $6) - ) - ) - (block i32 - (i32.store - (get_local $3) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $4) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const -48) - ) - (i32.const 9) - ) - ) - (if i32 - (i32.load - (get_local $6) - ) - (block i32 - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (i32.const -1) - ) - ) - (set_local $1 - (get_local $4) - ) - (get_local $2) - ) - (block i32 - (set_local $1 - (get_local $4) - ) - (get_local $2) - ) - ) - (block i32 - (set_local $1 - (get_local $4) - ) - (get_local $2) - ) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.add - (get_local $1) - (i32.const -48) - ) - (i32.const 9) - ) - (set_local $0 - (if i32 - (i32.load - (get_local $6) - ) - (block i32 - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (i32.const -1) - ) - ) - (set_local $1 - (i32.const -2147483648) - ) - (i32.const 0) - ) - (block i32 - (set_local $1 - (i32.const -2147483648) - ) - (i32.const 0) - ) - ) - ) - (block - (set_local $5 - (i32.const 0) - ) - (loop $while-in - (if - (i32.and - (i32.lt_u - (i32.add - (tee_local $2 - (if i32 - (i32.lt_u - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.load - (get_local $6) - ) - ) - (block i32 - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $2) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const -48) - ) - (i32.const 10) - ) - (i32.lt_s - (tee_local $5 - (i32.add - (i32.add - (get_local $1) - (i32.const -48) - ) - (i32.mul - (get_local $5) - (i32.const 10) - ) - ) - ) - (i32.const 214748364) - ) - ) - (block - (set_local $1 - (get_local $2) - ) - (br $while-in) - ) - (set_local $1 - (get_local $5) - ) - ) - ) - (set_local $7 - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (if - (i32.lt_u - (i32.add - (get_local $2) - (i32.const -48) - ) - (i32.const 10) - ) - (block - (set_local $5 - (get_local $1) - ) - (set_local $1 - (get_local $7) - ) - (loop $while-in2 - (set_local $1 - (call $___muldi3 - (get_local $5) - (get_local $1) - (i32.const 10) - (i32.const 0) - ) - ) - (set_local $5 - (get_global $tempRet0) - ) - (set_local $5 - (call $_i64Add - (call $_i64Add - (get_local $2) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $2) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (i32.const -48) - (i32.const -1) - ) - (get_global $tempRet0) - (get_local $1) - (get_local $5) - ) - ) - (set_local $1 - (get_global $tempRet0) - ) - (br_if $while-in2 - (i32.and - (i32.lt_u - (i32.add - (tee_local $2 - (if i32 - (i32.lt_u - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.load - (get_local $6) - ) - ) - (block i32 - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $2) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const -48) - ) - (i32.const 10) - ) - (i32.or - (i32.lt_s - (get_local $1) - (i32.const 21474836) - ) - (i32.and - (i32.eq - (get_local $1) - (i32.const 21474836) - ) - (i32.lt_u - (get_local $5) - (i32.const 2061584302) - ) - ) - ) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $1) - ) - (set_local $1 - (get_local $7) - ) - ) - ) - (if - (i32.lt_u - (i32.add - (get_local $2) - (i32.const -48) - ) - (i32.const 10) - ) - (loop $do-in - (br_if $do-in - (i32.lt_u - (i32.add - (tee_local $2 - (if i32 - (i32.lt_u - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.load - (get_local $6) - ) - ) - (block i32 - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $2) - ) - ) - (call $___shgetc - (get_local $0) - ) - ) - ) - (i32.const -48) - ) - (i32.const 10) - ) - ) - ) - ) - (if - (i32.load - (get_local $6) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (i32.const -1) - ) - ) - ) - (set_local $0 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (get_local $5) - (get_local $1) - ) - ) - (if - (tee_local $4 - (i32.ne - (get_local $4) - (i32.const 0) - ) - ) - (set_local $1 - (get_global $tempRet0) - ) - ) - (if - (i32.eqz - (get_local $4) - ) - (set_local $0 - (get_local $5) - ) - ) - ) - ) - (set_global $tempRet0 - (get_local $1) - ) - (get_local $0) - ) - (func $__ZNSt3__210__stdinbufIwE9__getcharEb (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $8 - (get_local $6) - ) - (if - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 52) - ) - ) - ) - (block - (set_local $0 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - ) - (if - (get_local $1) - (block - (i32.store - (get_local $8) - (i32.const -1) - ) - (i32.store8 - (get_local $2) - (i32.const 0) - ) - ) - ) - ) - (block - (if - (i32.le_s - (tee_local $2 - (i32.load offset=44 - (get_local $0) - ) - ) - (i32.const 1) - ) - (set_local $2 - (i32.const 1) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (set_local $3 - (i32.const 0) - ) - (block $__rjto$3 - (block $__rjti$3 - (loop $while-in - (br_if $__rjti$3 - (i32.ge_s - (get_local $3) - (get_local $2) - ) - ) - (if - (i32.eq - (tee_local $10 - (call $_getc - (i32.load - (get_local $9) - ) - ) - ) - (i32.const -1) - ) - (set_local $0 - (i32.const -1) - ) - (block - (i32.store8 - (i32.add - (get_local $4) - (get_local $3) - ) - (get_local $10) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br $__rjto$3) - ) - (block $label$break$L21 - (block $__rjti$2 - (if - (i32.load8_s offset=53 - (get_local $0) - ) - (block - (i32.store - (get_local $5) - (i32.load8_s - (get_local $4) - ) - ) - (br $__rjti$2) - ) - (block - (set_local $3 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (set_local $14 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L11 - (block $label$break$L11 - (set_local $15 - (i32.load - (tee_local $7 - (tee_local $11 - (i32.load - (get_local $3) - ) - ) - ) - ) - ) - (set_local $7 - (i32.load offset=4 - (get_local $7) - ) - ) - (block $switch - (block $switch-default - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case1 $switch-case0 $switch-case $switch-default - (i32.sub - (call_indirect $FUNCSIG$iiiiiiiii - (tee_local $12 - (i32.load - (get_local $10) - ) - ) - (get_local $11) - (get_local $4) - (tee_local $11 - (i32.add - (get_local $4) - (get_local $2) - ) - ) - (get_local $13) - (get_local $5) - (get_local $14) - (get_local $8) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $12) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - (i32.const 1) - ) - ) - ) - (br $__rjti$0) - ) - (br $__rjti$1) - ) - (br $switch) - ) - (br $label$break$L11) - ) - (i32.store - (tee_local $12 - (i32.load - (get_local $3) - ) - ) - (get_local $15) - ) - (i32.store offset=4 - (get_local $12) - (get_local $7) - ) - (br_if $__rjti$1 - (i32.eq - (get_local $2) - (i32.const 8) - ) - ) - (br_if $__rjti$1 - (i32.eq - (tee_local $7 - (call $_getc - (i32.load - (get_local $9) - ) - ) - ) - (i32.const -1) - ) - ) - (i32.store8 - (get_local $11) - (get_local $7) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $label$continue$L11) - ) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.load8_s - (get_local $4) - ) - ) - (br $__rjto$1) - ) - (set_local $0 - (i32.const -1) - ) - (br $label$break$L21) - ) - (br $__rjti$2) - ) - ) - (br $label$break$L21) - ) - (if - (get_local $1) - (block - (i32.store offset=48 - (get_local $0) - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - ) - (br $label$break$L21) - ) - ) - (loop $while-in4 - (if - (i32.gt_s - (get_local $2) - (i32.const 0) - ) - (block - (br_if $while-in4 - (i32.ne - (call $_ungetc - (i32.load8_s - (i32.add - (get_local $4) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (i32.load - (get_local $9) - ) - ) - (i32.const -1) - ) - ) - (set_local $0 - (i32.const -1) - ) - (br $label$break$L21) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $5) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (loop $label$continue$L1 - (block $label$break$L1 - (set_local $5 - (if i32 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if i32 - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $5 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $5) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $1) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $0 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $6 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L1 - (i32.eqz - (get_local $5) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $5) - (block - (set_local $0 - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - (br_if $label$break$L1 - (i32.eqz - (call_indirect $FUNCSIG$iiii - (get_local $4) - (i32.const 8192) - (tee_local $5 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (tee_local $5 - (i32.load - (get_local $1) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $6) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $4) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $6 - (i32.load - (tee_local $5 - (i32.add - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L1) - ) - (block - (i32.store - (get_local $5) - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $label$continue$L1) - ) - ) - ) - ) - (set_local $1 - (if i32 - (tee_local $4 - (i32.load - (get_local $1) - ) - ) - (if i32 - (i32.eq - (tee_local $4 - (if i32 - (i32.eq - (tee_local $5 - (i32.load offset=12 - (get_local $4) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $5) - ) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 1) - ) - (i32.eqz - (i32.load - (get_local $1) - ) - ) - ) - (i32.const 1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $0) - ) - ) - (if - (i32.eq - (tee_local $0 - (if i32 - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $1) - ) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $1) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 2) - ) - ) - ) - ) - (func $_wcsrtombs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (get_local $6) - ) - (block $label$break$L1 - (if - (get_local $0) - (block - (block $label$break$L9 - (if - (i32.gt_u - (get_local $2) - (i32.const 3) - ) - (block - (set_local $3 - (get_local $2) - ) - (set_local $5 - (i32.load - (get_local $1) - ) - ) - (loop $while-in2 - (block $while-out1 - (set_local $4 - (if i32 - (i32.gt_u - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const -1) - ) - (i32.const 126) - ) - (block i32 - (br_if $while-out1 - (i32.eqz - (get_local $4) - ) - ) - (if - (i32.eq - (tee_local $4 - (call $_wcrtomb - (get_local $0) - (get_local $4) - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (set_local $2 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (get_local $4) - ) - ) - (i32.sub - (get_local $3) - (get_local $4) - ) - ) - (block i32 - (i32.store8 - (get_local $0) - (get_local $4) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (set_local $5 - (i32.load - (get_local $1) - ) - ) - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - ) - ) - (i32.store - (get_local $1) - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - ) - (if - (i32.le_u - (get_local $4) - (i32.const 3) - ) - (block - (set_local $3 - (get_local $0) - ) - (set_local $0 - (get_local $4) - ) - (br $label$break$L9) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $while-in2) - ) - ) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $2 - (i32.sub - (get_local $2) - (get_local $3) - ) - ) - (br $label$break$L1) - ) - (block - (set_local $3 - (get_local $0) - ) - (set_local $0 - (get_local $2) - ) - ) - ) - ) - (if - (get_local $0) - (block - (set_local $4 - (i32.load - (get_local $1) - ) - ) - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in4 - (set_local $0 - (if i32 - (i32.gt_u - (i32.add - (tee_local $5 - (i32.load - (get_local $4) - ) - ) - (i32.const -1) - ) - (i32.const 126) - ) - (block i32 - (br_if $__rjti$0 - (i32.eqz - (get_local $5) - ) - ) - (if - (i32.eq - (tee_local $5 - (call $_wcrtomb - (get_local $7) - (get_local $5) - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (set_local $2 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (br_if $__rjti$1 - (i32.lt_u - (get_local $0) - (get_local $5) - ) - ) - (drop - (call $_wcrtomb - (get_local $3) - (i32.load - (get_local $4) - ) - (i32.const 0) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (get_local $5) - ) - ) - (i32.sub - (get_local $0) - (get_local $5) - ) - ) - (block i32 - (i32.store8 - (get_local $3) - (get_local $5) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $4 - (i32.load - (get_local $1) - ) - ) - (i32.add - (get_local $0) - (i32.const -1) - ) - ) - ) - ) - (i32.store - (get_local $1) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - ) - (br_if $while-in4 - (get_local $0) - ) - (br $label$break$L1) - ) - ) - (i32.store8 - (get_local $3) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - (set_local $2 - (i32.sub - (get_local $2) - (get_local $0) - ) - ) - (br $label$break$L1) - ) - (set_local $2 - (i32.sub - (get_local $2) - (get_local $0) - ) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load - (tee_local $1 - (i32.load - (get_local $1) - ) - ) - ) - ) - (block - (set_local $2 - (i32.const 0) - ) - (loop $while-in - (if - (i32.gt_u - (get_local $0) - (i32.const 127) - ) - (if - (i32.eq - (tee_local $0 - (call $_wcrtomb - (get_local $7) - (get_local $0) - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (set_local $2 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $0 - (i32.const 1) - ) - ) - (set_local $2 - (i32.add - (get_local $0) - (get_local $2) - ) - ) - (br_if $while-in - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $2) - ) - (func $__ZNKSt3__28messagesIwE6do_getEiiiRKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 176) - ) - ) - (set_local $15 - (i32.add - (get_local $7) - (i32.const 168) - ) - ) - (set_local $1 - (i32.add - (get_local $7) - (i32.const 40) - ) - ) - (set_local $10 - (i32.add - (get_local $7) - (i32.const 36) - ) - ) - (set_local $9 - (i32.add - (get_local $7) - (i32.const 32) - ) - ) - (set_local $11 - (i32.add - (get_local $7) - (i32.const 24) - ) - ) - (set_local $12 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.store - (tee_local $8 - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $8) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $8) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $6) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $8) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store offset=4 - (get_local $11) - (i32.const 0) - ) - (i32.store - (get_local $11) - (i32.const 9040) - ) - (set_local $13 - (i32.add - (tee_local $6 - (if i32 - (tee_local $14 - (i32.lt_s - (tee_local $13 - (i32.load8_s offset=11 - (get_local $5) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $5) - ) - (get_local $5) - ) - ) - (i32.shl - (if i32 - (get_local $14) - (i32.load offset=4 - (get_local $5) - ) - (i32.and - (get_local $13) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - (set_local $14 - (i32.add - (get_local $1) - (i32.const 32) - ) - ) - (set_local $5 - (i32.const 0) - ) - (loop $while-in1 - (if - (i32.and - (i32.ne - (get_local $5) - (i32.const 2) - ) - (i32.lt_u - (get_local $6) - (get_local $13) - ) - ) - (block - (i32.store - (get_local $9) - (get_local $6) - ) - (set_local $5 - (call_indirect $FUNCSIG$iiiiiiiii - (get_local $11) - (get_local $15) - (get_local $6) - (get_local $13) - (get_local $9) - (get_local $1) - (get_local $14) - (get_local $10) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $11) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - ) - (set_local $6 - (get_local $1) - ) - (loop $while-in3 - (if - (i32.lt_u - (get_local $6) - (i32.load - (get_local $10) - ) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc - (get_local $8) - (i32.load8_s - (get_local $6) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (set_local $6 - (i32.load - (get_local $9) - ) - ) - (br $while-in1) - ) - ) - ) - (set_local $3 - (call $_catgets - (if i32 - (i32.eq - (get_local $2) - (i32.const -1) - ) - (i32.const -1) - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - (get_local $3) - (get_local $4) - (if i32 - (i32.lt_s - (i32.load8_s offset=11 - (get_local $8) - ) - (i32.const 0) - ) - (i32.load - (get_local $8) - ) - (get_local $8) - ) - ) - ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - (loop $while-in5 - (if - (i32.ne - (get_local $2) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (i32.store offset=4 - (get_local $12) - (i32.const 0) - ) - (i32.store - (get_local $12) - (i32.const 9088) - ) - (set_local $5 - (tee_local $4 - (i32.add - (get_local $3) - (call $_strlen - (get_local $3) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $1) - (i32.const 128) - ) - ) - (set_local $2 - (i32.const 0) - ) - (loop $while-in7 - (if - (i32.and - (i32.ne - (get_local $2) - (i32.const 2) - ) - (i32.lt_u - (get_local $3) - (get_local $4) - ) - ) - (block - (i32.store - (get_local $9) - (get_local $3) - ) - (set_local $2 - (call_indirect $FUNCSIG$iiiiiiiii - (get_local $12) - (get_local $15) - (get_local $3) - (if i32 - (i32.gt_s - (i32.sub - (get_local $5) - (get_local $3) - ) - (i32.const 32) - ) - (i32.add - (get_local $3) - (i32.const 32) - ) - (get_local $4) - ) - (get_local $9) - (get_local $1) - (get_local $6) - (get_local $10) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $12) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - ) - (set_local $3 - (get_local $1) - ) - (loop $while-in9 - (if - (i32.lt_u - (get_local $3) - (i32.load - (get_local $10) - ) - ) - (block - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw - (get_local $0) - (i32.load - (get_local $3) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (br $while-in9) - ) - ) - ) - (set_local $3 - (i32.load - (get_local $9) - ) - ) - (br $while-in7) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $8) - ) - (set_global $STACKTOP - (get_local $7) - ) - ) - (func $_mbsnrtowcs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 1040) - ) - ) - (set_local $11 - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - (i32.store - (tee_local $8 - (get_local $9) - ) - (tee_local $6 - (i32.load - (get_local $1) - ) - ) - ) - (set_local $5 - (if i32 - (tee_local $12 - (i32.ne - (get_local $0) - (i32.const 0) - ) - ) - (get_local $3) - (i32.const 256) - ) - ) - (if - (i32.eqz - (get_local $12) - ) - (set_local $0 - (get_local $11) - ) - ) - (set_local $7 - (get_local $6) - ) - (set_local $2 - (block $label$break$L1 i32 - (if i32 - (i32.and - (i32.ne - (get_local $5) - (i32.const 0) - ) - (i32.ne - (get_local $6) - (i32.const 0) - ) - ) - (block i32 - (set_local $3 - (get_local $2) - ) - (set_local $2 - (get_local $5) - ) - (set_local $6 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.or - (i32.gt_u - (get_local $3) - (i32.const 131) - ) - (tee_local $10 - (i32.ge_u - (tee_local $5 - (i32.shr_u - (get_local $3) - (i32.const 2) - ) - ) - (get_local $2) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $label$break$L1 - (get_local $6) - ) - ) - ) - (set_local $3 - (i32.sub - (get_local $3) - (if i32 - (get_local $10) - (tee_local $5 - (get_local $2) - ) - (get_local $5) - ) - ) - ) - (br_if $while-out - (i32.eq - (tee_local $7 - (call $_mbsrtowcs - (get_local $0) - (get_local $8) - (get_local $5) - (get_local $4) - ) - ) - (i32.const -1) - ) - ) - (set_local $5 - (i32.sub - (get_local $2) - (tee_local $10 - (if i32 - (tee_local $13 - (i32.eq - (get_local $0) - (get_local $11) - ) - ) - (i32.const 0) - (get_local $7) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $13) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $7) - (get_local $6) - ) - ) - (drop - (br_if $label$break$L1 - (get_local $6) - (i32.eqz - (i32.and - (i32.ne - (get_local $2) - (get_local $10) - ) - (i32.ne - (tee_local $7 - (i32.load - (get_local $8) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (set_local $2 - (get_local $5) - ) - (br $while-in) - ) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $7 - (i32.load - (get_local $8) - ) - ) - (i32.const -1) - ) - (block i32 - (set_local $3 - (get_local $2) - ) - (i32.const 0) - ) - ) - ) - ) - (block $label$break$L8 - (if - (get_local $7) - (if - (i32.and - (i32.ne - (get_local $5) - (i32.const 0) - ) - (i32.ne - (get_local $3) - (i32.const 0) - ) - ) - (block - (set_local $6 - (get_local $5) - ) - (set_local $5 - (get_local $0) - ) - (loop $while-in2 - (if - (i32.ge_u - (i32.add - (tee_local $0 - (call $_mbrtowc - (get_local $5) - (get_local $7) - (get_local $3) - (get_local $4) - ) - ) - (i32.const 2) - ) - (i32.const 3) - ) - (block - (i32.store - (get_local $8) - (tee_local $7 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $0) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br_if $label$break$L8 - (i32.eqz - (i32.and - (i32.ne - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (i32.const 0) - ) - (i32.ne - (get_local $3) - (get_local $0) - ) - ) - ) - ) - (set_local $3 - (i32.sub - (get_local $3) - (get_local $0) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (br $while-in2) - ) - ) - ) - (block $switch-default - (block $switch-case3 - (block $switch-case - (br_table $switch-case $switch-case3 $switch-default - (i32.sub - (get_local $0) - (i32.const -1) - ) - ) - ) - (set_local $2 - (i32.const -1) - ) - (br $label$break$L8) - ) - (i32.store - (get_local $8) - (i32.const 0) - ) - (br $label$break$L8) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (get_local $12) - (i32.store - (get_local $1) - (i32.load - (get_local $8) - ) - ) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $2) - ) - (func $_main (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $3) - (i32.const 0) - ) - (i32.store - (get_local $3) - (tee_local $1 - (tee_local $0 - (call $__Znwj - (i32.const 1600000000) - ) - ) - ) - ) - (i32.store - (get_local $5) - (get_local $1) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (i32.add - (get_local $0) - (i32.const 1600000000) - ) - ) - (set_local $10 - (i32.add - (tee_local $1 - (get_local $7) - ) - (i32.const 8) - ) - ) - (set_local $2 - (i32.const 0) - ) - (loop $do-in - (set_local $4 - (f64.add - (f64.div - (f64.mul - (f64.convert_s/i32 - (get_local $2) - ) - (f64.const 2) - ) - (f64.const 9999) - ) - (f64.const -1) - ) - ) - (set_local $6 - (i32.const 0) - ) - (loop $do-in1 - (f64.store - (get_local $1) - (get_local $4) - ) - (f64.store - (get_local $10) - (f64.add - (f64.div - (f64.mul - (f64.convert_s/i32 - (get_local $6) - ) - (f64.const 2) - ) - (f64.const 9999) - ) - (f64.const -1) - ) - ) - (if - (i32.eq - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.load - (get_local $8) - ) - ) - (call $__ZNSt3__26vectorI5pointNS_9allocatorIS1_EEE21__push_back_slow_pathIKS1_EEvRT_ - (get_local $3) - (get_local $1) - ) - (block - (i32.store - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $1) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (i32.store offset=12 - (get_local $0) - (i32.load offset=12 - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (br_if $do-in1 - (i32.lt_s - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.const 10000) - ) - ) - ) - (br_if $do-in - (i32.lt_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.const 10000) - ) - ) - ) - (set_local $4 - (if f64 - (i32.eq - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (tee_local $6 - (i32.load - (get_local $5) - ) - ) - ) - (block f64 - (set_local $9 - (f64.const 0) - ) - (f64.const 0) - ) - (block f64 - (set_local $8 - (i32.shr_u - (i32.sub - (i32.add - (get_local $6) - (i32.const -16) - ) - (get_local $2) - ) - (i32.const 4) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (set_local $0 - (i32.add - (f64.lt - (f64.add - (f64.mul - (tee_local $4 - (f64.load - (get_local $2) - ) - ) - (get_local $4) - ) - (f64.mul - (tee_local $4 - (f64.load offset=8 - (get_local $2) - ) - ) - (get_local $4) - ) - ) - (f64.const 1) - ) - (get_local $0) - ) - ) - (br_if $while-in - (i32.ne - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - (get_local $6) - ) - ) - ) - (set_local $9 - (f64.mul - (f64.convert_s/i32 - (get_local $0) - ) - (f64.const 4) - ) - ) - (f64.convert_s/i32 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.store - (get_local $1) - (call $__ZNKSt3__28ios_base6getlocEv - (i32.add - (tee_local $0 - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEElsEd - (call $__ZNSt3__224__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_j - (i32.const 18336) - (i32.const 10520) - (i32.const 8) - ) - (f64.div - (get_local $9) - (get_local $4) - ) - ) - ) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (set_local $2 - (call_indirect $FUNCSIG$iii - (tee_local $2 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 19208) - ) - ) - (i32.const 10) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $2) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $1) - ) - (drop - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc - (get_local $0) - (get_local $2) - ) - ) - (drop - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE5flushEv - (get_local $0) - ) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load - (get_local $3) - ) - ) - ) - (block - (set_global $STACKTOP - (get_local $7) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (i32.ne - (tee_local $1 - (i32.load - (get_local $5) - ) - ) - (get_local $0) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $1) - (i32.shl - (i32.xor - (i32.shr_u - (i32.sub - (i32.add - (get_local $1) - (i32.const -16) - ) - (get_local $0) - ) - (i32.const 4) - ) - (i32.const -1) - ) - (i32.const 4) - ) - ) - ) - ) - (call $__ZdlPv - (get_local $0) - ) - (set_global $STACKTOP - (get_local $7) - ) - (i32.const 0) - ) - (func $__ZNKSt3__220__time_get_c_storageIcE8__monthsEv (param $0 i32) (result i32) - (local $1 i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 16968) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 16968) - ) - (block - (if - (i32.eqz - (i32.load8_s - (i32.const 16976) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 16976) - ) - (block - (set_local $0 - (i32.const 19452) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br_if $do-in - (i32.ne - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.const 19740) - ) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 100) - (i32.const 0) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19452) - (i32.const 14544) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19464) - (i32.const 14552) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19476) - (i32.const 14561) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19488) - (i32.const 14567) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19500) - (i32.const 14573) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19512) - (i32.const 14577) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19524) - (i32.const 14582) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19536) - (i32.const 14587) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19548) - (i32.const 14594) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19560) - (i32.const 14604) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19572) - (i32.const 14612) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19584) - (i32.const 14621) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19596) - (i32.const 14630) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19608) - (i32.const 14634) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19620) - (i32.const 14638) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19632) - (i32.const 14642) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19644) - (i32.const 14573) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19656) - (i32.const 14646) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19668) - (i32.const 14650) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19680) - (i32.const 14654) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19692) - (i32.const 14658) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19704) - (i32.const 14662) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19716) - (i32.const 14666) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19728) - (i32.const 14670) - ) - ) - (i32.store - (i32.const 19740) - (i32.const 19452) - ) - ) - ) - ) - (i32.load - (i32.const 19740) - ) - ) - (func $__ZNKSt3__220__time_get_c_storageIwE8__monthsEv (param $0 i32) (result i32) - (local $1 i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17048) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17048) - ) - (block - (if - (i32.eqz - (i32.load8_s - (i32.const 17056) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17056) - ) - (block - (set_local $0 - (i32.const 20264) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br_if $do-in - (i32.ne - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.const 20552) - ) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 104) - (i32.const 0) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20264) - (i32.const 7836) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20276) - (i32.const 7868) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20288) - (i32.const 7904) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20300) - (i32.const 7928) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20312) - (i32.const 7952) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20324) - (i32.const 7968) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20336) - (i32.const 7988) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20348) - (i32.const 8008) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20360) - (i32.const 8036) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20372) - (i32.const 8076) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20384) - (i32.const 8108) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20396) - (i32.const 8144) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20408) - (i32.const 8180) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20420) - (i32.const 8196) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20432) - (i32.const 8212) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20444) - (i32.const 8228) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20456) - (i32.const 7952) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20468) - (i32.const 8244) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20480) - (i32.const 8260) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20492) - (i32.const 8276) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20504) - (i32.const 8292) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20516) - (i32.const 8308) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20528) - (i32.const 8324) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20540) - (i32.const 8340) - ) - ) - (i32.store - (i32.const 20552) - (i32.const 20264) - ) - ) - ) - ) - (i32.load - (i32.const 20552) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $6 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (if - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $4 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $0 - (i32.load - (get_local $2) - ) - ) - ) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (get_local $4) - (br $__rjto$0) - (br $label$break$L1) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$0) - ) - (br_if $label$break$L1 - (i32.eqz - (get_local $4) - ) - ) - ) - (br $__rjto$0) - ) - (if - (get_local $4) - (block - (set_local $0 - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - (br_if $label$break$L1 - (i32.le_s - (i32.shr_s - (i32.shl - (i32.and - (tee_local $4 - (if i32 - (i32.eq - (tee_local $5 - (i32.load offset=12 - (tee_local $4 - (i32.load - (get_local $1) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_s - (get_local $5) - ) - ) - ) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (br_if $label$break$L1 - (i32.eqz - (i32.and - (i32.load16_s - (i32.add - (i32.load - (get_local $6) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - ) - (i32.const 8192) - ) - ) - ) - (if - (i32.eq - (tee_local $5 - (i32.load - (tee_local $4 - (i32.add - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br $label$continue$L1) - ) - (block - (i32.store - (get_local $4) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br $label$continue$L1) - ) - ) - ) - ) - (if - (tee_local $4 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $4) - ) - (i32.load offset=16 - (get_local $4) - ) - ) - (set_local $4 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $4) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - ) - ) - ) - (set_local $4 - (i32.const 0) - ) - ) - (set_local $1 - (i32.eqz - (get_local $4) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $0) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $1) - ) - ) - (br $__rjto$2) - ) - (br_if $__rjti$2 - (get_local $1) - ) - (br $__rjto$2) - ) - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 2) - ) - ) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (if - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $label$break$L16 - (block $__rjti$4 - (block $__rjti$3 - (block $__rjti$2 - (if - (tee_local $5 - (i32.load - (get_local $2) - ) - ) - (block - (if - (i32.eq - (i32.load offset=12 - (get_local $5) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$2) - ) - ) - ) - (br_if $__rjti$3 - (i32.eqz - (get_local $0) - ) - ) - (br $__rjti$4) - ) - ) - ) - (if - (i32.eqz - (get_local $0) - ) - (block - (set_local $5 - (i32.const 0) - ) - (br $__rjti$4) - ) - ) - ) - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 6) - ) - ) - (br $label$break$L16) - ) - (if - (i32.ne - (i32.and - (call_indirect $FUNCSIG$iiii - (get_local $4) - (i32.and - (tee_local $0 - (if i32 - (i32.eq - (tee_local $6 - (i32.load offset=12 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.load8_u - (get_local $6) - ) - ) - ) - (i32.const 255) - ) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $4) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 255) - ) - (i32.const 37) - ) - (block - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 4) - ) - ) - (br $label$break$L16) - ) - ) - (block $do-once3 - (block $__rjti$0 - (if - (i32.eq - (tee_local $6 - (i32.load - (tee_local $4 - (i32.add - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (i32.const 12) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (block - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (br_if $__rjti$0 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $4) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $__rjti$0) - ) - ) - (br $do-once3) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $0) - ) - (i32.load offset=16 - (get_local $0) - ) - ) - (set_local $0 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.eqz - (get_local $0) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (br_if $__rjti$1 - (i32.eqz - (get_local $5) - ) - ) - (if - (i32.eq - (i32.load offset=12 - (get_local $5) - ) - (i32.load offset=16 - (get_local $5) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $5) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $5) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $2) - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $label$break$L16 - (get_local $0) - ) - (br $__rjto$1) - ) - (br_if $label$break$L16 - (i32.eqz - (get_local $0) - ) - ) - ) - (i32.store - (get_local $3) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 2) - ) - ) - ) - ) - (func $__ZNSt3__2L12ucs4_to_utf8EPKjS1_RS1_PhS3_RS3_mNS_12codecvt_modeE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (i32.store - (get_local $2) - (get_local $0) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (block $label$break$L4 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (i32.and - (get_local $7) - (i32.const 2) - ) - ) - ) - (if - (i32.lt_s - (i32.sub - (get_local $4) - (get_local $3) - ) - (i32.const 3) - ) - (set_local $0 - (i32.const 1) - ) - (block - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.const -17) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.const -69) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.const -65) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L4) - ) - (set_local $0 - (i32.load - (get_local $2) - ) - ) - (loop $while-in - (if - (i32.ge_u - (get_local $0) - (get_local $1) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $label$break$L4) - ) - ) - (if - (i32.or - (i32.gt_u - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (get_local $6) - ) - (i32.eq - (i32.and - (get_local $0) - (i32.const -2048) - ) - (i32.const 55296) - ) - ) - (block - (set_local $0 - (i32.const 2) - ) - (br $label$break$L4) - ) - ) - (block $do-once - (if - (i32.lt_u - (get_local $0) - (i32.const 128) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $4) - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 1) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (get_local $0) - ) - ) - (block - (if - (i32.lt_u - (get_local $0) - (i32.const 2048) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $4) - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 2) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.shr_u - (get_local $0) - (i32.const 6) - ) - (i32.const 192) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.and - (get_local $0) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once) - ) - ) - (set_local $7 - (i32.sub - (get_local $4) - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.const 65536) - ) - (block - (if - (i32.lt_s - (get_local $7) - (i32.const 3) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.shr_u - (get_local $0) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.and - (get_local $0) - (i32.const 63) - ) - (i32.const 128) - ) - ) - ) - (block - (if - (i32.lt_s - (get_local $7) - (i32.const 4) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $label$break$L4) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.shr_u - (get_local $0) - (i32.const 18) - ) - (i32.const 240) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 12) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (i32.or - (i32.and - (get_local $0) - (i32.const 63) - ) - (i32.const 128) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $2) - (tee_local $0 - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 4) - ) - ) - ) - (br $while-in) - ) - ) - (get_local $0) - ) - (func $_pop_arg (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (block $label$break$L1 - (if - (i32.le_u - (get_local $1) - (i32.const 20) - ) - (block $switch-default - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $switch-default - (i32.sub - (get_local $1) - (i32.const 9) - ) - ) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (br $label$break$L1) - ) - (set_local $1 - (i32.load - (tee_local $3 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.store offset=4 - (get_local $0) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $5 - (i32.load - (tee_local $3 - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - ) - (set_local $3 - (i32.load offset=4 - (get_local $3) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.store - (get_local $0) - (get_local $5) - ) - (i32.store offset=4 - (get_local $0) - (get_local $3) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (tee_local $1 - (i32.shr_s - (i32.shl - (i32.and - (get_local $3) - (i32.const 65535) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (i32.and - (get_local $3) - (i32.const 65535) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (tee_local $1 - (i32.shr_s - (i32.shl - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $4 - (f64.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (f64.store - (get_local $0) - (get_local $4) - ) - (br $label$break$L1) - ) - (set_local $4 - (f64.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (f64.store - (get_local $0) - (get_local $4) - ) - ) - ) - ) - ) - (func $___stdio_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $8 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 48) - ) - ) - (set_local $9 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - (set_local $10 - (get_local $8) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $8) - (i32.const 32) - ) - ) - (tee_local $3 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $4) - (tee_local $3 - (i32.sub - (i32.load - (tee_local $11 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - (get_local $3) - ) - ) - ) - (i32.store offset=8 - (get_local $4) - (get_local $1) - ) - (i32.store offset=12 - (get_local $4) - (get_local $2) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 60) - ) - ) - (set_local $14 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (set_local $1 - (get_local $4) - ) - (set_local $4 - (i32.const 2) - ) - (set_local $12 - (i32.add - (get_local $3) - (get_local $2) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (if - (i32.load - (i32.const 17600) - ) - (block - (call $_pthread_cleanup_push - (i32.const 94) - (get_local $0) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $10) - (get_local $1) - ) - (i32.store offset=8 - (get_local $10) - (get_local $4) - ) - (set_local $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (get_local $10) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $9) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $9) - (get_local $1) - ) - (i32.store offset=8 - (get_local $9) - (get_local $4) - ) - (set_local $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (get_local $9) - ) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.eq - (get_local $12) - (get_local $3) - ) - ) - (br_if $__rjti$1 - (i32.lt_s - (get_local $3) - (i32.const 0) - ) - ) - (set_local $5 - (if i32 - (i32.gt_u - (get_local $3) - (tee_local $5 - (i32.load offset=4 - (get_local $1) - ) - ) - ) - (block i32 - (i32.store - (get_local $6) - (tee_local $7 - (i32.load - (get_local $14) - ) - ) - ) - (i32.store - (get_local $11) - (get_local $7) - ) - (set_local $7 - (i32.load offset=12 - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - (i32.sub - (get_local $3) - (get_local $5) - ) - ) - (if i32 - (i32.eq - (get_local $4) - (i32.const 2) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (get_local $3) - ) - ) - (set_local $7 - (get_local $5) - ) - (set_local $4 - (i32.const 2) - ) - (get_local $3) - ) - (block i32 - (set_local $7 - (get_local $5) - ) - (get_local $3) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (i32.load - (get_local $1) - ) - (get_local $5) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.sub - (get_local $7) - (get_local $5) - ) - ) - (set_local $12 - (i32.sub - (get_local $12) - (get_local $3) - ) - ) - (br $while-in) - ) - ) - (i32.store offset=16 - (get_local $0) - (i32.add - (tee_local $1 - (i32.load - (get_local $14) - ) - ) - (i32.load offset=48 - (get_local $0) - ) - ) - ) - (i32.store - (get_local $6) - (get_local $1) - ) - (i32.store - (get_local $11) - (get_local $1) - ) - (br $__rjto$1) - ) - (i32.store offset=16 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (set_local $2 - (if i32 - (i32.eq - (get_local $4) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (get_local $2) - (i32.load offset=4 - (get_local $1) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $8) - ) - (get_local $2) - ) - (func $_wcsnrtombs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (set_local $8 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 272) - ) - ) - (set_local $10 - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - (i32.store - (tee_local $7 - (get_local $8) - ) - (tee_local $5 - (i32.load - (get_local $1) - ) - ) - ) - (if - (i32.eqz - (tee_local $11 - (i32.ne - (get_local $0) - (i32.const 0) - ) - ) - ) - (set_local $3 - (i32.const 256) - ) - ) - (if - (i32.eqz - (get_local $11) - ) - (set_local $0 - (get_local $10) - ) - ) - (set_local $4 - (get_local $5) - ) - (set_local $3 - (block $label$break$L1 i32 - (if i32 - (i32.and - (i32.ne - (get_local $3) - (i32.const 0) - ) - (i32.ne - (get_local $5) - (i32.const 0) - ) - ) - (block i32 - (set_local $6 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.or - (tee_local $5 - (i32.ge_u - (get_local $2) - (get_local $3) - ) - ) - (i32.gt_u - (get_local $2) - (i32.const 32) - ) - ) - ) - (block - (set_local $5 - (get_local $3) - ) - (br $label$break$L1 - (get_local $6) - ) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (tee_local $4 - (if i32 - (get_local $5) - (get_local $3) - (get_local $2) - ) - ) - ) - ) - (br_if $while-out - (i32.eq - (tee_local $9 - (call $_wcsrtombs - (get_local $0) - (get_local $7) - (get_local $4) - (i32.const 0) - ) - ) - (i32.const -1) - ) - ) - (set_local $5 - (i32.sub - (get_local $3) - (tee_local $4 - (if i32 - (tee_local $12 - (i32.eq - (get_local $0) - (get_local $10) - ) - ) - (i32.const 0) - (get_local $9) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $12) - ) - (set_local $0 - (i32.add - (get_local $0) - (get_local $9) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $9) - (get_local $6) - ) - ) - (drop - (br_if $label$break$L1 - (get_local $6) - (i32.eqz - (i32.and - (i32.ne - (get_local $3) - (get_local $4) - ) - (i32.ne - (tee_local $4 - (i32.load - (get_local $7) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (set_local $3 - (get_local $5) - ) - (br $while-in) - ) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $4 - (i32.load - (get_local $7) - ) - ) - (i32.const -1) - ) - (block i32 - (set_local $5 - (get_local $3) - ) - (i32.const 0) - ) - ) - ) - ) - (block $label$break$L8 - (if - (get_local $4) - (if - (i32.and - (i32.ne - (get_local $5) - (i32.const 0) - ) - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (block - (loop $while-in2 - (block $while-out1 - (if - (i32.lt_u - (i32.add - (tee_local $6 - (call $_wcrtomb - (get_local $0) - (i32.load - (get_local $4) - ) - (i32.const 0) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - (block - (set_local $0 - (get_local $6) - ) - (br $while-out1) - ) - ) - (i32.store - (get_local $7) - (tee_local $4 - (i32.add - (i32.load - (get_local $7) - ) - (i32.const 4) - ) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (br_if $label$break$L8 - (i32.eqz - (i32.and - (i32.ne - (get_local $5) - (get_local $6) - ) - (i32.ne - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (set_local $5 - (i32.sub - (get_local $5) - (get_local $6) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (get_local $6) - ) - ) - (br $while-in2) - ) - ) - (if - (get_local $0) - (set_local $3 - (i32.const -1) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - ) - ) - ) - ) - ) - (if - (get_local $11) - (i32.store - (get_local $1) - (i32.load - (get_local $7) - ) - ) - ) - (set_global $STACKTOP - (get_local $8) - ) - (get_local $3) - ) - (func $__ZNSt3__29__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (result i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (tee_local $0 - (block $label$break$L6 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $12 - (i32.eq - (tee_local $10 - (i32.load - (get_local $3) - ) - ) - (get_local $2) - ) - ) - ) - ) - (if - (i32.eqz - (tee_local $11 - (i32.eq - (i32.load offset=96 - (get_local $9) - ) - (get_local $0) - ) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.load offset=100 - (get_local $9) - ) - (get_local $0) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $2) - (if i32 - (get_local $11) - (i32.const 43) - (i32.const 45) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (br $label$break$L6 - (i32.const 0) - ) - ) - (set_local $11 - (i32.load8_s offset=11 - (get_local $6) - ) - ) - (if - (if i32 - (i32.eq - (get_local $0) - (get_local $5) - ) - (if i32 - (i32.lt_s - (get_local $11) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - (i32.const 0) - ) - (block - (drop - (br_if $label$break$L6 - (i32.const 0) - (i32.ge_s - (i32.sub - (tee_local $0 - (i32.load - (get_local $8) - ) - ) - (get_local $7) - ) - (i32.const 160) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $4) - ) - ) - (i32.store - (get_local $8) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (br $label$break$L6 - (i32.const 0) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $9) - (i32.const 104) - ) - ) - (set_local $5 - (get_local $9) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $5) - (get_local $6) - ) - (block - (set_local $5 - (get_local $6) - ) - (br $while-out) - ) - ) - (if - (i32.ne - (i32.load - (get_local $5) - ) - (get_local $0) - ) - (block - (set_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - (set_local $0 - (i32.shr_s - (tee_local $5 - (i32.sub - (get_local $5) - (get_local $9) - ) - ) - (i32.const 2) - ) - ) - (if i32 - (i32.gt_s - (get_local $5) - (i32.const 92) - ) - (i32.const -1) - (block i32 - (block $switch-default - (block $switch-case2 - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case2 $switch-default - (i32.sub - (get_local $1) - (i32.const 8) - ) - ) - ) - (drop - (br_if $label$break$L6 - (i32.const -1) - (i32.ge_s - (get_local $0) - (get_local $1) - ) - ) - ) - (br $switch-default) - ) - (if - (i32.ge_s - (get_local $5) - (i32.const 88) - ) - (block - (drop - (br_if $label$break$L6 - (i32.const -1) - (get_local $12) - ) - ) - (drop - (br_if $label$break$L6 - (i32.const -1) - (i32.ge_s - (i32.sub - (get_local $10) - (get_local $2) - ) - (i32.const 3) - ) - ) - ) - (drop - (br_if $label$break$L6 - (i32.const -1) - (i32.ne - (i32.load8_s - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - (i32.const 48) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $0 - (i32.load8_s - (i32.add - (get_local $0) - (i32.const 13937) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $10) - (get_local $0) - ) - (br $label$break$L6 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.load8_s - (i32.add - (get_local $0) - (i32.const 13937) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $10) - (get_local $0) - ) - (i32.store - (get_local $4) - (i32.add - (i32.load - (get_local $4) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (func $__ZNSt3__29__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (result i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (tee_local $0 - (block $label$break$L6 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (tee_local $12 - (i32.eq - (tee_local $10 - (i32.load - (get_local $3) - ) - ) - (get_local $2) - ) - ) - ) - ) - (if - (i32.eqz - (tee_local $11 - (i32.eq - (i32.load8_u offset=24 - (get_local $9) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.load8_u offset=25 - (get_local $9) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $2) - (if i32 - (get_local $11) - (i32.const 43) - (i32.const 45) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (br $label$break$L6 - (i32.const 0) - ) - ) - (set_local $11 - (i32.load8_s offset=11 - (get_local $6) - ) - ) - (if - (if i32 - (i32.eq - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (if i32 - (i32.lt_s - (get_local $11) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $11) - (i32.const 255) - ) - ) - (i32.const 0) - ) - (block - (drop - (br_if $label$break$L6 - (i32.const 0) - (i32.ge_s - (i32.sub - (tee_local $0 - (i32.load - (get_local $8) - ) - ) - (get_local $7) - ) - (i32.const 160) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $4) - ) - ) - (i32.store - (get_local $8) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (br $label$break$L6 - (i32.const 0) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $9) - (i32.const 26) - ) - ) - (set_local $5 - (get_local $9) - ) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $5) - (get_local $6) - ) - (block - (set_local $5 - (get_local $6) - ) - (br $while-out) - ) - ) - (if - (i32.ne - (i32.load8_u - (get_local $5) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - (block - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (if i32 - (i32.gt_s - (tee_local $0 - (i32.sub - (get_local $5) - (get_local $9) - ) - ) - (i32.const 23) - ) - (i32.const -1) - (block i32 - (block $switch-default - (block $switch-case2 - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case2 $switch-default - (i32.sub - (get_local $1) - (i32.const 8) - ) - ) - ) - (drop - (br_if $label$break$L6 - (i32.const -1) - (i32.ge_s - (get_local $0) - (get_local $1) - ) - ) - ) - (br $switch-default) - ) - (if - (i32.ge_s - (get_local $0) - (i32.const 22) - ) - (block - (drop - (br_if $label$break$L6 - (i32.const -1) - (get_local $12) - ) - ) - (drop - (br_if $label$break$L6 - (i32.const -1) - (i32.ge_s - (i32.sub - (get_local $10) - (get_local $2) - ) - (i32.const 3) - ) - ) - ) - (drop - (br_if $label$break$L6 - (i32.const -1) - (i32.ne - (i32.load8_s - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - (i32.const 48) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $0 - (i32.load8_s - (i32.add - (get_local $0) - (i32.const 13937) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $10) - (get_local $0) - ) - (br $label$break$L6 - (i32.const 0) - ) - ) - ) - ) - (set_local $0 - (i32.load8_s - (i32.add - (get_local $0) - (i32.const 13937) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $10) - (get_local $0) - ) - (i32.store - (get_local $4) - (i32.add - (i32.load - (get_local $4) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (set_local $8 - (i32.add - (get_local $6) - (i32.const 48) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 24) - ) - ) - (set_local $11 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - (set_local $12 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (set_local $13 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $10 - (get_local $6) - ) - (if - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 1) - ) - (block - (i32.store - (get_local $9) - (tee_local $0 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $9) - (i32.const 19240) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - (i32.store - (get_local $14) - (tee_local $0 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $3 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $14) - (i32.const 19248) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $7) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (call_indirect $FUNCSIG$vii - (i32.add - (get_local $7) - (i32.const 12) - ) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $10) - ) - ) - (i32.store8 - (get_local $5) - (i32.eq - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $1) - (get_local $8) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 24) - ) - (get_local $9) - (get_local $4) - (i32.const 1) - ) - (get_local $7) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - ) - (block - (i32.store - (get_local $11) - (i32.const -1) - ) - (set_local $10 - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $12) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $13) - ) - ) - (i32.store - (get_local $1) - (tee_local $0 - (call_indirect $FUNCSIG$iiiiiii - (get_local $0) - (get_local $7) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $11) - (i32.add - (i32.and - (get_local $10) - (i32.const 63) - ) - (i32.const 240) - ) - ) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-default - (i32.load - (get_local $11) - ) - ) - ) - (i32.store8 - (get_local $5) - (i32.const 0) - ) - (br $switch) - ) - (i32.store8 - (get_local $5) - (i32.const 1) - ) - (br $switch) - ) - (i32.store8 - (get_local $5) - (i32.const 1) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (set_local $8 - (i32.add - (get_local $6) - (i32.const 48) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 24) - ) - ) - (set_local $11 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - (set_local $12 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (set_local $13 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $14 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (set_local $10 - (get_local $6) - ) - (if - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const 1) - ) - (block - (i32.store - (get_local $9) - (tee_local $0 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $9) - (i32.const 19208) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - (i32.store - (get_local $14) - (tee_local $0 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $3 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $14) - (i32.const 19220) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $7) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (call_indirect $FUNCSIG$vii - (i32.add - (get_local $7) - (i32.const 12) - ) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $10) - ) - ) - (i32.store8 - (get_local $5) - (i32.eq - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $1) - (get_local $8) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 24) - ) - (get_local $9) - (get_local $4) - (i32.const 1) - ) - (get_local $7) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - ) - (block - (i32.store - (get_local $11) - (i32.const -1) - ) - (set_local $10 - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $12) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $12) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $13) - ) - ) - (i32.store - (get_local $1) - (tee_local $0 - (call_indirect $FUNCSIG$iiiiiii - (get_local $0) - (get_local $7) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $11) - (i32.add - (i32.and - (get_local $10) - (i32.const 63) - ) - (i32.const 240) - ) - ) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-default - (i32.load - (get_local $11) - ) - ) - ) - (i32.store8 - (get_local $5) - (i32.const 0) - ) - (br $switch) - ) - (i32.store8 - (get_local $5) - (i32.const 1) - ) - (br $switch) - ) - (i32.store8 - (get_local $5) - (i32.const 1) - ) - (i32.store - (get_local $4) - (i32.const 4) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $_memchr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $5 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (block $label$break$L8 - (block $__rjti$2 - (block $__rjti$1 - (if - (i32.and - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.const 0) - ) - ) - (block - (set_local $4 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (loop $while-in - (br_if $__rjti$2 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (get_local $4) - ) - ) - (br_if $while-in - (i32.and - (tee_local $3 - (i32.ne - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.const 3) - ) - (i32.const 0) - ) - ) - ) - (br $__rjti$1) - ) - ) - ) - ) - (br_if $__rjti$2 - (get_local $3) - ) - (set_local $2 - (i32.const 0) - ) - (br $label$break$L8) - ) - (if - (i32.ne - (i32.load8_u - (get_local $0) - ) - (tee_local $4 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - ) - (block - (set_local $3 - (i32.mul - (get_local $5) - (i32.const 16843009) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (get_local $2) - (i32.const 3) - ) - ) - (loop $while-in3 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (tee_local $1 - (i32.xor - (i32.load - (get_local $0) - ) - (get_local $3) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (get_local $1) - (i32.const -16843009) - ) - ) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br_if $while-in3 - (i32.gt_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -4) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - ) - ) - (br $__rjto$0) - ) - (if - (i32.eqz - (get_local $2) - ) - (block - (set_local $2 - (i32.const 0) - ) - (br $label$break$L8) - ) - ) - ) - (loop $while-in5 - (br_if $label$break$L8 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (get_local $4) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br_if $while-in5 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - ) - ) - ) - (if i32 - (get_local $2) - (get_local $0) - (i32.const 0) - ) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (if - (i32.gt_u - (get_local $1) - (i32.const -17) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (set_local $3 - (if i32 - (tee_local $2 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (block i32 - (set_local $5 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.add - (i32.and - (i32.load offset=8 - (get_local $0) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - ) - (block i32 - (set_local $5 - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - (i32.const 10) - ) - ) - ) - (if - (i32.ne - (tee_local $6 - (if i32 - (i32.lt_u - (if i32 - (i32.gt_u - (get_local $5) - (get_local $1) - ) - (tee_local $1 - (get_local $5) - ) - (get_local $1) - ) - (i32.const 11) - ) - (i32.const 10) - (i32.add - (i32.and - (i32.add - (get_local $1) - (i32.const 16) - ) - (i32.const -16) - ) - (i32.const -1) - ) - ) - ) - (get_local $3) - ) - (block - (if - (tee_local $4 - (i32.add - (tee_local $4 - (block $__rjto$1 i32 - (block $__rjti$1 - (if - (i32.eq - (get_local $6) - (i32.const 10) - ) - (block - (set_local $3 - (i32.load - (get_local $0) - ) - ) - (if - (get_local $2) - (block - (set_local $1 - (get_local $0) - ) - (set_local $2 - (i32.const 0) - ) - ) - (block - (set_local $1 - (get_local $0) - ) - (set_local $2 - (i32.const 0) - ) - (set_local $7 - (i32.const 1) - ) - (br $__rjti$1) - ) - ) - ) - (block - (set_local $1 - (call $__Znwj - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - (if - (get_local $2) - (block - (set_local $2 - (i32.const 1) - ) - (set_local $3 - (i32.load - (get_local $0) - ) - ) - ) - (block - (set_local $2 - (i32.const 1) - ) - (set_local $3 - (get_local $0) - ) - (set_local $7 - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - ) - ) - (set_local $7 - (i32.const 1) - ) - (br $__rjto$1 - (i32.load offset=4 - (get_local $0) - ) - ) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - (i32.const 1) - ) - ) - (drop - (call $_memcpy - (get_local $1) - (get_local $3) - (get_local $4) - ) - ) - ) - (if - (get_local $7) - (call $__ZdlPv - (get_local $3) - ) - ) - (if - (get_local $2) - (block - (i32.store offset=8 - (get_local $0) - (i32.or - (i32.add - (get_local $6) - (i32.const 1) - ) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $5) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - ) - (i32.store8 - (get_local $8) - (get_local $5) - ) - ) - ) - ) - ) - (func $__ZNSt3__28ios_base4InitC2Ev (param $0 i32) - (local $1 i32) - (call $__ZNSt3__210__stdinbufIcEC2EP8_IO_FILEP11__mbstate_t - (i32.const 18840) - (tee_local $0 - (i32.load - (i32.const 2816) - ) - ) - (i32.const 18896) - ) - (i32.store - (i32.const 18160) - (i32.const 6436) - ) - (i32.store - (i32.const 18168) - (i32.const 6456) - ) - (i32.store - (i32.const 18164) - (i32.const 0) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18168) - (i32.const 18840) - ) - (i32.store - (i32.const 18240) - (i32.const 0) - ) - (i32.store - (i32.const 18244) - (i32.const -1) - ) - (call $__ZNSt3__210__stdinbufIwEC2EP8_IO_FILEP11__mbstate_t - (i32.const 18904) - (get_local $0) - (i32.const 18960) - ) - (i32.store - (i32.const 18248) - (i32.const 6476) - ) - (i32.store - (i32.const 18256) - (i32.const 6496) - ) - (i32.store - (i32.const 18252) - (i32.const 0) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18256) - (i32.const 18904) - ) - (i32.store - (i32.const 18328) - (i32.const 0) - ) - (i32.store - (i32.const 18332) - (i32.const -1) - ) - (call $__ZNSt3__211__stdoutbufIcEC2EP8_IO_FILEP11__mbstate_t - (i32.const 18968) - (tee_local $0 - (i32.load - (i32.const 2932) - ) - ) - (i32.const 19016) - ) - (i32.store - (i32.const 18336) - (i32.const 6516) - ) - (i32.store - (i32.const 18340) - (i32.const 6536) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18340) - (i32.const 18968) - ) - (i32.store - (i32.const 18412) - (i32.const 0) - ) - (i32.store - (i32.const 18416) - (i32.const -1) - ) - (call $__ZNSt3__211__stdoutbufIwEC2EP8_IO_FILEP11__mbstate_t - (i32.const 19024) - (get_local $0) - (i32.const 19072) - ) - (i32.store - (i32.const 18420) - (i32.const 6556) - ) - (i32.store - (i32.const 18424) - (i32.const 6576) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18424) - (i32.const 19024) - ) - (i32.store - (i32.const 18496) - (i32.const 0) - ) - (i32.store - (i32.const 18500) - (i32.const -1) - ) - (call $__ZNSt3__211__stdoutbufIcEC2EP8_IO_FILEP11__mbstate_t - (i32.const 19080) - (tee_local $0 - (i32.load - (i32.const 2700) - ) - ) - (i32.const 19128) - ) - (i32.store - (i32.const 18504) - (i32.const 6516) - ) - (i32.store - (i32.const 18508) - (i32.const 6536) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18508) - (i32.const 19080) - ) - (i32.store - (i32.const 18580) - (i32.const 0) - ) - (i32.store - (i32.const 18584) - (i32.const -1) - ) - (set_local $1 - (i32.load - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18504) - ) - (i32.const -12) - ) - ) - (i32.const 18528) - ) - ) - ) - (i32.store - (i32.const 18672) - (i32.const 6516) - ) - (i32.store - (i32.const 18676) - (i32.const 6536) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18676) - (get_local $1) - ) - (i32.store - (i32.const 18748) - (i32.const 0) - ) - (i32.store - (i32.const 18752) - (i32.const -1) - ) - (call $__ZNSt3__211__stdoutbufIwEC2EP8_IO_FILEP11__mbstate_t - (i32.const 19136) - (get_local $0) - (i32.const 19184) - ) - (i32.store - (i32.const 18588) - (i32.const 6556) - ) - (i32.store - (i32.const 18592) - (i32.const 6576) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18592) - (i32.const 19136) - ) - (i32.store - (i32.const 18664) - (i32.const 0) - ) - (i32.store - (i32.const 18668) - (i32.const -1) - ) - (set_local $0 - (i32.load - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18588) - ) - (i32.const -12) - ) - ) - (i32.const 18612) - ) - ) - ) - (i32.store - (i32.const 18756) - (i32.const 6556) - ) - (i32.store - (i32.const 18760) - (i32.const 6576) - ) - (call $__ZNSt3__28ios_base4initEPv - (i32.const 18760) - (get_local $0) - ) - (i32.store - (i32.const 18832) - (i32.const 0) - ) - (i32.store - (i32.const 18836) - (i32.const -1) - ) - (i32.store - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18160) - ) - (i32.const -12) - ) - ) - (i32.const 18232) - ) - (i32.const 18336) - ) - (i32.store - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18248) - ) - (i32.const -12) - ) - ) - (i32.const 18320) - ) - (i32.const 18420) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18504) - ) - (i32.const -12) - ) - ) - (i32.const 18508) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 8192) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18588) - ) - (i32.const -12) - ) - ) - (i32.const 18592) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 8192) - ) - ) - (i32.store - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18504) - ) - (i32.const -12) - ) - ) - (i32.const 18576) - ) - (i32.const 18336) - ) - (i32.store - (i32.add - (i32.load - (i32.add - (i32.load - (i32.const 18588) - ) - (i32.const -12) - ) - ) - (i32.const 18660) - ) - (i32.const 18420) - ) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $5 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $6 - (get_local $7) - ) - (if - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const 1) - ) - (block - (i32.store - (get_local $6) - (tee_local $2 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (set_local $0 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19248) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $2) - ) - ) - (set_local $2 - (i32.load - (get_local $0) - ) - ) - (if - (get_local $4) - (call_indirect $FUNCSIG$vii - (get_local $5) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=24 - (get_local $2) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $5) - (get_local $0) - (i32.add - (i32.and - (i32.load offset=28 - (get_local $2) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (set_local $2 - (tee_local $4 - (i32.load8_s - (tee_local $8 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - ) - ) - (set_local $3 - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - ) - (if - (i32.ge_s - (get_local $4) - (i32.const 0) - ) - (set_local $0 - (get_local $5) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.add - (if i32 - (tee_local $4 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (get_local $3) - (get_local $5) - ) - (i32.shl - (if i32 - (get_local $4) - (i32.load - (get_local $6) - ) - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - (block - (set_local $2 - (i32.load - (get_local $0) - ) - ) - (if - (tee_local $3 - (i32.load - (get_local $1) - ) - ) - (block - (if - (i32.eq - (tee_local $4 - (i32.load - (tee_local $9 - (i32.add - (get_local $3) - (i32.const 24) - ) - ) - ) - ) - (i32.load offset=28 - (get_local $3) - ) - ) - (set_local $2 - (call_indirect $FUNCSIG$iii - (get_local $3) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $3) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (block - (i32.store - (get_local $9) - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - ) - ) - (if - (i32.eq - (get_local $2) - (i32.const -1) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - ) - ) - ) - (set_local $2 - (i32.load8_s - (get_local $8) - ) - ) - (set_local $3 - (i32.load - (get_local $5) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $5) - ) - ) - (block - (set_local $6 - (i32.load offset=24 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.load - (get_local $8) - ) - ) - (set_local $0 - (call_indirect $FUNCSIG$iiiiii - (get_local $0) - (get_local $5) - (get_local $2) - (get_local $3) - (i32.and - (get_local $4) - (i32.const 1) - ) - (i32.add - (i32.and - (get_local $6) - (i32.const 31) - ) - (i32.const 429) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $0) - ) - (func $__ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (block $do-once - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=4 - (get_local $1) - ) - (get_local $2) - ) - (if - (i32.ne - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 28) - ) - ) - ) - (i32.const 1) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - ) - ) - (block - (if - (i32.ne - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (block - (call_indirect $FUNCSIG$viiiii - (tee_local $0 - (i32.load offset=8 - (get_local $0) - ) - ) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $0) - ) - ) - (i32.const 3) - ) - (i32.const 40) - ) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (i32.load offset=16 - (get_local $1) - ) - (get_local $2) - ) - (if - (i32.ne - (i32.load - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - (get_local $2) - ) - (block - (i32.store offset=32 - (get_local $1) - (get_local $3) - ) - (br_if $do-once - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 44) - ) - ) - ) - (i32.const 4) - ) - ) - (i32.store8 - (tee_local $6 - (i32.add - (get_local $1) - (i32.const 52) - ) - ) - (i32.const 0) - ) - (i32.store8 - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 53) - ) - ) - (i32.const 0) - ) - (call_indirect $FUNCSIG$viiiiii - (tee_local $0 - (i32.load offset=8 - (get_local $0) - ) - ) - (get_local $1) - (get_local $2) - (get_local $2) - (i32.const 1) - (get_local $4) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $0) - ) - ) - (i32.const 7) - ) - (i32.const 405) - ) - ) - (i32.store - (get_local $3) - (tee_local $0 - (block $__rjto$1 i32 - (block $__rjti$1 - (if - (i32.load8_s - (get_local $7) - ) - (if - (i32.load8_s - (get_local $6) - ) - (br $__rjti$1) - (set_local $0 - (i32.const 1) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (i32.store - (get_local $5) - (get_local $2) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 40) - ) - ) - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 1) - ) - ) - (if - (i32.eq - (i32.load offset=36 - (get_local $1) - ) - (i32.const 1) - ) - (if - (i32.eq - (i32.load offset=24 - (get_local $1) - ) - (i32.const 2) - ) - (block - (i32.store8 offset=54 - (get_local $1) - (i32.const 1) - ) - (br_if $__rjti$1 - (get_local $0) - ) - (br $__rjto$1 - (i32.const 4) - ) - ) - ) - ) - (br_if $__rjti$1 - (get_local $0) - ) - (br $__rjto$1 - (i32.const 4) - ) - ) - (i32.const 3) - ) - ) - ) - (br $do-once) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (i32.const 1) - ) - (i32.store offset=32 - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $8 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $5 - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - (set_local $7 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (set_local $6 - (get_local $8) - ) - (if - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const 1) - ) - (block - (i32.store - (get_local $6) - (tee_local $0 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (set_local $2 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19220) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - (set_local $0 - (i32.load - (get_local $2) - ) - ) - (if - (get_local $4) - (call_indirect $FUNCSIG$vii - (get_local $5) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=24 - (get_local $0) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $5) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=28 - (get_local $0) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - ) - (set_local $4 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (set_local $6 - (tee_local $0 - (i32.load8_s - (tee_local $3 - (i32.add - (get_local $5) - (i32.const 11) - ) - ) - ) - ) - ) - (set_local $0 - (if i32 - (i32.lt_s - (get_local $0) - (i32.const 0) - ) - (i32.load - (get_local $5) - ) - (get_local $5) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.add - (if i32 - (tee_local $2 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $5) - ) - (get_local $5) - ) - (if i32 - (get_local $2) - (i32.load - (get_local $4) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - (block - (set_local $7 - (i32.load8_s - (get_local $0) - ) - ) - (block $do-once - (if - (tee_local $9 - (i32.load - (get_local $1) - ) - ) - (block - (if - (i32.ne - (tee_local $6 - (i32.load - (tee_local $2 - (i32.add - (get_local $9) - (i32.const 24) - ) - ) - ) - ) - (i32.load offset=28 - (get_local $9) - ) - ) - (block - (i32.store - (get_local $2) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $6) - (get_local $7) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$iii - (get_local $9) - (i32.and - (get_local $7) - (i32.const 255) - ) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const -1) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - ) - ) - ) - ) - (set_local $6 - (i32.load8_s - (get_local $3) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $5) - ) - ) - (block - (set_local $6 - (i32.load offset=24 - (i32.load - (get_local $0) - ) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.load - (get_local $7) - ) - ) - (set_local $0 - (call_indirect $FUNCSIG$iiiiii - (get_local $0) - (get_local $5) - (get_local $2) - (get_local $3) - (i32.and - (get_local $4) - (i32.const 1) - ) - (i32.add - (i32.and - (get_local $6) - (i32.const 31) - ) - (i32.const 429) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $8) - ) - (get_local $0) - ) - (func $_mbrtowc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $4 - (get_local $6) - ) - (set_local $3 - (i32.load - (tee_local $5 - (if i32 - (get_local $3) - (get_local $3) - (i32.const 17648) - ) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (if - (get_local $1) - (block - (set_local $7 - (if i32 - (get_local $0) - (get_local $0) - (get_local $4) - ) - ) - (set_local $0 - (if i32 - (get_local $2) - (block i32 - (block $label$break$L11 - (block $__rjti$0 - (if - (get_local $3) - (block - (set_local $0 - (get_local $2) - ) - (br $__rjti$0) - ) - (block - (set_local $0 - (i32.and - (tee_local $3 - (i32.load8_s - (get_local $1) - ) - ) - (i32.const 255) - ) - ) - (if - (i32.gt_s - (get_local $3) - (i32.const -1) - ) - (block - (i32.store - (get_local $7) - (get_local $0) - ) - (set_local $0 - (i32.ne - (get_local $3) - (i32.const 0) - ) - ) - (br $__rjto$1) - ) - ) - (br_if $__rjti$1 - (i32.gt_u - (tee_local $0 - (i32.add - (get_local $0) - (i32.const -194) - ) - ) - (i32.const 50) - ) - ) - (set_local $3 - (i32.load - (i32.add - (i32.shl - (get_local $0) - (i32.const 2) - ) - (i32.const 2496) - ) - ) - ) - (if - (tee_local $0 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (block - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $__rjti$0) - ) - ) - ) - ) - (br $label$break$L11) - ) - (br_if $__rjti$1 - (i32.gt_u - (i32.or - (i32.add - (tee_local $8 - (i32.shr_u - (i32.and - (tee_local $4 - (i32.load8_s - (get_local $1) - ) - ) - (i32.const 255) - ) - (i32.const 3) - ) - ) - (i32.const -16) - ) - (i32.add - (get_local $8) - (i32.shr_s - (get_local $3) - (i32.const 26) - ) - ) - ) - (i32.const 7) - ) - ) - (loop $while-in - (block $while-out - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const -1) - ) - ) - (br_if $while-out - (i32.ge_s - (tee_local $3 - (i32.or - (i32.add - (i32.and - (get_local $4) - (i32.const 255) - ) - (i32.const -128) - ) - (i32.shl - (get_local $3) - (i32.const 6) - ) - ) - ) - (i32.const 0) - ) - ) - (br_if $label$break$L11 - (i32.eqz - (get_local $0) - ) - ) - (br_if $while-in - (i32.eq - (i32.and - (tee_local $4 - (i32.load8_s - (get_local $1) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - ) - (br $__rjti$1) - ) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $7) - (get_local $3) - ) - (set_local $0 - (i32.sub - (get_local $2) - (get_local $0) - ) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (get_local $3) - ) - (i32.const -2) - ) - (i32.const -2) - ) - ) - ) - (if - (get_local $3) - (br $__rjti$1) - (set_local $0 - (i32.const 0) - ) - ) - ) - (br $__rjto$1) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (set_local $0 - (i32.const -1) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (if - (i32.gt_u - (get_local $1) - (i32.const 1073741807) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (block $do-once - (if - (i32.ne - (tee_local $5 - (if i32 - (i32.lt_u - (if i32 - (i32.gt_u - (tee_local $4 - (if i32 - (tee_local $7 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (tee_local $8 - (i32.add - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (block i32 - (set_local $2 - (i32.add - (i32.and - (i32.load - (get_local $6) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - ) - (i32.load offset=4 - (get_local $0) - ) - ) - (block i32 - (set_local $2 - (i32.const 1) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - ) - ) - (get_local $1) - ) - (tee_local $1 - (get_local $4) - ) - (get_local $1) - ) - (i32.const 2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.const -4) - ) - (i32.const -1) - ) - ) - ) - (get_local $2) - ) - (block - (block $__rjti$2 - (block $__rjti$1 - (if - (i32.eq - (get_local $5) - (i32.const 1) - ) - (block - (set_local $2 - (i32.load - (get_local $0) - ) - ) - (if - (get_local $7) - (block - (set_local $1 - (get_local $0) - ) - (set_local $3 - (i32.const 0) - ) - ) - (block - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (get_local $0) - (get_local $2) - (i32.add - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 1) - ) - ) - ) - (call $__ZdlPv - (get_local $2) - ) - (br $__rjti$2) - ) - ) - ) - (block - (if - (i32.gt_u - (tee_local $1 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.const 1073741823) - ) - (call $___assert_fail - (i32.const 16218) - (i32.const 16255) - (i32.const 1734) - (i32.const 16332) - ) - ) - (set_local $1 - (call $__Znwj - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - (if - (get_local $7) - (block - (set_local $3 - (i32.const 1) - ) - (set_local $2 - (i32.load - (get_local $0) - ) - ) - ) - (block - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (get_local $1) - (get_local $0) - (i32.add - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 1) - ) - ) - ) - (br $__rjti$1) - ) - ) - ) - ) - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (get_local $1) - (get_local $2) - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - (call $__ZdlPv - (get_local $2) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $3) - ) - ) - ) - (i32.store - (get_local $6) - (i32.or - (i32.add - (get_local $5) - (i32.const 1) - ) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $4) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (br $do-once) - ) - (i32.store8 - (get_local $8) - (get_local $4) - ) - ) - ) - ) - ) - (func $__ZNKSt3__220__time_get_c_storageIcE7__weeksEv (param $0 i32) (result i32) - (local $1 i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 16952) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 16952) - ) - (block - (if - (i32.eqz - (i32.load8_s - (i32.const 16960) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 16960) - ) - (block - (set_local $0 - (i32.const 19280) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br_if $do-in - (i32.ne - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.const 19448) - ) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 99) - (i32.const 0) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19280) - (i32.const 14459) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19292) - (i32.const 14466) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19304) - (i32.const 14473) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19316) - (i32.const 14481) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19328) - (i32.const 14491) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19340) - (i32.const 14500) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19352) - (i32.const 14507) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19364) - (i32.const 14516) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19376) - (i32.const 14520) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19388) - (i32.const 14524) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19400) - (i32.const 14528) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19412) - (i32.const 14532) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19424) - (i32.const 14536) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19436) - (i32.const 14540) - ) - ) - (i32.store - (i32.const 19448) - (i32.const 19280) - ) - ) - ) - ) - (i32.load - (i32.const 19448) - ) - ) - (func $__ZNKSt3__220__time_get_c_storageIwE7__weeksEv (param $0 i32) (result i32) - (local $1 i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17032) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17032) - ) - (block - (if - (i32.eqz - (i32.load8_s - (i32.const 17040) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17040) - ) - (block - (set_local $0 - (i32.const 20092) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br_if $do-in - (i32.ne - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.const 20260) - ) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 103) - (i32.const 0) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20092) - (i32.const 7496) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20104) - (i32.const 7524) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20116) - (i32.const 7552) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20128) - (i32.const 7584) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20140) - (i32.const 7624) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20152) - (i32.const 7660) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20164) - (i32.const 7688) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20176) - (i32.const 7724) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20188) - (i32.const 7740) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20200) - (i32.const 7756) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20212) - (i32.const 7772) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20224) - (i32.const 7788) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20236) - (i32.const 7804) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20248) - (i32.const 7820) - ) - ) - (i32.store - (i32.const 20260) - (i32.const 20092) - ) - ) - ) - ) - (i32.load - (i32.const 20260) - ) - ) - (func $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (set_local $8 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.eqz - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - ) - (block - (set_global $STACKTOP - (get_local $8) - ) - (return - (i32.const 0) - ) - ) - ) - (set_local $9 - (i32.load - (tee_local $11 - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - ) - ) - (if - (i32.gt_s - (tee_local $10 - (i32.sub - (tee_local $4 - (get_local $2) - ) - (tee_local $7 - (get_local $1) - ) - ) - ) - (i32.const 0) - ) - (if - (i32.ne - (call_indirect $FUNCSIG$iiii - (get_local $6) - (get_local $1) - (get_local $10) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $6) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (get_local $10) - ) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_global $STACKTOP - (get_local $8) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (set_local $1 - (get_local $8) - ) - (block $do-once - (if - (i32.gt_s - (tee_local $7 - (if i32 - (i32.gt_s - (get_local $9) - (tee_local $7 - (i32.sub - (get_local $3) - (get_local $7) - ) - ) - ) - (i32.sub - (get_local $9) - (get_local $7) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $1) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc - (get_local $1) - (get_local $7) - (get_local $5) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$iiii - (get_local $6) - (if i32 - (i32.lt_s - (i32.load8_s offset=11 - (get_local $1) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - (get_local $1) - ) - (get_local $7) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $6) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (get_local $7) - ) - (block - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $1) - ) - (br $do-once) - ) - ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $1) - ) - (set_global $STACKTOP - (get_local $8) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (if - (i32.gt_s - (tee_local $1 - (i32.sub - (get_local $3) - (get_local $4) - ) - ) - (i32.const 0) - ) - (if - (i32.ne - (call_indirect $FUNCSIG$iiii - (get_local $6) - (get_local $2) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $6) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (get_local $1) - ) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_global $STACKTOP - (get_local $8) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (set_global $STACKTOP - (get_local $8) - ) - (get_local $6) - ) - (func $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (set_local $8 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (get_local $8) - ) - (block $label$break$L1 - (if - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (block - (set_local $9 - (i32.load - (tee_local $11 - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - ) - ) - (set_local $10 - (i32.shr_s - (tee_local $13 - (i32.sub - (tee_local $4 - (get_local $2) - ) - (tee_local $12 - (get_local $1) - ) - ) - ) - (i32.const 2) - ) - ) - (if - (i32.gt_s - (get_local $13) - (i32.const 0) - ) - (if - (i32.ne - (call_indirect $FUNCSIG$iiii - (get_local $6) - (get_local $1) - (get_local $10) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $6) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (get_local $10) - ) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - ) - (if - (i32.gt_s - (tee_local $1 - (if i32 - (i32.gt_s - (get_local $9) - (tee_local $1 - (i32.shr_s - (i32.sub - (get_local $3) - (get_local $12) - ) - (i32.const 2) - ) - ) - ) - (i32.sub - (get_local $9) - (get_local $1) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEjw - (get_local $7) - (get_local $1) - (get_local $5) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$iiii - (get_local $6) - (if i32 - (i32.lt_s - (i32.load8_s offset=11 - (get_local $7) - ) - (i32.const 0) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $6) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (get_local $1) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $7) - ) - (set_local $6 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - ) - ) - (set_local $1 - (i32.shr_s - (tee_local $3 - (i32.sub - (get_local $3) - (get_local $4) - ) - ) - (i32.const 2) - ) - ) - (if - (i32.gt_s - (get_local $3) - (i32.const 0) - ) - (if - (i32.ne - (call_indirect $FUNCSIG$iiii - (get_local $6) - (get_local $2) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $6) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (get_local $1) - ) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - ) - (set_local $6 - (i32.const 0) - ) - ) - ) - (set_global $STACKTOP - (get_local $8) - ) - (get_local $6) - ) - (func $___cxx_global_array_dtor_112 (param $0 i32) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20832) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20820) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20808) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20796) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20784) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20772) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20760) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20748) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20736) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20724) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20712) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20700) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20688) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20676) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20664) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20652) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20640) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20628) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20616) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20604) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20592) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20580) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20568) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20556) - ) - ) - (func $___cxx_global_array_dtor_109 (param $0 i32) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20020) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20008) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19996) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19984) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19972) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19960) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19948) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19936) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19924) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19912) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19900) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19888) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19876) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19864) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19852) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19840) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19828) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19816) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19804) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19792) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19780) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19768) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19756) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19744) - ) - ) - (func $___cxx_global_array_dtor_85 (param $0 i32) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20540) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20528) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20516) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20504) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20492) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20480) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20468) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20456) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20444) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20432) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20420) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20408) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20396) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20384) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20372) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20360) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20348) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20336) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20324) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20312) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20300) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20288) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20276) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20264) - ) - ) - (func $___cxx_global_array_dtor_61 (param $0 i32) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19728) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19716) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19704) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19692) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19680) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19668) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19656) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19644) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19632) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19620) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19608) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19596) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19584) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19572) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19560) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19548) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19536) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19524) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19512) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19500) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19488) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19476) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19464) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19452) - ) - ) - (func $___dynamic_cast (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (set_local $9 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.load - (i32.add - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - (i32.const -8) - ) - ) - ) - ) - (set_local $6 - (i32.load - (i32.add - (get_local $4) - (i32.const -4) - ) - ) - ) - (i32.store - (tee_local $4 - (get_local $9) - ) - (get_local $2) - ) - (i32.store offset=4 - (get_local $4) - (get_local $0) - ) - (i32.store offset=8 - (get_local $4) - (get_local $1) - ) - (i32.store offset=12 - (get_local $4) - (get_local $3) - ) - (set_local $3 - (i32.add - (get_local $4) - (i32.const 20) - ) - ) - (set_local $10 - (i32.add - (get_local $4) - (i32.const 24) - ) - ) - (set_local $11 - (i32.add - (get_local $4) - (i32.const 28) - ) - ) - (set_local $12 - (i32.add - (get_local $4) - (i32.const 32) - ) - ) - (set_local $13 - (i32.add - (get_local $4) - (i32.const 40) - ) - ) - (set_local $1 - (i32.eq - (get_local $6) - (get_local $2) - ) - ) - (set_local $0 - (i32.add - (tee_local $8 - (tee_local $7 - (i32.add - (get_local $4) - (i32.const 16) - ) - ) - ) - (i32.const 36) - ) - ) - (loop $do-in - (i32.store - (get_local $8) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (get_local $0) - ) - ) - ) - (i32.store16 offset=36 - (get_local $7) - (i32.const 0) - ) - (i32.store8 offset=38 - (get_local $7) - (i32.const 0) - ) - (block $label$break$L1 - (if - (get_local $1) - (block - (i32.store offset=48 - (get_local $4) - (i32.const 1) - ) - (call_indirect $FUNCSIG$viiiiii - (get_local $2) - (get_local $4) - (get_local $5) - (get_local $5) - (i32.const 1) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $2) - ) - ) - (i32.const 7) - ) - (i32.const 405) - ) - ) - (if - (i32.ne - (i32.load - (get_local $10) - ) - (i32.const 1) - ) - (set_local $5 - (i32.const 0) - ) - ) - ) - (block - (call_indirect $FUNCSIG$viiiii - (get_local $6) - (get_local $4) - (get_local $5) - (i32.const 1) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $6) - ) - ) - (i32.const 3) - ) - (i32.const 40) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-default - (i32.load offset=36 - (get_local $4) - ) - ) - ) - (set_local $5 - (if i32 - (i32.and - (i32.and - (i32.eq - (i32.load - (get_local $13) - ) - (i32.const 1) - ) - (i32.eq - (i32.load - (get_local $11) - ) - (i32.const 1) - ) - ) - (i32.eq - (i32.load - (get_local $12) - ) - (i32.const 1) - ) - ) - (i32.load - (get_local $3) - ) - (i32.const 0) - ) - ) - (br $label$break$L1) - ) - (br $switch) - ) - (set_local $5 - (i32.const 0) - ) - (br $label$break$L1) - ) - (if - (i32.ne - (i32.load - (get_local $10) - ) - (i32.const 1) - ) - (if - (i32.eqz - (i32.and - (i32.and - (i32.eqz - (i32.load - (get_local $13) - ) - ) - (i32.eq - (i32.load - (get_local $11) - ) - (i32.const 1) - ) - ) - (i32.eq - (i32.load - (get_local $12) - ) - (i32.const 1) - ) - ) - ) - (block - (set_local $5 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - ) - (set_local $5 - (i32.load - (get_local $7) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $9) - ) - (get_local $5) - ) - (func $__ZNSt3__211__stdoutbufIcE8overflowEi (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (set_local $2 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $5 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $6 - (get_local $3) - ) - (block $__rjto$3 - (block $__rjti$3 - (br_if $__rjti$3 - (tee_local $8 - (i32.eq - (get_local $1) - (i32.const -1) - ) - ) - ) - (i32.store8 - (get_local $2) - (get_local $1) - ) - (if - (i32.load8_s offset=44 - (get_local $0) - ) - (if - (i32.eq - (call $_fwrite - (get_local $2) - (i32.const 1) - (i32.const 1) - (i32.load offset=32 - (get_local $0) - ) - ) - (i32.const 1) - ) - (br $__rjti$3) - (block - (set_local $1 - (i32.const -1) - ) - (br $__rjto$3) - ) - ) - ) - (i32.store - (get_local $5) - (get_local $4) - ) - (set_local $9 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - (set_local $12 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (set_local $13 - (get_local $4) - ) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (set_local $0 - (get_local $2) - ) - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (set_local $2 - (call_indirect $FUNCSIG$iiiiiiiii - (tee_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.load - (get_local $11) - ) - (get_local $0) - (get_local $9) - (get_local $6) - (get_local $4) - (get_local $12) - (get_local $5) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $2) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - ) - (br_if $__rjti$2 - (i32.eq - (i32.load - (get_local $6) - ) - (get_local $0) - ) - ) - (br_if $__rjti$0 - (i32.eq - (get_local $2) - (i32.const 3) - ) - ) - (br_if $__rjti$2 - (i32.ne - (i32.or - (get_local $2) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (br_if $__rjti$2 - (i32.ne - (call $_fwrite - (get_local $4) - (i32.const 1) - (tee_local $0 - (i32.sub - (i32.load - (get_local $5) - ) - (get_local $13) - ) - ) - (i32.load - (get_local $7) - ) - ) - (get_local $0) - ) - ) - (br_if $__rjti$3 - (i32.ne - (get_local $2) - (i32.const 1) - ) - ) - (set_local $0 - (i32.load - (get_local $6) - ) - ) - (br $while-in) - ) - ) - (br_if $__rjti$2 - (i32.ne - (call $_fwrite - (get_local $0) - (i32.const 1) - (i32.const 1) - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - ) - (br $__rjti$3) - ) - (set_local $1 - (i32.const -1) - ) - (br $__rjto$3) - ) - (if - (get_local $8) - (set_local $1 - (i32.const 0) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $1) - ) - (func $__ZNSt3__211__stdoutbufIwE8overflowEj (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (set_local $2 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $5 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $6 - (get_local $3) - ) - (block $__rjto$3 - (block $__rjti$3 - (br_if $__rjti$3 - (tee_local $8 - (i32.eq - (get_local $1) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $1) - ) - (if - (i32.load8_s offset=44 - (get_local $0) - ) - (if - (i32.eq - (call $_fwrite - (get_local $2) - (i32.const 4) - (i32.const 1) - (i32.load offset=32 - (get_local $0) - ) - ) - (i32.const 1) - ) - (br $__rjti$3) - (block - (set_local $1 - (i32.const -1) - ) - (br $__rjto$3) - ) - ) - ) - (i32.store - (get_local $5) - (get_local $4) - ) - (set_local $9 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - (set_local $12 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (set_local $13 - (get_local $4) - ) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (set_local $0 - (get_local $2) - ) - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (set_local $2 - (call_indirect $FUNCSIG$iiiiiiiii - (tee_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.load - (get_local $11) - ) - (get_local $0) - (get_local $9) - (get_local $6) - (get_local $4) - (get_local $12) - (get_local $5) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $2) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - ) - (br_if $__rjti$2 - (i32.eq - (i32.load - (get_local $6) - ) - (get_local $0) - ) - ) - (br_if $__rjti$0 - (i32.eq - (get_local $2) - (i32.const 3) - ) - ) - (br_if $__rjti$2 - (i32.ne - (i32.or - (get_local $2) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (br_if $__rjti$2 - (i32.ne - (call $_fwrite - (get_local $4) - (i32.const 1) - (tee_local $0 - (i32.sub - (i32.load - (get_local $5) - ) - (get_local $13) - ) - ) - (i32.load - (get_local $7) - ) - ) - (get_local $0) - ) - ) - (br_if $__rjti$3 - (i32.ne - (get_local $2) - (i32.const 1) - ) - ) - (set_local $0 - (i32.load - (get_local $6) - ) - ) - (br $while-in) - ) - ) - (br_if $__rjti$2 - (i32.ne - (call $_fwrite - (get_local $0) - (i32.const 1) - (i32.const 1) - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - ) - (br $__rjti$3) - ) - (set_local $1 - (i32.const -1) - ) - (br $__rjto$3) - ) - (if - (get_local $8) - (set_local $1 - (i32.const 0) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $1) - ) - (func $__ZNKSt3__28messagesIcE6do_getEiiiRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $6) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $6) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $6) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $5 - (i32.add - (tee_local $1 - (if i32 - (tee_local $9 - (i32.lt_s - (tee_local $8 - (i32.load8_s offset=11 - (get_local $5) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $5) - ) - (get_local $5) - ) - ) - (if i32 - (get_local $9) - (i32.load offset=4 - (get_local $5) - ) - (i32.and - (get_local $8) - (i32.const 255) - ) - ) - ) - ) - (loop $while-in1 - (if - (i32.lt_u - (get_local $1) - (get_local $5) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc - (get_local $6) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in1) - ) - ) - ) - (set_local $1 - (call $_catgets - (if i32 - (i32.eq - (get_local $2) - (i32.const -1) - ) - (i32.const -1) - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - (get_local $3) - (get_local $4) - (if i32 - (i32.lt_s - (i32.load8_s offset=11 - (get_local $6) - ) - (i32.const 0) - ) - (i32.load - (get_local $6) - ) - (get_local $6) - ) - ) - ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - (loop $while-in3 - (if - (i32.ne - (get_local $2) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $1) - (call $_strlen - (get_local $1) - ) - ) - ) - (loop $while-in5 - (if - (i32.lt_u - (get_local $1) - (get_local $2) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc - (get_local $0) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (get_local $6) - ) - (set_global $STACKTOP - (get_local $7) - ) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 128) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 116) - ) - ) - (i32.load8_s - (i32.const 14180) - ) - ) - (i32.store8 offset=1 - (get_local $5) - (i32.load8_s - (i32.const 14181) - ) - ) - (i32.store8 offset=2 - (get_local $5) - (i32.load8_s - (i32.const 14182) - ) - ) - (i32.store8 offset=3 - (get_local $5) - (i32.load8_s - (i32.const 14183) - ) - ) - (i32.store8 offset=4 - (get_local $5) - (i32.load8_s - (i32.const 14184) - ) - ) - (i32.store8 offset=5 - (get_local $5) - (i32.load8_s - (i32.const 14185) - ) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $5) - (i32.const 1) - ) - (i32.const 14186) - (i32.const 0) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $6 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $7 - (get_local $0) - ) - (get_local $4) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 104) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 12) - (get_local $6) - (get_local $5) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 144) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 126) - ) - ) - (i32.load8_s - (i32.const 14180) - ) - ) - (i32.store8 offset=1 - (get_local $5) - (i32.load8_s - (i32.const 14181) - ) - ) - (i32.store8 offset=2 - (get_local $5) - (i32.load8_s - (i32.const 14182) - ) - ) - (i32.store8 offset=3 - (get_local $5) - (i32.load8_s - (i32.const 14183) - ) - ) - (i32.store8 offset=4 - (get_local $5) - (i32.load8_s - (i32.const 14184) - ) - ) - (i32.store8 offset=5 - (get_local $5) - (i32.load8_s - (i32.const 14185) - ) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $5) - (i32.const 1) - ) - (i32.const 14186) - (i32.const 1) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $6 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $7 - (get_local $0) - ) - (get_local $4) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 112) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 13) - (get_local $6) - (get_local $5) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 56) - ) - ) - (i32.load8_s - (i32.const 14180) - ) - ) - (i32.store8 offset=1 - (get_local $5) - (i32.load8_s - (i32.const 14181) - ) - ) - (i32.store8 offset=2 - (get_local $5) - (i32.load8_s - (i32.const 14182) - ) - ) - (i32.store8 offset=3 - (get_local $5) - (i32.load8_s - (i32.const 14183) - ) - ) - (i32.store8 offset=4 - (get_local $5) - (i32.load8_s - (i32.const 14184) - ) - ) - (i32.store8 offset=5 - (get_local $5) - (i32.load8_s - (i32.const 14185) - ) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $5) - (i32.const 1) - ) - (i32.const 14186) - (i32.const 0) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $6 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $7 - (get_local $0) - ) - (get_local $4) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 12) - (get_local $6) - (get_local $5) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 56) - ) - ) - (i32.load8_s - (i32.const 14180) - ) - ) - (i32.store8 offset=1 - (get_local $5) - (i32.load8_s - (i32.const 14181) - ) - ) - (i32.store8 offset=2 - (get_local $5) - (i32.load8_s - (i32.const 14182) - ) - ) - (i32.store8 offset=3 - (get_local $5) - (i32.load8_s - (i32.const 14183) - ) - ) - (i32.store8 offset=4 - (get_local $5) - (i32.load8_s - (i32.const 14184) - ) - ) - (i32.store8 offset=5 - (get_local $5) - (i32.load8_s - (i32.const 14185) - ) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $5) - (i32.const 1) - ) - (i32.const 14186) - (i32.const 1) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $6 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $7 - (get_local $0) - ) - (get_local $4) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 43) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 13) - (get_local $6) - (get_local $5) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNSt3__224__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_j (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_ - (tee_local $6 - (get_local $3) - ) - (get_local $0) - ) - (if - (i32.eqz - (i32.load8_s - (get_local $6) - ) - ) - (block - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev - (get_local $6) - ) - (set_global $STACKTOP - (get_local $3) - ) - (return - (get_local $0) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (i32.load offset=24 - (tee_local $7 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - ) - (set_local $9 - (i32.load offset=4 - (get_local $7) - ) - ) - (if - (i32.eq - (tee_local $4 - (i32.load - (tee_local $10 - (i32.add - (get_local $7) - (i32.const 76) - ) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $5) - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $7) - ) - ) - (set_local $4 - (call_indirect $FUNCSIG$iii - (tee_local $4 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $5) - (i32.const 19208) - ) - ) - (i32.const 32) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $4) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $5) - ) - (i32.store - (get_local $10) - (tee_local $4 - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $1) - (get_local $2) - ) - ) - (i32.store - (get_local $5) - (i32.load - (get_local $8) - ) - ) - (if - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $5) - (get_local $1) - (if i32 - (i32.eq - (i32.and - (get_local $9) - (i32.const 176) - ) - (i32.const 32) - ) - (get_local $2) - (get_local $1) - ) - (get_local $2) - (get_local $7) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - (block - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev - (get_local $6) - ) - (set_global $STACKTOP - (get_local $3) - ) - (return - (get_local $0) - ) - ) - ) - (call $__ZNSt3__28ios_base5clearEj - (tee_local $1 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - (i32.or - (i32.load offset=16 - (get_local $1) - ) - (i32.const 5) - ) - ) - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev - (get_local $6) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $0) - ) - (func $_vfprintf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 224) - ) - ) - (set_local $5 - (i32.add - (get_local $4) - (i32.const 120) - ) - ) - (set_local $7 - (get_local $4) - ) - (set_local $6 - (i32.add - (get_local $4) - (i32.const 136) - ) - ) - (set_local $9 - (i32.add - (tee_local $3 - (tee_local $8 - (i32.add - (get_local $4) - (i32.const 80) - ) - ) - ) - (i32.const 40) - ) - ) - (loop $do-in - (i32.store - (get_local $3) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (get_local $9) - ) - ) - ) - (i32.store - (get_local $5) - (i32.load - (get_local $2) - ) - ) - (if - (i32.lt_s - (call $_printf_core - (i32.const 0) - (get_local $1) - (get_local $5) - (get_local $7) - (get_local $8) - ) - (i32.const 0) - ) - (set_local $1 - (i32.const -1) - ) - (block - (set_local $14 - (if i32 - (i32.gt_s - (i32.load offset=76 - (get_local $0) - ) - (i32.const -1) - ) - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $0) - ) - (i32.const 0) - ) - ) - (set_local $10 - (i32.load - (get_local $0) - ) - ) - (if - (i32.lt_s - (i32.load8_s offset=74 - (get_local $0) - ) - (i32.const 1) - ) - (i32.store - (get_local $0) - (i32.and - (get_local $10) - (i32.const -33) - ) - ) - ) - (if - (i32.load - (tee_local $11 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - (set_local $1 - (call $_printf_core - (get_local $0) - (get_local $1) - (get_local $5) - (get_local $7) - (get_local $8) - ) - ) - (block - (set_local $13 - (i32.load - (tee_local $12 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - ) - ) - (i32.store - (get_local $12) - (get_local $6) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (get_local $6) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (get_local $6) - ) - (i32.store - (get_local $11) - (i32.const 80) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.add - (get_local $6) - (i32.const 80) - ) - ) - (set_local $1 - (call $_printf_core - (get_local $0) - (get_local $1) - (get_local $5) - (get_local $7) - (get_local $8) - ) - ) - (if - (get_local $13) - (block - (drop - (call_indirect $FUNCSIG$iiii - (get_local $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $3) - ) - ) - (set_local $1 - (i32.const -1) - ) - ) - (i32.store - (get_local $12) - (get_local $13) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (i32.store - (get_local $2) - (i32.const 0) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (get_local $0) - (i32.or - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.and - (get_local $10) - (i32.const 32) - ) - ) - ) - (if - (get_local $14) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $0) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 32) - ) - (set_local $1 - (i32.const -1) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $1) - ) - (func $__ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (call $__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i - (i32.const 0) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - ) - (block - (set_local $9 - (i32.and - (tee_local $7 - (i32.load16_s - (tee_local $6 - (i32.add - (get_local $1) - (i32.const 52) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (set_local $10 - (i32.shr_u - (i32.and - (get_local $7) - (i32.const 65535) - ) - (i32.const 8) - ) - ) - (set_local $11 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (tee_local $8 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.const 3) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 53) - ) - ) - (i32.const 0) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib - (i32.add - (get_local $0) - (i32.const 16) - ) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - ) - (block $label$break$L4 - (if - (i32.gt_s - (get_local $8) - (i32.const 1) - ) - (block - (set_local $12 - (i32.add - (get_local $1) - (i32.const 24) - ) - ) - (set_local $8 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $13 - (i32.add - (get_local $1) - (i32.const 54) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (loop $do-in - (br_if $label$break$L4 - (i32.load8_s - (get_local $13) - ) - ) - (if - (i32.and - (tee_local $14 - (i32.load16_s - (get_local $6) - ) - ) - (i32.const 255) - ) - (block - (br_if $label$break$L4 - (i32.eq - (i32.load - (get_local $12) - ) - (i32.const 1) - ) - ) - (br_if $label$break$L4 - (i32.eqz - (i32.and - (i32.load - (get_local $8) - ) - (i32.const 2) - ) - ) - ) - ) - (if - (i32.ge_s - (i32.and - (get_local $14) - (i32.const 65535) - ) - (i32.const 256) - ) - (br_if $label$break$L4 - (i32.eqz - (i32.and - (i32.load - (get_local $8) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 0) - ) - (i32.store8 - (get_local $7) - (i32.const 0) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - ) - (br_if $do-in - (i32.lt_u - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $11) - ) - ) - ) - ) - ) - ) - (i32.store8 - (get_local $6) - (get_local $9) - ) - (i32.store8 - (get_local $7) - (get_local $10) - ) - ) - ) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPKv (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 192) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 180) - ) - ) - (i32.load8_s - (i32.const 14193) - ) - ) - (i32.store8 offset=1 - (get_local $5) - (i32.load8_s - (i32.const 14194) - ) - ) - (i32.store8 offset=2 - (get_local $5) - (i32.load8_s - (i32.const 14195) - ) - ) - (i32.store8 offset=3 - (get_local $5) - (i32.load8_s - (i32.const 14196) - ) - ) - (i32.store8 offset=4 - (get_local $5) - (i32.load8_s - (i32.const 14197) - ) - ) - (i32.store8 offset=5 - (get_local $5) - (i32.load8_s - (i32.const 14198) - ) - ) - (set_local $6 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $8 - (get_local $0) - ) - (get_local $4) - ) - (set_local $6 - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 160) - ) - ) - (i32.const 20) - (get_local $6) - (get_local $5) - (get_local $8) - ) - ) - (set_local $10 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (tee_local $9 - (i32.add - (get_local $4) - (get_local $6) - ) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 156) - ) - ) - (tee_local $11 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $5) - (i32.const 19240) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $11) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $7) - (get_local $4) - (get_local $9) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $7) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $5) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $7) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $8) - (get_local $5) - (if i32 - (i32.eq - (get_local $10) - (get_local $9) - ) - (get_local $6) - (i32.add - (get_local $5) - (i32.shl - (i32.sub - (get_local $10) - (get_local $4) - ) - (i32.const 2) - ) - ) - ) - (get_local $6) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNSt3__210__stdinbufIwE9pbackfailEj (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (set_local $6 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $7 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $5 - (get_local $3) - ) - (set_local $2 - (i32.ne - (i32.load8_s - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 52) - ) - ) - ) - (i32.const 0) - ) - ) - (block $label$break$L1 - (if - (i32.eq - (get_local $1) - (i32.const -1) - ) - (if - (get_local $2) - (set_local $1 - (i32.const -1) - ) - (i32.store8 - (get_local $8) - (i32.ne - (tee_local $1 - (i32.load offset=48 - (get_local $0) - ) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (get_local $2) - (block - (i32.store - (get_local $7) - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - ) - (block $switch-default - (block $switch-case2 - (block $switch-case - (br_table $switch-case $switch-case $switch-case2 $switch-default - (i32.sub - (call_indirect $FUNCSIG$iiiiiiiii - (tee_local $9 - (i32.load offset=36 - (get_local $0) - ) - ) - (i32.load offset=40 - (get_local $0) - ) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 4) - ) - (get_local $5) - (get_local $4) - (i32.add - (get_local $4) - (i32.const 8) - ) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - (i32.const 1) - ) - ) - ) - (set_local $1 - (i32.const -1) - ) - (br $label$break$L1) - ) - (i32.store8 - (get_local $4) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (br_if $__rjti$1 - (i32.le_u - (tee_local $5 - (i32.load - (get_local $6) - ) - ) - (get_local $4) - ) - ) - (i32.store - (get_local $6) - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - ) - (br_if $while-in - (i32.ne - (call $_ungetc - (i32.load8_s - (get_local $5) - ) - (i32.load - (get_local $0) - ) - ) - (i32.const -1) - ) - ) - (br $__rjti$0) - ) - ) - (set_local $1 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $2 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $1) - ) - (i32.store8 - (get_local $8) - (i32.const 1) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $1) - ) - (func $__ZNSt3__210__stdinbufIcE9pbackfailEi (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (set_local $6 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $7 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $5 - (get_local $3) - ) - (set_local $2 - (i32.ne - (i32.load8_s - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 52) - ) - ) - ) - (i32.const 0) - ) - ) - (block $label$break$L1 - (if - (i32.eq - (get_local $1) - (i32.const -1) - ) - (if - (get_local $2) - (set_local $1 - (i32.const -1) - ) - (i32.store8 - (get_local $8) - (i32.ne - (tee_local $1 - (i32.load offset=48 - (get_local $0) - ) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (get_local $2) - (block - (i32.store8 - (get_local $7) - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - ) - (block $switch-default - (block $switch-case2 - (block $switch-case - (br_table $switch-case $switch-case $switch-case2 $switch-default - (i32.sub - (call_indirect $FUNCSIG$iiiiiiiii - (tee_local $9 - (i32.load offset=36 - (get_local $0) - ) - ) - (i32.load offset=40 - (get_local $0) - ) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 1) - ) - (get_local $5) - (get_local $4) - (i32.add - (get_local $4) - (i32.const 8) - ) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $9) - ) - ) - (i32.const 15) - ) - (i32.const 381) - ) - ) - (i32.const 1) - ) - ) - ) - (set_local $1 - (i32.const -1) - ) - (br $label$break$L1) - ) - (i32.store8 - (get_local $4) - (i32.load - (get_local $2) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (br_if $__rjti$1 - (i32.le_u - (tee_local $5 - (i32.load - (get_local $6) - ) - ) - (get_local $4) - ) - ) - (i32.store - (get_local $6) - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - ) - (br_if $while-in - (i32.ne - (call $_ungetc - (i32.load8_s - (get_local $5) - ) - (i32.load - (get_local $0) - ) - ) - (i32.const -1) - ) - ) - (br $__rjti$0) - ) - ) - (set_local $1 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $2 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $1) - ) - (i32.store8 - (get_local $8) - (i32.const 1) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPKv (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 80) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 72) - ) - ) - (i32.load8_s - (i32.const 14193) - ) - ) - (i32.store8 offset=1 - (get_local $5) - (i32.load8_s - (i32.const 14194) - ) - ) - (i32.store8 offset=2 - (get_local $5) - (i32.load8_s - (i32.const 14195) - ) - ) - (i32.store8 offset=3 - (get_local $5) - (i32.load8_s - (i32.const 14196) - ) - ) - (i32.store8 offset=4 - (get_local $5) - (i32.load8_s - (i32.const 14197) - ) - ) - (i32.store8 offset=5 - (get_local $5) - (i32.load8_s - (i32.const 14198) - ) - ) - (set_local $6 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $8 - (get_local $0) - ) - (get_local $4) - ) - (set_local $6 - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 52) - ) - ) - (i32.const 20) - (get_local $6) - (get_local $5) - (get_local $8) - ) - ) - (set_local $10 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (tee_local $9 - (i32.add - (get_local $4) - (get_local $6) - ) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (tee_local $11 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $5) - (i32.const 19208) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $11) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (get_local $7) - (get_local $4) - (get_local $9) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $7) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $5) - (get_local $6) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $7) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $8) - (get_local $5) - (if i32 - (i32.eq - (get_local $10) - (get_local $9) - ) - (get_local $6) - (i32.add - (get_local $5) - (i32.sub - (get_local $10) - (get_local $4) - ) - ) - ) - (get_local $6) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwy (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 240) - ) - ) - (i32.store - (tee_local $7 - (tee_local $6 - (get_local $0) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $6) - (i32.const 1) - ) - (i32.const 14188) - (i32.const 0) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $8 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $9 - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $4) - ) - (i32.store offset=4 - (get_local $9) - (get_local $5) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 204) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 23) - (get_local $8) - (get_local $6) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwx (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 240) - ) - ) - (i32.store - (tee_local $7 - (tee_local $6 - (get_local $0) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $6) - (i32.const 1) - ) - (i32.const 14188) - (i32.const 1) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $8 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $9 - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $4) - ) - (i32.store offset=4 - (get_local $9) - (get_local $5) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 204) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 23) - (get_local $8) - (get_local $6) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcy (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (i32.store - (tee_local $7 - (tee_local $6 - (get_local $0) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $6) - (i32.const 1) - ) - (i32.const 14188) - (i32.const 0) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $8 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $9 - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $4) - ) - (i32.store offset=4 - (get_local $9) - (get_local $5) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 75) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 23) - (get_local $8) - (get_local $6) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $__ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcx (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (i32.store - (tee_local $7 - (tee_local $6 - (get_local $0) - ) - ) - (i32.const 37) - ) - (i32.store offset=4 - (get_local $7) - (i32.const 0) - ) - (call $__ZNSt3__214__num_put_base12__format_intEPcPKcbj - (i32.add - (get_local $6) - (i32.const 1) - ) - (i32.const 14188) - (i32.const 1) - (i32.load offset=4 - (get_local $2) - ) - ) - (set_local $8 - (call $__ZNSt3__26__clocEv) - ) - (i32.store - (tee_local $9 - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $4) - ) - (i32.store offset=4 - (get_local $9) - (get_local $5) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 75) - ) - ) - (call $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz - (get_local $4) - (i32.const 23) - (get_local $8) - (get_local $6) - (get_local $7) - ) - ) - ) - (set_local $6 - (call $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE - (get_local $4) - (get_local $5) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (tee_local $9 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $2) - ) - ) - ) - (call $__ZNSt3__29__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE - (get_local $4) - (get_local $6) - (get_local $5) - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (get_local $8) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $9) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.load - (get_local $5) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $8) - ) - ) - (set_local $1 - (call $__ZNSt3__216__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_ - (get_local $7) - (get_local $4) - (get_local $1) - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $1) - ) - (func $___stdio_read (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 48) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (set_local $3 - (get_local $6) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - (get_local $1) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (i32.sub - (get_local $2) - (i32.ne - (tee_local $9 - (i32.load - (tee_local $10 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (i32.store offset=8 - (get_local $4) - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - ) - ) - (i32.store offset=12 - (get_local $4) - (get_local $9) - ) - (if - (i32.load - (i32.const 17600) - ) - (block - (call $_pthread_cleanup_push - (i32.const 95) - (get_local $0) - ) - (i32.store - (get_local $3) - (i32.load offset=60 - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $3) - (get_local $4) - ) - (i32.store offset=8 - (get_local $3) - (i32.const 2) - ) - (set_local $3 - (call $___syscall_ret - (call $___syscall145 - (i32.const 145) - (get_local $3) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $7) - (i32.load offset=60 - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $7) - (get_local $4) - ) - (i32.store offset=8 - (get_local $7) - (i32.const 2) - ) - (set_local $3 - (call $___syscall_ret - (call $___syscall145 - (i32.const 145) - (get_local $7) - ) - ) - ) - ) - ) - (if - (i32.lt_s - (get_local $3) - (i32.const 1) - ) - (block - (i32.store - (get_local $0) - (i32.or - (i32.load - (get_local $0) - ) - (i32.xor - (i32.and - (get_local $3) - (i32.const 48) - ) - (i32.const 16) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (set_local $2 - (get_local $3) - ) - ) - (if - (i32.gt_u - (get_local $3) - (tee_local $8 - (i32.load - (get_local $8) - ) - ) - ) - (block - (i32.store - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (tee_local $5 - (i32.load - (get_local $5) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.add - (get_local $5) - (i32.sub - (get_local $3) - (get_local $8) - ) - ) - ) - (if - (i32.load - (get_local $10) - ) - (block - (i32.store - (get_local $9) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (get_local $1) - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.load8_s - (get_local $5) - ) - ) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $2) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE21__grow_by_and_replaceEjjjjjjPKw (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (if - (i32.lt_u - (i32.sub - (i32.const 1073741806) - (get_local $1) - ) - (get_local $2) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (set_local $9 - (if i32 - (i32.lt_s - (i32.load8_s offset=3 - (tee_local $10 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $1) - (i32.const 536870887) - ) - (if - (i32.lt_u - (if i32 - (i32.lt_u - (tee_local $11 - (i32.add - (get_local $2) - (get_local $1) - ) - ) - (tee_local $2 - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $11) - ) - ) - (i32.const 2) - ) - (set_local $8 - (i32.const 2) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.and - (i32.add - (get_local $2) - (i32.const 4) - ) - (i32.const -4) - ) - ) - (i32.const 1073741823) - ) - (call $___assert_fail - (i32.const 16218) - (i32.const 16255) - (i32.const 1734) - (i32.const 16332) - ) - (set_local $8 - (get_local $2) - ) - ) - ) - (set_local $8 - (i32.const 1073741807) - ) - ) - (set_local $2 - (call $__Znwj - (i32.shl - (get_local $8) - (i32.const 2) - ) - ) - ) - (if - (get_local $4) - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (get_local $2) - (get_local $9) - (get_local $4) - ) - ) - ) - (if - (get_local $6) - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (i32.add - (get_local $2) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $7) - (get_local $6) - ) - ) - ) - (if - (i32.ne - (tee_local $3 - (i32.sub - (get_local $3) - (get_local $5) - ) - ) - (get_local $4) - ) - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (i32.add - (i32.add - (get_local $2) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.add - (i32.add - (get_local $9) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - (i32.sub - (get_local $3) - (get_local $4) - ) - ) - ) - ) - (if - (i32.ne - (get_local $1) - (i32.const 1) - ) - (call $__ZdlPv - (get_local $9) - ) - ) - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (get_local $10) - (i32.or - (get_local $8) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (tee_local $0 - (i32.add - (get_local $3) - (get_local $6) - ) - ) - ) - (i32.store - (i32.add - (get_local $2) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - ) - (func $__ZNSt3__26vectorI5pointNS_9allocatorIS1_EEE21__push_back_slow_pathIKS1_EEvRT_ (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (if - (i32.gt_u - (tee_local $2 - (i32.add - (i32.shr_s - (i32.sub - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (tee_local $3 - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 4) - ) - (i32.const 1) - ) - ) - (i32.const 268435455) - ) - (call $__ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (if - (i32.lt_u - (i32.shr_s - (tee_local $7 - (i32.sub - (i32.load - (tee_local $12 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $3) - ) - ) - (i32.const 4) - ) - (i32.const 134217727) - ) - (block - (set_local $5 - (i32.shr_s - (i32.sub - (tee_local $4 - (i32.load - (get_local $6) - ) - ) - (get_local $3) - ) - (i32.const 4) - ) - ) - (if - (if i32 - (i32.lt_u - (tee_local $7 - (i32.shr_s - (get_local $7) - (i32.const 3) - ) - ) - (get_local $2) - ) - (get_local $2) - (tee_local $2 - (get_local $7) - ) - ) - (if - (i32.gt_u - (get_local $2) - (i32.const 268435455) - ) - (block - (call $__ZNSt9bad_allocC2Ev - (tee_local $2 - (call $___cxa_allocate_exception - (i32.const 4) - ) - ) - ) - (call $___cxa_throw - (get_local $2) - (i32.const 2432) - (i32.const 91) - ) - ) - (br $__rjti$0) - ) - (block - (set_local $9 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $10 - (get_local $5) - ) - (set_local $11 - (get_local $4) - ) - ) - ) - ) - (block - (set_local $2 - (i32.const 268435455) - ) - (set_local $4 - (tee_local $5 - (i32.load - (get_local $6) - ) - ) - ) - (set_local $5 - (i32.shr_s - (i32.sub - (get_local $5) - (get_local $3) - ) - (i32.const 4) - ) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (set_local $9 - (get_local $2) - ) - (set_local $8 - (call $__Znwj - (i32.shl - (get_local $2) - (i32.const 4) - ) - ) - ) - (set_local $10 - (get_local $5) - ) - (set_local $11 - (get_local $4) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $8) - (i32.shl - (get_local $10) - (i32.const 4) - ) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store offset=4 - (get_local $2) - (i32.load offset=4 - (get_local $1) - ) - ) - (i32.store offset=8 - (get_local $2) - (i32.load offset=8 - (get_local $1) - ) - ) - (i32.store offset=12 - (get_local $2) - (i32.load offset=12 - (get_local $1) - ) - ) - (set_local $4 - (i32.add - (get_local $2) - (i32.shl - (i32.sub - (i32.const 0) - (i32.shr_s - (tee_local $1 - (i32.sub - (get_local $11) - (get_local $3) - ) - ) - (i32.const 4) - ) - ) - (i32.const 4) - ) - ) - ) - (if - (i32.gt_s - (get_local $1) - (i32.const 0) - ) - (drop - (call $_memcpy - (get_local $4) - (get_local $3) - (get_local $1) - ) - ) - ) - (i32.store - (get_local $0) - (get_local $4) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - (i32.store - (get_local $12) - (i32.add - (get_local $8) - (i32.shl - (get_local $9) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (get_local $3) - ) - (return) - ) - (call $__ZdlPv - (get_local $3) - ) - ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEElsEd (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (set_local $7 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - (set_local $2 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_ - (tee_local $8 - (get_local $3) - ) - (get_local $0) - ) - (if - (i32.load8_s - (get_local $8) - ) - (block - (i32.store - (get_local $2) - (call $__ZNKSt3__28ios_base6getlocEv - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (set_local $9 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $2) - (i32.const 19264) - ) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $2) - ) - (set_local $10 - (i32.load offset=24 - (tee_local $5 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $2 - (i32.load - (tee_local $6 - (i32.add - (get_local $5) - (i32.const 76) - ) - ) - ) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $4) - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $5) - ) - ) - (set_local $2 - (call_indirect $FUNCSIG$iii - (tee_local $2 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $4) - (i32.const 19208) - ) - ) - (i32.const 32) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $2) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $4) - ) - (i32.store - (get_local $6) - (tee_local $2 - (i32.shr_s - (i32.shl - (get_local $2) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - ) - ) - (set_local $6 - (i32.load offset=32 - (i32.load - (get_local $9) - ) - ) - ) - (i32.store - (get_local $7) - (get_local $10) - ) - (i32.store - (get_local $4) - (i32.load - (get_local $7) - ) - ) - (if - (i32.eqz - (call_indirect $FUNCSIG$iiiiid - (get_local $9) - (get_local $4) - (get_local $5) - (i32.and - (get_local $2) - (i32.const 255) - ) - (get_local $1) - (i32.add - (i32.and - (get_local $6) - (i32.const 7) - ) - (i32.const 304) - ) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - (i32.const 16) - ) - ) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 5) - ) - ) - ) - ) - ) - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev - (get_local $8) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $0) - ) - (func $__ZNSt3__216__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $6 - (i32.lt_s - (tee_local $5 - (i32.load8_s offset=11 - (get_local $0) - ) - ) - (i32.const 0) - ) - ) - (set_local $4 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (set_local $7 - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (block $do-once - (if - (if i32 - (get_local $6) - (get_local $4) - (get_local $7) - ) - (block - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (set_local $4 - (get_local $2) - ) - (set_local $5 - (get_local $1) - ) - (loop $while-in - (if - (i32.lt_u - (get_local $5) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -4) - ) - ) - ) - (block - (set_local $9 - (i32.load - (get_local $5) - ) - ) - (i32.store - (get_local $5) - (i32.load - (get_local $4) - ) - ) - (i32.store - (get_local $4) - (get_local $9) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $4 - (i32.load - (get_local $8) - ) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $2) - (i32.const -4) - ) - ) - (set_local $6 - (i32.add - (if i32 - (get_local $6) - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (get_local $0) - ) - (if i32 - (get_local $6) - (get_local $4) - (get_local $7) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (loop $while-in1 - (block $while-out0 - (set_local $4 - (i32.or - (i32.lt_s - (tee_local $2 - (i32.load8_s - (get_local $0) - ) - ) - (i32.const 1) - ) - (i32.eq - (get_local $2) - (i32.const 127) - ) - ) - ) - (br_if $while-out0 - (i32.ge_u - (get_local $1) - (get_local $5) - ) - ) - (if - (i32.eqz - (get_local $4) - ) - (br_if $__rjti$0 - (i32.ne - (get_local $2) - (i32.load - (get_local $1) - ) - ) - ) - ) - (if - (i32.gt_s - (i32.sub - (get_local $6) - (get_local $0) - ) - (i32.const 1) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - (br $__rjto$0) - ) - (i32.store - (get_local $3) - (i32.const 4) - ) - (br $do-once) - ) - (if - (i32.eqz - (get_local $4) - ) - (if - (i32.ge_u - (i32.add - (i32.load - (get_local $5) - ) - (i32.const -1) - ) - (get_local $2) - ) - (i32.store - (get_local $3) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - (func $__ZNSt3__214__num_put_base14__format_floatEPcPKcj (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.and - (get_local $2) - (i32.const 2048) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 43) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 1024) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 35) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (set_local $5 - (if i32 - (tee_local $4 - (i32.eq - (tee_local $3 - (i32.and - (get_local $2) - (i32.const 260) - ) - ) - (i32.const 260) - ) - ) - (i32.const 0) - (block i32 - (i32.store8 - (get_local $0) - (i32.const 46) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.const 42) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 1) - ) - ) - ) - (set_local $2 - (i32.shr_u - (get_local $2) - (i32.const 14) - ) - ) - (loop $while-in - (if - (tee_local $6 - (i32.load8_s - (get_local $1) - ) - ) - (block - (i32.store8 - (get_local $0) - (get_local $6) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (block $label$break$L14 - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (get_local $3) - (i32.const 4) - ) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 1) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 70) - ) - (br $label$break$L14) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 102) - ) - (br $label$break$L14) - ) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 1) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 69) - ) - (br $label$break$L14) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 101) - ) - (br $label$break$L14) - ) - ) - ) - (set_local $1 - (i32.ne - (i32.and - (get_local $2) - (i32.const 1) - ) - (i32.const 0) - ) - ) - (if - (get_local $4) - (if - (get_local $1) - (i32.store8 - (get_local $0) - (i32.const 65) - ) - (i32.store8 - (get_local $0) - (i32.const 97) - ) - ) - (if - (get_local $1) - (i32.store8 - (get_local $0) - (i32.const 71) - ) - (i32.store8 - (get_local $0) - (i32.const 103) - ) - ) - ) - ) - (get_local $5) - ) - (func $__ZL25default_terminate_handlerv - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 48) - ) - ) - (set_local $2 - (i32.add - (get_local $1) - (i32.const 24) - ) - ) - (set_local $5 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - (set_local $3 - (get_local $1) - ) - (set_local $6 - (i32.add - (get_local $1) - (i32.const 36) - ) - ) - (if - (tee_local $0 - (call $___cxa_get_globals_fast) - ) - (if - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - (block - (if - (i32.eqz - (i32.and - (i32.eq - (i32.and - (tee_local $7 - (i32.load - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 48) - ) - ) - ) - ) - (i32.const -256) - ) - (i32.const 1126902528) - ) - (i32.eq - (tee_local $0 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.const 1129074247) - ) - ) - ) - (block - (i32.store - (get_local $2) - (i32.load - (i32.const 9688) - ) - ) - (call $_abort_message - (i32.const 16718) - (get_local $2) - ) - ) - ) - (i32.store - (get_local $6) - (tee_local $0 - (if i32 - (i32.and - (i32.eq - (get_local $7) - (i32.const 1126902529) - ) - (i32.eq - (get_local $0) - (i32.const 1129074247) - ) - ) - (i32.load offset=44 - (get_local $4) - ) - (i32.add - (get_local $4) - (i32.const 80) - ) - ) - ) - ) - (set_local $2 - (i32.load offset=4 - (tee_local $0 - (i32.load - (get_local $4) - ) - ) - ) - ) - (if - (call_indirect $FUNCSIG$iiii - (i32.const 2368) - (get_local $0) - (get_local $6) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (i32.const 2368) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (block - (set_local $7 - (i32.load - (i32.const 9688) - ) - ) - (set_local $0 - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.load - (get_local $6) - ) - ) - (i32.add - (i32.and - (i32.load offset=8 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $3) - (get_local $7) - ) - (i32.store offset=4 - (get_local $3) - (get_local $2) - ) - (i32.store offset=8 - (get_local $3) - (get_local $0) - ) - (call $_abort_message - (i32.const 16632) - (get_local $3) - ) - ) - (block - (i32.store - (get_local $5) - (i32.load - (i32.const 9688) - ) - ) - (i32.store offset=4 - (get_local $5) - (get_local $2) - ) - (call $_abort_message - (i32.const 16677) - (get_local $5) - ) - ) - ) - ) - ) - ) - (call $_abort_message - (i32.const 16756) - (i32.add - (get_local $1) - (i32.const 32) - ) - ) - ) - (func $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8__appendEj (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $4 - (get_local $5) - ) - (if - (i32.lt_u - (i32.shr_s - (i32.sub - (tee_local $6 - (i32.load offset=8 - (get_local $0) - ) - ) - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - ) - (i32.const 2) - ) - (get_local $1) - ) - (block - (if - (i32.gt_u - (tee_local $3 - (i32.add - (tee_local $7 - (i32.shr_s - (i32.sub - (get_local $3) - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 2) - ) - ) - (get_local $1) - ) - ) - (i32.const 1073741823) - ) - (call $__ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (if - (i32.lt_u - (i32.shr_s - (tee_local $2 - (i32.sub - (get_local $6) - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 536870911) - ) - (if - (i32.ge_u - (tee_local $2 - (i32.shr_s - (get_local $2) - (i32.const 1) - ) - ) - (get_local $3) - ) - (set_local $3 - (get_local $2) - ) - ) - (set_local $3 - (i32.const 1073741823) - ) - ) - (call $__ZNSt3__214__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEEC2EjjS6_ - (get_local $4) - (get_local $3) - (get_local $7) - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (drop - (call $_memset - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - ) - (i32.const 0) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - (call $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE - (get_local $0) - (get_local $4) - ) - (call $__ZNSt3__214__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEED2Ev - (get_local $4) - ) - ) - (loop $do-in - (i32.store - (get_local $3) - (i32.const 0) - ) - (i32.store - (get_local $2) - (tee_local $3 - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 4) - ) - ) - ) - (br_if $do-in - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - ) - (func $_mbtowc (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $3 - (get_local $5) - ) - (set_local $0 - (block $label$break$L1 i32 - (if i32 - (get_local $1) - (block i32 - (block $do-once - (if - (get_local $2) - (block - (if - (i32.eqz - (get_local $0) - ) - (set_local $0 - (get_local $3) - ) - ) - (set_local $4 - (i32.and - (tee_local $3 - (i32.load8_s - (get_local $1) - ) - ) - (i32.const 255) - ) - ) - (if - (i32.gt_s - (get_local $3) - (i32.const -1) - ) - (block - (i32.store - (get_local $0) - (get_local $4) - ) - (br $label$break$L1 - (i32.ne - (get_local $3) - (i32.const 0) - ) - ) - ) - ) - (if - (i32.le_u - (tee_local $3 - (i32.add - (get_local $4) - (i32.const -194) - ) - ) - (i32.const 50) - ) - (block - (set_local $3 - (i32.load - (i32.add - (i32.shl - (get_local $3) - (i32.const 2) - ) - (i32.const 2496) - ) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.const 4) - ) - (br_if $do-once - (i32.and - (get_local $3) - (i32.shr_u - (i32.const -2147483648) - (i32.add - (i32.mul - (get_local $2) - (i32.const 6) - ) - (i32.const -6) - ) - ) - ) - ) - ) - (if - (i32.le_u - (i32.or - (i32.add - (tee_local $4 - (i32.shr_u - (tee_local $2 - (i32.load8_u offset=1 - (get_local $1) - ) - ) - (i32.const 3) - ) - ) - (i32.const -16) - ) - (i32.add - (get_local $4) - (i32.shr_s - (get_local $3) - (i32.const 26) - ) - ) - ) - (i32.const 7) - ) - (block - (if - (i32.ge_s - (tee_local $2 - (i32.or - (i32.add - (get_local $2) - (i32.const -128) - ) - (i32.shl - (get_local $3) - (i32.const 6) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (get_local $0) - (get_local $2) - ) - (br $label$break$L1 - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (i32.and - (tee_local $3 - (i32.load8_u offset=2 - (get_local $1) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (if - (i32.ge_s - (tee_local $2 - (i32.or - (i32.add - (get_local $3) - (i32.const -128) - ) - (i32.shl - (get_local $2) - (i32.const 6) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (get_local $0) - (get_local $2) - ) - (br $label$break$L1 - (i32.const 3) - ) - ) - ) - (if - (i32.eq - (i32.and - (tee_local $1 - (i32.load8_u offset=3 - (get_local $1) - ) - ) - (i32.const 192) - ) - (i32.const 128) - ) - (block - (i32.store - (get_local $0) - (i32.or - (i32.add - (get_local $1) - (i32.const -128) - ) - (i32.shl - (get_local $2) - (i32.const 6) - ) - ) - ) - (br $label$break$L1 - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (i32.const -1) - ) - (i32.const 0) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPK2tmcc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (i32.store - (tee_local $3 - (get_local $7) - ) - (i32.add - (tee_local $2 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (i32.const 100) - ) - ) - (call $__ZNKSt3__210__time_put8__do_putEPcRS1_PK2tmcc - (i32.add - (get_local $0) - (i32.const 8) - ) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - ) - (set_local $3 - (i32.load - (get_local $3) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $2) - (get_local $3) - ) - (block - (set_local $5 - (i32.load8_s - (get_local $2) - ) - ) - (if - (get_local $0) - (if - (i32.eq - (tee_local $4 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - ) - ) - (i32.load offset=28 - (get_local $0) - ) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$iii - (get_local $0) - (i32.and - (get_local $5) - (i32.const 255) - ) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $0) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const -1) - ) - (set_local $0 - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $1) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $4) - (get_local $5) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $0) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendIPwEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_ (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $4 - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (tee_local $8 - (i32.add - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (set_local $5 - (i32.add - (i32.and - (i32.load - (get_local $3) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - ) - (i32.load offset=4 - (get_local $0) - ) - ) - (block i32 - (set_local $5 - (i32.const 1) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - ) - (if - (tee_local $7 - (i32.shr_s - (i32.sub - (get_local $2) - (tee_local $3 - (get_local $1) - ) - ) - (i32.const 2) - ) - ) - (block - (if - (i32.lt_u - (i32.sub - (get_local $5) - (get_local $4) - ) - (get_local $7) - ) - (block - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9__grow_byEjjjjjj - (get_local $0) - (get_local $5) - (i32.sub - (i32.add - (get_local $4) - (get_local $7) - ) - (get_local $5) - ) - (get_local $4) - (get_local $4) - (i32.const 0) - (i32.const 0) - ) - (set_local $6 - (i32.load8_s - (get_local $8) - ) - ) - ) - ) - (set_local $9 - (i32.add - (get_local $4) - (i32.shr_u - (i32.sub - (get_local $2) - (get_local $3) - ) - (i32.const 2) - ) - ) - ) - (set_local $3 - (i32.add - (tee_local $6 - (if i32 - (tee_local $5 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store - (get_local $3) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (i32.add - (get_local $6) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $4) - (get_local $7) - ) - ) - (if - (get_local $5) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (i32.store8 - (get_local $8) - (get_local $1) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPcEENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr38__libcpp_string_gets_noexcept_iteratorIS9_EE5valueERS5_E4typeES9_S9_ (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $3 - (if i32 - (i32.lt_s - (tee_local $5 - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (set_local $4 - (i32.add - (i32.and - (i32.load offset=8 - (get_local $0) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - ) - (i32.load offset=4 - (get_local $0) - ) - ) - (block i32 - (set_local $4 - (i32.const 10) - ) - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - ) - ) - (set_local $8 - (i32.sub - (get_local $2) - (tee_local $6 - (get_local $1) - ) - ) - ) - (if - (i32.ne - (get_local $2) - (get_local $1) - ) - (block - (if - (i32.lt_u - (i32.sub - (get_local $4) - (get_local $3) - ) - (get_local $8) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj - (get_local $0) - (get_local $4) - (i32.sub - (i32.add - (get_local $3) - (get_local $8) - ) - (get_local $4) - ) - (get_local $3) - (get_local $3) - (i32.const 0) - (i32.const 0) - ) - (set_local $5 - (i32.load8_s - (get_local $7) - ) - ) - ) - ) - (set_local $4 - (i32.add - (get_local $2) - (i32.sub - (get_local $3) - (get_local $6) - ) - ) - ) - (set_local $6 - (i32.add - (tee_local $5 - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $5) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (get_local $3) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store8 - (get_local $6) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $5) - (get_local $4) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $3) - (get_local $8) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (get_local $7) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (i32.store8 - (get_local $7) - (get_local $1) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE21__grow_by_and_replaceEjjjjjjPKc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) - (local $8 i32) - (local $9 i32) - (if - (i32.lt_u - (i32.sub - (i32.const -18) - (get_local $1) - ) - (get_local $2) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (set_local $8 - (if i32 - (i32.lt_s - (i32.load8_s offset=11 - (get_local $0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (set_local $2 - (call $__Znwj - (tee_local $9 - (if i32 - (i32.lt_u - (get_local $1) - (i32.const 2147483623) - ) - (if i32 - (i32.lt_u - (if i32 - (i32.lt_u - (tee_local $9 - (i32.add - (get_local $2) - (get_local $1) - ) - ) - (tee_local $2 - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $9) - ) - ) - (i32.const 11) - ) - (i32.const 11) - (i32.and - (i32.add - (get_local $2) - (i32.const 16) - ) - (i32.const -16) - ) - ) - (i32.const -17) - ) - ) - ) - ) - (if - (get_local $4) - (drop - (call $_memcpy - (get_local $2) - (get_local $8) - (get_local $4) - ) - ) - ) - (if - (get_local $6) - (drop - (call $_memcpy - (i32.add - (get_local $2) - (get_local $4) - ) - (get_local $7) - (get_local $6) - ) - ) - ) - (if - (i32.ne - (tee_local $3 - (i32.sub - (get_local $3) - (get_local $5) - ) - ) - (get_local $4) - ) - (drop - (call $_memcpy - (i32.add - (i32.add - (get_local $2) - (get_local $4) - ) - (get_local $6) - ) - (i32.add - (i32.add - (get_local $8) - (get_local $4) - ) - (get_local $5) - ) - (i32.sub - (get_local $3) - (get_local $4) - ) - ) - ) - ) - (if - (i32.ne - (get_local $1) - (i32.const 10) - ) - (call $__ZdlPv - (get_local $8) - ) - ) - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $9) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (tee_local $0 - (i32.add - (get_local $3) - (get_local $6) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $2) - (get_local $0) - ) - (i32.const 0) - ) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9__grow_byEjjjjjj (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (if - (i32.lt_u - (i32.sub - (i32.const 1073741807) - (get_local $1) - ) - (get_local $2) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (set_local $8 - (if i32 - (i32.lt_s - (i32.load8_s offset=3 - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $1) - (i32.const 536870887) - ) - (if - (i32.lt_u - (if i32 - (i32.lt_u - (tee_local $10 - (i32.add - (get_local $2) - (get_local $1) - ) - ) - (tee_local $2 - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $10) - ) - ) - (i32.const 2) - ) - (set_local $7 - (i32.const 2) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.and - (i32.add - (get_local $2) - (i32.const 4) - ) - (i32.const -4) - ) - ) - (i32.const 1073741823) - ) - (call $___assert_fail - (i32.const 16218) - (i32.const 16255) - (i32.const 1734) - (i32.const 16332) - ) - (set_local $7 - (get_local $2) - ) - ) - ) - (set_local $7 - (i32.const 1073741807) - ) - ) - (set_local $2 - (call $__Znwj - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - (if - (get_local $4) - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (get_local $2) - (get_local $8) - (get_local $4) - ) - ) - ) - (if - (i32.ne - (tee_local $3 - (i32.sub - (get_local $3) - (get_local $5) - ) - ) - (get_local $4) - ) - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (i32.add - (i32.add - (get_local $2) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - (i32.add - (i32.add - (get_local $8) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - (i32.sub - (get_local $3) - (get_local $4) - ) - ) - ) - ) - (if - (i32.ne - (get_local $1) - (i32.const 1) - ) - (call $__ZdlPv - (get_local $8) - ) - ) - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (get_local $9) - (i32.or - (get_local $7) - (i32.const -2147483648) - ) - ) - ) - (func $__ZNKSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPK2tmcc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (local $7 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 416) - ) - ) - (i32.store - (tee_local $3 - (get_local $7) - ) - (i32.add - (tee_local $2 - (i32.add - (get_local $7) - (i32.const 8) - ) - ) - (i32.const 400) - ) - ) - (call $__ZNKSt3__210__time_put8__do_putEPwRS1_PK2tmcc - (i32.add - (get_local $0) - (i32.const 8) - ) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - ) - (set_local $4 - (i32.load - (get_local $3) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $2) - (get_local $4) - ) - (block - (set_local $1 - (i32.load - (get_local $2) - ) - ) - (if - (get_local $0) - (block - (if - (i32.eq - (tee_local $5 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - ) - ) - (i32.load offset=28 - (get_local $0) - ) - ) - (set_local $1 - (call_indirect $FUNCSIG$iii - (get_local $0) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $0) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (block - (i32.store - (get_local $3) - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (i32.store - (get_local $5) - (get_local $1) - ) - ) - ) - (if - (i32.eq - (get_local $1) - (i32.const -1) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - (get_local $0) - ) - (func $___fwritex (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (block $label$break$L5 - (block $__rjti$0 - (br_if $__rjti$0 - (tee_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - ) - ) - (if - (call $___towrite - (get_local $2) - ) - (set_local $3 - (i32.const 0) - ) - (block - (set_local $3 - (i32.load - (get_local $4) - ) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L5) - ) - (if - (i32.lt_u - (i32.sub - (get_local $3) - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 20) - ) - ) - ) - ) - ) - (get_local $1) - ) - (block - (set_local $3 - (call_indirect $FUNCSIG$iiii - (get_local $2) - (get_local $0) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $2) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (br $label$break$L5) - ) - ) - (block $label$break$L10 - (if - (i32.gt_s - (i32.load8_s offset=75 - (get_local $2) - ) - (i32.const -1) - ) - (block - (set_local $3 - (get_local $1) - ) - (loop $while-in - (if - (i32.eqz - (get_local $3) - ) - (block - (set_local $3 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (get_local $0) - (tee_local $6 - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - ) - ) - (i32.const 10) - ) - (block - (set_local $3 - (get_local $6) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect $FUNCSIG$iiii - (get_local $2) - (get_local $0) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $2) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (get_local $3) - ) - ) - (set_local $1 - (i32.sub - (get_local $1) - (get_local $3) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (get_local $3) - ) - ) - (set_local $4 - (i32.load - (get_local $5) - ) - ) - ) - (set_local $3 - (i32.const 0) - ) - ) - ) - (drop - (call $_memcpy - (get_local $4) - (get_local $0) - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (get_local $1) - ) - ) - ) - (get_local $3) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $9 - (if i32 - (i32.lt_s - (tee_local $0 - (i32.load8_s offset=11 - (tee_local $6 - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=8 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - (set_local $10 - (if i32 - (i32.lt_s - (tee_local $0 - (i32.load8_s offset=23 - (get_local $6) - ) - ) - (i32.const 0) - ) - (i32.load offset=16 - (get_local $6) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $0 - (get_local $7) - ) - (block $do-once - (if - (i32.eq - (get_local $9) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - (block - (i32.store - (get_local $0) - (i32.load - (get_local $3) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $0) - ) - ) - (if - (i32.and - (i32.eq - (tee_local $2 - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $2) - (get_local $8) - (get_local $6) - (i32.add - (get_local $6) - (i32.const 24) - ) - (get_local $5) - (get_local $4) - (i32.const 0) - ) - ) - (get_local $6) - ) - (i32.eq - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (i32.const 12) - ) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $do-once) - ) - ) - (if - (i32.and - (i32.lt_s - (get_local $0) - (i32.const 12) - ) - (i32.eq - (i32.sub - (get_local $2) - (get_local $6) - ) - (i32.const 12) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $9 - (if i32 - (i32.lt_s - (tee_local $0 - (i32.load8_s offset=11 - (tee_local $6 - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=8 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.load offset=4 - (get_local $6) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - (set_local $10 - (if i32 - (i32.lt_s - (tee_local $0 - (i32.load8_s offset=23 - (get_local $6) - ) - ) - (i32.const 0) - ) - (i32.load offset=16 - (get_local $6) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - (set_local $8 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (set_local $0 - (get_local $7) - ) - (block $do-once - (if - (i32.eq - (get_local $9) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - (i32.store - (get_local $4) - (i32.or - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - (block - (i32.store - (get_local $0) - (i32.load - (get_local $3) - ) - ) - (i32.store - (get_local $8) - (i32.load - (get_local $0) - ) - ) - (if - (i32.and - (i32.eq - (tee_local $2 - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $2) - (get_local $8) - (get_local $6) - (i32.add - (get_local $6) - (i32.const 24) - ) - (get_local $5) - (get_local $4) - (i32.const 0) - ) - ) - (get_local $6) - ) - (i32.eq - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (i32.const 12) - ) - ) - (block - (i32.store - (get_local $1) - (i32.const 0) - ) - (br $do-once) - ) - ) - (if - (i32.and - (i32.lt_s - (get_local $0) - (i32.const 12) - ) - (i32.eq - (i32.sub - (get_local $2) - (get_local $6) - ) - (i32.const 12) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - ) - (func $___shgetc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (block $__rjto$2 - (block $__rjti$2 - (if - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 104) - ) - ) - ) - ) - (br_if $__rjti$2 - (i32.ge_s - (i32.load offset=108 - (get_local $0) - ) - (get_local $2) - ) - ) - ) - (br_if $__rjti$2 - (i32.lt_s - (tee_local $2 - (call $___uflow - (get_local $0) - ) - ) - (i32.const 0) - ) - ) - (set_local $1 - (i32.load offset=8 - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (if - (tee_local $4 - (i32.load - (get_local $3) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (br_if $__rjti$0 - (i32.lt_s - (i32.sub - (get_local $1) - (tee_local $5 - (i32.load offset=4 - (get_local $0) - ) - ) - ) - (tee_local $4 - (i32.sub - (get_local $4) - (i32.load offset=108 - (get_local $0) - ) - ) - ) - ) - ) - (i32.store offset=100 - (get_local $0) - (i32.add - (get_local $5) - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (i32.store offset=100 - (get_local $0) - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (if - (get_local $3) - (i32.store - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 108) - ) - ) - (i32.add - (i32.sub - (i32.add - (get_local $3) - (i32.const 1) - ) - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - ) - (i32.load - (get_local $4) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $1) - ) - ) - ) - (if - (i32.ne - (i32.load8_u - (tee_local $0 - (i32.add - (get_local $0) - (i32.const -1) - ) - ) - ) - (get_local $2) - ) - (i32.store8 - (get_local $0) - (get_local $2) - ) - ) - (br $__rjto$2) - ) - (i32.store offset=100 - (get_local $0) - (i32.const 0) - ) - (set_local $2 - (i32.const -1) - ) - ) - (get_local $2) - ) - (func $__ZNSt3__225__num_get_signed_integralIlEET_PKcS3_Rji (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (get_local $6) - ) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - ) - (block - (set_local $4 - (i32.load - (tee_local $5 - (call $___errno_location) - ) - ) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (set_local $0 - (call $_strtoll_l - (get_local $0) - (get_local $7) - (get_local $3) - (call $__ZNSt3__26__clocEv) - ) - ) - (if - (i32.eqz - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - ) - (i32.store - (get_local $5) - (get_local $4) - ) - ) - (set_local $4 - (get_global $tempRet0) - ) - (block $label$break$L7 - (set_local $0 - (if i32 - (i32.eq - (i32.load - (get_local $7) - ) - (get_local $1) - ) - (block i32 - (block $do-once - (if - (i32.eq - (get_local $3) - (i32.const 34) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (if - (i32.or - (i32.gt_s - (get_local $4) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $4) - ) - (i32.gt_u - (get_local $0) - (i32.const 0) - ) - ) - ) - (block - (set_local $0 - (i32.const 2147483647) - ) - (br $label$break$L7) - ) - ) - ) - (block - (if - (i32.or - (i32.lt_s - (get_local $4) - (i32.const -1) - ) - (i32.and - (i32.eq - (get_local $4) - (i32.const -1) - ) - (i32.lt_u - (get_local $0) - (i32.const -2147483648) - ) - ) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (br $do-once) - ) - ) - (br_if $label$break$L7 - (i32.eqz - (i32.or - (i32.gt_s - (get_local $4) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $4) - ) - (i32.gt_u - (get_local $0) - (i32.const 2147483647) - ) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 2147483647) - ) - (br $label$break$L7) - ) - ) - ) - (i32.const -2147483648) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (i32.const 0) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $_vsnprintf (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 128) - ) - ) - (set_local $4 - (i32.add - (get_local $6) - (i32.const 112) - ) - ) - (set_local $7 - (i32.const 3052) - ) - (set_local $9 - (i32.add - (tee_local $8 - (tee_local $5 - (get_local $6) - ) - ) - (i32.const 112) - ) - ) - (loop $do-in - (i32.store - (get_local $8) - (i32.load - (get_local $7) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (br_if $do-in - (i32.lt_s - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (get_local $9) - ) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (if - (i32.gt_u - (i32.add - (get_local $1) - (i32.const -1) - ) - (i32.const 2147483646) - ) - (if - (get_local $1) - (block - (i32.store - (call $___errno_location) - (i32.const 75) - ) - (set_local $0 - (i32.const -1) - ) - ) - (block - (set_local $0 - (get_local $4) - ) - (set_local $4 - (i32.const 1) - ) - (br $__rjti$0) - ) - ) - (block - (set_local $4 - (get_local $1) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (i32.store offset=48 - (get_local $5) - (if i32 - (i32.gt_u - (get_local $4) - (tee_local $1 - (i32.sub - (i32.const -2) - (get_local $0) - ) - ) - ) - (get_local $1) - (tee_local $1 - (get_local $4) - ) - ) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $5) - (i32.const 20) - ) - ) - (get_local $0) - ) - (i32.store offset=44 - (get_local $5) - (get_local $0) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $5) - (i32.const 16) - ) - ) - (tee_local $0 - (i32.add - (get_local $0) - (get_local $1) - ) - ) - ) - (i32.store offset=28 - (get_local $5) - (get_local $0) - ) - (set_local $0 - (call $_vfprintf - (get_local $5) - (get_local $2) - (get_local $3) - ) - ) - (if - (get_local $1) - (i32.store8 - (i32.add - (tee_local $1 - (i32.load - (get_local $9) - ) - ) - (i32.shr_s - (i32.shl - (i32.eq - (get_local $1) - (i32.load - (get_local $4) - ) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (i32.const 0) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (local $7 i32) - (local $8 i32) - (if - (i32.lt_u - (i32.sub - (i32.const -17) - (get_local $1) - ) - (get_local $2) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (set_local $8 - (if i32 - (i32.lt_s - (i32.load8_s offset=11 - (get_local $0) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (set_local $7 - (call $__Znwj - (tee_local $2 - (if i32 - (i32.lt_u - (get_local $1) - (i32.const 2147483623) - ) - (if i32 - (i32.lt_u - (if i32 - (i32.lt_u - (tee_local $7 - (i32.add - (get_local $2) - (get_local $1) - ) - ) - (tee_local $2 - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $7) - ) - ) - (i32.const 11) - ) - (i32.const 11) - (i32.and - (i32.add - (get_local $2) - (i32.const 16) - ) - (i32.const -16) - ) - ) - (i32.const -17) - ) - ) - ) - ) - (if - (get_local $4) - (drop - (call $_memcpy - (get_local $7) - (get_local $8) - (get_local $4) - ) - ) - ) - (if - (i32.ne - (tee_local $3 - (i32.sub - (get_local $3) - (get_local $5) - ) - ) - (get_local $4) - ) - (drop - (call $_memcpy - (i32.add - (i32.add - (get_local $7) - (get_local $4) - ) - (get_local $6) - ) - (i32.add - (i32.add - (get_local $8) - (get_local $4) - ) - (get_local $5) - ) - (i32.sub - (get_local $3) - (get_local $4) - ) - ) - ) - ) - (if - (i32.ne - (get_local $1) - (i32.const 10) - ) - (call $__ZdlPv - (get_local $8) - ) - ) - (i32.store - (get_local $0) - (get_local $7) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $2) - (i32.const -2147483648) - ) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (set_local $10 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $7 - (call_indirect $FUNCSIG$ii - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $8 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (set_local $2 - (i32.add - (tee_local $1 - (if i32 - (tee_local $2 - (i32.lt_s - (tee_local $12 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (i32.shl - (if i32 - (get_local $2) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $12) - (i32.const 255) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $11) - ) - ) - (i32.store - (get_local $9) - (i32.load - (get_local $8) - ) - ) - (set_local $0 - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $10) - (get_local $9) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $1) - (get_local $2) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (set_local $10 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $7 - (call_indirect $FUNCSIG$ii - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $8) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $8 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (set_local $2 - (i32.add - (tee_local $1 - (if i32 - (tee_local $2 - (i32.lt_s - (tee_local $12 - (i32.load8_s offset=11 - (get_local $7) - ) - ) - (i32.const 0) - ) - ) - (i32.load - (get_local $7) - ) - (get_local $7) - ) - ) - (if i32 - (get_local $2) - (i32.load offset=4 - (get_local $7) - ) - (i32.and - (get_local $12) - (i32.const 255) - ) - ) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $11) - ) - ) - (i32.store - (get_local $9) - (i32.load - (get_local $8) - ) - ) - (set_local $0 - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $10) - (get_local $9) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $1) - (get_local $2) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (i32.store8 offset=53 - (get_local $1) - (i32.const 1) - ) - (block $do-once - (if - (i32.eq - (i32.load offset=4 - (get_local $1) - ) - (get_local $3) - ) - (block - (i32.store8 offset=52 - (get_local $1) - (i32.const 1) - ) - (if - (i32.eqz - (tee_local $3 - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store offset=24 - (get_local $1) - (get_local $4) - ) - (i32.store offset=36 - (get_local $1) - (i32.const 1) - ) - (br_if $do-once - (i32.eqz - (if i32 - (i32.eq - (get_local $4) - (i32.const 1) - ) - (i32.eq - (i32.load offset=48 - (get_local $1) - ) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - (i32.store8 offset=54 - (get_local $1) - (i32.const 1) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (get_local $3) - (get_local $2) - ) - (block - (i32.store - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 36) - ) - ) - (i32.add - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - (i32.store8 offset=54 - (get_local $1) - (i32.const 1) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (tee_local $0 - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 24) - ) - ) - ) - ) - (i32.const 2) - ) - (i32.store - (get_local $2) - (get_local $4) - ) - (set_local $4 - (get_local $0) - ) - ) - (if - (if i32 - (i32.eq - (get_local $4) - (i32.const 1) - ) - (i32.eq - (i32.load offset=48 - (get_local $1) - ) - (i32.const 1) - ) - (i32.const 0) - ) - (i32.store8 offset=54 - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (func $___cxx_global_array_dtor_46 (param $0 i32) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20248) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20236) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20224) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20212) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20200) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20188) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20176) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20164) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20152) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20140) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20128) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20116) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20104) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 20092) - ) - ) - (func $___cxx_global_array_dtor (param $0 i32) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19436) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19424) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19412) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19400) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19388) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19376) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19364) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19352) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19340) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19328) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19316) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19304) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19292) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.const 19280) - ) - ) - (func $__ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (block $do-once - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (if - (i32.eq - (i32.load offset=4 - (get_local $1) - ) - (get_local $2) - ) - (if - (i32.ne - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 28) - ) - ) - ) - (i32.const 1) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - ) - ) - (if - (i32.eq - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (block - (if - (i32.ne - (i32.load offset=16 - (get_local $1) - ) - (get_local $2) - ) - (if - (i32.ne - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - (get_local $2) - ) - (block - (i32.store offset=32 - (get_local $1) - (get_local $3) - ) - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 40) - ) - ) - (i32.add - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - (if - (i32.eq - (i32.load offset=36 - (get_local $1) - ) - (i32.const 1) - ) - (if - (i32.eq - (i32.load offset=24 - (get_local $1) - ) - (i32.const 2) - ) - (i32.store8 offset=54 - (get_local $1) - (i32.const 1) - ) - ) - ) - (i32.store offset=44 - (get_local $1) - (i32.const 4) - ) - (br $do-once) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (i32.const 1) - ) - (i32.store offset=32 - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - (func $_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.or - (i32.gt_u - (get_local $1) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $1) - ) - (i32.gt_u - (get_local $0) - (i32.const -1) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (loop $while-in - (i32.store8 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.or - (call $___uremdi3 - (get_local $0) - (get_local $3) - (i32.const 10) - (i32.const 0) - ) - (i32.const 48) - ) - ) - (set_local $1 - (call $___udivdi3 - (get_local $0) - (get_local $3) - (i32.const 10) - (i32.const 0) - ) - ) - (if - (i32.or - (i32.gt_u - (get_local $3) - (i32.const 9) - ) - (i32.and - (i32.eq - (get_local $3) - (i32.const 9) - ) - (i32.gt_u - (get_local $0) - (i32.const -1) - ) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (set_local $3 - (get_global $tempRet0) - ) - (br $while-in) - ) - (set_local $0 - (get_local $1) - ) - ) - ) - ) - ) - (if - (get_local $0) - (loop $while-in1 - (i32.store8 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.or - (i32.rem_u - (get_local $0) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (if - (i32.ge_u - (get_local $0) - (i32.const 10) - ) - (block - (set_local $0 - (i32.div_u - (get_local $0) - (i32.const 10) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (get_local $2) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initIPKwEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_ (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.gt_u - (tee_local $3 - (i32.shr_s - (i32.sub - (get_local $2) - (tee_local $4 - (get_local $1) - ) - ) - (i32.const 2) - ) - ) - (i32.const 1073741807) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $3) - (i32.const 2) - ) - (block - (i32.store8 offset=11 - (get_local $0) - (get_local $3) - ) - (set_local $5 - (get_local $0) - ) - ) - (if - (i32.gt_u - (tee_local $6 - (i32.and - (i32.add - (get_local $3) - (i32.const 4) - ) - (i32.const -4) - ) - ) - (i32.const 1073741823) - ) - (call $___assert_fail - (i32.const 16218) - (i32.const 16255) - (i32.const 1734) - (i32.const 16332) - ) - (block - (i32.store - (get_local $0) - (tee_local $5 - (call $__Znwj - (i32.shl - (get_local $6) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $6) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $3) - ) - ) - ) - ) - (set_local $4 - (i32.shr_u - (i32.sub - (get_local $2) - (get_local $4) - ) - (i32.const 2) - ) - ) - (set_local $0 - (get_local $5) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store - (i32.add - (get_local $5) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.const 0) - ) - ) - (func $__ZNSt3__227__num_get_unsigned_integralIyEET_PKcS3_Rji (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $6 - (get_local $5) - ) - (set_global $tempRet0 - (tee_local $1 - (block $do-once i32 - (if i32 - (i32.eq - (get_local $0) - (get_local $1) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (if - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.const 45) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - (set_local $7 - (i32.load - (tee_local $4 - (call $___errno_location) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $0 - (call $_strtoull_l - (get_local $0) - (get_local $6) - (get_local $3) - (call $__ZNSt3__26__clocEv) - ) - ) - (if - (i32.eqz - (tee_local $8 - (i32.load - (get_local $4) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $7) - ) - ) - (set_local $3 - (get_global $tempRet0) - ) - (if i32 - (i32.eq - (i32.load - (get_local $6) - ) - (get_local $1) - ) - (if i32 - (i32.eq - (get_local $8) - (i32.const 34) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const -1) - ) - (i32.const -1) - ) - (get_local $3) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNSt3__29__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $5) - ) - (tee_local $7 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $1) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19240) - ) - ) - (i32.const 13937) - (i32.const 13969) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $1) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $3) - (call_indirect $FUNCSIG$ii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19248) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $0) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $7) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - ) - (func $__ZNSt3__29__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $5) - ) - (tee_local $7 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $1) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19208) - ) - ) - (i32.const 13937) - (i32.const 13969) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $1) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store8 - (get_local $3) - (call_indirect $FUNCSIG$ii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $6) - (i32.const 19220) - ) - ) - (i32.add - (i32.and - (i32.load offset=12 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store8 - (get_local $4) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $0) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $7) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - ) - (func $_fflush (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $do-once - (if - (get_local $0) - (block - (if - (i32.le_s - (i32.load offset=76 - (get_local $0) - ) - (i32.const -1) - ) - (block - (set_local $0 - (call $___fflush_unlocked - (get_local $0) - ) - ) - (br $do-once) - ) - ) - (set_local $2 - (i32.eqz - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $0) - ) - ) - ) - (set_local $1 - (call $___fflush_unlocked - (get_local $0) - ) - ) - (set_local $0 - (if i32 - (get_local $2) - (get_local $1) - (block i32 - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $0) - ) - (get_local $1) - ) - ) - ) - ) - (block - (set_local $0 - (if i32 - (i32.load - (i32.const 3048) - ) - (call $_fflush - (i32.load - (i32.const 3048) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 17628) - ) - (if - (tee_local $1 - (i32.load - (i32.const 17624) - ) - ) - (loop $while-in - (set_local $2 - (if i32 - (i32.gt_s - (i32.load offset=76 - (get_local $1) - ) - (i32.const -1) - ) - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $1) - ) - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (get_local $1) - ) - (i32.load offset=28 - (get_local $1) - ) - ) - (set_local $0 - (i32.or - (call $___fflush_unlocked - (get_local $1) - ) - (get_local $0) - ) - ) - ) - (if - (get_local $2) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $1) - ) - ) - (br_if $while-in - (tee_local $1 - (i32.load offset=56 - (get_local $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 17628) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__227__num_get_unsigned_integralItEET_PKcS3_Rji (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $6 - (get_local $5) - ) - (set_local $0 - (block $do-once i32 - (if i32 - (i32.eq - (get_local $0) - (get_local $1) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (i32.const 0) - ) - (block i32 - (if - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.const 45) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - (set_local $7 - (i32.load - (tee_local $4 - (call $___errno_location) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $0 - (call $_strtoull_l - (get_local $0) - (get_local $6) - (get_local $3) - (call $__ZNSt3__26__clocEv) - ) - ) - (if - (i32.eqz - (tee_local $8 - (i32.load - (get_local $4) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $7) - ) - ) - (set_local $3 - (get_global $tempRet0) - ) - (if i32 - (i32.eq - (i32.load - (get_local $6) - ) - (get_local $1) - ) - (if i32 - (i32.or - (i32.or - (i32.gt_u - (get_local $3) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $3) - ) - (i32.gt_u - (get_local $0) - (i32.const 65535) - ) - ) - ) - (i32.eq - (get_local $8) - (i32.const 34) - ) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (i32.const -1) - ) - (i32.and - (get_local $0) - (i32.const 65535) - ) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (i32.const 0) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNSt3__227__num_get_unsigned_integralImEET_PKcS3_Rji (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (get_local $6) - ) - (block $do-once - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - ) - (block - (if - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.const 45) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - (br $do-once) - ) - ) - (set_local $4 - (i32.load - (tee_local $5 - (call $___errno_location) - ) - ) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (set_local $0 - (call $_strtoull_l - (get_local $0) - (get_local $7) - (get_local $3) - (call $__ZNSt3__26__clocEv) - ) - ) - (if - (i32.eqz - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - ) - (i32.store - (get_local $5) - (get_local $4) - ) - ) - (set_local $4 - (get_global $tempRet0) - ) - (if - (i32.eq - (i32.load - (get_local $7) - ) - (get_local $1) - ) - (if - (i32.or - (i32.or - (i32.gt_u - (get_local $4) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $4) - ) - (i32.gt_u - (get_local $0) - (i32.const -1) - ) - ) - ) - (i32.eq - (get_local $3) - (i32.const 34) - ) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const -1) - ) - ) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNSt3__225__num_get_signed_integralIxEET_PKcS3_Rji (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $6 - (get_local $5) - ) - (set_global $tempRet0 - (tee_local $1 - (if i32 - (i32.eq - (get_local $0) - (get_local $1) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $7 - (i32.load - (tee_local $4 - (call $___errno_location) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $0 - (call $_strtoll_l - (get_local $0) - (get_local $6) - (get_local $3) - (call $__ZNSt3__26__clocEv) - ) - ) - (if - (i32.eqz - (tee_local $8 - (i32.load - (get_local $4) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $7) - ) - ) - (set_local $3 - (get_global $tempRet0) - ) - (if i32 - (i32.eq - (i32.load - (get_local $6) - ) - (get_local $1) - ) - (if i32 - (i32.eq - (get_local $8) - (i32.const 34) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (if i32 - (tee_local $1 - (i32.or - (i32.gt_s - (get_local $3) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $3) - ) - (i32.gt_u - (get_local $0) - (i32.const 0) - ) - ) - ) - ) - (i32.const -1) - (i32.const 0) - ) - ) - (if i32 - (get_local $1) - (i32.const 2147483647) - (i32.const -2147483648) - ) - ) - (get_local $3) - ) - (block i32 - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $0 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNSt3__214__num_put_base12__format_intEPcPKcbj (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (if - (i32.and - (get_local $3) - (i32.const 2048) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 43) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (if - (i32.and - (get_local $3) - (i32.const 512) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 35) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (loop $while-in - (if - (tee_local $4 - (i32.load8_s - (get_local $1) - ) - ) - (block - (i32.store8 - (get_local $0) - (get_local $4) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (block $label$break$L10 - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (i32.and - (get_local $3) - (i32.const 74) - ) - (i32.const 8) - ) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 111) - ) - (br $label$break$L10) - ) - (if - (i32.and - (get_local $3) - (i32.const 16384) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 88) - ) - (br $label$break$L10) - ) - (block - (i32.store8 - (get_local $0) - (i32.const 120) - ) - (br $label$break$L10) - ) - ) - ) - (if - (get_local $2) - (i32.store8 - (get_local $0) - (i32.const 100) - ) - (i32.store8 - (get_local $0) - (i32.const 117) - ) - ) - ) - ) - (func $__ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (set_local $3 - (get_local $5) - ) - (set_local $0 - (if i32 - (i32.eq - (get_local $0) - (get_local $1) - ) - (i32.const 1) - (if i32 - (get_local $1) - (if i32 - (tee_local $4 - (call $___dynamic_cast - (get_local $1) - (i32.const 2408) - (i32.const 2376) - (i32.const 0) - ) - ) - (block i32 - (set_local $6 - (i32.add - (tee_local $1 - (get_local $3) - ) - (i32.const 56) - ) - ) - (loop $do-in - (i32.store - (get_local $1) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (get_local $6) - ) - ) - ) - (i32.store - (get_local $3) - (get_local $4) - ) - (i32.store offset=8 - (get_local $3) - (get_local $0) - ) - (i32.store offset=12 - (get_local $3) - (i32.const -1) - ) - (i32.store offset=48 - (get_local $3) - (i32.const 1) - ) - (call_indirect $FUNCSIG$viiii - (get_local $4) - (get_local $3) - (i32.load - (get_local $2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $4) - ) - ) - (i32.const 7) - ) - (i32.const 461) - ) - ) - (if i32 - (i32.eq - (i32.load offset=24 - (get_local $3) - ) - (i32.const 1) - ) - (block i32 - (i32.store - (get_local $2) - (i32.load offset=16 - (get_local $3) - ) - ) - (i32.const 1) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (block $label$break$L1 - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (call $__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi - (i32.const 0) - (get_local $1) - (get_local $2) - (get_local $3) - ) - (block - (set_local $5 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (tee_local $4 - (i32.load offset=12 - (get_local $0) - ) - ) - (i32.const 3) - ) - ) - ) - (call $__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi - (i32.add - (get_local $0) - (i32.const 16) - ) - (get_local $1) - (get_local $2) - (get_local $3) - ) - (if - (i32.gt_s - (get_local $4) - (i32.const 1) - ) - (block - (set_local $4 - (i32.add - (get_local $1) - (i32.const 54) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (loop $do-in - (call $__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $3) - ) - (br_if $label$break$L1 - (i32.load8_s - (get_local $4) - ) - ) - (br_if $do-in - (i32.lt_u - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $5) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $2 - (if i32 - (tee_local $5 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (tee_local $4 - (i32.add - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (block i32 - (set_local $3 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.add - (i32.and - (i32.load - (get_local $2) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - ) - (block i32 - (set_local $3 - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.const 1) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (if - (i32.eq - (get_local $3) - (get_local $2) - ) - (block - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9__grow_byEjjjjjj - (get_local $0) - (get_local $2) - (i32.const 1) - (get_local $2) - (get_local $2) - (i32.const 0) - (i32.const 0) - ) - (br_if $__rjti$1 - (i32.lt_s - (i32.load8_s - (get_local $4) - ) - (i32.const 0) - ) - ) - ) - (br_if $__rjti$1 - (get_local $5) - ) - ) - (i32.store8 - (get_local $4) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (br $__rjto$1) - ) - (set_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $2) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $0) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - (get_local $1) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - ) - (func $_strlen (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (i32.and - (tee_local $2 - (get_local $0) - ) - (i32.const 3) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - (loop $while-in - (if - (i32.eqz - (i32.load8_s - (get_local $0) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $__rjto$0) - ) - ) - (br_if $while-in - (i32.and - (tee_local $1 - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - (br $__rjto$0) - ) - (loop $while-in1 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (get_local $1) - (i32.const -16843009) - ) - ) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - (if - (i32.and - (get_local $1) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - (i32.sub - (get_local $0) - (get_local $2) - ) - ) - (func $__ZNKSt3__27codecvtIwc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (set_local $2 - (call $_uselocale - (i32.load offset=8 - (get_local $0) - ) - ) - ) - (set_local $1 - (call $_wcrtomb - (tee_local $0 - (get_local $5) - ) - (i32.const 0) - (get_local $1) - ) - ) - (if - (get_local $2) - (drop - (call $_uselocale - (get_local $2) - ) - ) - ) - (block $label$break$L4 - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-case $switch-default - (i32.sub - (get_local $1) - (i32.const -1) - ) - ) - ) - (set_local $0 - (i32.const 2) - ) - (br $label$break$L4) - ) - (if - (i32.gt_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.sub - (get_local $3) - (i32.load - (get_local $4) - ) - ) - ) - (set_local $0 - (i32.const 1) - ) - (loop $while-in - (if - (get_local $1) - (block - (set_local $2 - (i32.load8_s - (get_local $0) - ) - ) - (i32.store - (get_local $4) - (i32.add - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $3) - (get_local $2) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $label$break$L4) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $3 - (i32.add - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - ) - (i32.shl - (i32.sub - (i32.const 0) - (i32.shr_s - (tee_local $6 - (i32.sub - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.const 2) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $3) - ) - (set_local $2 - (if i32 - (i32.gt_s - (get_local $6) - (i32.const 0) - ) - (block i32 - (drop - (call $_memcpy - (get_local $3) - (get_local $4) - (get_local $6) - ) - ) - (set_local $4 - (get_local $2) - ) - (i32.load - (get_local $2) - ) - ) - (block i32 - (set_local $4 - (get_local $2) - ) - (get_local $3) - ) - ) - ) - (set_local $3 - (i32.load - (get_local $0) - ) - ) - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (get_local $4) - (get_local $3) - ) - (set_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.store - (get_local $5) - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - ) - ) - (i32.store - (get_local $2) - (get_local $3) - ) - (set_local $2 - (i32.load - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (i32.store - (get_local $0) - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 12) - ) - ) - ) - ) - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (get_local $1) - (i32.load - (get_local $4) - ) - ) - ) - (func $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKci (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (set_local $8 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (set_local $3 - (get_local $1) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (br_if $while-out - (i32.ge_s - (get_local $1) - (get_local $2) - ) - ) - (if - (i32.ge_u - (tee_local $5 - (i32.load - (get_local $6) - ) - ) - (tee_local $7 - (i32.load - (get_local $8) - ) - ) - ) - (block - (br_if $while-out - (i32.eq - (call_indirect $FUNCSIG$iii - (get_local $0) - (i32.load8_u - (get_local $3) - ) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $0) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const -1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (if - (if i32 - (i32.lt_s - (tee_local $4 - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (tee_local $7 - (i32.sub - (get_local $7) - (get_local $5) - ) - ) - ) - (get_local $4) - (tee_local $4 - (get_local $7) - ) - ) - (block - (drop - (call $_memcpy - (get_local $5) - (get_local $3) - (get_local $4) - ) - ) - (set_local $5 - (i32.load - (get_local $6) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $5) - (get_local $4) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (get_local $4) - ) - ) - (set_local $1 - (i32.add - (get_local $4) - (get_local $1) - ) - ) - (br $while-in) - ) - ) - (get_local $1) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $3 - (if i32 - (tee_local $5 - (i32.lt_s - (tee_local $2 - (i32.load8_s - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (block i32 - (set_local $2 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.add - (i32.and - (i32.load offset=8 - (get_local $0) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - ) - (block i32 - (set_local $2 - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - (i32.const 10) - ) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (if - (i32.eq - (get_local $2) - (get_local $3) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj - (get_local $0) - (get_local $3) - (i32.const 1) - (get_local $3) - (get_local $3) - (i32.const 0) - (i32.const 0) - ) - (br_if $__rjti$1 - (i32.lt_s - (i32.load8_s - (get_local $4) - ) - (i32.const 0) - ) - ) - ) - (br_if $__rjti$1 - (get_local $5) - ) - ) - (i32.store8 - (get_local $4) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $__rjto$1) - ) - (set_local $3 - (i32.load - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $3) - ) - ) - (i32.store8 - (tee_local $0 - (i32.add - (get_local $0) - (get_local $2) - ) - ) - (get_local $1) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.const 0) - ) - ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_ - (tee_local $4 - (get_local $3) - ) - (get_local $0) - ) - (block $label$break$L1 - (if - (i32.load8_s - (get_local $4) - ) - (block - (set_local $2 - (tee_local $5 - (i32.load offset=24 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - ) - (if - (get_local $5) - (if - (i32.eq - (tee_local $6 - (i32.load - (tee_local $7 - (i32.add - (get_local $2) - (i32.const 24) - ) - ) - ) - ) - (i32.load offset=28 - (get_local $2) - ) - ) - (br_if $label$break$L1 - (i32.ne - (call_indirect $FUNCSIG$iii - (get_local $2) - (i32.and - (get_local $1) - (i32.const 255) - ) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $5) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const -1) - ) - ) - (block - (i32.store - (get_local $7) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $6) - (get_local $1) - ) - (br $label$break$L1) - ) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - (i32.const 16) - ) - ) - (i32.or - (i32.load - (get_local $1) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev - (get_local $4) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $0) - ) - (func $__ZNKSt3__27codecvtIwc11__mbstate_tE9do_lengthERS1_PKcS5_j (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $8 - (get_local $3) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $0 - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (br_if $label$break$L1 - (i32.or - (i32.eq - (get_local $2) - (get_local $3) - ) - (i32.ge_u - (get_local $6) - (get_local $4) - ) - ) - ) - (set_local $7 - (call $_uselocale - (i32.load - (get_local $9) - ) - ) - ) - (set_local $5 - (call $_mbrlen - (get_local $2) - (i32.sub - (get_local $8) - (get_local $2) - ) - (get_local $1) - ) - ) - (if - (get_local $7) - (drop - (call $_uselocale - (get_local $7) - ) - ) - ) - (set_local $2 - (block $switch i32 - (block $switch-default - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case $switch-case1 $switch-default - (i32.sub - (get_local $5) - (i32.const -2) - ) - ) - ) - (br $label$break$L1) - ) - (set_local $5 - (i32.const 1) - ) - (br $switch - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - (i32.add - (get_local $2) - (get_local $5) - ) - ) - ) - (set_local $0 - (i32.add - (get_local $5) - (get_local $0) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br $label$continue$L1) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE6xsputnEPKwi (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (set_local $3 - (get_local $1) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.lt_s - (get_local $1) - (get_local $2) - ) - (block - (if - (i32.lt_u - (tee_local $5 - (i32.load - (get_local $6) - ) - ) - (tee_local $8 - (i32.load - (get_local $7) - ) - ) - ) - (block - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (get_local $5) - (get_local $3) - (if i32 - (i32.lt_s - (tee_local $4 - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (tee_local $5 - (i32.shr_s - (i32.sub - (get_local $8) - (get_local $5) - ) - (i32.const 2) - ) - ) - ) - (get_local $4) - (tee_local $4 - (get_local $5) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $4) - (get_local $1) - ) - ) - (br $while-in) - ) - ) - (if - (i32.ne - (call_indirect $FUNCSIG$iii - (get_local $0) - (i32.load - (get_local $3) - ) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $0) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const -1) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (get_local $1) - ) - (func $__ZNSt3__211__stdoutbufIwE4syncEv (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $3 - (get_local $1) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - (set_local $7 - (i32.add - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.const 8) - ) - ) - (set_local $8 - (get_local $2) - ) - (set_local $4 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (loop $label$continue$L1 - (block $label$break$L1 - (set_local $9 - (call_indirect $FUNCSIG$iiiiii - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.load - (get_local $6) - ) - (get_local $2) - (get_local $7) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $0) - ) - ) - (i32.const 31) - ) - (i32.const 429) - ) - ) - ) - (if - (i32.ne - (call $_fwrite - (get_local $2) - (i32.const 1) - (tee_local $0 - (i32.sub - (i32.load - (get_local $3) - ) - (get_local $8) - ) - ) - (i32.load - (get_local $4) - ) - ) - (get_local $0) - ) - (block - (set_local $0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch-default - (i32.sub - (get_local $9) - (i32.const 1) - ) - ) - ) - (br $switch) - ) - (set_local $0 - (i32.const -1) - ) - (br $label$break$L1) - ) - (br $__rjti$0) - ) - (br $label$continue$L1) - ) - ) - (br $__rjto$0) - ) - (set_local $0 - (i32.shr_s - (i32.shl - (i32.ne - (call $_fflush - (i32.load - (get_local $4) - ) - ) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (set_global $STACKTOP - (get_local $1) - ) - (get_local $0) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_ (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.gt_u - (tee_local $4 - (i32.sub - (get_local $2) - (tee_local $3 - (get_local $1) - ) - ) - ) - (i32.const -17) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 11) - ) - (i32.store8 offset=11 - (get_local $0) - (get_local $4) - ) - (block - (i32.store - (get_local $0) - (tee_local $5 - (call $__Znwj - (tee_local $6 - (i32.and - (i32.add - (get_local $4) - (i32.const 16) - ) - (i32.const -16) - ) - ) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $6) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $4) - ) - (set_local $0 - (get_local $5) - ) - ) - ) - (set_local $5 - (i32.sub - (get_local $2) - (get_local $3) - ) - ) - (set_local $3 - (get_local $0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store8 - (get_local $3) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $0) - (get_local $5) - ) - (i32.const 0) - ) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEjc (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (get_local $1) - (block - (set_local $3 - (if i32 - (i32.lt_s - (tee_local $4 - (i32.load8_s - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - (block i32 - (set_local $5 - (i32.add - (i32.and - (i32.load offset=8 - (get_local $0) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - ) - (i32.load offset=4 - (get_local $0) - ) - ) - (block i32 - (set_local $5 - (i32.const 10) - ) - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - ) - (if - (i32.lt_u - (i32.sub - (get_local $5) - (get_local $3) - ) - (get_local $1) - ) - (block - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj - (get_local $0) - (get_local $5) - (i32.add - (i32.sub - (get_local $1) - (get_local $5) - ) - (get_local $3) - ) - (get_local $3) - (get_local $3) - (i32.const 0) - (i32.const 0) - ) - (set_local $4 - (i32.load8_s - (get_local $6) - ) - ) - ) - ) - (drop - (call $_memset - (i32.add - (tee_local $4 - (if i32 - (i32.lt_s - (i32.shr_s - (i32.shl - (get_local $4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (get_local $3) - ) - (get_local $2) - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $3) - (get_local $1) - ) - ) - (if - (i32.lt_s - (i32.load8_s - (get_local $6) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (i32.store8 - (get_local $6) - (get_local $1) - ) - ) - (i32.store8 - (i32.add - (get_local $4) - (get_local $1) - ) - (i32.const 0) - ) - ) - ) - (get_local $0) - ) - (func $_pad (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 256) - ) - ) - (set_local $5 - (get_local $6) - ) - (block $do-once - (if - (i32.and - (i32.gt_s - (get_local $2) - (get_local $3) - ) - (i32.eqz - (i32.and - (get_local $4) - (i32.const 73728) - ) - ) - ) - (block - (drop - (call $_memset - (get_local $5) - (get_local $1) - (if i32 - (i32.gt_u - (tee_local $1 - (i32.sub - (get_local $2) - (get_local $3) - ) - ) - (i32.const 256) - ) - (i32.const 256) - (get_local $1) - ) - ) - ) - (set_local $4 - (i32.eqz - (i32.and - (tee_local $8 - (i32.load - (get_local $0) - ) - ) - (i32.const 32) - ) - ) - ) - (if - (i32.gt_u - (get_local $1) - (i32.const 255) - ) - (block - (set_local $7 - (get_local $1) - ) - (set_local $1 - (get_local $8) - ) - (loop $while-in - (if - (get_local $4) - (block - (drop - (call $___fwritex - (get_local $5) - (i32.const 256) - (get_local $0) - ) - ) - (set_local $1 - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $4 - (i32.eqz - (i32.and - (get_local $1) - (i32.const 32) - ) - ) - ) - (br_if $while-in - (i32.gt_u - (tee_local $7 - (i32.add - (get_local $7) - (i32.const -256) - ) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (get_local $4) - ) - ) - (set_local $1 - (i32.and - (i32.sub - (get_local $2) - (get_local $3) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (get_local $4) - ) - ) - ) - (drop - (call $___fwritex - (get_local $5) - (get_local $1) - (get_local $0) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKwj (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.lt_u - (tee_local $3 - (if i32 - (tee_local $5 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (tee_local $4 - (i32.add - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.add - (i32.and - (i32.load - (get_local $3) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 1) - ) - ) - (get_local $2) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE21__grow_by_and_replaceEjjjjjjPKw - (get_local $0) - (get_local $3) - (i32.sub - (get_local $2) - (get_local $3) - ) - (tee_local $4 - (if i32 - (get_local $5) - (i32.load offset=4 - (get_local $0) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - (i32.const 0) - (get_local $4) - (get_local $2) - (get_local $1) - ) - (block - (drop - (call $__ZNSt3__211char_traitsIwE4moveEPwPKwj - (tee_local $3 - (if i32 - (get_local $5) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (get_local $1) - (get_local $2) - ) - ) - (i32.store - (i32.add - (get_local $3) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (if - (i32.lt_s - (i32.load8_s - (get_local $4) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (get_local $2) - ) - (i32.store8 - (get_local $4) - (get_local $2) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=4 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (tee_local $0 - (get_local $6) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $0) - ) - ) - (if - (i32.lt_s - (tee_local $0 - (i32.sub - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $2) - (get_local $3) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 288) - ) - (get_local $5) - (get_local $4) - (i32.const 0) - ) - (get_local $7) - ) - ) - (i32.const 288) - ) - (i32.store - (get_local $1) - (i32.rem_s - (i32.div_s - (get_local $0) - (i32.const 12) - ) - (i32.const 12) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load offset=4 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (tee_local $0 - (get_local $6) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $0) - ) - ) - (if - (i32.lt_s - (tee_local $0 - (i32.sub - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $2) - (get_local $3) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 288) - ) - (get_local $5) - (get_local $4) - (i32.const 0) - ) - (get_local $7) - ) - ) - (i32.const 288) - ) - (i32.store - (get_local $1) - (i32.rem_s - (i32.div_s - (get_local $0) - (i32.const 12) - ) - (i32.const 12) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $7) - (i32.const 19240) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $3) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 16) - ) - (get_local $1) - (get_local $2) - (get_local $4) - (get_local $7) - ) - (set_global $STACKTOP - (get_local $6) - ) - (i32.load - (get_local $1) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $7) - (i32.const 19240) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $3) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 24) - ) - (get_local $1) - (get_local $2) - (get_local $4) - (get_local $7) - ) - (set_global $STACKTOP - (get_local $6) - ) - (i32.load - (get_local $1) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $7) - (i32.const 19208) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $3) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 16) - ) - (get_local $1) - (get_local $2) - (get_local $4) - (get_local $7) - ) - (set_global $STACKTOP - (get_local $6) - ) - (i32.load - (get_local $1) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $7) - (i32.const 19208) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $3) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 24) - ) - (get_local $1) - (get_local $2) - (get_local $4) - (get_local $7) - ) - (set_global $STACKTOP - (get_local $6) - ) - (i32.load - (get_local $1) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (tee_local $0 - (get_local $6) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $0) - ) - ) - (if - (i32.lt_s - (tee_local $0 - (i32.sub - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $2) - (get_local $3) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 168) - ) - (get_local $5) - (get_local $4) - (i32.const 0) - ) - (get_local $7) - ) - ) - (i32.const 168) - ) - (i32.store - (get_local $1) - (i32.rem_s - (i32.div_s - (get_local $0) - (i32.const 12) - ) - (i32.const 7) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.and - (i32.load - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store - (tee_local $0 - (get_local $6) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $0) - ) - ) - (if - (i32.lt_s - (tee_local $0 - (i32.sub - (call $__ZNSt3__214__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb - (get_local $2) - (get_local $3) - (get_local $7) - (i32.add - (get_local $7) - (i32.const 168) - ) - (get_local $5) - (get_local $4) - (i32.const 0) - ) - (get_local $7) - ) - ) - (i32.const 168) - ) - (i32.store - (get_local $1) - (i32.rem_s - (i32.div_s - (get_local $0) - (i32.const 12) - ) - (i32.const 7) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $7) - (i32.const 19240) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $3) - ) - ) - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIwEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 20) - ) - (get_local $1) - (get_local $2) - (get_local $4) - (get_local $7) - ) - (set_global $STACKTOP - (get_local $6) - ) - (i32.load - (get_local $1) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (tee_local $3 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $3) - ) - ) - ) - (set_local $7 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $7) - (i32.const 19208) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $3) - ) - ) - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIcEE - (get_local $0) - (i32.add - (get_local $5) - (i32.const 20) - ) - (get_local $1) - (get_local $2) - (get_local $4) - (get_local $7) - ) - (set_global $STACKTOP - (get_local $6) - ) - (i32.load - (get_local $1) - ) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKcj (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.lt_u - (tee_local $3 - (if i32 - (tee_local $5 - (i32.lt_s - (tee_local $6 - (i32.load8_s - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.add - (i32.and - (i32.load offset=8 - (get_local $0) - ) - (i32.const 2147483647) - ) - (i32.const -1) - ) - (i32.const 10) - ) - ) - (get_local $2) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE21__grow_by_and_replaceEjjjjjjPKc - (get_local $0) - (get_local $3) - (i32.sub - (get_local $2) - (get_local $3) - ) - (tee_local $4 - (if i32 - (get_local $5) - (i32.load offset=4 - (get_local $0) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - ) - (i32.const 0) - (get_local $4) - (get_local $2) - (get_local $1) - ) - (block - (set_local $3 - (if i32 - (get_local $5) - (i32.load - (get_local $0) - ) - (get_local $0) - ) - ) - (if - (get_local $2) - (drop - (call $_memmove - (get_local $3) - (get_local $1) - (get_local $2) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $3) - (get_local $2) - ) - (i32.const 0) - ) - (if - (i32.lt_s - (i32.load8_s - (get_local $4) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (get_local $2) - ) - (i32.store8 - (get_local $4) - (get_local $2) - ) - ) - ) - ) - (get_local $0) - ) - (func $_fputc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (block $do-once - (block $__rjti$1 - (br_if $__rjti$1 - (i32.lt_s - (i32.load offset=76 - (get_local $1) - ) - (i32.const 0) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $1) - ) - ) - ) - (set_local $0 - (block $__rjto$0 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eq - (i32.load8_s offset=75 - (get_local $1) - ) - (get_local $0) - ) - ) - (br_if $__rjti$0 - (i32.ge_u - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $1) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $2) - (get_local $0) - ) - (br $__rjto$0 - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - ) - (call $___overflow - (get_local $1) - (get_local $0) - ) - ) - ) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $1) - ) - (br $do-once) - ) - (if - (i32.ne - (i32.load8_s offset=75 - (get_local $1) - ) - (get_local $0) - ) - (if - (i32.lt_u - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $1) - ) - ) - (block - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $2) - (get_local $0) - ) - (set_local $0 - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - (br $do-once) - ) - ) - ) - (set_local $0 - (call $___overflow - (get_local $1) - (get_local $0) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__29__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $5 - (get_local $4) - ) - (tee_local $6 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $1) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $5) - (i32.const 19240) - ) - ) - (i32.const 13937) - (i32.const 13963) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=48 - (i32.load - (get_local $1) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store - (get_local $3) - (call_indirect $FUNCSIG$ii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $5) - (i32.const 19248) - ) - ) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $0) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $6) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - ) - (func $__ZNSt3__29__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $5 - (get_local $4) - ) - (tee_local $6 - (call $__ZNKSt3__28ios_base6getlocEv - (get_local $1) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiiii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $5) - (i32.const 19208) - ) - ) - (i32.const 13937) - (i32.const 13963) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=32 - (i32.load - (get_local $1) - ) - ) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (i32.store8 - (get_local $3) - (call_indirect $FUNCSIG$ii - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $5) - (i32.const 19220) - ) - ) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (get_local $0) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 176) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $6) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - ) - (func $__ZNSt3__219__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (i32.ne - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (i32.const 107) - ) - ) - (set_local $7 - (if i32 - (tee_local $3 - (if i32 - (i32.lt_u - (tee_local $3 - (i32.sub - (i32.load - (get_local $2) - ) - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - (i32.const -1) - ) - ) - (get_local $3) - (i32.const 4) - ) - ) - (set_local $8 - (i32.shr_s - (i32.sub - (i32.load - (get_local $1) - ) - (get_local $4) - ) - (i32.const 2) - ) - ) - (set_local $3 - (call $_realloc - (if i32 - (get_local $6) - (get_local $4) - (i32.const 0) - ) - (get_local $7) - ) - ) - (if - (get_local $6) - (i32.store - (get_local $0) - (get_local $3) - ) - (block - (set_local $4 - (i32.load - (get_local $0) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (if - (get_local $4) - (block - (call_indirect $FUNCSIG$vi - (get_local $4) - (i32.add - (i32.and - (i32.load - (get_local $5) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - (set_local $3 - (i32.load - (get_local $0) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.const 108) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $3) - (i32.shl - (get_local $8) - (i32.const 2) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (i32.load - (get_local $0) - ) - (i32.shl - (i32.shr_u - (get_local $7) - (i32.const 2) - ) - (i32.const 2) - ) - ) - ) - ) - (func $__ZNKSt3__210__time_put8__do_putEPwRS1_PK2tmcc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 128) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.add - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (i32.const 100) - ) - ) - (call $__ZNKSt3__210__time_put8__do_putEPcRS1_PK2tmcc - (get_local $0) - (get_local $7) - (get_local $8) - (get_local $3) - (get_local $4) - (get_local $5) - ) - (i32.store - (tee_local $4 - (tee_local $3 - (get_local $6) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $4) - (i32.const 0) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (get_local $7) - ) - (set_local $5 - (i32.shr_s - (i32.sub - (i32.load - (get_local $2) - ) - (get_local $1) - ) - (i32.const 2) - ) - ) - (set_local $0 - (call $_uselocale - (i32.load - (get_local $0) - ) - ) - ) - (set_local $3 - (call $_mbsrtowcs - (get_local $1) - (get_local $4) - (get_local $5) - (get_local $3) - ) - ) - (if - (get_local $0) - (drop - (call $_uselocale - (get_local $0) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNSt3__219__double_or_nothingIcEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_ (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (i32.ne - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (i32.const 107) - ) - ) - (set_local $7 - (if i32 - (tee_local $3 - (if i32 - (i32.lt_u - (tee_local $3 - (i32.sub - (i32.load - (get_local $2) - ) - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - (i32.const -1) - ) - ) - (get_local $3) - (i32.const 1) - ) - ) - (set_local $8 - (i32.sub - (i32.load - (get_local $1) - ) - (get_local $4) - ) - ) - (set_local $3 - (call $_realloc - (if i32 - (get_local $6) - (get_local $4) - (i32.const 0) - ) - (get_local $7) - ) - ) - (if - (get_local $6) - (i32.store - (get_local $0) - (get_local $3) - ) - (block - (set_local $4 - (i32.load - (get_local $0) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (if - (get_local $4) - (block - (call_indirect $FUNCSIG$vi - (get_local $4) - (i32.add - (i32.and - (i32.load - (get_local $5) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - (set_local $3 - (i32.load - (get_local $0) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.const 108) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $3) - (get_local $8) - ) - ) - (i32.store - (get_local $2) - (i32.add - (i32.load - (get_local $0) - ) - (get_local $7) - ) - ) - ) - (func $_scalbn (param $0 f64) (param $1 i32) (result f64) - (local $2 i32) - (if - (i32.gt_s - (get_local $1) - (i32.const 1023) - ) - (block - (set_local $0 - (f64.mul - (get_local $0) - (f64.const 8988465674311579538646525e283) - ) - ) - (if - (i32.gt_s - (tee_local $2 - (i32.add - (get_local $1) - (i32.const -1023) - ) - ) - (i32.const 1023) - ) - (block - (if - (i32.gt_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -2046) - ) - ) - (i32.const 1023) - ) - (set_local $1 - (i32.const 1023) - ) - ) - (set_local $0 - (f64.mul - (get_local $0) - (f64.const 8988465674311579538646525e283) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - ) - ) - (if - (i32.lt_s - (get_local $1) - (i32.const -1022) - ) - (block - (set_local $0 - (f64.mul - (get_local $0) - (f64.const 2.2250738585072014e-308) - ) - ) - (if - (i32.lt_s - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 1022) - ) - ) - (i32.const -1022) - ) - (block - (if - (i32.lt_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 2044) - ) - ) - (i32.const -1022) - ) - (set_local $1 - (i32.const -1022) - ) - ) - (set_local $0 - (f64.mul - (get_local $0) - (f64.const 2.2250738585072014e-308) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - ) - ) - ) - ) - (set_local $1 - (call $_bitshift64Shl - (i32.add - (get_local $1) - (i32.const 1023) - ) - (i32.const 0) - (i32.const 52) - ) - ) - (i32.store - (get_global $tempDoublePtr) - (get_local $1) - ) - (i32.store offset=4 - (get_global $tempDoublePtr) - (get_global $tempRet0) - ) - (f64.mul - (get_local $0) - (f64.load - (get_global $tempDoublePtr) - ) - ) - ) - (func $_wcrtomb (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (block $do-once i32 - (if i32 - (get_local $0) - (block i32 - (if - (i32.lt_u - (get_local $1) - (i32.const 128) - ) - (block - (i32.store8 - (get_local $0) - (get_local $1) - ) - (br $do-once - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (i32.const 2048) - ) - (block - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 192) - ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 2) - ) - ) - ) - (if - (i32.or - (i32.lt_u - (get_local $1) - (i32.const 55296) - ) - (i32.eq - (i32.and - (get_local $1) - (i32.const -8192) - ) - (i32.const 57344) - ) - ) - (block - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $1) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 3) - ) - ) - ) - (if i32 - (i32.lt_u - (i32.add - (get_local $1) - (i32.const -65536) - ) - (i32.const 1048576) - ) - (block i32 - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $1) - (i32.const 18) - ) - (i32.const 240) - ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 12) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=3 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.const 4) - ) - (block i32 - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (i32.const -1) - ) - ) - ) - (i32.const 1) - ) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 14411) - (i32.const 14419) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 7304) - (i32.const 7336) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__220__time_get_c_storageIcE7__am_pmEv (param $0 i32) (result i32) - (local $1 i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 16984) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 16984) - ) - (block - (if - (i32.eqz - (i32.load8_s - (i32.const 16992) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 16992) - ) - (block - (set_local $0 - (i32.const 19744) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br_if $do-in - (i32.ne - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.const 20032) - ) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 101) - (i32.const 0) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19744) - (i32.const 14674) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc - (i32.const 19756) - (i32.const 14677) - ) - ) - (i32.store - (i32.const 20032) - (i32.const 19744) - ) - ) - ) - ) - (i32.load - (i32.const 20032) - ) - ) - (func $__ZNKSt3__220__time_get_c_storageIwE7__am_pmEv (param $0 i32) (result i32) - (local $1 i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17064) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17064) - ) - (block - (if - (i32.eqz - (i32.load8_s - (i32.const 17072) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17072) - ) - (block - (set_local $0 - (i32.const 20556) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (br_if $do-in - (i32.ne - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.const 20844) - ) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 105) - (i32.const 0) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20556) - (i32.const 8356) - ) - ) - (drop - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw - (i32.const 20568) - (i32.const 8368) - ) - ) - (i32.store - (i32.const 20844) - (i32.const 20556) - ) - ) - ) - ) - (i32.load - (i32.const 20844) - ) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRf (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRf (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $0 - (get_local $6) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $0) - ) - ) - (set_local $0 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - (block - (if - (i32.lt_s - (get_local $0) - (i32.const 69) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 2000) - ) - ) - (if - (i32.lt_u - (i32.add - (get_local $0) - (i32.const -69) - ) - (i32.const 31) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1900) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $0) - (i32.const -1900) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $0 - (get_local $6) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $0) - ) - ) - (set_local $0 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - (block - (if - (i32.lt_s - (get_local $0) - (i32.const 69) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 2000) - ) - ) - (if - (i32.lt_u - (i32.add - (get_local $0) - (i32.const -69) - ) - (i32.const 31) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1900) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $0) - (i32.const -1900) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRy (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRt (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRy (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRt (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRx (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRx (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (i32.load - (get_local $1) - ) - ) - (i32.store - (tee_local $1 - (get_local $6) - ) - (i32.load - (get_local $2) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.load - (get_local $7) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (call $__ZNKSt3__27num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_ - (get_local $0) - (get_local $2) - (get_local $7) - (get_local $3) - (get_local $4) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $0) - ) - (func $_strerror (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (i32.const 0) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (if - (i32.eq - (i32.load8_u - (i32.add - (get_local $1) - (i32.const 11285) - ) - ) - (get_local $0) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $__rjti$0) - ) - ) - (br_if $while-in - (i32.ne - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.const 87) - ) - ) - (set_local $2 - (i32.const 87) - ) - (set_local $0 - (i32.const 11373) - ) - (br $__rjti$1) - ) - ) - (if - (get_local $0) - (block - (set_local $2 - (get_local $0) - ) - (set_local $0 - (i32.const 11373) - ) - (br $__rjti$1) - ) - (set_local $0 - (i32.const 11373) - ) - ) - (br $__rjto$1) - ) - (loop $while-in1 - (loop $while-in3 - (set_local $1 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (if - (i32.load8_s - (get_local $0) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-in3) - ) - (set_local $0 - (get_local $1) - ) - ) - ) - (br_if $while-in1 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - ) - (get_local $0) - ) - (func $___overflow (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store8 - (tee_local $4 - (get_local $3) - ) - (tee_local $7 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - ) - (block $do-once - (block $__rjti$0 - (br_if $__rjti$0 - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - ) - (if - (call $___towrite - (get_local $0) - ) - (set_local $1 - (i32.const -1) - ) - (block - (set_local $5 - (i32.load - (get_local $2) - ) - ) - (br $__rjti$0) - ) - ) - (br $do-once) - ) - (if - (i32.lt_u - (tee_local $6 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (get_local $5) - ) - (if - (i32.ne - (tee_local $1 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (i32.load8_s offset=75 - (get_local $0) - ) - ) - (block - (i32.store - (get_local $2) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $6) - (get_local $7) - ) - (br $do-once) - ) - ) - ) - (set_local $1 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$iiii - (get_local $0) - (get_local $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (get_local $4) - ) - (i32.const -1) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $1) - ) - (func $_frexp (param $0 f64) (param $1 i32) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (f64.store - (get_global $tempDoublePtr) - (get_local $0) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (tee_local $4 - (i32.and - (call $_bitshift64Lshr - (tee_local $2 - (i32.load - (get_global $tempDoublePtr) - ) - ) - (tee_local $3 - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - ) - (i32.const 52) - ) - (i32.const 2047) - ) - ) - ) - ) - (i32.store - (get_local $1) - (tee_local $2 - (if i32 - (f64.ne - (get_local $0) - (f64.const 0) - ) - (block i32 - (set_local $0 - (call $_frexp - (f64.mul - (get_local $0) - (f64.const 18446744073709551615) - ) - (get_local $1) - ) - ) - (i32.add - (i32.load - (get_local $1) - ) - (i32.const -64) - ) - ) - (i32.const 0) - ) - ) - ) - (br $switch) - ) - (br $switch) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $4) - (i32.const -1022) - ) - ) - (i32.store - (get_global $tempDoublePtr) - (get_local $2) - ) - (i32.store offset=4 - (get_global $tempDoublePtr) - (i32.or - (i32.and - (get_local $3) - (i32.const -2146435073) - ) - (i32.const 1071644672) - ) - ) - (set_local $0 - (f64.load - (get_global $tempDoublePtr) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPci (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (set_local $4 - (get_local $1) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (br_if $while-out - (i32.ge_s - (get_local $1) - (get_local $2) - ) - ) - (set_local $3 - (if i32 - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.load - (get_local $6) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.load8_s - (get_local $3) - ) - ) - (block i32 - (br_if $while-out - (i32.eq - (tee_local $3 - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.const -1) - ) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - ) - ) - (i32.store8 - (get_local $4) - (get_local $3) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (get_local $1) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE6xsgetnEPwi (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (set_local $4 - (get_local $1) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (br_if $while-out - (i32.ge_s - (get_local $1) - (get_local $2) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.load - (get_local $6) - ) - ) - (block - (i32.store - (get_local $5) - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $3 - (i32.load - (get_local $3) - ) - ) - ) - (br_if $while-out - (i32.eq - (tee_local $3 - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=40 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $3) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (get_local $1) - ) - (func $__ZNSt3__214__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (block $__rjto$0 - (block $__rjti$0 - (block $switch-default8 - (block $switch-case7 - (block $switch-case6 - (br_table $switch-case6 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-default8 $switch-case7 $switch-default8 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const 176) - ) - (i32.const 16) - ) - ) - ) - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-case $switch-default - (i32.sub - (tee_local $2 - (i32.load8_s - (get_local $0) - ) - ) - (i32.const 43) - ) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $__rjto$0) - ) - (br_if $__rjto$0 - (i32.eqz - (i32.and - (i32.gt_s - (i32.sub - (get_local $1) - (get_local $0) - ) - (i32.const 1) - ) - (i32.eq - (get_local $2) - (i32.const 48) - ) - ) - ) - ) - (block $switch2 - (block $switch-default5 - (block $switch-case3 - (br_table $switch-case3 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-default5 $switch-case3 $switch-default5 - (i32.sub - (i32.load8_s offset=1 - (get_local $0) - ) - (i32.const 88) - ) - ) - ) - (br $switch2) - ) - (br $__rjto$0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 2) - ) - ) - (br $__rjto$0) - ) - (set_local $0 - (get_local $1) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_u - (i32.add - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const -1) - ) - (i32.const 12) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_u - (i32.add - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const -1) - ) - (i32.const 12) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_u - (i32.add - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const -1) - ) - (i32.const 31) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 3) - ) - ) - (i32.const 366) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_u - (i32.add - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const -1) - ) - (i32.const 31) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 3) - ) - ) - (i32.const 366) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 13) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 13) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 1) - ) - ) - (i32.const 7) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 61) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 60) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 1) - ) - ) - (i32.const 7) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 61) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 60) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 24) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 24) - ) - (i32.eqz - (i32.and - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store - (get_local $4) - (i32.or - (get_local $3) - (i32.const 4) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE5flushEv (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $1 - (get_local $3) - ) - (if - (i32.load offset=24 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - (block - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryC2ERS3_ - (get_local $1) - (get_local $0) - ) - (if - (i32.load8_s - (get_local $1) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (tee_local $2 - (i32.load offset=24 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (i32.store - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - (i32.const 16) - ) - ) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 1) - ) - ) - ) - ) - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev - (get_local $1) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $0) - ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE5flushEv (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $1 - (get_local $3) - ) - (if - (i32.load offset=24 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - (block - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_ - (get_local $1) - (get_local $0) - ) - (if - (i32.load8_s - (get_local $1) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (tee_local $2 - (i32.load offset=24 - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (i32.store - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - (i32.const 16) - ) - ) - (i32.or - (i32.load - (get_local $2) - ) - (i32.const 1) - ) - ) - ) - ) - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev - (get_local $1) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $0) - ) - (func $_ungetc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (block $do-once - (set_local $0 - (if i32 - (i32.eq - (get_local $0) - (i32.const -1) - ) - (i32.const -1) - (block i32 - (set_local $3 - (if i32 - (i32.gt_s - (i32.load offset=76 - (get_local $1) - ) - (i32.const -1) - ) - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $1) - ) - (i32.const 0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.load offset=8 - (get_local $1) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (call $___toread - (get_local $1) - ) - ) - ) - (br $__rjto$0) - ) - (if - (i32.gt_u - (tee_local $4 - (i32.load - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - ) - ) - (i32.add - (i32.load offset=44 - (get_local $1) - ) - (i32.const -8) - ) - ) - (block - (i32.store - (get_local $2) - (tee_local $2 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - ) - (i32.store8 - (get_local $2) - (get_local $0) - ) - (i32.store - (get_local $1) - (i32.and - (i32.load - (get_local $1) - ) - (i32.const -17) - ) - ) - (br_if $do-once - (i32.eqz - (get_local $3) - ) - ) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $1) - ) - (br $do-once) - ) - ) - ) - (if i32 - (get_local $3) - (block i32 - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $1) - ) - (i32.const -1) - ) - (i32.const -1) - ) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__215__num_get_floatIeEET_PKcS3_Rj (param $0 i32) (param $1 i32) (param $2 i32) (result f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $6 - (get_local $5) - ) - (if - (i32.eq - (get_local $0) - (get_local $1) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $3 - (f64.const 0) - ) - ) - (block - (set_local $7 - (i32.load - (tee_local $4 - (call $___errno_location) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $3 - (call $_strtold_l - (get_local $0) - (get_local $6) - (call $__ZNSt3__26__clocEv) - ) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load - (get_local $4) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $7) - ) - ) - (if - (i32.eq - (i32.load - (get_local $6) - ) - (get_local $1) - ) - (if - (i32.eq - (get_local $0) - (i32.const 34) - ) - (i32.store - (get_local $2) - (i32.const 4) - ) - ) - (block - (i32.store - (get_local $2) - (i32.const 4) - ) - (set_local $3 - (f64.const 0) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $3) - ) - (func $__ZNKSt3__27collateIcE10do_compareEPKcS3_S3_S3_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (block $__rjto$0 - (block $__rjti$0 - (loop $while-in - (block $while-out - (br_if $__rjti$0 - (i32.eq - (get_local $3) - (get_local $4) - ) - ) - (if - (i32.eq - (get_local $1) - (get_local $2) - ) - (block - (set_local $0 - (i32.const -1) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (tee_local $0 - (i32.load8_s - (get_local $1) - ) - ) - (tee_local $5 - (i32.load8_s - (get_local $3) - ) - ) - ) - (block - (set_local $0 - (i32.const -1) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (get_local $5) - (get_local $0) - ) - (set_local $0 - (i32.const 1) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (br $__rjto$0) - ) - (set_local $0 - (i32.ne - (get_local $1) - (get_local $2) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (if - (i32.gt_u - (get_local $2) - (i32.const -17) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (if - (i32.lt_u - (get_local $2) - (i32.const 11) - ) - (block - (i32.store8 offset=11 - (get_local $0) - (get_local $2) - ) - (br_if $__rjti$0 - (get_local $2) - ) - ) - (block - (i32.store - (get_local $0) - (tee_local $4 - (call $__Znwj - (tee_local $3 - (i32.and - (i32.add - (get_local $2) - (i32.const 16) - ) - (i32.const -16) - ) - ) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $3) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $2) - ) - (set_local $0 - (get_local $4) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (drop - (call $_memcpy - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $0) - (get_local $2) - ) - (i32.const 0) - ) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (if - (i32.gt_u - (get_local $2) - (i32.const 1073741807) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.const 2) - ) - (block - (i32.store8 offset=11 - (get_local $0) - (get_local $2) - ) - (set_local $3 - (get_local $0) - ) - ) - (if - (i32.gt_u - (tee_local $4 - (i32.and - (i32.add - (get_local $2) - (i32.const 4) - ) - (i32.const -4) - ) - ) - (i32.const 1073741823) - ) - (call $___assert_fail - (i32.const 16218) - (i32.const 16255) - (i32.const 1734) - (i32.const 16332) - ) - (block - (i32.store - (get_local $0) - (tee_local $3 - (call $__Znwj - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $4) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $2) - ) - ) - ) - ) - (drop - (call $__ZNSt3__211char_traitsIwE4copyEPwPKwj - (get_local $3) - (get_local $1) - (get_local $2) - ) - ) - (i32.store - (i32.add - (get_local $3) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (i32.const 0) - ) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (if - (i32.gt_u - (get_local $1) - (i32.const -17) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (if - (i32.lt_u - (get_local $1) - (i32.const 11) - ) - (block - (i32.store8 offset=11 - (get_local $0) - (get_local $1) - ) - (br_if $__rjti$0 - (get_local $1) - ) - ) - (block - (i32.store - (get_local $0) - (tee_local $4 - (call $__Znwj - (tee_local $3 - (i32.and - (i32.add - (get_local $1) - (i32.const 16) - ) - (i32.const -16) - ) - ) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $3) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (set_local $0 - (get_local $4) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (drop - (call $_memset - (get_local $0) - (get_local $2) - (get_local $1) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $0) - (get_local $1) - ) - (i32.const 0) - ) - ) - (func $_realloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (if - (i32.eqz - (get_local $0) - ) - (return - (call $_malloc - (get_local $1) - ) - ) - ) - (if - (i32.gt_u - (get_local $1) - (i32.const -65) - ) - (block - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (tee_local $2 - (call $_try_realloc_chunk - (i32.add - (get_local $0) - (i32.const -8) - ) - (if i32 - (i32.lt_u - (get_local $1) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (get_local $1) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - ) - (return - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (tee_local $2 - (call $_malloc - (get_local $1) - ) - ) - ) - (return - (i32.const 0) - ) - ) - (drop - (call $_memcpy - (get_local $2) - (get_local $0) - (if i32 - (i32.lt_u - (tee_local $3 - (i32.sub - (i32.and - (tee_local $3 - (i32.load - (i32.add - (get_local $0) - (i32.const -4) - ) - ) - ) - (i32.const -8) - ) - (if i32 - (i32.and - (get_local $3) - (i32.const 3) - ) - (i32.const 4) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (get_local $3) - (get_local $1) - ) - ) - ) - (call $_free - (get_local $0) - ) - (get_local $2) - ) - (func $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev (param $0 i32) - (local $1 i32) - (if - (i32.load offset=24 - (tee_local $1 - (i32.add - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (i32.load - (i32.add - (i32.load - (get_local $1) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.load offset=16 - (get_local $1) - ) - ) - (if - (i32.and - (i32.load offset=4 - (get_local $1) - ) - (i32.const 8192) - ) - (if - (i32.eqz - (call $__ZSt18uncaught_exceptionv) - ) - (if - (i32.eq - (call_indirect $FUNCSIG$ii - (tee_local $1 - (i32.load offset=24 - (i32.add - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.load - (i32.add - (i32.load - (get_local $1) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - (i32.const 16) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEjw (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (if - (i32.gt_u - (get_local $1) - (i32.const 1073741807) - ) - (call $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $1) - (i32.const 2) - ) - (block - (i32.store8 offset=11 - (get_local $0) - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - (if - (i32.gt_u - (tee_local $4 - (i32.and - (i32.add - (get_local $1) - (i32.const 4) - ) - (i32.const -4) - ) - ) - (i32.const 1073741823) - ) - (call $___assert_fail - (i32.const 16218) - (i32.const 16255) - (i32.const 1734) - (i32.const 16332) - ) - (block - (i32.store - (get_local $0) - (tee_local $3 - (call $__Znwj - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.or - (get_local $4) - (i32.const -2147483648) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - ) - ) - ) - (drop - (call $__ZNSt3__211char_traitsIwE6assignEPwjw - (get_local $3) - (get_local $1) - (get_local $2) - ) - ) - (i32.store - (i32.add - (get_local $3) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - ) - (func $__ZNKSt3__27collateIwE10do_compareEPKwS3_S3_S3_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (block $__rjto$0 - (block $__rjti$0 - (loop $while-in - (block $while-out - (br_if $__rjti$0 - (i32.eq - (get_local $3) - (get_local $4) - ) - ) - (if - (i32.eq - (get_local $1) - (get_local $2) - ) - (block - (set_local $0 - (i32.const -1) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (tee_local $5 - (i32.load - (get_local $3) - ) - ) - ) - (block - (set_local $0 - (i32.const -1) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (get_local $5) - (get_local $0) - ) - (set_local $0 - (i32.const 1) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - (br $__rjto$0) - ) - (set_local $0 - (i32.ne - (get_local $1) - (get_local $2) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__27codecvtIDsc11__mbstate_tE6do_outERS1_PKDsS5_RS5_PcS7_RS7_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (get_local $2) - ) - (i32.store - (tee_local $1 - (get_local $0) - ) - (get_local $5) - ) - (set_local $2 - (call $__ZNSt3__2L13utf16_to_utf8EPKtS1_RS1_PhS3_RS3_mNS_12codecvt_modeE - (get_local $2) - (get_local $3) - (get_local $8) - (get_local $5) - (get_local $6) - (get_local $1) - (i32.const 1114111) - (i32.const 0) - ) - ) - (i32.store - (get_local $4) - (i32.load - (get_local $8) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $1) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $2) - ) - (func $__ZNKSt3__27codecvtIDsc11__mbstate_tE5do_inERS1_PKcS5_RS5_PDsS7_RS7_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (get_local $2) - ) - (i32.store - (tee_local $1 - (get_local $0) - ) - (get_local $5) - ) - (set_local $2 - (call $__ZNSt3__2L13utf8_to_utf16EPKhS1_RS1_PtS3_RS3_mNS_12codecvt_modeE - (get_local $2) - (get_local $3) - (get_local $8) - (get_local $5) - (get_local $6) - (get_local $1) - (i32.const 1114111) - (i32.const 0) - ) - ) - (i32.store - (get_local $4) - (i32.load - (get_local $8) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $1) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $2) - ) - (func $__ZNKSt3__27codecvtIDic11__mbstate_tE6do_outERS1_PKDiS5_RS5_PcS7_RS7_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (get_local $2) - ) - (i32.store - (tee_local $1 - (get_local $0) - ) - (get_local $5) - ) - (set_local $2 - (call $__ZNSt3__2L12ucs4_to_utf8EPKjS1_RS1_PhS3_RS3_mNS_12codecvt_modeE - (get_local $2) - (get_local $3) - (get_local $8) - (get_local $5) - (get_local $6) - (get_local $1) - (i32.const 1114111) - (i32.const 0) - ) - ) - (i32.store - (get_local $4) - (i32.load - (get_local $8) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $1) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $2) - ) - (func $__ZNKSt3__27codecvtIDic11__mbstate_tE5do_inERS1_PKcS5_RS5_PDiS7_RS7_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (get_local $2) - ) - (i32.store - (tee_local $1 - (get_local $0) - ) - (get_local $5) - ) - (set_local $2 - (call $__ZNSt3__2L12utf8_to_ucs4EPKhS1_RS1_PjS3_RS3_mNS_12codecvt_modeE - (get_local $2) - (get_local $3) - (get_local $8) - (get_local $5) - (get_local $6) - (get_local $1) - (i32.const 1114111) - (i32.const 0) - ) - ) - (i32.store - (get_local $4) - (i32.load - (get_local $8) - ) - ) - (i32.store - (get_local $7) - (i32.load - (get_local $1) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (get_local $2) - ) - (func $__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (block $do-once - (if - (tee_local $4 - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (if - (i32.ne - (get_local $4) - (get_local $2) - ) - (block - (i32.store - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 36) - ) - ) - (i32.add - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - (i32.store offset=24 - (get_local $1) - (i32.const 2) - ) - (i32.store8 offset=54 - (get_local $1) - (i32.const 1) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $1) - (i32.const 24) - ) - ) - ) - (i32.const 2) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store offset=24 - (get_local $1) - (get_local $3) - ) - (i32.store offset=36 - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - ) - (func $__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $6 - (i32.shr_s - (tee_local $7 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (get_local $7) - (i32.const 1) - ) - (set_local $6 - (i32.load - (i32.add - (i32.load - (get_local $3) - ) - (get_local $6) - ) - ) - ) - ) - (call_indirect $FUNCSIG$viiiiii - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (get_local $1) - (get_local $2) - (i32.add - (get_local $3) - (get_local $6) - ) - (if i32 - (i32.and - (get_local $7) - (i32.const 2) - ) - (get_local $4) - (i32.const 2) - ) - (get_local $5) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $0) - ) - ) - (i32.const 7) - ) - (i32.const 405) - ) - ) - ) - (func $__ZNSt3__211__stdoutbufIwEC2EP8_IO_FILEP11__mbstate_t (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEEC2Ev - (get_local $0) - ) - (i32.store - (get_local $0) - (i32.const 6784) - ) - (i32.store offset=32 - (get_local $0) - (get_local $1) - ) - (call $__ZNSt3__26localeC2ERKS0_ - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (tee_local $1 - (get_local $4) - ) - (i32.load - (get_local $3) - ) - ) - (set_local $3 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 21008) - ) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $1) - ) - (i32.store offset=36 - (get_local $0) - (get_local $3) - ) - (i32.store offset=40 - (get_local $0) - (get_local $2) - ) - (i32.store8 offset=44 - (get_local $0) - (i32.and - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const 1) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - ) - (func $__ZNSt3__211__stdoutbufIcEC2EP8_IO_FILEP11__mbstate_t (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEEC2Ev - (get_local $0) - ) - (i32.store - (get_local $0) - (i32.const 6720) - ) - (i32.store offset=32 - (get_local $0) - (get_local $1) - ) - (call $__ZNSt3__26localeC2ERKS0_ - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (tee_local $1 - (get_local $4) - ) - (i32.load - (get_local $3) - ) - ) - (set_local $3 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 21000) - ) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $1) - ) - (i32.store offset=36 - (get_local $0) - (get_local $3) - ) - (i32.store offset=40 - (get_local $0) - (get_local $2) - ) - (i32.store8 offset=44 - (get_local $0) - (i32.and - (call_indirect $FUNCSIG$ii - (get_local $3) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $3) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const 1) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIwEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (set_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $2) - (i32.const -1900) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $__ZNKSt3__28time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIcEE (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $0) - ) - (i32.load - (get_local $3) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $6) - ) - ) - (set_local $2 - (call $__ZNSt3__220__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.const 4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $4) - ) - (i32.const 4) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $2) - (i32.const -1900) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $___fflush_unlocked (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (tee_local $0 - (block $__rjto$0 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiii - (get_local $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (br_if $__rjti$0 - (i32.load - (get_local $1) - ) - ) - (br $__rjto$0 - (i32.const -1) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (tee_local $6 - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiii - (get_local $0) - (i32.sub - (get_local $4) - (get_local $6) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (get_local $0) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.store offset=16 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $2) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (func $__ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (call $__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i - (i32.const 0) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - ) - (call_indirect $FUNCSIG$viiiiii - (tee_local $6 - (i32.load offset=8 - (get_local $0) - ) - ) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.add - (i32.and - (i32.load offset=20 - (i32.load - (get_local $6) - ) - ) - (i32.const 7) - ) - (i32.const 405) - ) - ) - ) - ) - (func $_vasprintf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $3 - (get_local $5) - ) - (set_local $0 - (block $do-once i32 - (if i32 - (tee_local $4 - (call $_malloc - (i32.const 240) - ) - ) - (block i32 - (i32.store - (get_local $3) - (i32.load - (get_local $2) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (call $_vsnprintf - (get_local $4) - (i32.const 240) - (get_local $1) - (get_local $3) - ) - ) - (i32.const 240) - ) - (block - (i32.store - (get_local $0) - (if i32 - (tee_local $0 - (call $_realloc - (get_local $4) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - ) - (get_local $0) - (get_local $4) - ) - ) - (br $do-once - (get_local $3) - ) - ) - ) - (call $_free - (get_local $4) - ) - (if i32 - (i32.lt_s - (get_local $3) - (i32.const 0) - ) - (i32.const -1) - (block i32 - (i32.store - (get_local $0) - (tee_local $0 - (call $_malloc - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - ) - ) - ) - (if i32 - (get_local $0) - (call $_vsnprintf - (get_local $0) - (get_local $3) - (get_local $1) - (get_local $2) - ) - (i32.const -1) - ) - ) - ) - ) - (i32.const -1) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNSt3__26locale5__imp7installEPNS0_5facetEl (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (call $__ZNSt3__214__shared_count12__add_sharedEv - (get_local $1) - ) - (if - (tee_local $0 - (i32.load - (i32.add - (tee_local $0 - (if i32 - (i32.gt_u - (i32.shr_s - (i32.sub - (i32.load offset=12 - (get_local $0) - ) - (tee_local $4 - (i32.load - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - ) - (i32.const 2) - ) - (get_local $2) - ) - (block i32 - (set_local $3 - (get_local $0) - ) - (get_local $4) - ) - (block i32 - (call $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE6resizeEj - (get_local $0) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (set_local $3 - (get_local $0) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $0) - ) - ) - ) - (i32.store - (i32.add - (i32.load - (get_local $3) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (get_local $1) - ) - ) - (func $__ZNKSt3__210__time_put8__do_putEPcRS1_PK2tmcc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $7 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store8 - (tee_local $6 - (get_local $7) - ) - (i32.const 37) - ) - (i32.store8 - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (get_local $4) - ) - (i32.store8 - (tee_local $9 - (i32.add - (get_local $6) - (i32.const 2) - ) - ) - (get_local $5) - ) - (i32.store8 offset=3 - (get_local $6) - (i32.const 0) - ) - (if - (i32.and - (get_local $5) - (i32.const 255) - ) - (block - (i32.store8 - (get_local $8) - (get_local $5) - ) - (i32.store8 - (get_local $9) - (get_local $4) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (call $_strftime_l - (get_local $1) - (i32.sub - (i32.load - (get_local $2) - ) - (get_local $1) - ) - (get_local $6) - (get_local $3) - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $7) - ) - ) - (func $_getc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $do-once - (block $__rjti$0 - (br_if $__rjti$0 - (i32.lt_s - (i32.load offset=76 - (get_local $0) - ) - (i32.const 0) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $0) - ) - ) - ) - (set_local $1 - (if i32 - (i32.lt_u - (tee_local $2 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (i32.load offset=8 - (get_local $0) - ) - ) - (block i32 - (i32.store - (get_local $1) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $2) - ) - ) - (call $___uflow - (get_local $0) - ) - ) - ) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $0) - ) - (br $do-once) - ) - (set_local $1 - (if i32 - (i32.lt_u - (tee_local $2 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (i32.load offset=8 - (get_local $0) - ) - ) - (block i32 - (i32.store - (get_local $1) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $2) - ) - ) - (call $___uflow - (get_local $0) - ) - ) - ) - ) - (get_local $1) - ) - (func $__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $5 - (i32.shr_s - (tee_local $6 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (get_local $6) - (i32.const 1) - ) - (set_local $5 - (i32.load - (i32.add - (i32.load - (get_local $2) - ) - (get_local $5) - ) - ) - ) - ) - (call_indirect $FUNCSIG$viiiii - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (get_local $1) - (i32.add - (get_local $2) - (get_local $5) - ) - (if i32 - (i32.and - (get_local $6) - (i32.const 2) - ) - (get_local $3) - (i32.const 2) - ) - (get_local $4) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $0) - ) - ) - (i32.const 3) - ) - (i32.const 40) - ) - ) - ) - (func $_strtox (param $0 i32) (param $1 i32) (param $2 i32) (result f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $5 - (i32.add - (tee_local $4 - (tee_local $3 - (get_local $6) - ) - ) - (i32.const 112) - ) - ) - (loop $do-in - (i32.store - (get_local $4) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (get_local $5) - ) - ) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (get_local $0) - ) - (i32.store - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (i32.const -1) - ) - (i32.store offset=44 - (get_local $3) - (get_local $0) - ) - (i32.store offset=76 - (get_local $3) - (i32.const -1) - ) - (call $___shlim - (get_local $3) - (i32.const 0) - ) - (set_local $7 - (call $___floatscan - (get_local $3) - (get_local $2) - (i32.const 1) - ) - ) - (set_local $2 - (i32.add - (i32.sub - (i32.load - (get_local $4) - ) - (i32.load - (get_local $5) - ) - ) - (i32.load offset=108 - (get_local $3) - ) - ) - ) - (if - (get_local $1) - (i32.store - (get_local $1) - (if i32 - (get_local $2) - (i32.add - (get_local $0) - (get_local $2) - ) - (get_local $0) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $7) - ) - (func $__ZNSt3__214__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEEC2EjjS6_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (i32.store offset=12 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=16 - (get_local $0) - (get_local $3) - ) - (if - (get_local $1) - (if - (i32.and - (i32.lt_u - (get_local $1) - (i32.const 29) - ) - (i32.eqz - (i32.load8_s - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 112) - ) - ) - ) - ) - ) - (i32.store8 - (get_local $4) - (i32.const 1) - ) - (set_local $3 - (call $__Znwj - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - ) - (set_local $3 - (i32.const 0) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (i32.store offset=8 - (get_local $0) - (tee_local $2 - (i32.add - (get_local $3) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $2) - ) - (i32.store offset=12 - (get_local $0) - (i32.add - (get_local $3) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - ) - (func $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE6resizeEj (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (block $label$break$L1 - (if - (i32.lt_u - (tee_local $2 - (i32.shr_s - (i32.sub - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (tee_local $5 - (i32.load - (get_local $0) - ) - ) - ) - (i32.const 2) - ) - ) - (get_local $1) - ) - (call $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8__appendEj - (get_local $0) - (i32.sub - (get_local $1) - (get_local $2) - ) - ) - (if - (i32.gt_u - (get_local $2) - (get_local $1) - ) - (block - (set_local $1 - (i32.add - (get_local $5) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - (set_local $0 - (get_local $4) - ) - (loop $while-in - (br_if $label$break$L1 - (i32.eq - (get_local $0) - (get_local $1) - ) - ) - (i32.store - (get_local $3) - (tee_local $0 - (i32.add - (get_local $0) - (i32.const -4) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - ) - (func $_memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (get_local $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - ) - (set_local $3 - (get_local $0) - ) - (if - (i32.eq - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.and - (get_local $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (get_local $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (get_local $2) - ) - (return - (get_local $3) - ) - ) - (i32.store8 - (get_local $0) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (get_local $2) - (i32.const 4) - ) - (block - (i32.store - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (get_local $2) - (i32.const 0) - ) - (block - (i32.store8 - (get_local $0) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (get_local $3) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (if - (i32.lt_u - (tee_local $3 - (if i32 - (tee_local $5 - (i32.lt_s - (tee_local $3 - (i32.load8_s - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.load offset=4 - (get_local $0) - ) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - ) - (get_local $1) - ) - (drop - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEjc - (get_local $0) - (i32.sub - (get_local $1) - (get_local $3) - ) - (get_local $2) - ) - ) - (if - (get_local $5) - (block - (i32.store8 - (i32.add - (i32.load - (get_local $0) - ) - (get_local $1) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - ) - (block - (i32.store8 - (i32.add - (get_local $0) - (get_local $1) - ) - (i32.const 0) - ) - (i32.store8 - (get_local $4) - (get_local $1) - ) - ) - ) - ) - ) - (func $_memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (i32.add - (get_local $0) - (get_local $2) - ) - ) - (if - (i32.ge_s - (get_local $2) - (i32.const 20) - ) - (block - (set_local $1 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (if - (tee_local $3 - (i32.and - (get_local $0) - (i32.const 3) - ) - ) - (block - (set_local $3 - (i32.sub - (i32.add - (get_local $0) - (i32.const 4) - ) - (get_local $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (get_local $0) - (get_local $3) - ) - (block - (i32.store8 - (get_local $0) - (get_local $1) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (set_local $3 - (i32.or - (i32.or - (i32.or - (get_local $1) - (i32.shl - (get_local $1) - (i32.const 8) - ) - ) - (i32.shl - (get_local $1) - (i32.const 16) - ) - ) - (i32.shl - (get_local $1) - (i32.const 24) - ) - ) - ) - (set_local $5 - (i32.and - (get_local $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (get_local $0) - (get_local $5) - ) - (block - (i32.store - (get_local $0) - (get_local $3) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (get_local $0) - (get_local $4) - ) - (block - (i32.store8 - (get_local $0) - (get_local $1) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (get_local $0) - (get_local $2) - ) - ) - (func $___toread (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 74) - ) - ) - ) - ) - (i32.store8 - (get_local $2) - (i32.or - (i32.add - (get_local $1) - (i32.const 255) - ) - (get_local $1) - ) - ) - (if - (i32.gt_u - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiii - (get_local $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.store offset=16 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=28 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - (tee_local $0 - (if i32 - (i32.and - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const 20) - ) - (if i32 - (i32.and - (get_local $1) - (i32.const 4) - ) - (block i32 - (i32.store - (get_local $0) - (i32.or - (get_local $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (i32.const -1) - ) - (block i32 - (i32.store offset=8 - (get_local $0) - (tee_local $1 - (i32.load - (get_local $2) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (i32.shr_s - (tee_local $5 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (get_local $5) - (i32.const 1) - ) - (set_local $4 - (i32.load - (i32.add - (i32.load - (get_local $2) - ) - (get_local $4) - ) - ) - ) - ) - (call_indirect $FUNCSIG$viiii - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (get_local $1) - (i32.add - (get_local $2) - (get_local $4) - ) - (if i32 - (i32.and - (get_local $5) - (i32.const 2) - ) - (get_local $3) - (i32.const 2) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $0) - ) - ) - (i32.const 7) - ) - (i32.const 461) - ) - ) - ) - (func $__ZNSt3__210__stdinbufIwEC2EP8_IO_FILEP11__mbstate_t (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEEC2Ev - (get_local $0) - ) - (i32.store - (get_local $0) - (i32.const 6656) - ) - (i32.store offset=32 - (get_local $0) - (get_local $1) - ) - (i32.store offset=40 - (get_local $0) - (get_local $2) - ) - (i32.store offset=48 - (get_local $0) - (i32.const -1) - ) - (i32.store8 offset=52 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__26localeC2ERKS0_ - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (tee_local $1 - (get_local $3) - ) - (i32.load - (get_local $2) - ) - ) - (call $__ZNSt3__210__stdinbufIwE5imbueERKNS_6localeE - (get_local $0) - (get_local $1) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $1) - ) - (set_global $STACKTOP - (get_local $3) - ) - ) - (func $__ZNSt3__210__stdinbufIcEC2EP8_IO_FILEP11__mbstate_t (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEEC2Ev - (get_local $0) - ) - (i32.store - (get_local $0) - (i32.const 6592) - ) - (i32.store offset=32 - (get_local $0) - (get_local $1) - ) - (i32.store offset=40 - (get_local $0) - (get_local $2) - ) - (i32.store offset=48 - (get_local $0) - (i32.const -1) - ) - (i32.store8 offset=52 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__26localeC2ERKS0_ - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (tee_local $1 - (get_local $3) - ) - (i32.load - (get_local $2) - ) - ) - (call $__ZNSt3__210__stdinbufIcE5imbueERKNS_6localeE - (get_local $0) - (get_local $1) - ) - (call $__ZNSt3__26localeD2Ev - (get_local $1) - ) - (set_global $STACKTOP - (get_local $3) - ) - ) - (func $___stdio_seek (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (i32.store - (tee_local $3 - (get_local $4) - ) - (i32.load offset=60 - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $3) - (get_local $1) - ) - (i32.store offset=12 - (get_local $3) - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 20) - ) - ) - ) - (i32.store offset=16 - (get_local $3) - (get_local $2) - ) - (set_local $0 - (if i32 - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (get_local $3) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load - (get_local $0) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $0) - ) - (func $__ZNSt3__211__stdoutbufIwE6xsputnEPKwi (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (block $label$break$L1 - (if - (i32.load8_s offset=44 - (get_local $0) - ) - (set_local $1 - (call $_fwrite - (get_local $1) - (i32.const 4) - (get_local $2) - (i32.load offset=32 - (get_local $0) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (br_if $label$break$L1 - (i32.ge_s - (get_local $1) - (get_local $2) - ) - ) - (br_if $label$break$L1 - (i32.eq - (call_indirect $FUNCSIG$iii - (get_local $0) - (i32.load - (get_local $3) - ) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $0) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const -1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (get_local $1) - ) - (func $__ZNSt3__211__stdoutbufIcE6xsputnEPKci (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (block $label$break$L1 - (if - (i32.load8_s offset=44 - (get_local $0) - ) - (set_local $1 - (call $_fwrite - (get_local $1) - (i32.const 1) - (get_local $2) - (i32.load offset=32 - (get_local $0) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (br_if $label$break$L1 - (i32.ge_s - (get_local $1) - (get_local $2) - ) - ) - (br_if $label$break$L1 - (i32.eq - (call_indirect $FUNCSIG$iii - (get_local $0) - (i32.load8_u - (get_local $3) - ) - (i32.add - (i32.and - (i32.load offset=52 - (i32.load - (get_local $0) - ) - ) - (i32.const 15) - ) - (i32.const 413) - ) - ) - (i32.const -1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (get_local $1) - ) - (func $_strtox_545 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (i32.store - (tee_local $5 - (get_local $6) - ) - (i32.const 0) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (get_local $0) - ) - (i32.store offset=44 - (get_local $5) - (get_local $0) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $5) - (i32.const 8) - ) - ) - (if i32 - (i32.lt_s - (get_local $0) - (i32.const 0) - ) - (i32.const -1) - (i32.add - (get_local $0) - (i32.const 2147483647) - ) - ) - ) - (i32.store offset=76 - (get_local $5) - (i32.const -1) - ) - (call $___shlim - (get_local $5) - (i32.const 0) - ) - (set_local $2 - (call $___intscan - (get_local $5) - (get_local $2) - (i32.const 1) - (get_local $3) - (get_local $4) - ) - ) - (if - (get_local $1) - (i32.store - (get_local $1) - (i32.add - (get_local $0) - (i32.sub - (i32.add - (i32.load - (get_local $7) - ) - (i32.load offset=108 - (get_local $5) - ) - ) - (i32.load - (get_local $8) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - (get_local $2) - ) - (func $__ZNSt3__26locale5__impD2Ev (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (i32.store - (get_local $0) - (i32.const 9184) - ) - (set_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $4 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in - (if - (i32.lt_u - (get_local $1) - (i32.shr_s - (i32.sub - (i32.load - (get_local $4) - ) - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - ) - (i32.const 2) - ) - ) - (block - (if - (tee_local $2 - (i32.load - (i32.add - (get_local $2) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - ) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (get_local $2) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.add - (get_local $0) - (i32.const 144) - ) - ) - (call $__ZNSt3__213__vector_baseIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEED2Ev - (get_local $3) - ) - ) - (func $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEEC2Ej (param $0 i32) (param $1 i32) - (local $2 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (i32.store8 offset=128 - (get_local $0) - (i32.const 0) - ) - (if - (get_local $1) - (block - (call $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8allocateEj - (get_local $0) - (get_local $1) - ) - (set_local $0 - (i32.load - (get_local $2) - ) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $2) - (tee_local $0 - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 4) - ) - ) - ) - (br_if $do-in - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - ) - ) - ) - ) - (func $__ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (call $__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi - (i32.const 0) - (get_local $1) - (get_local $2) - (get_local $3) - ) - (call_indirect $FUNCSIG$viiii - (tee_local $4 - (i32.load offset=8 - (get_local $0) - ) - ) - (get_local $1) - (get_local $2) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $4) - ) - ) - (i32.const 7) - ) - (i32.const 461) - ) - ) - ) - ) - (func $_strcmp (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (set_local $2 - (i32.load8_s - (get_local $1) - ) - ) - (i32.sub - (i32.and - (tee_local $0 - (if i32 - (if i32 - (tee_local $3 - (i32.load8_s - (get_local $0) - ) - ) - (i32.ne - (get_local $3) - (get_local $2) - ) - (i32.const 1) - ) - (block i32 - (set_local $1 - (get_local $2) - ) - (get_local $3) - ) - (block i32 - (loop $do-in - (set_local $2 - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - (br_if $do-in - (i32.eqz - (if i32 - (tee_local $3 - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (i32.ne - (get_local $3) - (get_local $2) - ) - (i32.const 1) - ) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - (get_local $3) - ) - ) - ) - (i32.const 255) - ) - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - ) - (func $_wmemmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (set_local $3 - (i32.eqz - (get_local $2) - ) - ) - (if - (i32.lt_u - (i32.shr_s - (i32.sub - (get_local $0) - (get_local $1) - ) - (i32.const 2) - ) - (get_local $2) - ) - (if - (i32.eqz - (get_local $3) - ) - (loop $do-in - (i32.store - (i32.add - (get_local $0) - (i32.shl - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.const 2) - ) - ) - (i32.load - (i32.add - (get_local $1) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (br_if $do-in - (get_local $2) - ) - ) - ) - (if - (i32.eqz - (get_local $3) - ) - (block - (set_local $3 - (get_local $0) - ) - (loop $while-in - (i32.store - (get_local $3) - (i32.load - (get_local $1) - ) - ) - (if - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (block - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__211__call_onceERVmPvPFvS2_E (param $0 i32) (param $1 i32) (param $2 i32) - (drop - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (i32.const 21048) - ) - ) - (loop $while-in - (if - (i32.eq - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - (block - (drop - (call $_pthread_cond_wait - (i32.const 21076) - (i32.const 21048) - ) - ) - (br $while-in) - ) - ) - ) - (if - (i32.load - (get_local $0) - ) - (drop - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (i32.const 21048) - ) - ) - (block - (i32.store - (get_local $0) - (i32.const 1) - ) - (drop - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (i32.const 21048) - ) - ) - (call_indirect $FUNCSIG$vi - (get_local $1) - (i32.add - (i32.and - (get_local $2) - (i32.const 127) - ) - (i32.const 48) - ) - ) - (drop - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (i32.const 21048) - ) - ) - (i32.store - (get_local $0) - (i32.const -1) - ) - (drop - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (i32.const 21048) - ) - ) - (drop - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (i32.const 21076) - ) - ) - ) - ) - ) - (func $__ZNSt3__214__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEED2Ev (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (set_local $2 - (i32.load offset=4 - (get_local $0) - ) - ) - (set_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store - (get_local $3) - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - ) - (br $while-in) - ) - ) - ) - (if - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (if - (i32.eq - (tee_local $0 - (i32.load offset=16 - (get_local $0) - ) - ) - (get_local $1) - ) - (i32.store8 offset=112 - (get_local $0) - (i32.const 0) - ) - (call $__ZdlPv - (get_local $1) - ) - ) - ) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_ (param $0 i32) (param $1 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (if - (i32.lt_s - (i32.load8_s offset=11 - (get_local $1) - ) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (get_local $0) - (i32.load - (get_local $1) - ) - (i32.load offset=4 - (get_local $1) - ) - ) - (block - (i32.store - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.load offset=4 - (get_local $1) - ) - ) - (i32.store offset=8 - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - ) - ) - ) - (func $__ZNSt3__26vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8allocateEj (param $0 i32) (param $1 i32) - (local $2 i32) - (if - (i32.gt_u - (get_local $1) - (i32.const 1073741823) - ) - (call $__ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $0) - (tee_local $2 - (if i32 - (i32.and - (i32.lt_u - (get_local $1) - (i32.const 29) - ) - (i32.eqz - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 128) - ) - ) - ) - ) - ) - (block i32 - (i32.store8 - (get_local $2) - (i32.const 1) - ) - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (call $__Znwj - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - ) - ) - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store offset=8 - (get_local $0) - (i32.add - (get_local $2) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - ) - (func $__ZNSt3__217__call_once_proxyINS_5tupleIJONS_12_GLOBAL__N_111__fake_bindEEEEEEvPv (param $0 i32) - (local $1 i32) - (local $2 i32) - (set_local $0 - (i32.load offset=4 - (tee_local $1 - (i32.load - (i32.load - (get_local $0) - ) - ) - ) - ) - ) - (set_local $1 - (i32.add - (i32.load - (get_local $1) - ) - (i32.shr_s - (tee_local $2 - (i32.load offset=8 - (get_local $1) - ) - ) - (i32.const 1) - ) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 1) - ) - (set_local $0 - (i32.load - (i32.add - (i32.load - (get_local $1) - ) - (get_local $0) - ) - ) - ) - ) - (call_indirect $FUNCSIG$vi - (get_local $1) - (i32.add - (i32.and - (get_local $0) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (func $__ZNKSt3__25ctypeIwE5do_isEPKwS3_Pt (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $5 - (i32.shr_u - (i32.sub - (get_local $2) - (get_local $1) - ) - (i32.const 2) - ) - ) - (set_local $0 - (get_local $1) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (get_local $2) - ) - (block - (i32.store16 - (get_local $3) - (tee_local $4 - (if i32 - (i32.lt_u - (tee_local $4 - (i32.load - (get_local $0) - ) - ) - (i32.const 128) - ) - (i32.load16_u - (i32.add - (i32.load - (call $___ctype_b_loc) - ) - (i32.shl - (get_local $4) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 2) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.add - (get_local $1) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (func $___stdout_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 80) - ) - ) - (set_local $3 - (get_local $4) - ) - (i32.store offset=36 - (get_local $0) - (i32.const 1) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (get_local $3) - (i32.load offset=60 - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.const 21505) - ) - (i32.store offset=8 - (get_local $3) - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - (if - (call $___syscall54 - (i32.const 54) - (get_local $3) - ) - (i32.store8 offset=75 - (get_local $0) - (i32.const -1) - ) - ) - ) - ) - (set_local $0 - (call $___stdio_write - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $0) - ) - (func $__ZNSt3__210__stdinbufIwE5imbueERKNS_6localeE (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (i32.store - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 21008) - ) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store8 offset=53 - (get_local $0) - (i32.and - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.load - (get_local $2) - ) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const 1) - ) - ) - ) - (func $__ZNSt3__210__stdinbufIcE5imbueERKNS_6localeE (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (i32.store - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (tee_local $1 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 21000) - ) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $1) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store8 offset=53 - (get_local $0) - (i32.and - (call_indirect $FUNCSIG$ii - (tee_local $0 - (i32.load - (get_local $2) - ) - ) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const 1) - ) - ) - ) - (func $__ZNKSt3__25ctypeIwE11do_scan_notEtPKwS3_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $2) - (get_local $3) - ) - (block - (set_local $2 - (get_local $3) - ) - (br $while-out) - ) - ) - (br_if $while-out - (i32.ge_u - (tee_local $0 - (i32.load - (get_local $2) - ) - ) - (i32.const 128) - ) - ) - (if - (i32.and - (i32.and - (i32.load16_s - (i32.add - (i32.load - (call $___ctype_b_loc) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $1) - ) - (i32.const 65535) - ) - (block - (set_local $2 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - (get_local $2) - ) - (func $__ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (call $__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i - (i32.const 0) - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - ) - ) - ) - (func $_fwrite (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (i32.mul - (get_local $2) - (get_local $1) - ) - ) - (if - (i32.gt_s - (i32.load offset=76 - (get_local $3) - ) - (i32.const -1) - ) - (block - (set_local $5 - (i32.eqz - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv - (get_local $3) - ) - ) - ) - (set_local $0 - (call $___fwritex - (get_local $0) - (get_local $4) - (get_local $3) - ) - ) - (if - (i32.eqz - (get_local $5) - ) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $3) - ) - ) - ) - (set_local $0 - (call $___fwritex - (get_local $0) - (get_local $4) - (get_local $3) - ) - ) - ) - (if - (i32.ne - (get_local $0) - (get_local $4) - ) - (set_local $2 - (i32.div_u - (get_local $0) - (get_local $1) - ) - ) - ) - (get_local $2) - ) - (func $___string_read (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.lt_u - (if i32 - (tee_local $6 - (call $_memchr - (tee_local $3 - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 84) - ) - ) - ) - ) - (i32.const 0) - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 256) - ) - ) - ) - ) - (tee_local $4 - (i32.sub - (get_local $6) - (get_local $3) - ) - ) - (get_local $4) - ) - (get_local $2) - ) - (set_local $2 - (get_local $4) - ) - ) - (drop - (call $_memcpy - (get_local $1) - (get_local $3) - (get_local $2) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $3) - (get_local $2) - ) - ) - (i32.store offset=8 - (get_local $0) - (tee_local $0 - (i32.add - (get_local $3) - (get_local $4) - ) - ) - ) - (i32.store - (get_local $5) - (get_local $0) - ) - (get_local $2) - ) - (func $_calloc (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (if - (get_local $0) - (block - (set_local $2 - (i32.mul - (get_local $1) - (get_local $0) - ) - ) - (if - (i32.gt_u - (i32.or - (get_local $1) - (get_local $0) - ) - (i32.const 65535) - ) - (if - (i32.ne - (i32.div_u - (get_local $2) - (get_local $0) - ) - (get_local $1) - ) - (set_local $2 - (i32.const -1) - ) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - (if - (i32.eqz - (tee_local $0 - (call $_malloc - (get_local $2) - ) - ) - ) - (return - (get_local $0) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (get_local $0) - (i32.const -4) - ) - ) - (i32.const 3) - ) - ) - (return - (get_local $0) - ) - ) - (drop - (call $_memset - (get_local $0) - (i32.const 0) - (get_local $2) - ) - ) - (get_local $0) - ) - (func $___muldi3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (set_local $4 - (call $___muldsi3 - (get_local $0) - (get_local $2) - ) - ) - (set_global $tempRet0 - (i32.or - (i32.add - (i32.add - (i32.mul - (get_local $1) - (get_local $2) - ) - (i32.mul - (get_local $3) - (get_local $0) - ) - ) - (tee_local $0 - (get_global $tempRet0) - ) - ) - (i32.and - (get_local $0) - (i32.const 0) - ) - ) - ) - (get_local $4) - ) - (func $__ZNSt3__26locale2id5__getEv (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $3 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - (set_local $4 - (i32.add - (get_local $1) - (i32.const 12) - ) - ) - (i32.store - (tee_local $2 - (get_local $1) - ) - (get_local $0) - ) - (i32.store offset=4 - (get_local $2) - (i32.const 97) - ) - (i32.store offset=8 - (get_local $2) - (i32.const 0) - ) - (if - (i32.ne - (i32.load - (get_local $0) - ) - (i32.const -1) - ) - (block - (i32.store - (get_local $3) - (get_local $2) - ) - (i32.store - (get_local $4) - (get_local $3) - ) - (call $__ZNSt3__211__call_onceERVmPvPFvS2_E - (get_local $0) - (get_local $4) - (i32.const 98) - ) - ) - ) - (set_global $STACKTOP - (get_local $1) - ) - (i32.add - (i32.load offset=4 - (get_local $0) - ) - (i32.const -1) - ) - ) - (func $__ZNSt3__28ios_base4initEPv (param $0 i32) (param $1 i32) - (local $2 i32) - (i32.store offset=24 - (get_local $0) - (get_local $1) - ) - (i32.store offset=16 - (get_local $0) - (i32.eqz - (get_local $1) - ) - ) - (i32.store offset=20 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 4098) - ) - (i32.store offset=12 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 6) - ) - (set_local $1 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (set_local $2 - (i32.add - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (i32.const 40) - ) - ) - (loop $do-in - (i32.store - (get_local $0) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (get_local $2) - ) - ) - ) - (call $__ZNSt3__26localeC2Ev - (get_local $1) - ) - ) - (func $__ZNSt3__213__vector_baseIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEED2Ev (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (if - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (block - (set_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (loop $while-in - (if - (i32.ne - (get_local $2) - (get_local $1) - ) - (block - (i32.store - (get_local $3) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -4) - ) - ) - ) - (br $while-in) - ) - ) - ) - (if - (i32.eq - (i32.add - (get_local $0) - (i32.const 16) - ) - (get_local $1) - ) - (i32.store8 offset=128 - (get_local $0) - (i32.const 0) - ) - (call $__ZdlPv - (get_local $1) - ) - ) - ) - ) - ) - (func $__ZNKSt3__25ctypeIwE9do_narrowEPKwS3_cPc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (set_local $5 - (i32.shr_u - (i32.sub - (get_local $2) - (get_local $1) - ) - (i32.const 2) - ) - ) - (set_local $0 - (get_local $1) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (get_local $2) - ) - (block - (i32.store8 - (get_local $4) - (if i32 - (i32.lt_u - (tee_local $6 - (i32.load - (get_local $0) - ) - ) - (i32.const 128) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - (get_local $3) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.add - (get_local $1) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (func $__ZNKSt3__25ctypeIwE10do_scan_isEtPKwS3_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (loop $while-in - (block $while-out - (if - (i32.eq - (get_local $2) - (get_local $3) - ) - (block - (set_local $2 - (get_local $3) - ) - (br $while-out) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (get_local $2) - ) - ) - (i32.const 128) - ) - (br_if $while-out - (i32.and - (i32.and - (i32.load16_s - (i32.add - (i32.load - (call $___ctype_b_loc) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (get_local $1) - ) - (i32.const 65535) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - (get_local $2) - ) - (func $__ZNSt3__28numpunctIwEC2Ej (param $0 i32) (param $1 i32) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.store - (get_local $0) - (i32.const 9296) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 46) - ) - (i32.store offset=12 - (get_local $0) - (i32.const 44) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $1) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (func $___towrite (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 74) - ) - ) - ) - ) - (i32.store8 - (get_local $2) - (i32.or - (i32.add - (get_local $1) - (i32.const 255) - ) - (get_local $1) - ) - ) - (tee_local $0 - (if i32 - (i32.and - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const 8) - ) - (block i32 - (i32.store - (get_local $0) - (i32.or - (get_local $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=28 - (get_local $0) - (tee_local $1 - (i32.load offset=44 - (get_local $0) - ) - ) - ) - (i32.store offset=20 - (get_local $0) - (get_local $1) - ) - (i32.store offset=16 - (get_local $0) - (i32.add - (get_local $1) - (i32.load offset=48 - (get_local $0) - ) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (func $__ZNSt3__28numpunctIcEC2Ej (param $0 i32) (param $1 i32) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.store - (get_local $0) - (i32.const 9256) - ) - (i32.store8 offset=8 - (get_local $0) - (i32.const 46) - ) - (i32.store8 offset=9 - (get_local $0) - (i32.const 44) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $1) - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $1) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (func $_vsscanf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 112) - ) - ) - (set_local $6 - (i32.add - (tee_local $4 - (tee_local $3 - (get_local $5) - ) - ) - (i32.const 112) - ) - ) - (loop $do-in - (i32.store - (get_local $4) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (get_local $6) - ) - ) - ) - (i32.store offset=32 - (get_local $3) - (i32.const 26) - ) - (i32.store offset=44 - (get_local $3) - (get_local $0) - ) - (i32.store offset=76 - (get_local $3) - (i32.const -1) - ) - (i32.store offset=84 - (get_local $3) - (get_local $0) - ) - (set_local $0 - (call $_vfscanf - (get_local $3) - (get_local $1) - (get_local $2) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $_newlocale (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (block $do-once i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (i32.load8_s - (get_local $1) - ) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (call $_strcmp - (get_local $1) - (i32.const 13970) - ) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (call $_strcmp - (get_local $1) - (i32.const 13230) - ) - ) - ) - (br $do-once - (i32.const 0) - ) - ) - (if i32 - (get_local $2) - (get_local $2) - (if i32 - (i32.load - (i32.const 17652) - ) - (call $_calloc - (i32.const 1) - (i32.const 4) - ) - (block i32 - (i32.store - (i32.const 17652) - (i32.const 1) - ) - (i32.const 17656) - ) - ) - ) - ) - ) - (func $__ZNSt3__219__libcpp_snprintf_lEPcjP15__locale_structPKcz (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $6 - (get_local $5) - ) - (get_local $4) - ) - (set_local $2 - (call $_uselocale - (get_local $2) - ) - ) - (set_local $0 - (call $_vsnprintf - (get_local $0) - (get_local $1) - (get_local $3) - (get_local $6) - ) - ) - (if - (get_local $2) - (drop - (call $_uselocale - (get_local $2) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $__ZNKSt3__25ctypeIwE10do_toupperEPwPKw (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (i32.shr_u - (i32.sub - (get_local $2) - (get_local $1) - ) - (i32.const 2) - ) - ) - (set_local $0 - (get_local $1) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (get_local $2) - ) - (block - (if - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $0) - ) - ) - (i32.const 128) - ) - (set_local $3 - (i32.load - (i32.add - (i32.load - (call $___ctype_toupper_loc) - ) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.add - (get_local $1) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - (func $__ZNKSt3__25ctypeIwE10do_tolowerEPwPKw (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (i32.shr_u - (i32.sub - (get_local $2) - (get_local $1) - ) - (i32.const 2) - ) - ) - (set_local $0 - (get_local $1) - ) - (loop $while-in - (if - (i32.ne - (get_local $0) - (get_local $2) - ) - (block - (if - (i32.lt_u - (tee_local $3 - (i32.load - (get_local $0) - ) - ) - (i32.const 128) - ) - (set_local $3 - (i32.load - (i32.add - (i32.load - (call $___ctype_tolower_loc) - ) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.add - (get_local $1) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - (func $___cxa_can_catch (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $4 - (get_local $3) - ) - (i32.load - (get_local $2) - ) - ) - (if - (tee_local $0 - (call_indirect $FUNCSIG$iiii - (get_local $0) - (get_local $1) - (get_local $4) - (i32.add - (i32.and - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (i32.store - (get_local $2) - (i32.load - (get_local $4) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (i32.and - (get_local $0) - (i32.const 1) - ) - ) - (func $__ZNKSt3__27collateIwE7do_hashEPKwS3_ (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (set_local $0 - (i32.xor - (i32.or - (i32.shr_u - (tee_local $3 - (i32.and - (tee_local $0 - (i32.add - (i32.load - (get_local $1) - ) - (i32.shl - (get_local $0) - (i32.const 4) - ) - ) - ) - (i32.const -268435456) - ) - ) - (i32.const 24) - ) - (get_local $3) - ) - (get_local $0) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__27collateIcE7do_hashEPKcS3_ (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (set_local $0 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (set_local $0 - (i32.xor - (i32.or - (i32.shr_u - (tee_local $3 - (i32.and - (tee_local $0 - (i32.add - (i32.load8_s - (get_local $1) - ) - (i32.shl - (get_local $0) - (i32.const 4) - ) - ) - ) - (i32.const -268435456) - ) - ) - (i32.const 24) - ) - (get_local $3) - ) - (get_local $0) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__27codecvtIwc11__mbstate_tE11do_encodingEv (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $0 - (call $_uselocale - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - ) - (set_local $2 - (call $_mbtowc - (i32.const 0) - (i32.const 0) - (i32.const 4) - ) - ) - (if - (get_local $0) - (drop - (call $_uselocale - (get_local $0) - ) - ) - ) - (tee_local $0 - (if i32 - (get_local $2) - (i32.const -1) - (if i32 - (tee_local $0 - (i32.load - (get_local $1) - ) - ) - (if i32 - (tee_local $0 - (call $_uselocale - (get_local $0) - ) - ) - (block i32 - (drop - (call $_uselocale - (get_local $0) - ) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - ) - (func $__ZNKSt3__27collateIwE12do_transformEPKwS3_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initIPKwEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_ - (get_local $0) - (get_local $2) - (get_local $3) - ) - ) - (func $__ZNKSt3__27collateIcE12do_transformEPKcS3_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_ - (get_local $0) - (get_local $2) - (get_local $3) - ) - ) - (func $__ZNSt3__219__libcpp_asprintf_lEPPcP15__locale_structPKcz (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $5 - (get_local $4) - ) - (get_local $3) - ) - (set_local $1 - (call $_uselocale - (get_local $1) - ) - ) - (set_local $0 - (call $_vasprintf - (get_local $0) - (get_local $2) - (get_local $5) - ) - ) - (if - (get_local $1) - (drop - (call $_uselocale - (get_local $1) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $0) - ) - (func $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE6sentryC2ERS3_ (param $0 i32) (param $1 i32) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (if - (i32.eqz - (i32.load offset=16 - (tee_local $1 - (i32.add - (get_local $1) - (i32.load - (i32.add - (i32.load - (get_local $1) - ) - (i32.const -12) - ) - ) - ) - ) - ) - ) - (block - (if - (tee_local $1 - (i32.load offset=72 - (get_local $1) - ) - ) - (drop - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE5flushEv - (get_local $1) - ) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_ (param $0 i32) (param $1 i32) - (i32.store8 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (get_local $1) - ) - (if - (i32.eqz - (i32.load offset=16 - (tee_local $1 - (i32.add - (get_local $1) - (i32.load - (i32.add - (i32.load - (get_local $1) - ) - (i32.const -12) - ) - ) - ) - ) - ) - ) - (block - (if - (tee_local $1 - (i32.load offset=72 - (get_local $1) - ) - ) - (drop - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE5flushEv - (get_local $1) - ) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (func $__ZNSt3__217__libcpp_sscanf_lEPKcP15__locale_structS1_z (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $5 - (get_local $4) - ) - (get_local $3) - ) - (set_local $1 - (call $_uselocale - (get_local $1) - ) - ) - (set_local $0 - (call $_vsscanf - (get_local $0) - (get_local $2) - (get_local $5) - ) - ) - (if - (get_local $1) - (drop - (call $_uselocale - (get_local $1) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $0) - ) - (func $__ZNKSt3__25ctypeIcE10do_toupperEPcPKc (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (if - (i32.gt_s - (tee_local $0 - (i32.load8_s - (get_local $1) - ) - ) - (i32.const -1) - ) - (set_local $0 - (i32.and - (i32.load - (i32.add - (i32.load - (call $___ctype_toupper_loc) - ) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - ) - (i32.const 255) - ) - ) - ) - (i32.store8 - (get_local $1) - (get_local $0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (get_local $2) - ) - (func $__ZNKSt3__25ctypeIcE10do_tolowerEPcPKc (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (if - (i32.gt_s - (tee_local $0 - (i32.load8_s - (get_local $1) - ) - ) - (i32.const -1) - ) - (set_local $0 - (i32.and - (i32.load - (i32.add - (i32.load - (call $___ctype_tolower_loc) - ) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - ) - (i32.const 255) - ) - ) - ) - (i32.store8 - (get_local $1) - (get_local $0) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (get_local $2) - ) - (func $__ZNKSt3__25ctypeIcE9do_narrowEPKcS3_cPc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store8 - (get_local $4) - (if i32 - (i32.gt_s - (tee_local $0 - (i32.load8_s - (get_local $1) - ) - ) - (i32.const -1) - ) - (get_local $0) - (get_local $3) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (get_local $2) - ) - (func $__ZNSt3__28ios_base16__call_callbacksENS0_5eventE (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (set_local $3 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - (set_local $4 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - (set_local $2 - (i32.load offset=40 - (get_local $0) - ) - ) - (loop $while-in - (if - (get_local $2) - (block - (call_indirect $FUNCSIG$viii - (get_local $1) - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $4) - ) - (i32.shl - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.and - (i32.load - (i32.add - (i32.load - (get_local $3) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - (i32.const 0) - ) - (i32.const 376) - ) - ) - (br $while-in) - ) - ) - ) - ) - (func $__ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (if - (i32.eq - (get_local $0) - (i32.load offset=8 - (get_local $1) - ) - ) - (call $__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi - (i32.const 0) - (get_local $1) - (get_local $2) - (get_local $3) - ) - ) - ) - (func $___muldsi3 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $0 - (i32.add - (i32.shr_u - (tee_local $4 - (i32.mul - (tee_local $2 - (i32.and - (get_local $1) - (i32.const 65535) - ) - ) - (tee_local $3 - (i32.and - (get_local $0) - (i32.const 65535) - ) - ) - ) - ) - (i32.const 16) - ) - (i32.mul - (get_local $2) - (tee_local $2 - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - ) - (set_local $1 - (i32.mul - (tee_local $5 - (i32.shr_u - (get_local $1) - (i32.const 16) - ) - ) - (get_local $3) - ) - ) - (set_global $tempRet0 - (i32.add - (i32.add - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.mul - (get_local $5) - (get_local $2) - ) - ) - (i32.shr_u - (i32.add - (i32.and - (get_local $0) - (i32.const 65535) - ) - (get_local $1) - ) - (i32.const 16) - ) - ) - ) - (i32.or - (i32.shl - (i32.add - (get_local $0) - (get_local $1) - ) - (i32.const 16) - ) - (i32.and - (get_local $4) - (i32.const 65535) - ) - ) - ) - (func $_memmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.and - (i32.lt_s - (get_local $1) - (get_local $0) - ) - (i32.lt_s - (get_local $0) - (i32.add - (get_local $1) - (get_local $2) - ) - ) - ) - (block - (set_local $3 - (get_local $0) - ) - (set_local $1 - (i32.add - (get_local $1) - (get_local $2) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (get_local $2) - ) - ) - (loop $while-in - (if - (i32.gt_s - (get_local $2) - (i32.const 0) - ) - (block - (set_local $2 - (i32.sub - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (tee_local $0 - (i32.sub - (get_local $0) - (i32.const 1) - ) - ) - (i32.load8_s - (tee_local $1 - (i32.sub - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - (br $while-in) - ) - ) - ) - (set_local $0 - (get_local $3) - ) - ) - (drop - (call $_memcpy - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__210moneypunctIwLb1EE16do_positive_signEv (param $0 i32) (param $1 i32) - (local $2 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - (loop $while-in - (if - (i32.ne - (get_local $2) - (i32.const 3) - ) - (block - (i32.store - (i32.add - (get_local $0) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (func $_copysign (param $0 f64) (param $1 f64) (result f64) - (local $2 i32) - (f64.store - (get_global $tempDoublePtr) - (get_local $1) - ) - (set_local $2 - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - ) - (f64.store - (get_global $tempDoublePtr) - (f64.abs - (get_local $0) - ) - ) - (set_local $2 - (i32.or - (i32.and - (get_local $2) - (i32.const -2147483648) - ) - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - ) - ) - (i32.store - (get_global $tempDoublePtr) - (i32.load - (get_global $tempDoublePtr) - ) - ) - (i32.store offset=4 - (get_global $tempDoublePtr) - (get_local $2) - ) - (f64.load - (get_global $tempDoublePtr) - ) - ) - (func $__ZNSt3__211__stdoutbufIwE5imbueERKNS_6localeE (param $0 i32) (param $1 i32) - (local $2 i32) - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store offset=36 - (get_local $0) - (tee_local $2 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 21008) - ) - ) - ) - (i32.store8 offset=44 - (get_local $0) - (i32.and - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const 1) - ) - ) - ) - (func $__ZNSt3__211__stdoutbufIcE5imbueERKNS_6localeE (param $0 i32) (param $1 i32) - (local $2 i32) - (drop - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=24 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (i32.store offset=36 - (get_local $0) - (tee_local $2 - (call $__ZNKSt3__26locale9use_facetERNS0_2idE - (get_local $1) - (i32.const 21000) - ) - ) - ) - (i32.store8 offset=44 - (get_local $0) - (i32.and - (call_indirect $FUNCSIG$ii - (get_local $2) - (i32.add - (i32.and - (i32.load offset=28 - (i32.load - (get_local $2) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const 1) - ) - ) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE7seekoffExNS_8ios_base7seekdirEj (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (i32.store - (tee_local $1 - (get_local $0) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const -1) - ) - (i32.store offset=4 - (get_local $0) - (i32.const -1) - ) - ) - (func $___uflow (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $0 - (block $__rjto$0 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.load offset=8 - (get_local $0) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (call $___toread - (get_local $0) - ) - ) - ) - (br $__rjto$0 - (i32.const -1) - ) - ) - (if i32 - (i32.eq - (call_indirect $FUNCSIG$iiii - (get_local $0) - (get_local $2) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=32 - (get_local $0) - ) - (i32.const 31) - ) - (i32.const 8) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (get_local $2) - ) - (i32.const -1) - ) - ) - ) - (set_global $STACKTOP - (get_local $1) - ) - (get_local $0) - ) - (func $___uremdi3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (drop - (call $___udivmoddi4 - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $3) - (tee_local $0 - (get_local $4) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (set_global $tempRet0 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.load - (get_local $0) - ) - ) - (func $__ZNKSt3__220__time_get_c_storageIwE3__xEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17096) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17096) - ) - (block - (i32.store - (i32.const 20872) - (i32.const 0) - ) - (i32.store - (i32.const 20876) - (i32.const 0) - ) - (i32.store - (i32.const 20880) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj - (i32.const 20872) - (i32.const 8512) - (call $_wcslen - (i32.const 8512) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 106) - (i32.const 20872) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20872) - ) - (func $__ZNKSt3__220__time_get_c_storageIwE3__rEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17088) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17088) - ) - (block - (i32.store - (i32.const 20860) - (i32.const 0) - ) - (i32.store - (i32.const 20864) - (i32.const 0) - ) - (i32.store - (i32.const 20868) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj - (i32.const 20860) - (i32.const 8464) - (call $_wcslen - (i32.const 8464) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 106) - (i32.const 20860) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20860) - ) - (func $__ZNKSt3__220__time_get_c_storageIwE3__cEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17080) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17080) - ) - (block - (i32.store - (i32.const 20848) - (i32.const 0) - ) - (i32.store - (i32.const 20852) - (i32.const 0) - ) - (i32.store - (i32.const 20856) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj - (i32.const 20848) - (i32.const 8380) - (call $_wcslen - (i32.const 8380) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 106) - (i32.const 20848) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20848) - ) - (func $__ZNKSt3__220__time_get_c_storageIwE3__XEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17104) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17104) - ) - (block - (i32.store - (i32.const 20884) - (i32.const 0) - ) - (i32.store - (i32.const 20888) - (i32.const 0) - ) - (i32.store - (i32.const 20892) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj - (i32.const 20884) - (i32.const 8548) - (call $_wcslen - (i32.const 8548) - ) - ) - (drop - (call $___cxa_atexit - (i32.const 106) - (i32.const 20884) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20884) - ) - (func $__ZNSt3__25ctypeIcEC2EPKtbj (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - (i32.store - (get_local $0) - (i32.const 9204) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $1) - ) - (i32.store8 offset=12 - (get_local $0) - (i32.and - (get_local $2) - (i32.const 1) - ) - ) - (if - (i32.eqz - (get_local $1) - ) - (i32.store - (get_local $4) - (i32.load - (call $___ctype_b_loc) - ) - ) - ) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI11__mbstate_tEEj (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (i32.store - (tee_local $1 - (get_local $0) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const -1) - ) - (i32.store offset=4 - (get_local $0) - (i32.const -1) - ) - ) - (func $__ZNKSt3__220__time_get_c_storageIcE3__rEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17008) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17008) - ) - (block - (i32.store - (i32.const 20048) - (i32.const 0) - ) - (i32.store - (i32.const 20052) - (i32.const 0) - ) - (i32.store - (i32.const 20056) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (i32.const 20048) - (i32.const 14701) - (i32.const 11) - ) - (drop - (call $___cxa_atexit - (i32.const 102) - (i32.const 20048) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20048) - ) - (func $__ZNKSt3__220__time_get_c_storageIcE3__xEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17016) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17016) - ) - (block - (i32.store - (i32.const 20060) - (i32.const 0) - ) - (i32.store - (i32.const 20064) - (i32.const 0) - ) - (i32.store - (i32.const 20068) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (i32.const 20060) - (i32.const 14713) - (i32.const 8) - ) - (drop - (call $___cxa_atexit - (i32.const 102) - (i32.const 20060) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20060) - ) - (func $__ZNKSt3__220__time_get_c_storageIcE3__XEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17024) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17024) - ) - (block - (i32.store - (i32.const 20072) - (i32.const 0) - ) - (i32.store - (i32.const 20076) - (i32.const 0) - ) - (i32.store - (i32.const 20080) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (i32.const 20072) - (i32.const 14722) - (i32.const 8) - ) - (drop - (call $___cxa_atexit - (i32.const 102) - (i32.const 20072) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20072) - ) - (func $__ZNKSt3__220__time_get_c_storageIcE3__cEv (param $0 i32) (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17000) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17000) - ) - (block - (i32.store - (i32.const 20036) - (i32.const 0) - ) - (i32.store - (i32.const 20040) - (i32.const 0) - ) - (i32.store - (i32.const 20044) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (i32.const 20036) - (i32.const 14680) - (i32.const 20) - ) - (drop - (call $___cxa_atexit - (i32.const 102) - (i32.const 20036) - (get_global $___dso_handle) - ) - ) - ) - ) - ) - (i32.const 20036) - ) - (func $__ZNKSt3__25ctypeIcE8do_widenEPKcS3_Pc (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store8 - (get_local $3) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (get_local $2) - ) - (func $__ZNKSt3__25ctypeIwE8do_widenEPKcS3_Pw (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (loop $while-in - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (i32.store - (get_local $3) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (get_local $2) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE5uflowEv (param $0 i32) (result i32) - (local $1 i32) - (tee_local $0 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (i32.const -1) - (block i32 - (set_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.load - (get_local $0) - ) - ) - ) - ) - ) - (func $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEE5uflowEv (param $0 i32) (result i32) - (local $1 i32) - (tee_local $0 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$ii - (get_local $0) - (i32.add - (i32.and - (i32.load offset=36 - (i32.load - (get_local $0) - ) - ) - (i32.const 63) - ) - (i32.const 312) - ) - ) - (i32.const -1) - ) - (i32.const -1) - (block i32 - (set_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.load8_u - (get_local $0) - ) - ) - ) - ) - ) - (func $_wmemcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (get_local $2) - (block - (set_local $3 - (get_local $2) - ) - (set_local $2 - (get_local $0) - ) - (loop $while-in - (i32.store - (get_local $2) - (i32.load - (get_local $1) - ) - ) - (if - (tee_local $3 - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - (block - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (set_local $2 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEEC2Ev (param $0 i32) - (local $1 i32) - (i32.store - (get_local $0) - (i32.const 6368) - ) - (call $__ZNSt3__26localeC2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=12 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=16 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=20 - (get_local $1) - (i32.const 0) - ) - ) - (func $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEEC2Ev (param $0 i32) - (local $1 i32) - (i32.store - (get_local $0) - (i32.const 6304) - ) - (call $__ZNSt3__26localeC2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=12 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=16 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=20 - (get_local $1) - (i32.const 0) - ) - ) - (func $__ZNSt3__28ios_base4InitD2Ev (param $0 i32) - (drop - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE5flushEv - (i32.const 18336) - ) - ) - (drop - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE5flushEv - (i32.const 18420) - ) - ) - (drop - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE5flushEv - (i32.const 18672) - ) - ) - (drop - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEE5flushEv - (i32.const 18756) - ) - ) - ) - (func $___shlim (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (i32.store offset=104 - (get_local $0) - (get_local $1) - ) - (i32.store offset=108 - (get_local $0) - (tee_local $4 - (i32.sub - (tee_local $2 - (i32.load offset=8 - (get_local $0) - ) - ) - (tee_local $3 - (i32.load offset=4 - (get_local $0) - ) - ) - ) - ) - ) - (if - (i32.and - (i32.ne - (get_local $1) - (i32.const 0) - ) - (i32.gt_s - (get_local $4) - (get_local $1) - ) - ) - (i32.store offset=100 - (get_local $0) - (i32.add - (get_local $3) - (get_local $1) - ) - ) - (i32.store offset=100 - (get_local $0) - (get_local $2) - ) - ) - ) - (func $__Znwj (param $0 i32) (result i32) - (local $1 i32) - (if - (i32.eqz - (get_local $0) - ) - (set_local $0 - (i32.const 1) - ) - ) - (loop $while-in - (block $while-out - (if - (tee_local $1 - (call $_malloc - (get_local $0) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out) - ) - ) - (if - (tee_local $1 - (call $__ZSt15get_new_handlerv) - ) - (block - (call_indirect $FUNCSIG$v - (i32.add - (i32.and - (get_local $1) - (i32.const 3) - ) - (i32.const 377) - ) - ) - (br $while-in) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (get_local $0) - ) - (func $__ZNKSt3__28numpunctIwE12do_falsenameEv (param $0 i32) (param $1 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj - (get_local $0) - (i32.const 9348) - (call $_wcslen - (i32.const 9348) - ) - ) - ) - (func $__ZNSt3__28ios_baseD2Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 6288) - ) - (call $__ZNSt3__28ios_base16__call_callbacksENS0_5eventE - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__26localeD2Ev - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (call $_free - (i32.load offset=32 - (get_local $0) - ) - ) - (call $_free - (i32.load offset=36 - (get_local $0) - ) - ) - (call $_free - (i32.load offset=48 - (get_local $0) - ) - ) - (call $_free - (i32.load offset=60 - (get_local $0) - ) - ) - ) - (func $__ZNKSt3__28numpunctIwE11do_truenameEv (param $0 i32) (param $1 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj - (get_local $0) - (i32.const 9328) - (call $_wcslen - (i32.const 9328) - ) - ) - ) - (func $__ZNKSt3__27codecvtIcc11__mbstate_tE6do_outERS1_PKcS5_RS5_PcS7_RS7_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (i32.store - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $7) - (get_local $5) - ) - (i32.const 3) - ) - (func $_sn_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (if - (i32.gt_u - (tee_local $0 - (i32.sub - (i32.load offset=16 - (get_local $0) - ) - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - ) - ) - (get_local $2) - ) - (set_local $0 - (get_local $2) - ) - ) - (drop - (call $_memcpy - (get_local $4) - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $0) - ) - ) - (get_local $2) - ) - (func $__ZNKSt3__210moneypunctIwLb1EE16do_negative_signEv (param $0 i32) (param $1 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEjw - (get_local $0) - (i32.const 1) - (i32.const 45) - ) - ) - (func $__ZNKSt3__210moneypunctIcLb1EE16do_negative_signEv (param $0 i32) (param $1 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc - (get_local $0) - (i32.const 1) - (i32.const 45) - ) - ) - (func $__ZNKSt3__28messagesIwE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (i32.shr_u - (tee_local $3 - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj - (if i32 - (i32.lt_s - (i32.load8_s offset=11 - (get_local $1) - ) - (i32.const 0) - ) - (i32.load - (get_local $1) - ) - (get_local $1) - ) - (i32.const 1) - ) - ) - (i32.ne - (get_local $3) - (i32.const -1) - ) - ) - ) - (func $__ZNKSt3__28numpunctIcE12do_falsenameEv (param $0 i32) (param $1 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (get_local $0) - (i32.const 15939) - (i32.const 5) - ) - ) - (func $__ZNKSt3__28numpunctIcE11do_truenameEv (param $0 i32) (param $1 i32) - (i32.store - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj - (get_local $0) - (i32.const 15934) - (i32.const 4) - ) - ) - (func $__ZNSt3__214__shared_count16__release_sharedEv (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (tee_local $0 - (if i32 - (get_local $1) - (i32.const 0) - (block i32 - (call_indirect $FUNCSIG$vi - (get_local $0) - (i32.add - (i32.and - (i32.load offset=8 - (i32.load - (get_local $0) - ) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - (i32.const 1) - ) - ) - ) - ) - (func $dynCall_iiiiiiiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (result i32) - (call_indirect $FUNCSIG$iiiiiiiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - (get_local $7) - (get_local $8) - (i32.add - (i32.and - (get_local $0) - (i32.const 15) - ) - (i32.const 381) - ) - ) - ) - (func $_abort_message (param $0 i32) (param $1 i32) - (local $2 i32) - (set_local $2 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (get_local $2) - (get_local $1) - ) - (drop - (call $_vfprintf - (tee_local $1 - (i32.load - (i32.const 2700) - ) - ) - (get_local $0) - (get_local $2) - ) - ) - (drop - (call $_fputc - (i32.const 10) - (get_local $1) - ) - ) - (call $_abort) - ) - (func $_snprintf (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $5 - (get_local $4) - ) - (get_local $3) - ) - (set_local $0 - (call $_vsnprintf - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $5) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $0) - ) - (func $___stdio_close (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $2 - (get_local $1) - ) - (i32.load offset=60 - (get_local $0) - ) - ) - (set_local $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (get_local $2) - ) - ) - ) - (set_global $STACKTOP - (get_local $1) - ) - (get_local $0) - ) - (func $__ZNKSt3__27codecvtIDsc11__mbstate_tE9do_lengthERS1_PKcS5_j (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (call $__ZNSt3__2L20utf8_to_utf16_lengthEPKhS1_jmNS_12codecvt_modeE - (get_local $2) - (get_local $3) - (get_local $4) - (i32.const 1114111) - (i32.const 0) - ) - ) - (func $__ZNKSt3__27codecvtIDic11__mbstate_tE9do_lengthERS1_PKcS5_j (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (call $__ZNSt3__2L19utf8_to_ucs4_lengthEPKhS1_jmNS_12codecvt_modeE - (get_local $2) - (get_local $3) - (get_local $4) - (i32.const 1114111) - (i32.const 0) - ) - ) - (func $__ZNKSt3__27codecvtIwc11__mbstate_tE13do_max_lengthEv (param $0 i32) (result i32) - (tee_local $0 - (if i32 - (tee_local $0 - (i32.load offset=8 - (get_local $0) - ) - ) - (if i32 - (tee_local $0 - (call $_uselocale - (get_local $0) - ) - ) - (block i32 - (drop - (call $_uselocale - (get_local $0) - ) - ) - (i32.const 4) - ) - (i32.const 4) - ) - (i32.const 1) - ) - ) - ) - (func $dynCall_iiiiiiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (call_indirect $FUNCSIG$iiiiiiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - (get_local $7) - (i32.and - (get_local $0) - (i32.const 7) - ) - ) - ) - (func $_sscanf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $4 - (get_local $3) - ) - (get_local $2) - ) - (set_local $0 - (call $_vsscanf - (get_local $0) - (get_local $1) - (get_local $4) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $0) - ) - (func $_wmemset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (get_local $2) - (block - (set_local $3 - (get_local $0) - ) - (loop $while-in - (i32.store - (get_local $3) - (get_local $1) - ) - (if - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (get_local $0) - ) - (func $___cxa_get_globals_fast (result i32) - (local $0 i32) - (local $1 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (if - (call $_pthread_once - (i32.const 21124) - (i32.const 2) - ) - (call $_abort_message - (i32.const 16444) - (get_local $0) - ) - (block - (set_local $1 - (call $_pthread_getspecific - (i32.load - (i32.const 21128) - ) - ) - ) - (set_global $STACKTOP - (get_local $0) - ) - (return - (get_local $1) - ) - ) - ) - (i32.const 0) - ) - (func $__ZNKSt3__210moneypunctIwLb1EE13do_pos_formatEv (param $0 i32) (param $1 i32) - (i32.store8 - (get_local $0) - (i32.const 2) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.const 3) - ) - (i32.store8 offset=2 - (get_local $0) - (i32.const 0) - ) - (i32.store8 offset=3 - (get_local $0) - (i32.const 4) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_9money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20976) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_9money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20968) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_9money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20960) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_9money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20952) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20912) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20904) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20896) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20084) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19272) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19264) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19256) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19232) - ) - ) - ) - (func $__ZNKSt3__27codecvtIcc11__mbstate_tE9do_lengthERS1_PKcS5_j (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (if i32 - (i32.lt_u - (tee_local $5 - (i32.sub - (get_local $3) - (get_local $2) - ) - ) - (get_local $4) - ) - (get_local $5) - (get_local $4) - ) - ) - (func $_bitshift64Shl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (get_local $2) - (i32.const 32) - ) - (block - (set_global $tempRet0 - (i32.or - (i32.shl - (get_local $1) - (get_local $2) - ) - (i32.shr_u - (i32.and - (get_local $0) - (i32.shl - (i32.sub - (i32.shl - (i32.const 1) - (get_local $2) - ) - (i32.const 1) - ) - (i32.sub - (i32.const 32) - (get_local $2) - ) - ) - ) - (i32.sub - (i32.const 32) - (get_local $2) - ) - ) - ) - ) - (return - (i32.shl - (get_local $0) - (get_local $2) - ) - ) - ) - ) - (set_global $tempRet0 - (i32.shl - (get_local $0) - (i32.sub - (get_local $2) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - (func $__ZNSt3__27codecvtIwc11__mbstate_tED2Ev (param $0 i32) - (local $1 i32) - (i32.store - (get_local $0) - (i32.const 9136) - ) - (if - (i32.ne - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (call $__ZNSt3__26__clocEv) - ) - (call $__ZdlPv - (i32.load - (get_local $1) - ) - ) - ) - ) - (func $__ZNKSt3__25ctypeIwE5do_isEtw (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if i32 - (i32.lt_u - (get_local $2) - (i32.const 128) - ) - (i32.ne - (i32.and - (i32.and - (i32.load16_s - (i32.add - (i32.load - (call $___ctype_b_loc) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - ) - (get_local $1) - ) - (i32.const 65535) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $__ZN10__cxxabiv112_GLOBAL__N_19destruct_EPv (param $0 i32) - (local $1 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $_free - (get_local $0) - ) - (if - (call $_pthread_setspecific - (i32.load - (i32.const 21128) - ) - (i32.const 0) - ) - (call $_abort_message - (i32.const 16341) - (get_local $1) - ) - (set_global $STACKTOP - (get_local $1) - ) - ) - ) - (func $_bitshift64Lshr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (get_local $2) - (i32.const 32) - ) - (block - (set_global $tempRet0 - (i32.shr_u - (get_local $1) - (get_local $2) - ) - ) - (return - (i32.or - (i32.shr_u - (get_local $0) - (get_local $2) - ) - (i32.shl - (i32.and - (get_local $1) - (i32.sub - (i32.shl - (i32.const 1) - (get_local $2) - ) - (i32.const 1) - ) - ) - (i32.sub - (i32.const 32) - (get_local $2) - ) - ) - ) - ) - ) - ) - (set_global $tempRet0 - (i32.const 0) - ) - (i32.shr_u - (get_local $1) - (i32.sub - (get_local $2) - (i32.const 32) - ) - ) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw (param $0 i32) (param $1 i32) (result i32) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKwj - (get_local $0) - (get_local $1) - (call $_wcslen - (get_local $1) - ) - ) - ) - (func $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc (param $0 i32) (param $1 i32) (result i32) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKcj - (get_local $0) - (get_local $1) - (call $_strlen - (get_local $1) - ) - ) - ) - (func $dynCall_iiiiiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (call_indirect $FUNCSIG$iiiiiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - (i32.add - (i32.and - (get_local $0) - (i32.const 63) - ) - (i32.const 240) - ) - ) - ) - (func $__ZNKSt3__25ctypeIcE10do_tolowerEc (param $0 i32) (param $1 i32) (result i32) - (if i32 - (i32.gt_s - (i32.shr_s - (i32.shl - (get_local $1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - (i32.and - (i32.load - (i32.add - (i32.load - (call $___ctype_tolower_loc) - ) - (i32.shl - (i32.shr_s - (i32.shl - (get_local $1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 2) - ) - ) - ) - (i32.const 255) - ) - (get_local $1) - ) - ) - (func $__ZNKSt3__26locale9use_facetERNS0_2idE (param $0 i32) (param $1 i32) (result i32) - (set_local $0 - (i32.load - (get_local $0) - ) - ) - (set_local $1 - (call $__ZNSt3__26locale2id5__getEv - (get_local $1) - ) - ) - (i32.load - (i32.add - (i32.load offset=8 - (get_local $0) - ) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - ) - (func $__ZNKSt3__25ctypeIcE10do_toupperEc (param $0 i32) (param $1 i32) (result i32) - (if i32 - (i32.gt_s - (i32.shr_s - (i32.shl - (get_local $1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - (i32.and - (i32.load - (i32.add - (i32.load - (call $___ctype_toupper_loc) - ) - (i32.shl - (i32.and - (get_local $1) - (i32.const 255) - ) - (i32.const 2) - ) - ) - ) - (i32.const 255) - ) - (get_local $1) - ) - ) - (func $dynCall_iiiiiid (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 f64) (result i32) - (call_indirect $FUNCSIG$iiiiiid - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - (i32.add - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.const 44) - ) - ) - ) - (func $dynCall_viiiiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (call_indirect $FUNCSIG$viiiiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (get_local $6) - (i32.add - (i32.and - (get_local $0) - (i32.const 7) - ) - (i32.const 405) - ) - ) - ) - (func $__ZNKSt3__28ios_base6getlocEv (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (call $__ZNSt3__26localeC2ERKS0_ - (tee_local $2 - (get_local $1) - ) - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (set_global $STACKTOP - (get_local $1) - ) - (i32.load - (get_local $2) - ) - ) - (func $__ZNKSt3__25ctypeIwE10do_toupperEw (param $0 i32) (param $1 i32) (result i32) - (if i32 - (i32.lt_u - (get_local $1) - (i32.const 128) - ) - (i32.load - (i32.add - (i32.load - (call $___ctype_toupper_loc) - ) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - (get_local $1) - ) - ) - (func $__ZNKSt3__25ctypeIwE10do_tolowerEw (param $0 i32) (param $1 i32) (result i32) - (if i32 - (i32.lt_u - (get_local $1) - (i32.const 128) - ) - (i32.load - (i32.add - (i32.load - (call $___ctype_tolower_loc) - ) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - ) - (get_local $1) - ) - ) - (func $__ZNKSt3__28numpunctIwE11do_groupingEv (param $0 i32) (param $1 i32) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_ - (get_local $0) - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - (func $__ZNKSt3__28numpunctIcE11do_groupingEv (param $0 i32) (param $1 i32) - (call $__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_ - (get_local $0) - (i32.add - (get_local $1) - (i32.const 12) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7codecvtIDsc11__mbstate_tEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 21016) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7codecvtIDic11__mbstate_tEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 21024) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7codecvtIwc11__mbstate_tEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 21008) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7codecvtIcc11__mbstate_tEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 21000) - ) - ) - ) - (func $__ZNKSt3__27codecvtIDsc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (i32.store - (get_local $4) - (get_local $2) - ) - (i32.const 3) - ) - (func $dynCall_iiiiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (call_indirect $FUNCSIG$iiiiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.add - (i32.and - (get_local $0) - (i32.const 31) - ) - (i32.const 429) - ) - ) - ) - (func $runPostSets - (nop) - ) - (func $_i64Subtract (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (set_global $tempRet0 - (i32.sub - (i32.sub - (get_local $1) - (get_local $3) - ) - (i32.gt_u - (get_local $2) - (get_local $0) - ) - ) - ) - (i32.sub - (get_local $0) - (get_local $2) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_10moneypunctIwLb1EEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20944) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_10moneypunctIwLb0EEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20936) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_10moneypunctIcLb1EEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20928) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_10moneypunctIcLb0EEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20920) - ) - ) - ) - (func $__ZN10__cxxabiv112_GLOBAL__N_110construct_Ev - (local $0 i32) - (set_local $0 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (if - (call $_pthread_key_create - (i32.const 21128) - (i32.const 109) - ) - (call $_abort_message - (i32.const 16394) - (get_local $0) - ) - (set_global $STACKTOP - (get_local $0) - ) - ) - ) - (func $__ZTv0_n12_NSt3__213basic_ostreamIwNS_11char_traitsIwEEED0Ev (param $0 i32) - (call $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEED0Ev - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (func $__ZTv0_n12_NSt3__213basic_istreamIwNS_11char_traitsIwEEED0Ev (param $0 i32) - (call $__ZNSt3__213basic_istreamIwNS_11char_traitsIwEEED0Ev - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - ) - ) - (func $__ZNSt3__211char_traitsIwE4moveEPwPKwj (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if i32 - (get_local $2) - (call $_wmemmove - (get_local $0) - (get_local $1) - (get_local $2) - ) - (get_local $0) - ) - ) - (func $__ZNSt3__211char_traitsIwE4copyEPwPKwj (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if i32 - (get_local $2) - (call $_wmemcpy - (get_local $0) - (get_local $1) - (get_local $2) - ) - (get_local $0) - ) - ) - (func $dynCall_iiiiid (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 f64) (result i32) - (call_indirect $FUNCSIG$iiiiid - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.add - (i32.and - (get_local $0) - (i32.const 7) - ) - (i32.const 304) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8numpunctIwEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19248) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8numpunctIcEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19220) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8messagesIwEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20992) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_8messagesIcEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 20984) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7collateIwEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19200) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_7collateIcEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19192) - ) - ) - ) - (func $dynCall_viiiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (call_indirect $FUNCSIG$viiiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (get_local $5) - (i32.add - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.const 40) - ) - ) - ) - (func $__ZNSt3__26localeC2Ev (param $0 i32) - (local $1 i32) - (i32.store - (get_local $0) - (tee_local $1 - (i32.load - (call $__ZNSt3__26locale8__globalEv) - ) - ) - ) - (call $__ZNSt3__214__shared_count12__add_sharedEv - (get_local $1) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_5ctypeIwEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19240) - ) - ) - ) - (func $__ZNSt3__26locale5__imp7installINS_5ctypeIcEEEEvPT_ (param $0 i32) (param $1 i32) - (call $__ZNSt3__26locale5__imp7installEPNS0_5facetEl - (get_local $0) - (get_local $1) - (call $__ZNSt3__26locale2id5__getEv - (i32.const 19208) - ) - ) - ) - (func $__ZNSt3__211char_traitsIwE6assignEPwjw (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if i32 - (get_local $1) - (call $_wmemset - (get_local $0) - (get_local $2) - (get_local $1) - ) - (get_local $0) - ) - ) - (func $__ZNSt3__26locale5__imp11make_globalEv (result i32) - (local $0 i32) - (i32.store - (i32.const 21040) - (tee_local $0 - (i32.load - (call $__ZNSt3__26locale7classicEv) - ) - ) - ) - (call $__ZNSt3__214__shared_count12__add_sharedEv - (get_local $0) - ) - (i32.const 21040) - ) - (func $__ZNSt3__26locale8__globalEv (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17592) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17592) - ) - (block - (drop - (call $__ZNSt3__26locale5__imp11make_globalEv) - ) - (i32.store - (i32.const 21044) - (i32.const 21040) - ) - ) - ) - ) - (i32.load - (i32.const 21044) - ) - ) - (func $__ZNSt3__26locale7classicEv (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 17424) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 17424) - ) - (block - (drop - (call $__ZNSt3__26locale5__imp12make_classicEv) - ) - (i32.store - (i32.const 21036) - (i32.const 21032) - ) - ) - ) - ) - (i32.load - (i32.const 21036) - ) - ) - (func $_wcslen (param $0 i32) (result i32) - (local $1 i32) - (set_local $1 - (get_local $0) - ) - (loop $while-in - (if - (i32.load - (get_local $1) - ) - (block - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (br $while-in) - ) - ) - ) - (i32.shr_s - (i32.sub - (get_local $1) - (get_local $0) - ) - (i32.const 2) - ) - ) - (func $__ZNSt3__26localeC2ERKS0_ (param $0 i32) (param $1 i32) - (local $2 i32) - (i32.store - (get_local $0) - (tee_local $2 - (i32.load - (get_local $1) - ) - ) - ) - (call $__ZNSt3__214__shared_count12__add_sharedEv - (get_local $2) - ) - ) - (func $__ZNSt3__25ctypeIcED2Ev (param $0 i32) - (local $1 i32) - (i32.store - (get_local $0) - (i32.const 9204) - ) - (if - (tee_local $1 - (i32.load offset=8 - (get_local $0) - ) - ) - (if - (i32.load8_s offset=12 - (get_local $0) - ) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev - (get_local $1) - ) - ) - ) - ) - (func $dynCall_iiiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (call_indirect $FUNCSIG$iiiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (i32.add - (i32.and - (get_local $0) - (i32.const 7) - ) - (i32.const 397) - ) - ) - ) - (func $__ZTv0_n12_NSt3__213basic_ostreamIwNS_11char_traitsIwEEED1Ev (param $0 i32) - (call $__ZNSt3__28ios_baseD2Ev - (i32.add - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - (i32.const 4) - ) - ) - ) - (func $__ZTv0_n12_NSt3__213basic_istreamIwNS_11char_traitsIwEEED1Ev (param $0 i32) - (call $__ZNSt3__28ios_baseD2Ev - (i32.add - (i32.add - (get_local $0) - (i32.load - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -12) - ) - ) - ) - (i32.const 8) - ) - ) - ) - (func $__ZNSt3__210__time_putD2Ev (param $0 i32) - (if - (i32.ne - (i32.load - (get_local $0) - ) - (call $__ZNSt3__26__clocEv) - ) - (call $__ZdlPv - (i32.load - (get_local $0) - ) - ) - ) - ) - (func $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev (param $0 i32) - (if - (i32.lt_s - (i32.load8_s offset=11 - (get_local $0) - ) - (i32.const 0) - ) - (call $__ZdlPv - (i32.load - (get_local $0) - ) - ) - ) - ) - (func $dynCall_viiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (call_indirect $FUNCSIG$viiii - (get_local $1) - (get_local $2) - (get_local $3) - (get_local $4) - (i32.add - (i32.and - (get_local $0) - (i32.const 7) - ) - (i32.const 461) - ) - ) - ) - (func $__ZNSt3__28numpunctIwED2Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 9296) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - (func $__ZNSt3__28numpunctIcED2Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 9256) - ) - (call $__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - (func $___syscall_ret (param $0 i32) (result i32) - (if i32 - (i32.gt_u - (get_local $0) - (i32.const -4096) - ) - (block i32 - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (get_local $0) - ) - ) - (i32.const -1) - ) - (get_local $0) - ) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEED0Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 6368) - ) - (call $__ZNSt3__26localeD2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEED0Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 6304) - ) - (call $__ZNSt3__26localeD2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev (param $0 i32) - (call $__ZNSt3__210__time_putD2Ev - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $b11 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (call $abort - (i32.const 11) - ) - (i32.const 0) - ) - (func $__ZNSt3__26locale5facet16__on_zero_sharedEv (param $0 i32) - (if - (get_local $0) - (call_indirect $FUNCSIG$vi - (get_local $0) - (i32.add - (i32.and - (i32.load offset=4 - (i32.load - (get_local $0) - ) - ) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - ) - (func $_i64Add (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (set_global $tempRet0 - (i32.add - (i32.add - (get_local $1) - (get_local $3) - ) - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $0) - (get_local $2) - ) - ) - (get_local $0) - ) - ) - ) - (get_local $4) - ) - (func $_uselocale (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $2 - (i32.load - (tee_local $1 - (i32.add - (call $_pthread_self) - (i32.const 184) - ) - ) - ) - ) - (if - (get_local $0) - (i32.store - (get_local $1) - (get_local $0) - ) - ) - (get_local $2) - ) - (func $__ZNSt3__28ios_base5clearEj (param $0 i32) (param $1 i32) - (i32.store offset=16 - (get_local $0) - (i32.or - (i32.eqz - (i32.load offset=24 - (get_local $0) - ) - ) - (get_local $1) - ) - ) - ) - (func $_strtoull_l (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call $_strtoull - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $___cxa_is_pointer_type (param $0 i32) (result i32) - (if i32 - (get_local $0) - (i32.ne - (call $___dynamic_cast - (get_local $0) - (i32.const 2408) - (i32.const 2464) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $__ZNSt3__26__clocEv (result i32) - (if - (i32.eqz - (i32.load8_s - (i32.const 16944) - ) - ) - (if - (call $___cxa_guard_acquire - (i32.const 16944) - ) - (i32.store - (i32.const 19228) - (call $_newlocale - (i32.const 2147483647) - (i32.const 13970) - (i32.const 0) - ) - ) - ) - ) - (i32.load - (i32.const 19228) - ) - ) - (func $dynCall_iiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect $FUNCSIG$iiii - (get_local $1) - (get_local $2) - (get_local $3) - (i32.add - (i32.and - (get_local $0) - (i32.const 31) - ) - (i32.const 8) - ) - ) - ) - (func $__ZNKSt3__25ctypeIwE9do_narrowEwc (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if i32 - (i32.lt_u - (get_local $1) - (i32.const 128) - ) - (i32.and - (get_local $1) - (i32.const 255) - ) - (get_local $2) - ) - ) - (func $_strtoll_l (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call $_strtoll - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $__ZNKSt3__25ctypeIcE9do_narrowEcc (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if i32 - (i32.gt_s - (i32.shr_s - (i32.shl - (get_local $1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - (get_local $1) - (get_local $2) - ) - ) - (func $___udivdi3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call $___udivmoddi4 - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $3) - (i32.const 0) - ) - ) - (func $__ZNSt3__26locale2id6__initEv (param $0 i32) - (local $1 i32) - (i32.store - (i32.const 19216) - (i32.add - (tee_local $1 - (i32.load - (i32.const 19216) - ) - ) - (i32.const 1) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - (func $__ZNSt3__214__shared_count12__add_sharedEv (param $0 i32) - (local $1 i32) - (i32.store - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (i32.add - (i32.load - (get_local $1) - ) - (i32.const 1) - ) - ) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEED2Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 6368) - ) - (call $__ZNSt3__26localeD2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (func $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEED2Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 6304) - ) - (call $__ZNSt3__26localeD2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (func $_strtoll (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $_strtox_545 - (get_local $0) - (get_local $1) - (get_local $2) - (i32.const 0) - (i32.const -2147483648) - ) - ) - (func $__ZNSt3__28time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev (param $0 i32) - (call $__ZNSt3__210__time_putD2Ev - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (func $___cxa_guard_acquire (param $0 i32) (result i32) - (if i32 - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.const 1) - ) - (i32.const 0) - (block i32 - (i32.store8 - (get_local $0) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (func $dynCall_viii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (call_indirect $FUNCSIG$viii - (get_local $1) - (get_local $2) - (get_local $3) - (i32.add - (i32.and - (get_local $0) - (i32.const 0) - ) - (i32.const 376) - ) - ) - ) - (func $b0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) - (call $abort - (i32.const 0) - ) - (i32.const 0) - ) - (func $stackAlloc (param $0 i32) (result i32) - (local $1 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (get_local $0) - ) - ) - (set_global $STACKTOP - (i32.and - (i32.add - (get_global $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (get_local $1) - ) - (func $_strtoull (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $_strtox_545 - (get_local $0) - (get_local $1) - (get_local $2) - (i32.const -1) - (i32.const -1) - ) - ) - (func $__ZNSt3__211__stdoutbufIwED0Ev (param $0 i32) - (call $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEED2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNSt3__211__stdoutbufIcED0Ev (param $0 i32) - (call $__ZNSt3__215basic_streambufIcNS_11char_traitsIcEEED2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEED0Ev (param $0 i32) - (call $__ZNSt3__28ios_baseD2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNSt3__213basic_istreamIwNS_11char_traitsIwEEED0Ev (param $0 i32) - (call $__ZNSt3__28ios_baseD2Ev - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $___errno_location (result i32) - (if i32 - (i32.load - (i32.const 17600) - ) - (i32.load offset=64 - (call $_pthread_self) - ) - (i32.const 17644) - ) - ) - (func $_isxdigit (param $0 i32) (result i32) - (if i32 - (i32.lt_u - (i32.add - (get_local $0) - (i32.const -48) - ) - (i32.const 10) - ) - (i32.const 1) - (i32.lt_u - (i32.add - (i32.or - (get_local $0) - (i32.const 32) - ) - (i32.const -97) - ) - (i32.const 6) - ) - ) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE6setbufEPwi (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (get_local $0) - ) - (func $__ZNSt3__27codecvtIwc11__mbstate_tED0Ev (param $0 i32) - (call $__ZNSt3__27codecvtIwc11__mbstate_tED2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $establishStackSpace (param $0 i32) (param $1 i32) - (set_global $STACKTOP - (get_local $0) - ) - (set_global $STACK_MAX - (get_local $1) - ) - ) - (func $_catgets (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (get_local $3) - ) - (func $__ZNKSt3__221__basic_string_commonILb1EE20__throw_length_errorEv (param $0 i32) - (call $___assert_fail - (i32.const 16091) - (i32.const 16120) - (i32.const 1183) - (i32.const 16197) - ) - ) - (func $dynCall_iii (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call_indirect $FUNCSIG$iii - (get_local $1) - (get_local $2) - (i32.add - (i32.and - (get_local $0) - (i32.const 15) - ) - (i32.const 413) - ) - ) - ) - (func $__ZNSt3__26localeD2Ev (param $0 i32) - (drop - (call $__ZNSt3__214__shared_count16__release_sharedEv - (i32.load - (get_local $0) - ) - ) - ) - ) - (func $_wctomb (param $0 i32) (param $1 i32) (result i32) - (if i32 - (get_local $0) - (call $_wcrtomb - (get_local $0) - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $__ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv (param $0 i32) - (call $___assert_fail - (i32.const 15966) - (i32.const 15989) - (i32.const 304) - (i32.const 16197) - ) - ) - (func $b6 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (call $abort - (i32.const 6) - ) - (i32.const 0) - ) - (func $b3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 f64) (result i32) - (call $abort - (i32.const 3) - ) - (i32.const 0) - ) - (func $__ZNSt3__213basic_ostreamIwNS_11char_traitsIwEEED1Ev (param $0 i32) - (call $__ZNSt3__28ios_baseD2Ev - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (func $__ZNSt3__213basic_istreamIwNS_11char_traitsIwEEED1Ev (param $0 i32) - (call $__ZNSt3__28ios_baseD2Ev - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (func $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev (param $0 i32) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $setThrew (param $0 i32) (param $1 i32) - (if - (i32.eqz - (get_global $__THREW__) - ) - (block - (set_global $__THREW__ - (get_local $0) - ) - (set_global $threwValue - (get_local $1) - ) - ) - ) - ) - (func $__ZNKSt3__28time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13do_date_orderEv (param $0 i32) (result i32) - (i32.const 2) - ) - (func $__ZNSt3__210__stdinbufIwE9underflowEv (param $0 i32) (result i32) - (call $__ZNSt3__210__stdinbufIwE9__getcharEb - (get_local $0) - (i32.const 0) - ) - ) - (func $__ZNSt3__210__stdinbufIcE9underflowEv (param $0 i32) (result i32) - (call $__ZNSt3__210__stdinbufIcE9__getcharEb - (get_local $0) - (i32.const 0) - ) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE (param $0 i32) (param $1 i32) - (nop) - ) - (func $dynCall_vii (param $0 i32) (param $1 i32) (param $2 i32) - (call_indirect $FUNCSIG$vii - (get_local $1) - (get_local $2) - (i32.add - (i32.and - (get_local $0) - (i32.const 63) - ) - (i32.const 176) - ) - ) - ) - (func $b13 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (call $abort - (i32.const 13) - ) - ) - (func $__ZNSt3__210__stdinbufIwE5uflowEv (param $0 i32) (result i32) - (call $__ZNSt3__210__stdinbufIwE9__getcharEb - (get_local $0) - (i32.const 1) - ) - ) - (func $__ZNSt3__210__stdinbufIcE5uflowEv (param $0 i32) (result i32) - (call $__ZNSt3__210__stdinbufIcE9__getcharEb - (get_local $0) - (i32.const 1) - ) - ) - (func $_mbsinit (param $0 i32) (result i32) - (if i32 - (get_local $0) - (i32.eqz - (i32.load - (get_local $0) - ) - ) - (i32.const 1) - ) - ) - (func $_mbrlen (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $_mbrtowc - (i32.const 0) - (get_local $0) - (get_local $1) - (if i32 - (get_local $2) - (get_local $2) - (i32.const 17660) - ) - ) - ) - (func $__ZNSt3__26locale5__imp12make_classicEv (result i32) - (call $__ZNSt3__26locale5__impC2Ej - (i32.const 17432) - (i32.const 1) - ) - (i32.store - (i32.const 21032) - (i32.const 17432) - ) - (i32.const 21032) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj (param $0 i32) (param $1 i32) (result i32) - (i32.const -1) - ) - (func $_do_read (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $___string_read - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (func $__ZNSt3__26locale5__impD0Ev (param $0 i32) - (call $__ZNSt3__26locale5__impD2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $b15 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (call $abort - (i32.const 15) - ) - (i32.const 0) - ) - (func $__ZNSt3__28numpunctIwED0Ev (param $0 i32) - (call $__ZNSt3__28numpunctIwED2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNSt3__28numpunctIcED0Ev (param $0 i32) - (call $__ZNSt3__28numpunctIcED2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__GLOBAL__I_000101 - (call $__ZNSt3__28ios_base4InitC2Ev - (i32.const 0) - ) - (drop - (call $___cxa_atexit - (i32.const 96) - (i32.const 23208) - (get_global $___dso_handle) - ) - ) - ) - (func $b7 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 f64) (result i32) - (call $abort - (i32.const 7) - ) - (i32.const 0) - ) - (func $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev (param $0 i32) - (nop) - ) - (func $__ZNSt3__28ios_baseD0Ev (param $0 i32) - (call $__ZNSt3__28ios_baseD2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNSt3__25ctypeIcED0Ev (param $0 i32) - (call $__ZNSt3__25ctypeIcED2Ev - (get_local $0) - ) - (call $__ZdlPv - (get_local $0) - ) - ) - (func $__ZNKSt3__28numpunctIwE16do_thousands_sepEv (param $0 i32) (result i32) - (i32.load offset=12 - (get_local $0) - ) - ) - (func $dynCall_ii (param $0 i32) (param $1 i32) (result i32) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.add - (i32.and - (get_local $0) - (i32.const 63) - ) - (i32.const 312) - ) - ) - ) - (func $__ZNKSt3__28numpunctIwE16do_decimal_pointEv (param $0 i32) (result i32) - (i32.load offset=8 - (get_local $0) - ) - ) - (func $__ZNKSt3__28numpunctIcE16do_thousands_sepEv (param $0 i32) (result i32) - (i32.load8_s offset=9 - (get_local $0) - ) - ) - (func $__ZNKSt3__28numpunctIcE16do_decimal_pointEv (param $0 i32) (result i32) - (i32.load8_s offset=8 - (get_local $0) - ) - ) - (func $__ZNKSt3__25ctypeIwE8do_widenEc (param $0 i32) (param $1 i32) (result i32) - (i32.shr_s - (i32.shl - (get_local $1) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (func $b2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (call $abort - (i32.const 2) - ) - ) - (func $__ZSt15get_new_handlerv (result i32) - (local $0 i32) - (i32.store - (i32.const 21132) - (tee_local $0 - (i32.load - (i32.const 21132) - ) - ) - ) - (get_local $0) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9underflowEv (param $0 i32) (result i32) - (i32.const -1) - ) - (func $__ZNSt3__215basic_streambufIwNS_11char_traitsIwEEE9showmanycEv (param $0 i32) (result i32) - (i32.const 0) - ) - (func $b12 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call $abort - (i32.const 12) - ) - (i32.const 0) - ) - (func $__ZNKSt3__210moneypunctIwLb1EE16do_thousands_sepEv (param $0 i32) (result i32) - (i32.const 2147483647) - ) - (func $dynCall_vi (param $0 i32) (param $1 i32) - (call_indirect $FUNCSIG$vi - (get_local $1) - (i32.add - (i32.and - (get_local $0) - (i32.const 127) - ) - (i32.const 48) - ) - ) - ) - (func $_strtold_l (param $0 i32) (param $1 i32) (param $2 i32) (result f64) - (call $_strtox - (get_local $0) - (get_local $1) - (i32.const 2) - ) - ) - (func $__ZNKSt3__27codecvtIcc11__mbstate_tE16do_always_noconvEv (param $0 i32) (result i32) - (i32.const 1) - ) - (func $_cleanup_522 (param $0 i32) - (if - (i32.eqz - (i32.load offset=68 - (get_local $0) - ) - ) - (call $__ZNSt3__29money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev - (get_local $0) - ) - ) - ) - (func $__ZNKSt3__27codecvtIDsc11__mbstate_tE13do_max_lengthEv (param $0 i32) (result i32) - (i32.const 4) - ) - (func $__ZNKSt3__25ctypeIcE8do_widenEc (param $0 i32) (param $1 i32) (result i32) - (get_local $1) - ) - (func $__ZNKSt3__210moneypunctIcLb1EE16do_thousands_sepEv (param $0 i32) (result i32) - (i32.const 127) - ) - (func $b16 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (call $abort - (i32.const 16) - ) - ) - (func $_isspace (param $0 i32) (result i32) - (i32.or - (i32.eq - (get_local $0) - (i32.const 32) - ) - (i32.lt_u - (i32.add - (get_local $0) - (i32.const -9) - ) - (i32.const 5) - ) - ) - ) - (func $_isdigit_l (param $0 i32) (param $1 i32) (result i32) - (i32.lt_u - (i32.add - (get_local $0) - (i32.const -48) - ) - (i32.const 10) - ) - ) - (func $__ZNSt9bad_allocC2Ev (param $0 i32) - (i32.store - (get_local $0) - (i32.const 9700) - ) - ) - (func $b1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $abort - (i32.const 1) - ) - (i32.const 0) - ) - (func $_isxdigit_l (param $0 i32) (param $1 i32) (result i32) - (call $_isxdigit - (get_local $0) - ) - ) - (func $_copysignl (param $0 f64) (param $1 f64) (result f64) - (call $_copysign - (get_local $0) - (get_local $1) - ) - ) - (func $_scalbnl (param $0 f64) (param $1 i32) (result f64) - (call $_scalbn - (get_local $0) - (get_local $1) - ) - ) - (func $dynCall_v (param $0 i32) - (call_indirect $FUNCSIG$v - (i32.add - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.const 377) - ) - ) - ) - (func $_frexpl (param $0 f64) (param $1 i32) (result f64) - (call $_frexp - (get_local $0) - (get_local $1) - ) - ) - (func $b9 (param $0 i32) (param $1 i32) (param $2 i32) - (call $abort - (i32.const 9) - ) - ) - (func $__ZNKSt9bad_alloc4whatEv (param $0 i32) (result i32) - (i32.const 16821) - ) - (func $_fmodl (param $0 f64) (param $1 f64) (result f64) - (call $_fmod - (get_local $0) - (get_local $1) - ) - ) - (func $b14 (param $0 i32) (param $1 i32) (result i32) - (call $abort - (i32.const 14) - ) - (i32.const 0) - ) - (func $setTempRet0 (param $0 i32) - (set_global $tempRet0 - (get_local $0) - ) - ) - (func $__ZdlPv (param $0 i32) - (call $_free - (get_local $0) - ) - ) - (func $stackRestore (param $0 i32) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $b5 (param $0 i32) (param $1 i32) - (call $abort - (i32.const 5) - ) - ) - (func $b8 (param $0 i32) (result i32) - (call $abort - (i32.const 8) - ) - (i32.const 0) - ) - (func $___ctype_toupper_loc (result i32) - (i32.const 4708) - ) - (func $___ctype_tolower_loc (result i32) - (i32.const 3168) - ) - (func $getTempRet0 (result i32) - (get_global $tempRet0) - ) - (func $stackSave (result i32) - (get_global $STACKTOP) - ) - (func $b4 (param $0 i32) - (call $abort - (i32.const 4) - ) - ) - (func $___ctype_b_loc (result i32) - (i32.const 3164) - ) - (func $_pthread_self (result i32) - (i32.const 0) - ) - (func $b10 - (call $abort - (i32.const 10) - ) - ) -) diff --git a/libraries/wasm-jit/Test/Blake2b/blake2b.wast b/libraries/wasm-jit/Test/Blake2b/blake2b.wast deleted file mode 100644 index 046b74d3a0d..00000000000 --- a/libraries/wasm-jit/Test/Blake2b/blake2b.wast +++ /dev/null @@ -1,1344 +0,0 @@ -;; Blake2b hash function - -(module - (import "env" "_fwrite" (func $__fwrite (param i32 i32 i32 i32) (result i32))) - (import "env" "_stdout" (global $stdoutPtr i32)) - (import "env" "memory" (memory 1)) - (import "env" "_sbrk" (func $sbrk (param i32) (result i32))) - (export "main" (func $main)) - - (table anyfunc (elem $threadEntry $threadError)) - - (global $numThreads i32 (i32.const 8)) - (global $numIterationsPerThread i32 (i32.const 10)) - - ;; IV array - (global $ivAddress i32 (i32.const 0)) ;; 64 byte IV array - (data (i32.const 0) - "\08\c9\bc\f3\67\e6\09\6a" - "\3b\a7\ca\84\85\ae\67\bb" - "\2b\f8\94\fe\72\f3\6e\3c" - "\f1\36\1d\5f\3a\f5\4f\a5" - "\d1\82\e6\ad\7f\52\0e\51" - "\1f\6c\3e\2b\8c\68\05\9b" - "\6b\bd\41\fb\ab\d9\83\1f" - "\79\21\7e\13\19\cd\e0\5b" - ) - - (global $pAddress i32 (i32.const 64)) ;; 64 byte Param struct - (data (i32.const 64) - "\40" ;; digest_length - "\00" ;; key_length - "\01" ;; fanout - "\01" ;; depth - "\00\00\00\00" ;; leaf_length - "\00\00\00\00" ;; node_offset - "\00\00\00\00" ;; xof_length - "\00" ;; node_depth - "\00" ;; inner_length - "\00\00\00\00\00\00\00\00\00\00\00\00\00\00" ;; reserved - "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" ;; salt - "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" ;; personal - ) - - ;; lookup table for converting a nibble to a hexit - (global $hexitTable i32 (i32.const 128)) - (data (i32.const 128) "0123456789abcdef") - - (global $dataAddress (mut i32) (i32.const 0)) - (global $dataNumBytes (mut i32) (i32.const 134217728)) - - (global $numPendingThreadsAddress i32 (i32.const 144)) ;; 4 bytes - (global $outputStringAddress i32 (i32.const 148)) ;; 129 bytes - - (global $statesArrayAddress i32 (i32.const 1024)) ;; 128*N per-thread state blocks. - - (func $compress - (param $threadStateAddress i32) - (param $blockAddress i32) - - (local $row1l v128) - (local $row1h v128) - (local $row2l v128) - (local $row2h v128) - (local $row3l v128) - (local $row3h v128) - (local $row4l v128) - (local $row4h v128) - (local $b0 v128) - (local $b1 v128) - (local $t0 v128) - (local $t1 v128) - - ;; Initialize the state - - (set_local $row1l (v128.load offset=0 (get_local $threadStateAddress))) - (set_local $row1h (v128.load offset=16 (get_local $threadStateAddress))) - (set_local $row2l (v128.load offset=32 (get_local $threadStateAddress))) - (set_local $row2h (v128.load offset=48 (get_local $threadStateAddress))) - (set_local $row3l (v128.load offset=0 (get_global $ivAddress))) - (set_local $row3h (v128.load offset=16 (get_global $ivAddress))) - (set_local $row4l (v128.xor (v128.load offset=32 (get_global $ivAddress)) (v128.load offset=64 (get_local $threadStateAddress)))) - (set_local $row4h (v128.xor (v128.load offset=48 (get_global $ivAddress)) (v128.load offset=80 (get_local $threadStateAddress)))) - - ;; Round 0 - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 1 - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=96 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7) (v128.load offset=0 (get_local $blockAddress)) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 2 - - (set_local $b0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - (set_local $b1 (v128.bitselect (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=96 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v128.bitselect (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 3 - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v128.bitselect (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - (set_local $b1 (v128.bitselect (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 4 - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v128.bitselect (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - (set_local $b1 (v128.bitselect (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v128.bitselect (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - (set_local $b1 (v128.bitselect (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - (set_local $b1 (v128.bitselect (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=96 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 5 - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v128.bitselect (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - (set_local $b1 (v128.bitselect (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 6 - - (set_local $b0 (v128.bitselect (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=96 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7) (v128.load offset=64 (get_local $blockAddress)) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v128.bitselect (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 7 - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - (set_local $b1 (v128.bitselect (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 8 - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v128.load offset=96 (get_local $blockAddress))) - (set_local $b1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v128.bitselect (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - (set_local $b1 (v128.load offset=32 (get_local $blockAddress))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 9 - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - (set_local $b1 (v128.bitselect (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)) (v128.const 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0 0 0 0 0 0 0 0))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=16 (get_local $blockAddress)) (v128.load offset=96 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=0 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 10 - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=0 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=32 (get_local $blockAddress)) (v128.load offset=48 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=80 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Round 11 - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=112 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=64 (get_local $blockAddress)) (v128.load offset=96 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=64 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=112 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - (set_local $b0 (v8x16.shuffle (8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7) (v128.load offset=0 (get_local $blockAddress)) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=80 (get_local $blockAddress)) (v128.load offset=32 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (4 5 6 7 0 1 2 3 12 13 14 15 8 9 10 11) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row2h (v8x16.shuffle (3 4 5 6 7 0 1 2 11 12 13 14 15 8 9 10) (get_local $row2h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - - (set_local $b0 (v8x16.shuffle (0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23) (v128.load offset=96 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - (set_local $b1 (v8x16.shuffle (8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31) (v128.load offset=48 (get_local $blockAddress)) (v128.load offset=16 (get_local $blockAddress)))) - - (set_local $row1l (i64x2.add (i64x2.add (get_local $row1l) (get_local $b0)) (get_local $row2l))) - (set_local $row1h (i64x2.add (i64x2.add (get_local $row1h) (get_local $b1)) (get_local $row2h))) - (set_local $row4l (v128.xor (get_local $row4l) (get_local $row1l))) - (set_local $row4h (v128.xor (get_local $row4h) (get_local $row1h))) - (set_local $row4l (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4l) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row4h (v8x16.shuffle (2 3 4 5 6 7 0 1 10 11 12 13 14 15 8 9) (get_local $row4h) (v128.const 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))) - (set_local $row3l (i64x2.add (get_local $row3l) (get_local $row4l))) - (set_local $row3h (i64x2.add (get_local $row3h) (get_local $row4h))) - (set_local $row2l (v128.xor (get_local $row2l) (get_local $row3l))) - (set_local $row2h (v128.xor (get_local $row2h) (get_local $row3h))) - (set_local $row2l (v128.xor (i64x2.shr_u (get_local $row2l) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2l) (get_local $row2l)))) - (set_local $row2h (v128.xor (i64x2.shr_u (get_local $row2h) (i64x2.splat (i64.const 63))) (i64x2.add (get_local $row2h) (get_local $row2h)))) - - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2l) (get_local $row2h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row2h) (get_local $row2l))) - (set_local $row2l (get_local $t0)) - (set_local $row2h (get_local $t1)) - (set_local $t0 (get_local $row3l)) - (set_local $row3l (get_local $row3h)) - (set_local $row3h (get_local $t0)) - (set_local $t0 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4l) (get_local $row4h))) - (set_local $t1 (v8x16.shuffle (24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7) (get_local $row4h) (get_local $row4l))) - (set_local $row4l (get_local $t1)) - (set_local $row4h (get_local $t0)) - - ;; Update the hash - - (set_local $row1l (v128.xor (get_local $row3l) (get_local $row1l))) - (set_local $row1h (v128.xor (get_local $row3h) (get_local $row1h))) - (v128.store offset=0 (get_local $threadStateAddress) (v128.xor (v128.load offset=0 (get_local $threadStateAddress)) (get_local $row1l))) - (v128.store offset=16 (get_local $threadStateAddress) (v128.xor (v128.load offset=16 (get_local $threadStateAddress)) (get_local $row1h))) - (set_local $row2l (v128.xor (get_local $row4l) (get_local $row2l))) - (set_local $row2h (v128.xor (get_local $row4h) (get_local $row2h))) - (v128.store offset=32 (get_local $threadStateAddress) (v128.xor (v128.load offset=32 (get_local $threadStateAddress)) (get_local $row2l))) - (v128.store offset=48 (get_local $threadStateAddress) (v128.xor (v128.load offset=48 (get_local $threadStateAddress)) (get_local $row2h))) - ) - - (func $memsetAligned - (param $address i32) - (param $value i32) - (param $numBytes i32) - - (local $value128 v128) - (local $endAddress i32) - (local $endAddress128 i32) - - (set_local $value128 (i8x16.splat (get_local $value))) - (set_local $endAddress (i32.add (get_local $address) (get_local $numBytes))) - (set_local $endAddress128 (i32.sub (get_local $endAddress) (i32.const 16))) - - block $loop128End - loop $loop128 - (br_if $loop128End (i32.gt_u (get_local $address) (get_local $endAddress128))) - (v128.store align=16 (get_local $address) (get_local $value128)) - (set_local $address (i32.add (get_local $address) (i32.const 16))) - br $loop128 - end - end - - block $loopEnd - loop $loop - (br_if $loopEnd (i32.ge_u (get_local $address) (get_local $endAddress))) - (i32.store8 (get_local $address) (get_local $value)) - (set_local $address (i32.add (get_local $address) (i32.const 1))) - br $loop - end - end - ) - - (func $blake2b - (param $threadIndex i32) - (param $inputAddress i32) - (param $numBytes i32) - - (local $threadStateAddress i32) - (local $temp i64) - - (set_local $threadStateAddress (i32.add (get_global $statesArrayAddress) (i32.mul (get_local $threadIndex) (i32.const 128)))) - - ;; zero the state - (call $memsetAligned (get_local $threadStateAddress) (i32.const 0) (i32.const 128)) - - ;; initialize the hash to the first 64 bytes of the param struct XORed with the contents of IV - (v128.store offset=0 (get_local $threadStateAddress) (v128.xor - (v128.load offset=0 (get_global $pAddress)) - (v128.load offset=0 (get_global $ivAddress)))) - (v128.store offset=16 (get_local $threadStateAddress) (v128.xor - (v128.load offset=16 (get_global $pAddress)) - (v128.load offset=16 (get_global $ivAddress)))) - (v128.store offset=32 (get_local $threadStateAddress) (v128.xor - (v128.load offset=32 (get_global $pAddress)) - (v128.load offset=32 (get_global $ivAddress)))) - (v128.store offset=48 (get_local $threadStateAddress) (v128.xor - (v128.load offset=48 (get_global $pAddress)) - (v128.load offset=48 (get_global $ivAddress)))) - - block $loopEnd - loop $loop - (br_if $loopEnd (i32.lt_u (get_local $numBytes) (i32.const 128))) - - (set_local $temp (i64.add (i64.load offset=64 (get_local $threadStateAddress)) (i64.const 128))) - (i64.store offset=64 (get_local $threadStateAddress) (get_local $temp)) - (i64.store offset=72 (get_local $threadStateAddress) (i64.add - (i64.load offset=72 (get_local $threadStateAddress)) - (i64.extend_u/i32 (i64.lt_u (get_local $temp) (i64.const 128))))) - - (if (i32.eq (get_local $numBytes) (i32.const 128)) - (i64.store offset=80 (get_local $threadStateAddress) (i64.const 0xffffffffffffffff))) - - (call $compress (get_local $threadStateAddress) (get_local $inputAddress)) - - (set_local $inputAddress (i32.add (get_local $inputAddress) (i32.const 128))) - (set_local $numBytes (i32.sub (get_local $numBytes) (i32.const 128))) - br $loop - end - end - ) - - (func $threadEntry - (param $threadIndex i32) - - (local $i i32) - - ;; Hash the test data enough times to dilute all the non-hash components of the timing. - (set_local $i (i32.const 0)) - loop $iterLoop - (call $blake2b (get_local $threadIndex) (get_global $dataAddress) (get_global $dataNumBytes)) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (br_if $iterLoop (i32.lt_u (get_local $i) (get_global $numIterationsPerThread))) - end - - (i32.eq (i32.const 1) (i32.atomic.rmw.sub (get_global $numPendingThreadsAddress) (i32.const 1))) - if - (drop (wake (get_global $numPendingThreadsAddress) (i32.const 1))) - end - ) - - (func $threadError - (param $threadIndex i32) - - ;; Set the thread error flag and wake the main thread. - (i32.atomic.store (get_global $numPendingThreadsAddress) (i32.const -1)) - (drop (wake (get_global $numPendingThreadsAddress) (i32.const 1))) - ) - - (func $main - (result i32) - (local $stdout i32) - (local $i i32) - (local $byte i32) - - ;; Initialize the test data. - (set_global $dataAddress (call $sbrk (get_global $dataNumBytes))) - (set_local $i (i32.const 0)) - loop $initDataLoop - (i32.store (i32.add (get_global $dataAddress) (get_local $i)) (get_local $i)) - (set_local $i (i32.add (get_local $i) (i32.const 4))) - (br_if $initDataLoop (i32.lt_u (get_local $i) (get_global $dataNumBytes))) - end - - ;; Launch the threads. - (i32.atomic.store (get_global $numPendingThreadsAddress) (get_global $numThreads)) - (set_local $i (i32.const 0)) - loop $threadLoop - (launch_thread (i32.const 0) (get_local $i) (i32.const 1)) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (br_if $threadLoop (i32.lt_u (get_local $i) (get_global $numThreads))) - end - - ;; Wait for the threads to finish. - block $waitLoopEnd - loop $waitLoop - (set_local $i (i32.atomic.load (get_global $numPendingThreadsAddress))) - (br_if $waitLoopEnd (i32.le_s (get_local $i) (i32.const 0))) - (drop (i32.wait (get_global $numPendingThreadsAddress) (get_local $i) (f64.const +inf))) - (br $waitLoop) - end - end - - (i32.eq (i32.atomic.load (get_global $numPendingThreadsAddress)) (i32.const 0)) - if - ;; Create a hexadecimal string from the hash. - (set_local $i (i32.const 0)) - loop $loop - (set_local $byte (i32.load8_u (i32.add (get_global $statesArrayAddress) (get_local $i)))) - (i32.store8 offset=0 - (i32.add (get_global $outputStringAddress) (i32.shl (get_local $i) (i32.const 1))) - (i32.load8_u (i32.add (get_global $hexitTable) (i32.and (get_local $byte) (i32.const 0x0f))))) - (i32.store8 offset=1 - (i32.add (get_global $outputStringAddress) (i32.shl (get_local $i) (i32.const 1))) - (i32.load8_u (i32.add (get_global $hexitTable) (i32.shr_u (get_local $byte) (i32.const 4))))) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (br_if $loop (i32.lt_u (get_local $i) (i32.const 64))) - end - (i32.store8 offset=128 (get_global $outputStringAddress) (i32.const 10)) - - ;; Print the string to the output. - (set_local $stdout (i32.load align=4 (get_global $stdoutPtr))) - (return (call $__fwrite (get_global $outputStringAddress) (i32.const 1) (i32.const 129) (get_local $stdout))) - end - - (return (i32.const 1)) - ) - - (func (export "establishStackSpace") (param i32 i32) (nop)) -) \ No newline at end of file diff --git a/libraries/wasm-jit/Test/fuzz/address.wast b/libraries/wasm-jit/Test/fuzz/address.wast deleted file mode 100644 index 7800b8f50e5..00000000000 --- a/libraries/wasm-jit/Test/fuzz/address.wast +++ /dev/null @@ -1,30 +0,0 @@ -(module - (import "spectest" "print" (func $print (param i32))) - - (memory 1) - (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") - - (func $good (param $i i32) - (call $print (i32.load8_u offset=0 (get_local $i))) ;; 97 'a' - (call $print (i32.load8_u offset=1 (get_local $i))) ;; 98 'b' - (call $print (i32.load8_u offset=2 (get_local $i))) ;; 99 'c' - (call $print (i32.load8_u offset=25 (get_local $i))) ;; 122 'z' - - (call $print (i32.load16_u offset=0 (get_local $i))) ;; 25185 'ab' - (call $print (i32.load16_u align=1 (get_local $i))) ;; 25185 'ab' - (call $print (i32.load16_u offset=1 align=1 (get_local $i))) ;; 25442 'bc' - (call $print (i32.load16_u offset=2 (get_local $i))) ;; 25699 'cd' - (call $print (i32.load16_u offset=25 align=1 (get_local $i))) ;; 122 'z\0' - - (call $print (i32.load offset=0 (get_local $i))) ;; 1684234849 'abcd' - (call $print (i32.load offset=1 align=1 (get_local $i))) ;; 1701077858 'bcde' - (call $print (i32.load offset=2 align=2 (get_local $i))) ;; 1717920867 'cdef' - (call $print (i32.load offset=25 align=1 (get_local $i))) ;; 122 'z\0\0\0' - ) - - (func (export "main") - (call $good (i32.const 0)) - (call $good (i32.const 65507)) - (call $good (i32.const 65508)) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/echo.wast b/libraries/wasm-jit/Test/fuzz/echo.wast deleted file mode 100644 index 53dda324473..00000000000 --- a/libraries/wasm-jit/Test/fuzz/echo.wast +++ /dev/null @@ -1,63 +0,0 @@ -;; Classic Unix echo program in WebAssembly WASM AST - -(module - (data (i32.const 8) "\n\00") - (data (i32.const 12) " \00") - - (import "env" "memory" (memory 1)) - (import "env" "_fwrite" (func $__fwrite (param i32 i32 i32 i32) (result i32))) - (import "env" "_stdout" (global $stdoutPtr (mut i32))) - (export "main" (func $main)) - - (func $strlen (param $s i32) (result i32) - (local $head i32) - (set_local $head (get_local $s)) - (loop $loop - (block $done - (br_if $done (i32.eq (i32.const 0) (i32.load8_u offset=0 (get_local $head)))) - (set_local $head (i32.add (get_local $head) (i32.const 1))) - ;; Would it be worth unrolling offset 1,2,3? - (br $loop) - ) - ) - (return (i32.sub (get_local $head) (get_local $s))) - ) - - (func $fputs (param $s i32) (param $stream i32) (result i32) - (local $len i32) - (set_local $len (call $strlen (get_local $s))) - (return (call $__fwrite - (get_local $s) ;; ptr - (i32.const 1) ;; size_t size => Data size - (get_local $len) ;; size_t nmemb => Length of our string - (get_local $stream))) ;; stream - ) - - (func $main (param $argc i32) (param $argv i32) (result i32) - (local $stdout i32) - (local $s i32) - (local $space i32) - (set_local $space (i32.const 0)) - (set_local $stdout (i32.load align=4 (get_global $stdoutPtr))) - - (loop $loop - (block $done - (set_local $argv (i32.add (get_local $argv) (i32.const 4))) - (set_local $s (i32.load (get_local $argv))) - (br_if $done (i32.eq (i32.const 0) (get_local $s))) - - (if (i32.eq (i32.const 1) (get_local $space)) - (drop (call $fputs (i32.const 12) (get_local $stdout))) ;; ' ' - ) - (set_local $space (i32.const 1)) - - (drop (call $fputs (get_local $s) (get_local $stdout))) - (br $loop) - ) - ) - - (drop (call $fputs (i32.const 8) (get_local $stdout))) ;; \n - - (return (i32.const 0)) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/func_ptrs.wast b/libraries/wasm-jit/Test/fuzz/func_ptrs.wast deleted file mode 100644 index 652a654341b..00000000000 --- a/libraries/wasm-jit/Test/fuzz/func_ptrs.wast +++ /dev/null @@ -1,36 +0,0 @@ -(module - (type $T (func (param) (result i32))) - (type $U (func (param) (result i32))) - (table anyfunc (elem $t1 $t2 $t3 $u1 $u2 $t1 $t3)) - - (func $t1 (type $T) (i32.const 1)) - (func $t2 (type $T) (i32.const 2)) - (func $t3 (type $T) (i32.const 3)) - (func $u1 (type $U) (i32.const 4)) - (func $u2 (type $U) (i32.const 5)) - - (func $callt (param $i i32) (result i32) - (call_indirect $T (get_local $i)) - ) - - (func $callu (param $i i32) (result i32) - (call_indirect $U (get_local $i)) - ) - - (func (export "main") - (drop (call $callt (i32.const 0))) - (drop (call $callt (i32.const 1))) - (drop (call $callt (i32.const 2))) - (drop (call $callt (i32.const 3))) - (drop (call $callt (i32.const 4))) - (drop (call $callt (i32.const 5))) - (drop (call $callt (i32.const 6))) - (drop (call $callu (i32.const 0))) - (drop (call $callu (i32.const 1))) - (drop (call $callu (i32.const 2))) - (drop (call $callu (i32.const 3))) - (drop (call $callu (i32.const 4))) - (drop (call $callu (i32.const 5))) - (drop (call $callu (i32.const 6))) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/globals.wast b/libraries/wasm-jit/Test/fuzz/globals.wast deleted file mode 100644 index 9b43068740a..00000000000 --- a/libraries/wasm-jit/Test/fuzz/globals.wast +++ /dev/null @@ -1,49 +0,0 @@ -;; Test globals - -(module - (global $a i32 (i32.const -2)) - (global (;1;) f32 (f32.const -3)) - (global (;2;) f64 (f64.const -4)) - (global $b i64 (i64.const -5)) - - (global $x (mut i32) (i32.const -12)) - (global (;5;) (mut f32) (f32.const -13)) - (global (;6;) (mut f64) (f64.const -14)) - (global $y (mut i64) (i64.const -15)) - - (func $get-a (result i32) (get_global $a)) - (func $get-b (result i64) (get_global $b)) - (func $get-x (result i32) (get_global $x)) - (func $get-y (result i64) (get_global $y)) - (func $set-x (param i32) (set_global $x (get_local 0))) - (func $set-y (param i64) (set_global $y (get_local 0))) - - (func $get-1 (result f32) (get_global 1)) - (func $get-2 (result f64) (get_global 2)) - (func $get-5 (result f32) (get_global 5)) - (func $get-6 (result f64) (get_global 6)) - (func $set-5 (param f32) (set_global 5 (get_local 0))) - (func $set-6 (param f64) (set_global 6 (get_local 0))) - - (func (export "main") - (drop (call $get-a)) - (drop (call $get-b)) - (drop (call $get-x)) - (drop (call $get-y)) - - (drop (call $get-1)) - (drop (call $get-2)) - (drop (call $get-5)) - (drop (call $get-6)) - - (call $set-x (i32.const 6)) - (call $set-y (i64.const 7)) - (call $set-5 (f32.const 8)) - (call $set-6 (f64.const 9)) - - (drop (call $get-x)) - (drop (call $get-y)) - (drop (call $get-5)) - (drop (call $get-6)) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/helloworld.wast b/libraries/wasm-jit/Test/fuzz/helloworld.wast deleted file mode 100644 index f9c659b62e7..00000000000 --- a/libraries/wasm-jit/Test/fuzz/helloworld.wast +++ /dev/null @@ -1,24 +0,0 @@ -;; WebAssembly WASM AST Hello World! program - -(module - (import "env" "_fwrite" (func $__fwrite (param i32 i32 i32 i32) (result i32))) - (import "env" "_stdout" (global $stdoutPtr (mut i32))) - (import "env" "memory" (memory 1)) - (export "main" (func $main)) - - (data (i32.const 8) "Hello World!\n") - - (func (export "establishStackSpace") (param i32 i32) (nop)) - - (func $main (result i32) - (local $stdout i32) - (set_local $stdout (i32.load align=4 (get_global $stdoutPtr))) - - (return (call $__fwrite - (i32.const 8) ;; void *ptr => Address of our string - (i32.const 1) ;; size_t size => Data size - (i32.const 13) ;; size_t nmemb => Length of our string - (get_local $stdout)) ;; stream - ) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/i32.wast b/libraries/wasm-jit/Test/fuzz/i32.wast deleted file mode 100644 index 2ee5f32c7fc..00000000000 --- a/libraries/wasm-jit/Test/fuzz/i32.wast +++ /dev/null @@ -1,369 +0,0 @@ -;; i32 operations - -(module - (func $add (param $x i32) (param $y i32) (result i32) (i32.add (get_local $x) (get_local $y))) - (func $sub (param $x i32) (param $y i32) (result i32) (i32.sub (get_local $x) (get_local $y))) - (func $mul (param $x i32) (param $y i32) (result i32) (i32.mul (get_local $x) (get_local $y))) - (func $div_s (param $x i32) (param $y i32) (result i32) (i32.div_s (get_local $x) (get_local $y))) - (func $div_u (param $x i32) (param $y i32) (result i32) (i32.div_u (get_local $x) (get_local $y))) - (func $rem_s (param $x i32) (param $y i32) (result i32) (i32.rem_s (get_local $x) (get_local $y))) - (func $rem_u (param $x i32) (param $y i32) (result i32) (i32.rem_u (get_local $x) (get_local $y))) - (func $and (param $x i32) (param $y i32) (result i32) (i32.and (get_local $x) (get_local $y))) - (func $or (param $x i32) (param $y i32) (result i32) (i32.or (get_local $x) (get_local $y))) - (func $xor (param $x i32) (param $y i32) (result i32) (i32.xor (get_local $x) (get_local $y))) - (func $shl (param $x i32) (param $y i32) (result i32) (i32.shl (get_local $x) (get_local $y))) - (func $shr_s (param $x i32) (param $y i32) (result i32) (i32.shr_s (get_local $x) (get_local $y))) - (func $shr_u (param $x i32) (param $y i32) (result i32) (i32.shr_u (get_local $x) (get_local $y))) - (func $rotl (param $x i32) (param $y i32) (result i32) (i32.rotl (get_local $x) (get_local $y))) - (func $rotr (param $x i32) (param $y i32) (result i32) (i32.rotr (get_local $x) (get_local $y))) - (func $clz (param $x i32) (result i32) (i32.clz (get_local $x))) - (func $ctz (param $x i32) (result i32) (i32.ctz (get_local $x))) - (func $popcnt (param $x i32) (result i32) (i32.popcnt (get_local $x))) - (func $eqz (param $x i32) (result i32) (i32.eqz (get_local $x))) - (func $eq (param $x i32) (param $y i32) (result i32) (i32.eq (get_local $x) (get_local $y))) - (func $ne (param $x i32) (param $y i32) (result i32) (i32.ne (get_local $x) (get_local $y))) - (func $lt_s (param $x i32) (param $y i32) (result i32) (i32.lt_s (get_local $x) (get_local $y))) - (func $lt_u (param $x i32) (param $y i32) (result i32) (i32.lt_u (get_local $x) (get_local $y))) - (func $le_s (param $x i32) (param $y i32) (result i32) (i32.le_s (get_local $x) (get_local $y))) - (func $le_u (param $x i32) (param $y i32) (result i32) (i32.le_u (get_local $x) (get_local $y))) - (func $gt_s (param $x i32) (param $y i32) (result i32) (i32.gt_s (get_local $x) (get_local $y))) - (func $gt_u (param $x i32) (param $y i32) (result i32) (i32.gt_u (get_local $x) (get_local $y))) - (func $ge_s (param $x i32) (param $y i32) (result i32) (i32.ge_s (get_local $x) (get_local $y))) - (func $ge_u (param $x i32) (param $y i32) (result i32) (i32.ge_u (get_local $x) (get_local $y))) - - (func (export "main") - (drop (call $add (i32.const 1) (i32.const 1))) - (drop (call $add (i32.const 1) (i32.const 0))) - (drop (call $add (i32.const -1) (i32.const -1)) ) - (drop (call $add (i32.const -1) (i32.const 1))) - (drop (call $add (i32.const 0x7fffffff) (i32.const 1))) - (drop (call $add (i32.const 0x80000000) (i32.const -1))) - (drop (call $add (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $add (i32.const 0x3fffffff) (i32.const 1))) - (drop (call $sub (i32.const 1) (i32.const 1))) - (drop (call $sub (i32.const 1) (i32.const 0))) - (drop (call $sub (i32.const -1) (i32.const -1))) - (drop (call $sub (i32.const 0x7fffffff) (i32.const -1))) - (drop (call $sub (i32.const 0x80000000) (i32.const 1))) - (drop (call $sub (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $sub (i32.const 0x3fffffff) (i32.const -1))) - (drop (call $mul (i32.const 1) (i32.const 1))) - (drop (call $mul (i32.const 1) (i32.const 0))) - (drop (call $mul (i32.const -1) (i32.const -1))) - (drop (call $mul (i32.const 0x10000000) (i32.const 4096))) - (drop (call $mul (i32.const 0x80000000) (i32.const 0))) - (drop (call $mul (i32.const 0x80000000) (i32.const -1))) - (drop (call $mul (i32.const 0x7fffffff) (i32.const -1))) - (drop (call $mul (i32.const 0x01234567) (i32.const 0x76543210))) - (drop (call $div_s (i32.const 1) (i32.const 1))) - (drop (call $div_s (i32.const 0) (i32.const 1))) - (drop (call $div_s (i32.const -1) (i32.const -1))) - (drop (call $div_s (i32.const 0x80000000) (i32.const 2))) - (drop (call $div_s (i32.const 0x80000001) (i32.const 1000))) - (drop (call $div_s (i32.const 5) (i32.const 2))) - (drop (call $div_s (i32.const -5) (i32.const 2)) ) - (drop (call $div_s (i32.const 5) (i32.const -2)) ) - (drop (call $div_s (i32.const -5) (i32.const -2))) - (drop (call $div_s (i32.const 7) (i32.const 3))) - (drop (call $div_s (i32.const -7) (i32.const 3)) ) - (drop (call $div_s (i32.const 7) (i32.const -3)) ) - (drop (call $div_s (i32.const -7) (i32.const -3))) - (drop (call $div_s (i32.const 11) (i32.const 5))) - (drop (call $div_s (i32.const 17) (i32.const 7))) - (drop (call $div_u (i32.const 1) (i32.const 1))) - (drop (call $div_u (i32.const 0) (i32.const 1))) - (drop (call $div_u (i32.const -1) (i32.const -1))) - (drop (call $div_u (i32.const 0x80000000) (i32.const -1))) - (drop (call $div_u (i32.const 0x80000000) (i32.const 2))) - (drop (call $div_u (i32.const 0x8ff00ff0) (i32.const 0x10001))) - (drop (call $div_u (i32.const 0x80000001) (i32.const 1000))) - (drop (call $div_u (i32.const 5) (i32.const 2))) - (drop (call $div_u (i32.const -5) (i32.const 2))) - (drop (call $div_u (i32.const 5) (i32.const -2))) - (drop (call $div_u (i32.const -5) (i32.const -2))) - (drop (call $div_u (i32.const 7) (i32.const 3))) - (drop (call $div_u (i32.const 11) (i32.const 5))) - (drop (call $div_u (i32.const 17) (i32.const 7))) - (drop (call $rem_s (i32.const 0x7fffffff) (i32.const -1))) - (drop (call $rem_s (i32.const 1) (i32.const 1))) - (drop (call $rem_s (i32.const 0) (i32.const 1))) - (drop (call $rem_s (i32.const -1) (i32.const -1))) - (drop (call $rem_s (i32.const 0x80000000) (i32.const -1))) - (drop (call $rem_s (i32.const 0x80000000) (i32.const 2))) - (drop (call $rem_s (i32.const 0x80000001) (i32.const 1000)) ) - (drop (call $rem_s (i32.const 5) (i32.const 2))) - (drop (call $rem_s (i32.const -5) (i32.const 2)) ) - (drop (call $rem_s (i32.const 5) (i32.const -2))) - (drop (call $rem_s (i32.const -5) (i32.const -2)) ) - (drop (call $rem_s (i32.const 7) (i32.const 3))) - (drop (call $rem_s (i32.const -7) (i32.const 3)) ) - (drop (call $rem_s (i32.const 7) (i32.const -3))) - (drop (call $rem_s (i32.const -7) (i32.const -3)) ) - (drop (call $rem_s (i32.const 11) (i32.const 5))) - (drop (call $rem_s (i32.const 17) (i32.const 7))) - (drop (call $rem_u (i32.const 1) (i32.const 1))) - (drop (call $rem_u (i32.const 0) (i32.const 1))) - (drop (call $rem_u (i32.const -1) (i32.const -1))) - (drop (call $rem_u (i32.const 0x80000000) (i32.const -1))) - (drop (call $rem_u (i32.const 0x80000000) (i32.const 2))) - (drop (call $rem_u (i32.const 0x8ff00ff0) (i32.const 0x10001))) - (drop (call $rem_u (i32.const 0x80000001) (i32.const 1000))) - (drop (call $rem_u (i32.const 5) (i32.const 2))) - (drop (call $rem_u (i32.const -5) (i32.const 2))) - (drop (call $rem_u (i32.const 5) (i32.const -2))) - (drop (call $rem_u (i32.const -5) (i32.const -2)) ) - (drop (call $rem_u (i32.const 7) (i32.const 3))) - (drop (call $rem_u (i32.const 11) (i32.const 5))) - (drop (call $rem_u (i32.const 17) (i32.const 7))) - (drop (call $and (i32.const 1) (i32.const 0))) - (drop (call $and (i32.const 0) (i32.const 1))) - (drop (call $and (i32.const 1) (i32.const 1))) - (drop (call $and (i32.const 0) (i32.const 0))) - (drop (call $and (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $and (i32.const 0x7fffffff) (i32.const -1))) - (drop (call $and (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0))) - (drop (call $and (i32.const 0xffffffff) (i32.const 0xffffffff))) - (drop (call $or (i32.const 1) (i32.const 0))) - (drop (call $or (i32.const 0) (i32.const 1))) - (drop (call $or (i32.const 1) (i32.const 1))) - (drop (call $or (i32.const 0) (i32.const 0))) - (drop (call $or (i32.const 0x7fffffff) (i32.const 0x80000000)) ) - (drop (call $or (i32.const 0x80000000) (i32.const 0))) - (drop (call $or (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0))) - (drop (call $or (i32.const 0xffffffff) (i32.const 0xffffffff))) - (drop (call $xor (i32.const 1) (i32.const 0))) - (drop (call $xor (i32.const 0) (i32.const 1))) - (drop (call $xor (i32.const 1) (i32.const 1))) - (drop (call $xor (i32.const 0) (i32.const 0))) - (drop (call $xor (i32.const 0x7fffffff) (i32.const 0x80000000)) ) - (drop (call $xor (i32.const 0x80000000) (i32.const 0))) - (drop (call $xor (i32.const -1) (i32.const 0x80000000))) - (drop (call $xor (i32.const -1) (i32.const 0x7fffffff))) - (drop (call $xor (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0))) - (drop (call $xor (i32.const 0xffffffff) (i32.const 0xffffffff))) - (drop (call $shl (i32.const 1) (i32.const 1))) - (drop (call $shl (i32.const 1) (i32.const 0))) - (drop (call $shl (i32.const 0x7fffffff) (i32.const 1))) - (drop (call $shl (i32.const 0xffffffff) (i32.const 1))) - (drop (call $shl (i32.const 0x80000000) (i32.const 1))) - (drop (call $shl (i32.const 0x40000000) (i32.const 1))) - (drop (call $shl (i32.const 1) (i32.const 31))) - (drop (call $shl (i32.const 1) (i32.const 32))) - (drop (call $shl (i32.const 1) (i32.const 33))) - (drop (call $shl (i32.const 1) (i32.const -1))) - (drop (call $shl (i32.const 1) (i32.const 0x7fffffff))) - (drop (call $shr_s (i32.const 1) (i32.const 1))) - (drop (call $shr_s (i32.const 1) (i32.const 0))) - (drop (call $shr_s (i32.const -1) (i32.const 1)) ) - (drop (call $shr_s (i32.const 0x7fffffff) (i32.const 1))) - (drop (call $shr_s (i32.const 0x80000000) (i32.const 1))) - (drop (call $shr_s (i32.const 0x40000000) (i32.const 1))) - (drop (call $shr_s (i32.const 1) (i32.const 32))) - (drop (call $shr_s (i32.const 1) (i32.const 33))) - (drop (call $shr_s (i32.const 1) (i32.const -1))) - (drop (call $shr_s (i32.const 1) (i32.const 0x7fffffff))) - (drop (call $shr_s (i32.const 1) (i32.const 0x80000000))) - (drop (call $shr_s (i32.const 0x80000000) (i32.const 31)) ) - (drop (call $shr_s (i32.const -1) (i32.const 32)) ) - (drop (call $shr_s (i32.const -1) (i32.const 33)) ) - (drop (call $shr_s (i32.const -1) (i32.const -1)) ) - (drop (call $shr_s (i32.const -1) (i32.const 0x7fffffff)) ) - (drop (call $shr_s (i32.const -1) (i32.const 0x80000000)) ) - (drop (call $shr_u (i32.const 1) (i32.const 1))) - (drop (call $shr_u (i32.const 1) (i32.const 0))) - (drop (call $shr_u (i32.const -1) (i32.const 1))) - (drop (call $shr_u (i32.const 0x7fffffff) (i32.const 1))) - (drop (call $shr_u (i32.const 0x80000000) (i32.const 1))) - (drop (call $shr_u (i32.const 0x40000000) (i32.const 1))) - (drop (call $shr_u (i32.const 1) (i32.const 32))) - (drop (call $shr_u (i32.const 1) (i32.const 33))) - (drop (call $shr_u (i32.const 1) (i32.const -1))) - (drop (call $shr_u (i32.const 1) (i32.const 0x7fffffff))) - (drop (call $shr_u (i32.const 1) (i32.const 0x80000000))) - (drop (call $shr_u (i32.const 0x80000000) (i32.const 31))) - (drop (call $shr_u (i32.const -1) (i32.const 32)) ) - (drop (call $shr_u (i32.const -1) (i32.const 33))) - (drop (call $shr_u (i32.const -1) (i32.const -1))) - (drop (call $shr_u (i32.const -1) (i32.const 0x7fffffff))) - (drop (call $shr_u (i32.const -1) (i32.const 0x80000000)) ) - (drop (call $rotl (i32.const 0xfe00dc00) (i32.const 4))) - (drop (call $rotl (i32.const 0xabcd9876) (i32.const 1))) - (drop (call $rotl (i32.const 0x00008000) (i32.const 37))) - (drop (call $rotl (i32.const 0x769abcdf) (i32.const 0x8000000d))) - (drop (call $rotl (i32.const 1) (i32.const 31))) - (drop (call $rotl (i32.const 0x80000000) (i32.const 1))) - (drop (call $rotr (i32.const 0xb0c1d2e3) (i32.const 0x0005))) - (drop (call $rotr (i32.const 0xb0c1d2e3) (i32.const 0xff05))) - (drop (call $rotr (i32.const 0xff00cc00) (i32.const 1))) - (drop (call $rotr (i32.const 0x00080000) (i32.const 4))) - (drop (call $rotr (i32.const 0x769abcdf) (i32.const 0xffffffed))) - (drop (call $rotr (i32.const 1) (i32.const 1))) - (drop (call $rotr (i32.const 0x80000000) (i32.const 31))) - (drop (call $clz (i32.const 0xffffffff))) - (drop (call $clz (i32.const 0))) - (drop (call $clz (i32.const 0x00008000))) - (drop (call $clz (i32.const 0xff))) - (drop (call $clz (i32.const 0x80000000))) - (drop (call $clz (i32.const 1))) - (drop (call $clz (i32.const 2))) - (drop (call $clz (i32.const 0x7fffffff))) - (drop (call $ctz (i32.const -1))) - (drop (call $ctz (i32.const 0))) - (drop (call $ctz (i32.const 0x00008000))) - (drop (call $ctz (i32.const 0x00010000))) - (drop (call $ctz (i32.const 0x80000000))) - (drop (call $ctz (i32.const 0x7fffffff))) - (drop (call $popcnt (i32.const -1))) - (drop (call $popcnt (i32.const 0))) - (drop (call $popcnt (i32.const 0x00008000))) - (drop (call $popcnt (i32.const 0x80008000))) - (drop (call $popcnt (i32.const 0x7fffffff))) - (drop (call $popcnt (i32.const 0xAAAAAAAA))) - (drop (call $popcnt (i32.const 0x55555555))) - (drop (call $popcnt (i32.const 0xDEADBEEF))) - (drop (call $eqz (i32.const 0))) - (drop (call $eqz (i32.const 1))) - (drop (call $eqz (i32.const 0x80000000))) - (drop (call $eqz (i32.const 0x7fffffff))) - (drop (call $eq (i32.const 0) (i32.const 0))) - (drop (call $eq (i32.const 1) (i32.const 1))) - (drop (call $eq (i32.const -1) (i32.const 1))) - (drop (call $eq (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $eq (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $eq (i32.const -1) (i32.const -1))) - (drop (call $eq (i32.const 1) (i32.const 0))) - (drop (call $eq (i32.const 0) (i32.const 1))) - (drop (call $eq (i32.const 0x80000000) (i32.const 0))) - (drop (call $eq (i32.const 0) (i32.const 0x80000000))) - (drop (call $eq (i32.const 0x80000000) (i32.const -1))) - (drop (call $eq (i32.const -1) (i32.const 0x80000000))) - (drop (call $eq (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $eq (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $ne (i32.const 0) (i32.const 0))) - (drop (call $ne (i32.const 1) (i32.const 1))) - (drop (call $ne (i32.const -1) (i32.const 1))) - (drop (call $ne (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $ne (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $ne (i32.const -1) (i32.const -1))) - (drop (call $ne (i32.const 1) (i32.const 0))) - (drop (call $ne (i32.const 0) (i32.const 1))) - (drop (call $ne (i32.const 0x80000000) (i32.const 0))) - (drop (call $ne (i32.const 0) (i32.const 0x80000000))) - (drop (call $ne (i32.const 0x80000000) (i32.const -1))) - (drop (call $ne (i32.const -1) (i32.const 0x80000000))) - (drop (call $ne (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $ne (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $lt_s (i32.const 0) (i32.const 0))) - (drop (call $lt_s (i32.const 1) (i32.const 1))) - (drop (call $lt_s (i32.const -1) (i32.const 1))) - (drop (call $lt_s (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $lt_s (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $lt_s (i32.const -1) (i32.const -1))) - (drop (call $lt_s (i32.const 1) (i32.const 0))) - (drop (call $lt_s (i32.const 0) (i32.const 1))) - (drop (call $lt_s (i32.const 0x80000000) (i32.const 0))) - (drop (call $lt_s (i32.const 0) (i32.const 0x80000000))) - (drop (call $lt_s (i32.const 0x80000000) (i32.const -1))) - (drop (call $lt_s (i32.const -1) (i32.const 0x80000000))) - (drop (call $lt_s (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $lt_s (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $lt_u (i32.const 0) (i32.const 0))) - (drop (call $lt_u (i32.const 1) (i32.const 1))) - (drop (call $lt_u (i32.const -1) (i32.const 1))) - (drop (call $lt_u (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $lt_u (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $lt_u (i32.const -1) (i32.const -1))) - (drop (call $lt_u (i32.const 1) (i32.const 0))) - (drop (call $lt_u (i32.const 0) (i32.const 1))) - (drop (call $lt_u (i32.const 0x80000000) (i32.const 0))) - (drop (call $lt_u (i32.const 0) (i32.const 0x80000000))) - (drop (call $lt_u (i32.const 0x80000000) (i32.const -1))) - (drop (call $lt_u (i32.const -1) (i32.const 0x80000000))) - (drop (call $lt_u (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $lt_u (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $le_s (i32.const 0) (i32.const 0))) - (drop (call $le_s (i32.const 1) (i32.const 1))) - (drop (call $le_s (i32.const -1) (i32.const 1))) - (drop (call $le_s (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $le_s (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $le_s (i32.const -1) (i32.const -1))) - (drop (call $le_s (i32.const 1) (i32.const 0))) - (drop (call $le_s (i32.const 0) (i32.const 1))) - (drop (call $le_s (i32.const 0x80000000) (i32.const 0))) - (drop (call $le_s (i32.const 0) (i32.const 0x80000000))) - (drop (call $le_s (i32.const 0x80000000) (i32.const -1))) - (drop (call $le_s (i32.const -1) (i32.const 0x80000000))) - (drop (call $le_s (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $le_s (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $le_u (i32.const 0) (i32.const 0))) - (drop (call $le_u (i32.const 1) (i32.const 1))) - (drop (call $le_u (i32.const -1) (i32.const 1))) - (drop (call $le_u (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $le_u (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $le_u (i32.const -1) (i32.const -1))) - (drop (call $le_u (i32.const 1) (i32.const 0))) - (drop (call $le_u (i32.const 0) (i32.const 1))) - (drop (call $le_u (i32.const 0x80000000) (i32.const 0))) - (drop (call $le_u (i32.const 0) (i32.const 0x80000000))) - (drop (call $le_u (i32.const 0x80000000) (i32.const -1))) - (drop (call $le_u (i32.const -1) (i32.const 0x80000000))) - (drop (call $le_u (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $le_u (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $gt_s (i32.const 0) (i32.const 0))) - (drop (call $gt_s (i32.const 1) (i32.const 1))) - (drop (call $gt_s (i32.const -1) (i32.const 1))) - (drop (call $gt_s (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $gt_s (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $gt_s (i32.const -1) (i32.const -1))) - (drop (call $gt_s (i32.const 1) (i32.const 0))) - (drop (call $gt_s (i32.const 0) (i32.const 1))) - (drop (call $gt_s (i32.const 0x80000000) (i32.const 0))) - (drop (call $gt_s (i32.const 0) (i32.const 0x80000000))) - (drop (call $gt_s (i32.const 0x80000000) (i32.const -1))) - (drop (call $gt_s (i32.const -1) (i32.const 0x80000000))) - (drop (call $gt_s (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $gt_s (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $gt_u (i32.const 0) (i32.const 0))) - (drop (call $gt_u (i32.const 1) (i32.const 1))) - (drop (call $gt_u (i32.const -1) (i32.const 1))) - (drop (call $gt_u (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $gt_u (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $gt_u (i32.const -1) (i32.const -1))) - (drop (call $gt_u (i32.const 1) (i32.const 0))) - (drop (call $gt_u (i32.const 0) (i32.const 1))) - (drop (call $gt_u (i32.const 0x80000000) (i32.const 0))) - (drop (call $gt_u (i32.const 0) (i32.const 0x80000000))) - (drop (call $gt_u (i32.const 0x80000000) (i32.const -1))) - (drop (call $gt_u (i32.const -1) (i32.const 0x80000000))) - (drop (call $gt_u (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $gt_u (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $ge_s (i32.const 0) (i32.const 0))) - (drop (call $ge_s (i32.const 1) (i32.const 1))) - (drop (call $ge_s (i32.const -1) (i32.const 1))) - (drop (call $ge_s (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $ge_s (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $ge_s (i32.const -1) (i32.const -1))) - (drop (call $ge_s (i32.const 1) (i32.const 0))) - (drop (call $ge_s (i32.const 0) (i32.const 1))) - (drop (call $ge_s (i32.const 0x80000000) (i32.const 0))) - (drop (call $ge_s (i32.const 0) (i32.const 0x80000000))) - (drop (call $ge_s (i32.const 0x80000000) (i32.const -1))) - (drop (call $ge_s (i32.const -1) (i32.const 0x80000000))) - (drop (call $ge_s (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $ge_s (i32.const 0x7fffffff) (i32.const 0x80000000))) - (drop (call $ge_u (i32.const 0) (i32.const 0))) - (drop (call $ge_u (i32.const 1) (i32.const 1))) - (drop (call $ge_u (i32.const -1) (i32.const 1))) - (drop (call $ge_u (i32.const 0x80000000) (i32.const 0x80000000))) - (drop (call $ge_u (i32.const 0x7fffffff) (i32.const 0x7fffffff))) - (drop (call $ge_u (i32.const -1) (i32.const -1))) - (drop (call $ge_u (i32.const 1) (i32.const 0))) - (drop (call $ge_u (i32.const 0) (i32.const 1))) - (drop (call $ge_u (i32.const 0x80000000) (i32.const 0))) - (drop (call $ge_u (i32.const 0) (i32.const 0x80000000))) - (drop (call $ge_u (i32.const 0x80000000) (i32.const -1))) - (drop (call $ge_u (i32.const -1) (i32.const 0x80000000))) - (drop (call $ge_u (i32.const 0x80000000) (i32.const 0x7fffffff))) - (drop (call $ge_u (i32.const 0x7fffffff) (i32.const 0x80000000))) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/labels.wast b/libraries/wasm-jit/Test/fuzz/labels.wast deleted file mode 100644 index 0ac2b287361..00000000000 --- a/libraries/wasm-jit/Test/fuzz/labels.wast +++ /dev/null @@ -1,297 +0,0 @@ -(module - (func $block (result i32) - (block $exit i32 - (br $exit (i32.const 1)) - (i32.const 0) - ) - ) - - (func $loop1 (result i32) - (local $i i32) - (set_local $i (i32.const 0)) - (block $exit i32 - (loop $cont i32 - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if (i32.eq (get_local $i) (i32.const 5)) - (br $exit (get_local $i)) - ) - (br $cont) - ) - ) - ) - - (func $loop2 (result i32) - (local $i i32) - (set_local $i (i32.const 0)) - (block $exit i32 - (loop $cont i32 - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if (i32.eq (get_local $i) (i32.const 5)) - (br $cont) - ) - (if (i32.eq (get_local $i) (i32.const 8)) - (br $exit (get_local $i)) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (br $cont) - ) - ) - ) - - (func $loop3 (result i32) - (local $i i32) - (set_local $i (i32.const 0)) - (block $exit i32 - (loop $cont i32 - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if (i32.eq (get_local $i) (i32.const 5)) - (br $exit (get_local $i)) - ) - (get_local $i) - ) - ) - ) - - (func $loop4 (param $max i32) (result i32) - (local $i i32) - (set_local $i (i32.const 1)) - (block $exit i32 - (loop $cont i32 - (set_local $i (i32.add (get_local $i) (get_local $i))) - (if (i32.gt_u (get_local $i) (get_local $max)) - (br $exit (get_local $i)) - ) - (br $cont) - ) - ) - ) - - (func $loop5 (result i32) - (i32.add - (loop $l i32 (i32.const 1)) - (i32.const 1) - ) - ) - - (func $if (result i32) - (local $i i32) - (set_local $i (i32.const 0)) - (block - (if $l - (i32.const 1) - (then (br $l) (set_local $i (i32.const 666))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if $l - (i32.const 1) - (then (br $l) (set_local $i (i32.const 666))) - (else (set_local $i (i32.const 888))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if $l - (i32.const 1) - (then (br $l) (set_local $i (i32.const 666))) - (else (set_local $i (i32.const 888))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if $l - (i32.const 0) - (then (set_local $i (i32.const 888))) - (else (br $l) (set_local $i (i32.const 666))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if $l - (i32.const 0) - (then (set_local $i (i32.const 888))) - (else (br $l) (set_local $i (i32.const 666))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - ) - (get_local $i) - ) - - (func $if2 (result i32) - (local $i i32) - (set_local $i (i32.const 0)) - (block - (if - (i32.const 1) - (then (br 0) (set_local $i (i32.const 666))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if - (i32.const 1) - (then (br 0) (set_local $i (i32.const 666))) - (else (set_local $i (i32.const 888))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if - (i32.const 1) - (then (br 0) (set_local $i (i32.const 666))) - (else (set_local $i (i32.const 888))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if - (i32.const 0) - (then (set_local $i (i32.const 888))) - (else (br 0) (set_local $i (i32.const 666))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - (if - (i32.const 0) - (then (set_local $i (i32.const 888))) - (else (br 0) (set_local $i (i32.const 666))) - ) - (set_local $i (i32.add (get_local $i) (i32.const 1))) - ) - (get_local $i) - ) - - (func $switch (param i32) (result i32) - (block $ret i32 - (i32.mul (i32.const 10) - (block $exit i32 - (block $0 - (block $default - (block $3 - (block $2 - (block $1 - (br_table $0 $1 $2 $3 $default (get_local 0)) - ) ;; 1 - ) ;; 2 - (br $exit (i32.const 2)) - ) ;; 3 - (br $ret (i32.const 3)) - ) ;; default - ) ;; 0 - (i32.const 5) - ) - ) - ) - ) - - (func $return (param i32) (result i32) - (block $default - (block $1 - (block $0 - (br_table $0 $1 (get_local 0)) - (br $default) - ) ;; 0 - (return (i32.const 0)) - ) ;; 1 - ) ;; default - (i32.const 2) - ) - - (func $br_if0 (result i32) - (local $i i32) - (set_local $i (i32.const 0)) - (block $outer i32 - (block $inner - (br_if $inner (i32.const 0)) - (set_local $i (i32.or (get_local $i) (i32.const 0x1))) - (br_if $inner (i32.const 1)) - (set_local $i (i32.or (get_local $i) (i32.const 0x2))) - ) - (drop (br_if $outer - (block i32 - (set_local $i (i32.or (get_local $i) (i32.const 0x4))) - (get_local $i) - ) - (i32.const 0) - )) - (set_local $i (i32.or (get_local $i) (i32.const 0x8))) - (drop (br_if $outer - (block i32 - (set_local $i (i32.or (get_local $i) (i32.const 0x10))) - (get_local $i) - ) - (i32.const 1) - )) - (set_local $i (i32.or (get_local $i) (i32.const 0x20))) (get_local $i) - ) - ) - - (func $br_if1 (result i32) - (block $l0 i32 - (drop (br_if $l0 (block $l1 i32 (br $l1 (i32.const 1))) (i32.const 1))) - (i32.const 1) - ) - ) - - (func $br_if2 (result i32) - (block $l0 i32 - (if (i32.const 1) - (br $l0 (block $l1 i32 (br $l1 (i32.const 1)))) - ) - (i32.const 1) - ) - ) - - (func $br_if3 (result i32) - (local $i1 i32) - (drop - (i32.add - (block $l0 i32 - (drop (br_if $l0 - (block i32 (set_local $i1 (i32.const 1)) (get_local $i1)) - (block i32 (set_local $i1 (i32.const 2)) (get_local $i1)) - )) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (get_local $i1) - ) - - (func $br (result i32) - (block $l0 i32 - (if (i32.const 1) - (br $l0 (block $l1 i32 (br $l1 (i32.const 1)))) - (block (drop (block $l1 i32 (br $l1 (i32.const 1))))) - ) - (i32.const 1) - ) - ) - - (func $shadowing (result i32) - (block $l1 i32 (i32.xor (br $l1 (i32.const 1)) (i32.const 2))) - ) - - (func $redefinition (result i32) - (block $l1 i32 - (i32.add - (block $l1 i32 (i32.const 2)) - (block $l1 i32 (br $l1 (i32.const 3))) - ) - ) - ) - - (func (export "main") - (drop (call $block)) - (drop (call $loop1)) - (drop (call $loop2)) - (drop (call $loop3)) - (drop (call $loop4 (i32.const 8))) - (drop (call $loop5)) - (drop (call $if)) - (drop (call $if2)) - (drop (call $switch (i32.const 0))) - (drop (call $switch (i32.const 1))) - (drop (call $switch (i32.const 2))) - (drop (call $switch (i32.const 3))) - (drop (call $switch (i32.const 4))) - (drop (call $switch (i32.const 5))) - (drop (call $return (i32.const 0))) - (drop (call $return (i32.const 1))) - (drop (call $return (i32.const 2))) - (drop (call $br_if0)) - (drop (call $br_if1)) - (drop (call $br_if2)) - (drop (call $br_if3)) - (drop (call $br)) - (drop (call $shadowing)) - (drop (call $redefinition)) - ) -) \ No newline at end of file diff --git a/libraries/wasm-jit/Test/fuzz/loop.wast b/libraries/wasm-jit/Test/fuzz/loop.wast deleted file mode 100644 index f5423e368c6..00000000000 --- a/libraries/wasm-jit/Test/fuzz/loop.wast +++ /dev/null @@ -1,219 +0,0 @@ -;; Test `loop` opcode - -(module - (func $dummy) - - (func $empty - (loop) - (loop $l) - ) - - (func $singular (result i32) - (loop (nop)) - (loop i32 (i32.const 7)) - ) - - (func $multi (result i32) - (loop (call $dummy) (call $dummy) (call $dummy) (call $dummy)) - (loop i32 (call $dummy) (call $dummy) (call $dummy) (i32.const 8)) - ) - - (func $nested (result i32) - (loop i32 - (loop (call $dummy) (block) (nop)) - (loop i32 (call $dummy) (i32.const 9)) - ) - ) - - (func $deep (result i32) - (loop i32 (block i32 (loop i32 (block i32 (loop i32 (block i32 - (loop i32 (block i32 (loop i32 (block i32 (loop i32 (block i32 - (loop i32 (block i32 (loop i32 (block i32 (loop i32 (block i32 - (loop i32 (block i32 (loop i32 (block i32 (loop i32 (block i32 - (loop i32 (block i32 (loop i32 (block i32 (loop i32 (block i32 - (loop i32 (block i32 (loop i32 (block i32 (loop i32 (block i32 - (loop i32 (block i32 (loop i32 (block i32 (loop i32 (block i32 - (loop i32 (block i32 (call $dummy) (i32.const 150))) - )))))) - )))))) - )))))) - )))))) - )))))) - )))))) - )))))) - ) - - (func $as-unary-operand (result i32) - (i32.ctz (loop i32 (call $dummy) (i32.const 13))) - ) - (func $as-binary-operand (result i32) - (i32.mul - (loop i32 (call $dummy) (i32.const 3)) - (loop i32 (call $dummy) (i32.const 4)) - ) - ) - (func $as-test-operand (result i32) - (i32.eqz (loop i32 (call $dummy) (i32.const 13))) - ) - (func $as-compare-operand (result i32) - (f32.gt - (loop f32 (call $dummy) (f32.const 3)) - (loop f32 (call $dummy) (f32.const 3)) - ) - ) - - (func $break-bare (result i32) - (block (loop (br 1) (br 0) (unreachable))) - (block (loop (br_if 1 (i32.const 1)) (unreachable))) - (block (loop (br_table 1 (i32.const 0)) (unreachable))) - (block (loop (br_table 1 1 1 (i32.const 1)) (unreachable))) - (i32.const 19) - ) - (func $break-value (result i32) - (block i32 (loop i32 (br 1 (i32.const 18)) (br 0) (i32.const 19))) - ) - (func $break-repeated (result i32) - (block i32 - (loop i32 - (br 1 (i32.const 18)) - (br 1 (i32.const 19)) - (drop (br_if 1 (i32.const 20) (i32.const 0))) - (drop (br_if 1 (i32.const 20) (i32.const 1))) - (br 1 (i32.const 21)) - (br_table 1 (i32.const 22) (i32.const 0)) - (br_table 1 1 1 (i32.const 23) (i32.const 1)) - (i32.const 21) - ) - ) - ) - (func $break-inner (result i32) - (local i32) - (set_local 0 (i32.const 0)) - (set_local 0 (i32.add (get_local 0) (block i32 (loop i32 (block i32 (br 2 (i32.const 0x1))))))) - (set_local 0 (i32.add (get_local 0) (block i32 (loop i32 (loop i32 (br 2 (i32.const 0x2))))))) - (set_local 0 (i32.add (get_local 0) (block i32 (loop i32 (block i32 (loop i32 (br 1 (i32.const 0x4)))))))) - (set_local 0 (i32.add (get_local 0) (block i32 (loop i32 (i32.ctz (br 1 (i32.const 0x8))))))) - (set_local 0 (i32.add (get_local 0) (block i32 (loop i32 (i32.ctz (loop i32 (br 2 (i32.const 0x10)))))))) - (get_local 0) - ) - (func $cont-inner (result i32) - (local i32) - (set_local 0 (i32.const 0)) - (set_local 0 (i32.add (get_local 0) (loop i32 (loop i32 (br 1))))) - (set_local 0 (i32.add (get_local 0) (loop i32 (i32.ctz (br 0))))) - (set_local 0 (i32.add (get_local 0) (loop i32 (i32.ctz (loop i32 (br 1)))))) - (get_local 0) - ) - - (func $effects (result i32) - (local i32) - (block - (loop - (set_local 0 (i32.const 1)) - (set_local 0 (i32.mul (get_local 0) (i32.const 3))) - (set_local 0 (i32.sub (get_local 0) (i32.const 5))) - (set_local 0 (i32.mul (get_local 0) (i32.const 7))) - (br 1) - (set_local 0 (i32.mul (get_local 0) (i32.const 100))) - ) - ) - (i32.eq (get_local 0) (i32.const -14)) - ) - - (func $while (param i64) (result i64) - (local i64) - (set_local 1 (i64.const 1)) - (block - (loop - (br_if 1 (i64.eqz (get_local 0))) - (set_local 1 (i64.mul (get_local 0) (get_local 1))) - (set_local 0 (i64.sub (get_local 0) (i64.const 1))) - (br 0) - ) - ) - (get_local 1) - ) - - (func $for (param i64) (result i64) - (local i64 i64) - (set_local 1 (i64.const 1)) - (set_local 2 (i64.const 2)) - (block - (loop - (br_if 1 (i64.gt_u (get_local 2) (get_local 0))) - (set_local 1 (i64.mul (get_local 1) (get_local 2))) - (set_local 2 (i64.add (get_local 2) (i64.const 1))) - (br 0) - ) - ) - (get_local 1) - ) - - (func $nesting (param f32 f32) (result f32) - (local f32 f32) - (block - (loop - (br_if 1 (f32.eq (get_local 0) (f32.const 0))) - (set_local 2 (get_local 1)) - (block - (loop - (br_if 1 (f32.eq (get_local 2) (f32.const 0))) - (br_if 3 (f32.lt (get_local 2) (f32.const 0))) - (set_local 3 (f32.add (get_local 3) (get_local 2))) - (set_local 2 (f32.sub (get_local 2) (f32.const 2))) - (br 0) - ) - ) - (set_local 3 (f32.div (get_local 3) (get_local 0))) - (set_local 0 (f32.sub (get_local 0) (f32.const 1))) - (br 0) - ) - ) - (get_local 3) - ) - - (func (export "main") - (call $empty) - (drop (call $singular)) - (drop (call $multi)) - (drop (call $nested)) - (drop (call $deep)) - (drop (call $as-unary-operand)) - (drop (call $as-binary-operand)) - (drop (call $as-test-operand)) - (drop (call $as-compare-operand)) - (drop (call $break-bare)) - (drop (call $break-value)) - (drop (call $break-repeated)) - (drop (call $break-inner)) - (drop (call $effects)) - (drop (call $while (i64.const 0))) - (drop (call $while (i64.const 1))) - (drop (call $while (i64.const 2))) - (drop (call $while (i64.const 3))) - (drop (call $while (i64.const 5))) - (drop (call $while (i64.const 20))) - (drop (call $for (i64.const 0))) - (drop (call $for (i64.const 1))) - (drop (call $for (i64.const 2))) - (drop (call $for (i64.const 3))) - (drop (call $for (i64.const 5))) - (drop (call $for (i64.const 20))) - (drop (call $nesting (f32.const 0) (f32.const 7))) - (drop (call $nesting (f32.const 7) (f32.const 0))) - (drop (call $nesting (f32.const 1) (f32.const 1))) - (drop (call $nesting (f32.const 1) (f32.const 2))) - (drop (call $nesting (f32.const 1) (f32.const 3))) - (drop (call $nesting (f32.const 1) (f32.const 4))) - (drop (call $nesting (f32.const 1) (f32.const 20))) - (drop (call $nesting (f32.const 1) (f32.const 21))) - (drop (call $nesting (f32.const 2) (f32.const 1))) - (drop (call $nesting (f32.const 3) (f32.const 1))) - (drop (call $nesting (f32.const 10) (f32.const 1))) - (drop (call $nesting (f32.const 2) (f32.const 2))) - (drop (call $nesting (f32.const 2) (f32.const 3))) - (drop (call $nesting (f32.const 7) (f32.const 4))) - (drop (call $nesting (f32.const 7) (f32.const 20))) - (drop (call $nesting (f32.const 7) (f32.const 21))) - ) -) \ No newline at end of file diff --git a/libraries/wasm-jit/Test/fuzz/resizing.wast b/libraries/wasm-jit/Test/fuzz/resizing.wast deleted file mode 100644 index 73eb37b2aac..00000000000 --- a/libraries/wasm-jit/Test/fuzz/resizing.wast +++ /dev/null @@ -1,29 +0,0 @@ -(module - (memory 0) - - (func $load_at_zero (result i32) (i32.load (i32.const 0))) - (func $store_at_zero (i32.store (i32.const 0) (i32.const 2))) - - (func $load_at_page_size (result i32) (i32.load (i32.const 0x10000))) - (func $store_at_page_size (i32.store (i32.const 0x10000) (i32.const 3))) - - (func $grow (param $sz i32) (result i32) (grow_memory (get_local $sz))) - (func $size (result i32) (current_memory)) - - (func (export "main") - (drop (call $size)) - (drop (call $grow (i32.const 1))) - (drop (call $size)) - (drop (call $load_at_zero)) - (call $store_at_zero) - (drop (call $load_at_zero)) - (drop (call $grow (i32.const 4))) - (drop (call $size)) - (drop (call $load_at_zero)) - (call $store_at_zero) - (drop (call $load_at_zero)) - (drop (call $load_at_page_size)) - (call $store_at_page_size) - (drop (call $load_at_page_size)) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/return.wast b/libraries/wasm-jit/Test/fuzz/return.wast deleted file mode 100644 index 71b074ec9a8..00000000000 --- a/libraries/wasm-jit/Test/fuzz/return.wast +++ /dev/null @@ -1,265 +0,0 @@ -;; Test `return` operator - -(module - ;; Auxiliary definition - (func $dummy) - - (func $type-i32 (drop (i32.ctz (return)))) - (func $type-i64 (drop (i64.ctz (return)))) - (func $type-f32 (drop (f32.neg (return)))) - (func $type-f64 (drop (f64.neg (return)))) - - (func $nullary (return)) - (func $unary (result f64) (return (f64.const 3))) - - (func $as-func-first (result i32) - (return (i32.const 1)) (i32.const 2) - ) - (func $as-func-mid (result i32) - (call $dummy) (return (i32.const 2)) (i32.const 3) - ) - (func $as-func-last - (nop) (call $dummy) (return) - ) - (func $as-func-value (result i32) - (nop) (call $dummy) (return (i32.const 3)) - ) - - (func $as-block-first - (block (return) (call $dummy)) - ) - (func $as-block-mid - (block (call $dummy) (return) (call $dummy)) - ) - (func $as-block-last - (block (nop) (call $dummy) (return)) - ) - (func $as-block-value (result i32) - (block i32 (nop) (call $dummy) (return (i32.const 2))) - ) - - (func $as-loop-first (result i32) - (loop i32 (return (i32.const 3)) (i32.const 2)) - ) - (func $as-loop-mid (result i32) - (loop i32 (call $dummy) (return (i32.const 4)) (i32.const 2)) - ) - (func $as-loop-last (result i32) - (loop i32 (nop) (call $dummy) (return (i32.const 5))) - ) - - (func $as-br-value (result i32) - (block i32 (br 0 (return (i32.const 9)))) - ) - - (func $as-br_if-cond - (block (br_if 0 (return))) - ) - (func $as-br_if-value (result i32) - (block i32 (br_if 0 (return (i32.const 8)) (i32.const 1)) (i32.const 7)) - ) - (func $as-br_if-value-cond (result i32) - (block i32 (drop (br_if 0 (i32.const 6) (return (i32.const 9)))) (i32.const 7)) - ) - - (func $as-br_table-index (result i64) - (block (br_table 0 0 0 (return (i64.const 9)))) (i64.const -1) - ) - (func $as-br_table-value (result i32) - (block i32 - (br_table 0 0 0 (return (i32.const 10)) (i32.const 1)) (i32.const 7) - ) - ) - (func $as-br_table-value-index (result i32) - (block i32 - (br_table 0 0 (i32.const 6) (return (i32.const 11))) (i32.const 7) - ) - ) - - (func $as-return-value (result i64) - (return (return (i64.const 7))) - ) - - (func $as-if-cond (result i32) - (if (return (i32.const 2)) (i32.const 0) (i32.const 1)) - ) - (func $as-if-then (param i32 i32) (result i32) - (if i32 (get_local 0) (return (i32.const 3)) (get_local 1)) - ) - (func $as-if-else (param i32 i32) (result i32) - (if i32 (get_local 0) (get_local 1) (return (i32.const 4))) - ) - - (func $as-select-first (param i32 i32) (result i32) - (select (return (i32.const 5)) (get_local 0) (get_local 1)) - ) - (func $as-select-second (param i32 i32) (result i32) - (select (get_local 0) (return (i32.const 6)) (get_local 1)) - ) - (func $as-select-cond (result i32) - (select (i32.const 0) (i32.const 1) (return (i32.const 7))) - ) - - (func $f (param i32 i32 i32) (result i32) (i32.const -1)) - (func $as-call-first (result i32) - (call $f (return (i32.const 12)) (i32.const 2) (i32.const 3)) - ) - (func $as-call-mid (result i32) - (call $f (i32.const 1) (return (i32.const 13)) (i32.const 3)) - ) - (func $as-call-last (result i32) - (call $f (i32.const 1) (i32.const 2) (return (i32.const 14))) - ) - - (type $sig (func (param i32 i32 i32) (result i32))) - (table anyfunc (elem $f)) - (func $as-call_indirect-func (result i32) - (call_indirect $sig (return (i32.const 20)) (i32.const 1) (i32.const 2) (i32.const 3)) - ) - (func $as-call_indirect-first (result i32) - (call_indirect $sig (i32.const 0) (return (i32.const 21)) (i32.const 2) (i32.const 3)) - ) - (func $as-call_indirect-mid (result i32) - (call_indirect $sig (i32.const 0) (i32.const 1) (return (i32.const 22)) (i32.const 3)) - ) - (func $as-call_indirect-last (result i32) - (call_indirect $sig (i32.const 0) (i32.const 1) (i32.const 2) (return (i32.const 23))) - ) - - (func $as-set_local-value (result i32) (local f32) - (set_local 0 (return (i32.const 17))) (i32.const -1) - ) - - (memory 1) - (func $as-load-address (result f32) - (f32.load (return (f32.const 1.7))) - ) - (func $as-loadN-address (result i64) - (i64.load8_s (return (i64.const 30))) - ) - - (func $as-store-address (result i32) - (f64.store (return (i32.const 30)) (f64.const 7)) (i32.const -1) - ) - (func $as-store-value (result i32) - (i64.store (i32.const 2) (return (i32.const 31))) (i32.const -1) - ) - - (func $as-storeN-address (result i32) - (i32.store8 (return (i32.const 32)) (i32.const 7)) (i32.const -1) - ) - (func $as-storeN-value (result i32) - (i64.store16 (i32.const 2) (return (i32.const 33))) (i32.const -1) - ) - - (func $as-unary-operand (result f32) - (f32.neg (return (f32.const 3.4))) - ) - - (func $as-binary-left (result i32) - (i32.add (return (i32.const 3)) (i32.const 10)) - ) - (func $as-binary-right (result i64) - (i64.sub (i64.const 10) (return (i64.const 45))) - ) - - (func $as-test-operand (result i32) - (i32.eqz (return (i32.const 44))) - ) - - (func $as-compare-left (result i32) - (f64.le (return (i32.const 43)) (f64.const 10)) - ) - (func $as-compare-right (result i32) - (f32.ne (f32.const 10) (return (i32.const 42))) - ) - - (func $as-convert-operand (result i32) - (i32.wrap/i64 (return (i32.const 41))) - ) - - (func $as-grow_memory-size (result i32) - (grow_memory (return (i32.const 40))) - ) - - (func (export "main") - (call $type-i32) - (call $type-i64) - (call $type-f32) - (call $type-f64) - - (call $nullary) - (drop (call $unary)) - - (drop (call $as-func-first)) - (drop (call $as-func-mid)) - (call $as-func-last) - (drop (call $as-func-value)) - - (call $as-block-first) - (call $as-block-mid) - (call $as-block-last) - (drop (call $as-block-value)) - - (drop (call $as-loop-first)) - (drop (call $as-loop-mid)) - (drop (call $as-loop-last)) - - (drop (call $as-br-value)) - - (call $as-br_if-cond) - (drop (call $as-br_if-value)) - (drop (call $as-br_if-value-cond)) - - (drop (call $as-br_table-index)) - (drop (call $as-br_table-value)) - (drop (call $as-br_table-value-index)) - - (drop (call $as-return-value)) - - (drop (call $as-if-cond)) - (drop (call $as-if-then (i32.const 1) (i32.const 6))) - (drop (call $as-if-then (i32.const 0) (i32.const 6))) - (drop (call $as-if-else (i32.const 0) (i32.const 6))) - (drop (call $as-if-else (i32.const 1) (i32.const 6))) - - (drop (call $as-select-first (i32.const 0) (i32.const 6))) - (drop (call $as-select-first (i32.const 1) (i32.const 6))) - (drop (call $as-select-second (i32.const 0) (i32.const 6))) - (drop (call $as-select-second (i32.const 1) (i32.const 6))) - (drop (call $as-select-cond)) - - (drop (call $as-call-first)) - (drop (call $as-call-mid)) - (drop (call $as-call-last)) - - (drop (call $as-call_indirect-func)) - (drop (call $as-call_indirect-first)) - (drop (call $as-call_indirect-mid)) - (drop (call $as-call_indirect-last)) - - (drop (call $as-set_local-value)) - - (drop (call $as-load-address) ) - (drop (call $as-loadN-address)) - - (drop (call $as-store-address)) - (drop (call $as-store-value)) - (drop (call $as-storeN-address)) - (drop (call $as-storeN-value)) - - (drop (call $as-unary-operand) ) - - (drop (call $as-binary-left)) - (drop (call $as-binary-right)) - - (drop (call $as-test-operand)) - - (drop (call $as-compare-left)) - (drop (call $as-compare-right)) - - (drop (call $as-convert-operand)) - - (drop (call $as-grow_memory-size)) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/tee.wast b/libraries/wasm-jit/Test/fuzz/tee.wast deleted file mode 100644 index 81cc124c706..00000000000 --- a/libraries/wasm-jit/Test/fuzz/tee.wast +++ /dev/null @@ -1,33 +0,0 @@ -;; poor man's tee -;; Outputs to stderr and stdout whatever comes in stdin - -(module - - (import "env" "memory" (memory 1)) - (import "env" "_fwrite" (func $__fwrite (param i32 i32 i32 i32) (result i32))) - (import "env" "_fread" (func $__fread (param i32 i32 i32 i32) (result i32))) - (import "env" "_stdin" (global $stdinPtr (mut i32))) - (import "env" "_stdout" (global $stdoutPtr (mut i32))) - (import "env" "_stderr" (global $stderrPtr (mut i32))) - (export "main" (func $main)) - - (func $main - (local $stdin i32) - (local $stdout i32) - (local $stderr i32) - (local $nmemb i32) - (set_local $stdin (i32.load align=4 (get_global $stdinPtr))) - (set_local $stdout (i32.load align=4 (get_global $stdoutPtr))) - (set_local $stderr (i32.load align=4 (get_global $stderrPtr))) - - (loop $loop - (block $done - (set_local $nmemb (call $__fread (i32.const 0) (i32.const 1) (i32.const 32) (get_local $stdin))) - (br_if $done (i32.eq (i32.const 0) (get_local $nmemb))) - (drop (call $__fwrite (i32.const 0) (i32.const 1) (get_local $nmemb) (get_local $stdout))) - (drop (call $__fwrite (i32.const 0) (i32.const 1) (get_local $nmemb) (get_local $stderr))) - (br $loop) - ) - ) - ) -) diff --git a/libraries/wasm-jit/Test/fuzz/tee_local.wast b/libraries/wasm-jit/Test/fuzz/tee_local.wast deleted file mode 100644 index 653bfddb367..00000000000 --- a/libraries/wasm-jit/Test/fuzz/tee_local.wast +++ /dev/null @@ -1,121 +0,0 @@ -;; Test `tee_local` operator - -(module - ;; Typing - - (func $type-local-i32 (result i32) (local i32) (tee_local 0 (i32.const 0))) - (func $type-local-i64 (result i64) (local i64) (tee_local 0 (i64.const 0))) - (func $type-local-f32 (result f32) (local f32) (tee_local 0 (f32.const 0))) - (func $type-local-f64 (result f64) (local f64) (tee_local 0 (f64.const 0))) - - (func $type-param-i32 (param i32) (result i32) (tee_local 0 (i32.const 10))) - (func $type-param-i64 (param i64) (result i64) (tee_local 0 (i64.const 11))) - (func $type-param-f32 (param f32) (result f32) (tee_local 0 (f32.const 11.1))) - (func $type-param-f64 (param f64) (result f64) (tee_local 0 (f64.const 12.2))) - - (func $type-mixed (param i64 f32 f64 i32 i32) (local f32 i64 i64 f64) - (drop (i64.eqz (tee_local 0 (i64.const 0)))) - (drop (f32.neg (tee_local 1 (f32.const 0)))) - (drop (f64.neg (tee_local 2 (f64.const 0)))) - (drop (i32.eqz (tee_local 3 (i32.const 0)))) - (drop (i32.eqz (tee_local 4 (i32.const 0)))) - (drop (f32.neg (tee_local 5 (f32.const 0)))) - (drop (i64.eqz (tee_local 6 (i64.const 0)))) - (drop (i64.eqz (tee_local 7 (i64.const 0)))) - (drop (f64.neg (tee_local 8 (f64.const 0)))) - ) - - ;; Writing - - (func $write (param i64 f32 f64 i32 i32) (result i64) (local f32 i64 i64 f64) - (drop (tee_local 1 (f32.const -0.3))) - (drop (tee_local 3 (i32.const 40))) - (drop (tee_local 4 (i32.const -7))) - (drop (tee_local 5 (f32.const 5.5))) - (drop (tee_local 6 (i64.const 6))) - (drop (tee_local 8 (f64.const 8))) - (i64.trunc_s/f64 - (f64.add - (f64.convert_u/i64 (get_local 0)) - (f64.add - (f64.promote/f32 (get_local 1)) - (f64.add - (get_local 2) - (f64.add - (f64.convert_u/i32 (get_local 3)) - (f64.add - (f64.convert_s/i32 (get_local 4)) - (f64.add - (f64.promote/f32 (get_local 5)) - (f64.add - (f64.convert_u/i64 (get_local 6)) - (f64.add - (f64.convert_u/i64 (get_local 7)) - (get_local 8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - - ;; Result - - (func $result (param i64 f32 f64 i32 i32) (result f64) - (local f32 i64 i64 f64) - (f64.add - (f64.convert_u/i64 (tee_local 0 (i64.const 1))) - (f64.add - (f64.promote/f32 (tee_local 1 (f32.const 2))) - (f64.add - (tee_local 2 (f64.const 3.3)) - (f64.add - (f64.convert_u/i32 (tee_local 3 (i32.const 4))) - (f64.add - (f64.convert_s/i32 (tee_local 4 (i32.const 5))) - (f64.add - (f64.promote/f32 (tee_local 5 (f32.const 5.5))) - (f64.add - (f64.convert_u/i64 (tee_local 6 (i64.const 6))) - (f64.add - (f64.convert_u/i64 (tee_local 7 (i64.const 0))) - (tee_local 8 (f64.const 8)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - - (func (export "main") - (drop (call $type-local-i32)) - (drop (call $type-local-i64)) - (drop (call $type-local-f32)) - (drop (call $type-local-f64)) - (drop (call $type-param-i32 (i32.const 2))) - (drop (call $type-param-i64 (i64.const 3))) - (drop (call $type-param-f32 (f32.const 4.4))) - (drop (call $type-param-f64 (f64.const 5.5))) - - (call $type-mixed - (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) - ) - - (drop - (call $write - (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) - )) - - (drop - (call $result - (i64.const -1) (f32.const -2) (f64.const -3.3) (i32.const -4) (i32.const -5) - )) - ) -) diff --git a/libraries/wasm-jit/Test/spec/WAVM_known_failures.wast b/libraries/wasm-jit/Test/spec/WAVM_known_failures.wast deleted file mode 100644 index cc88951a5e3..00000000000 --- a/libraries/wasm-jit/Test/spec/WAVM_known_failures.wast +++ /dev/null @@ -1,196 +0,0 @@ -;; -;; From float_exprs.wast -;; - -;; Test that x - 0.0 is not folded to x. - -(module - (func (export "f32.no_fold_sub_zero") (param $x f32) (result f32) - (f32.sub (get_local $x) (f32.const 0.0))) - (func (export "f64.no_fold_sub_zero") (param $x f64) (result f64) - (f64.sub (get_local $x) (f64.const 0.0))) -) - -;; should be (assert_return (invoke "f32.no_fold_sub_zero" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f32.no_fold_sub_zero" (f32.const nan:0x200000)) (f32.const nan:0x200000)) - -;; should be (assert_return (invoke "f64.no_fold_sub_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) -(assert_return (invoke "f64.no_fold_sub_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0x4000000000000)) - -;; Test that x*1.0 is not folded to x. -;; See IEEE 754-2008 10.4 "Literal meaning and value-changing optimizations". - -(module - (func (export "f32.no_fold_mul_one") (param $x f32) (result f32) - (f32.mul (get_local $x) (f32.const 1.0))) - (func (export "f64.no_fold_mul_one") (param $x f64) (result f64) - (f64.mul (get_local $x) (f64.const 1.0))) -) - -;; should be (assert_return (invoke "f32.no_fold_mul_one" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f32.no_fold_mul_one" (f32.const nan:0x200000)) (f32.const nan:0x200000)) - -;; should be (assert_return (invoke "f64.no_fold_mul_one" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) -(assert_return (invoke "f64.no_fold_mul_one" (f64.const nan:0x4000000000000)) (f64.const nan:0x4000000000000)) - -;; Test that x/1.0 is not folded to x. - -(module - (func (export "f32.no_fold_div_one") (param $x f32) (result f32) - (f32.div (get_local $x) (f32.const 1.0))) - (func (export "f64.no_fold_div_one") (param $x f64) (result f64) - (f64.div (get_local $x) (f64.const 1.0))) -) - -;; should be (assert_return (invoke "f32.no_fold_div_one" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f32.no_fold_div_one" (f32.const nan:0x200000)) (f32.const nan:0x200000)) - -;; should be (assert_return (invoke "f64.no_fold_div_one" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) -(assert_return (invoke "f64.no_fold_div_one" (f64.const nan:0x4000000000000)) (f64.const nan:0x4000000000000)) - - -;; Test that x/-1.0 is not folded to -x. - -(module - (func (export "f32.no_fold_div_neg1") (param $x f32) (result f32) - (f32.div (get_local $x) (f32.const -1.0))) - (func (export "f64.no_fold_div_neg1") (param $x f64) (result f64) - (f64.div (get_local $x) (f64.const -1.0))) -) - -;; should be (assert_return (invoke "f32.no_fold_div_neg1" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f32.no_fold_div_neg1" (f32.const nan:0x200000)) (f32.const -nan:0x200000)) - -;; should be (assert_return (invoke "f64.no_fold_div_neg1" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) -(assert_return (invoke "f64.no_fold_div_neg1" (f64.const nan:0x4000000000000)) (f64.const -nan:0x4000000000000)) - -;; Test that -0.0 - x is not folded to -x. - -(module - (func (export "f32.no_fold_neg0_sub") (param $x f32) (result f32) - (f32.sub (f32.const -0.0) (get_local $x))) - (func (export "f64.no_fold_neg0_sub") (param $x f64) (result f64) - (f64.sub (f64.const -0.0) (get_local $x))) -) - -;; should be (assert_return (invoke "f32.no_fold_neg0_sub" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f32.no_fold_neg0_sub" (f32.const nan:0x200000)) (f32.const -nan:0x200000)) - -;; should be (assert_return (invoke "f64.no_fold_neg0_sub" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) -(assert_return (invoke "f64.no_fold_neg0_sub" (f64.const nan:0x4000000000000)) (f64.const -nan:0x4000000000000)) - -;; Test that -1.0 * x is not folded to -x. - -(module - (func (export "f32.no_fold_neg1_mul") (param $x f32) (result f32) - (f32.mul (f32.const -1.0) (get_local $x))) - (func (export "f64.no_fold_neg1_mul") (param $x f64) (result f64) - (f64.mul (f64.const -1.0) (get_local $x))) -) - -;; should be (assert_return (invoke "f32.no_fold_neg1_mul" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f32.no_fold_neg1_mul" (f32.const nan:0x200000)) (f32.const -nan:0x200000)) - -;; should be (assert_return (invoke "f64.no_fold_neg1_mul" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) -(assert_return (invoke "f64.no_fold_neg1_mul" (f64.const nan:0x4000000000000)) (f64.const -nan:0x4000000000000)) - -;; Test that demote(promote(x)) is not folded to x, and aside from NaN is -;; bit-preserving. - -(module - (func (export "no_fold_promote_demote") (param $x f32) (result f32) - (f32.demote/f64 (f64.promote/f32 (get_local $x)))) -) - -;; should be (assert_return (invoke "no_fold_promote_demote" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "no_fold_promote_demote" (f32.const nan:0x200000)) (f32.const nan:0x200000)) - -;; Test that 0 - (-0 - x) is not optimized to x. -;; https://llvm.org/bugs/show_bug.cgi?id=26746 - -(module - (func (export "llvm_pr26746") (param $x f32) (result f32) - (f32.sub (f32.const 0.0) (f32.sub (f32.const -0.0) (get_local $x))) - ) -) - -;; Test for improperly reassociating an addition and a conversion. -;; https://llvm.org/bugs/show_bug.cgi?id=27153 - -(module - (func (export "llvm_pr27153") (param $x i32) (result f32) - (f32.add (f32.convert_s/i32 (i32.and (get_local $x) (i32.const 268435455))) (f32.const -8388608.0)) - ) -) - -;; should be (assert_return (invoke "llvm_pr27153" (i32.const 33554434)) (f32.const 25165824.000000)) -(assert_return (invoke "llvm_pr27153" (i32.const 33554434)) (f32.const 0x1.800002p+24)) - -;; Test that (float)x + (float)y is not optimized to (float)(x + y) when unsafe. -;; https://llvm.org/bugs/show_bug.cgi?id=27036 - -(module - (func (export "llvm_pr27036") (param $x i32) (param $y i32) (result f32) - (f32.add (f32.convert_s/i32 (i32.or (get_local $x) (i32.const -25034805))) - (f32.convert_s/i32 (i32.and (get_local $y) (i32.const 14942208)))) - ) -) - -;; should be (assert_return (invoke "llvm_pr27036" (i32.const -25034805) (i32.const 14942208)) (f32.const -0x1.340068p+23)) -(assert_return (invoke "llvm_pr27036" (i32.const -25034805) (i32.const 14942208)) (f32.const -0x1.34006ap+23)) - -;; test that various operations with no effect on non-NaN floats have the correct effect when operating on a NaN. -(module - (func (export "f32.no_fold_sub_zero") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.sub (f32.reinterpret/i32 (get_local $x)) (f32.const 0.0))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_neg0_sub") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.sub (f32.const -0.0) (f32.reinterpret/i32 (get_local $x)))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_mul_one") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.mul (f32.reinterpret/i32 (get_local $x)) (f32.const 1.0))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_neg1_mul") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.mul (f32.const -1.0) (f32.reinterpret/i32 (get_local $x)))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_div_one") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.div (f32.reinterpret/i32 (get_local $x)) (f32.const 1.0))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_div_neg1") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.div (f32.reinterpret/i32 (get_local $x)) (f32.const -1.0))) - (i32.const 0x7fc00000))) - (func (export "f64.no_fold_sub_zero") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.sub (f64.reinterpret/i64 (get_local $x)) (f64.const 0.0))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_neg0_sub") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.sub (f64.const -0.0) (f64.reinterpret/i64 (get_local $x)))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_mul_one") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.mul (f64.reinterpret/i64 (get_local $x)) (f64.const 1.0))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_neg1_mul") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.mul (f64.const -1.0) (f64.reinterpret/i64 (get_local $x)))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_div_one") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.div (f64.reinterpret/i64 (get_local $x)) (f64.const 1.0))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_div_neg1") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.div (f64.reinterpret/i64 (get_local $x)) (f64.const -1.0))) - (i64.const 0x7ff8000000000000))) - (func (export "no_fold_promote_demote") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.demote/f64 (f64.promote/f32 (f32.reinterpret/i32 (get_local $x))))) - (i32.const 0x7fc00000))) -) -(assert_return (invoke "f32.no_fold_sub_zero" (i32.const 0x7fa00000)) (i32.const 0x7f800000)) -(assert_return (invoke "f32.no_fold_neg0_sub" (i32.const 0x7fa00000)) (i32.const 0x7f800000)) -(assert_return (invoke "f32.no_fold_mul_one" (i32.const 0x7fa00000)) (i32.const 0x7f800000)) -(assert_return (invoke "f32.no_fold_neg1_mul" (i32.const 0x7fa00000)) (i32.const 0x7f800000)) -(assert_return (invoke "f32.no_fold_div_one" (i32.const 0x7fa00000)) (i32.const 0x7f800000)) -(assert_return (invoke "f32.no_fold_div_neg1" (i32.const 0x7fa00000)) (i32.const 0x7f800000)) -(assert_return (invoke "f64.no_fold_sub_zero" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff0000000000000)) -(assert_return (invoke "f64.no_fold_neg0_sub" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff0000000000000)) -(assert_return (invoke "f64.no_fold_mul_one" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff0000000000000)) -(assert_return (invoke "f64.no_fold_neg1_mul" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff0000000000000)) -(assert_return (invoke "f64.no_fold_div_one" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff0000000000000)) -(assert_return (invoke "f64.no_fold_div_neg1" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff0000000000000)) -(assert_return (invoke "no_fold_promote_demote" (i32.const 0x7fa00000)) (i32.const 0x7f800000)) diff --git a/libraries/wasm-jit/Test/spec/address.wast b/libraries/wasm-jit/Test/spec/address.wast deleted file mode 100644 index ee2a6bb3910..00000000000 --- a/libraries/wasm-jit/Test/spec/address.wast +++ /dev/null @@ -1,103 +0,0 @@ -(module - (memory 1) - (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") - - (func (export "good1") (param $i i32) (result i32) - (i32.load8_u offset=0 (get_local $i)) ;; 97 'a' - ) - (func (export "good2") (param $i i32) (result i32) - (i32.load8_u offset=1 (get_local $i)) ;; 98 'b' - ) - (func (export "good3") (param $i i32) (result i32) - (i32.load8_u offset=2 (get_local $i)) ;; 99 'c' - ) - (func (export "good4") (param $i i32) (result i32) - (i32.load8_u offset=25 (get_local $i)) ;; 122 'z' - ) - - (func (export "good5") (param $i i32) (result i32) - (i32.load16_u offset=0 (get_local $i)) ;; 25185 'ab' - ) - (func (export "good6") (param $i i32) (result i32) - (i32.load16_u align=1 (get_local $i)) ;; 25185 'ab' - ) - (func (export "good7") (param $i i32) (result i32) - (i32.load16_u offset=1 align=1 (get_local $i)) ;; 25442 'bc' - ) - (func (export "good8") (param $i i32) (result i32) - (i32.load16_u offset=2 (get_local $i)) ;; 25699 'cd' - ) - (func (export "good9") (param $i i32) (result i32) - (i32.load16_u offset=25 align=1 (get_local $i)) ;; 122 'z\0' - ) - - (func (export "good10") (param $i i32) (result i32) - (i32.load offset=0 (get_local $i)) ;; 1684234849 'abcd' - ) - (func (export "good11") (param $i i32) (result i32) - (i32.load offset=1 align=1 (get_local $i)) ;; 1701077858 'bcde' - ) - (func (export "good12") (param $i i32) (result i32) - (i32.load offset=2 align=2 (get_local $i)) ;; 1717920867 'cdef' - ) - (func (export "good13") (param $i i32) (result i32) - (i32.load offset=25 align=1 (get_local $i)) ;; 122 'z\0\0\0' - ) - - (func (export "bad") (param $i i32) - (drop (i32.load offset=4294967295 (get_local $i))) - ) -) - -(assert_return (invoke "good1" (i32.const 0)) (i32.const 97)) -(assert_return (invoke "good2" (i32.const 0)) (i32.const 98)) -(assert_return (invoke "good3" (i32.const 0)) (i32.const 99)) -(assert_return (invoke "good4" (i32.const 0)) (i32.const 122)) -(assert_return (invoke "good5" (i32.const 0)) (i32.const 25185)) -(assert_return (invoke "good6" (i32.const 0)) (i32.const 25185)) -(assert_return (invoke "good7" (i32.const 0)) (i32.const 25442)) -(assert_return (invoke "good8" (i32.const 0)) (i32.const 25699)) -(assert_return (invoke "good9" (i32.const 0)) (i32.const 122)) -(assert_return (invoke "good10" (i32.const 0)) (i32.const 1684234849)) -(assert_return (invoke "good11" (i32.const 0)) (i32.const 1701077858)) -(assert_return (invoke "good12" (i32.const 0)) (i32.const 1717920867)) -(assert_return (invoke "good13" (i32.const 0)) (i32.const 122)) - -(assert_return (invoke "good1" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good2" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good3" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good4" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good5" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good6" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good7" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good8" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good9" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good10" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good11" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good12" (i32.const 65507)) (i32.const 0)) -(assert_return (invoke "good13" (i32.const 65507)) (i32.const 0)) - -(assert_return (invoke "good1" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good2" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good3" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good4" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good5" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good6" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good7" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good8" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good9" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good10" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good11" (i32.const 65508)) (i32.const 0)) -(assert_return (invoke "good12" (i32.const 65508)) (i32.const 0)) -(assert_trap (invoke "good13" (i32.const 65508)) "out of bounds memory access") - -(assert_trap (invoke "bad" (i32.const 0)) "out of bounds memory access") -(assert_trap (invoke "bad" (i32.const 1)) "out of bounds memory access") - -(assert_malformed - (module quote - "(memory 1)" - "(func (drop (i32.load offset=4294967296 (i32.const 0))))" - ) - "i32 constant" -) diff --git a/libraries/wasm-jit/Test/spec/align.wast b/libraries/wasm-jit/Test/spec/align.wast deleted file mode 100644 index 133b501d7a7..00000000000 --- a/libraries/wasm-jit/Test/spec/align.wast +++ /dev/null @@ -1,33 +0,0 @@ -(assert_malformed - (module quote - "(module (memory 0) (func (drop (i64.load align=0 (i32.const 0)))))" - ) - "alignment" -) -(assert_malformed - (module quote - "(module (memory 0) (func (drop (i64.load align=7 (i32.const 0)))))" - ) - "alignment" -) -(assert_invalid - (module (memory 0) (func (drop (i64.load align=16 (i32.const 0))))) - "alignment" -) - -(assert_malformed - (module quote - "(module (memory 0) (func (i64.store align=0 (i32.const 0) (i64.const 0))))" - ) - "alignment" -) -(assert_malformed - (module quote - "(module (memory 0) (func (i64.store align=5 (i32.const 0) (i64.const 0))))" - ) - "alignment" -) -(assert_invalid - (module (memory 0) (func (i64.store align=16 (i32.const 0) (i64.const 0)))) - "alignment" -) diff --git a/libraries/wasm-jit/Test/spec/atomic.wast b/libraries/wasm-jit/Test/spec/atomic.wast deleted file mode 100644 index 84c5847681f..00000000000 --- a/libraries/wasm-jit/Test/spec/atomic.wast +++ /dev/null @@ -1,418 +0,0 @@ -;; atomic operations - -(module - (memory 1 1) - - (func (export "init") (param $value i64) (i64.store (i32.const 0) (get_local $value))) - - (func (export "i32.atomic.load") (param $addr i32) (result i32) (i32.atomic.load (get_local $addr))) - (func (export "i64.atomic.load") (param $addr i32) (result i64) (i64.atomic.load (get_local $addr))) - (func (export "i32.atomic.load8_u") (param $addr i32) (result i32) (i32.atomic.load8_u (get_local $addr))) - (func (export "i32.atomic.load16_u") (param $addr i32) (result i32) (i32.atomic.load16_u (get_local $addr))) - (func (export "i64.atomic.load8_u") (param $addr i32) (result i64) (i64.atomic.load8_u (get_local $addr))) - (func (export "i64.atomic.load16_u") (param $addr i32) (result i64) (i64.atomic.load16_u (get_local $addr))) - (func (export "i64.atomic.load32_u") (param $addr i32) (result i64) (i64.atomic.load32_u (get_local $addr))) - - (func (export "i32.atomic.store") (param $addr i32) (param $value i32) (i32.atomic.store (get_local $addr) (get_local $value))) - (func (export "i64.atomic.store") (param $addr i32) (param $value i64) (i64.atomic.store (get_local $addr) (get_local $value))) - (func (export "i32.atomic.store8") (param $addr i32) (param $value i32) (i32.atomic.store8 (get_local $addr) (get_local $value))) - (func (export "i32.atomic.store16") (param $addr i32) (param $value i32) (i32.atomic.store16 (get_local $addr) (get_local $value))) - (func (export "i64.atomic.store8") (param $addr i32) (param $value i64) (i64.atomic.store8 (get_local $addr) (get_local $value))) - (func (export "i64.atomic.store16") (param $addr i32) (param $value i64) (i64.atomic.store16 (get_local $addr) (get_local $value))) - (func (export "i64.atomic.store32") (param $addr i32) (param $value i64) (i64.atomic.store32 (get_local $addr) (get_local $value))) - - (func (export "i32.atomic.rmw.add") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw.add (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw.add") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw.add (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw8_u.add") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw8_u.add (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw16_u.add") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw16_u.add (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw8_u.add") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw8_u.add (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw16_u.add") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw16_u.add (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw32_u.add") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw32_u.add (get_local $addr) (get_local $value))) - - (func (export "i32.atomic.rmw.sub") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw.sub (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw.sub") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw.sub (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw8_u.sub") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw8_u.sub (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw16_u.sub") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw16_u.sub (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw8_u.sub") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw8_u.sub (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw16_u.sub") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw16_u.sub (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw32_u.sub") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw32_u.sub (get_local $addr) (get_local $value))) - - (func (export "i32.atomic.rmw.and") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw.and (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw.and") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw.and (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw8_u.and") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw8_u.and (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw16_u.and") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw16_u.and (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw8_u.and") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw8_u.and (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw16_u.and") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw16_u.and (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw32_u.and") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw32_u.and (get_local $addr) (get_local $value))) - - (func (export "i32.atomic.rmw.or") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw.or (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw.or") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw.or (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw8_u.or") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw8_u.or (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw16_u.or") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw16_u.or (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw8_u.or") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw8_u.or (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw16_u.or") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw16_u.or (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw32_u.or") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw32_u.or (get_local $addr) (get_local $value))) - - (func (export "i32.atomic.rmw.xor") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw.xor (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw.xor") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw.xor (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw8_u.xor") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw8_u.xor (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw16_u.xor") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw16_u.xor (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw8_u.xor") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw8_u.xor (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw16_u.xor") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw16_u.xor (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw32_u.xor") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw32_u.xor (get_local $addr) (get_local $value))) - - (func (export "i32.atomic.rmw.xchg") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw.xchg (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw.xchg") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw.xchg (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw8_u.xchg") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw8_u.xchg (get_local $addr) (get_local $value))) - (func (export "i32.atomic.rmw16_u.xchg") (param $addr i32) (param $value i32) (result i32) (i32.atomic.rmw16_u.xchg (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw8_u.xchg") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw8_u.xchg (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw16_u.xchg") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw16_u.xchg (get_local $addr) (get_local $value))) - (func (export "i64.atomic.rmw32_u.xchg") (param $addr i32) (param $value i64) (result i64) (i64.atomic.rmw32_u.xchg (get_local $addr) (get_local $value))) - - (func (export "i32.atomic.rmw.cmpxchg") (param $addr i32) (param $expected i32) (param $value i32) (result i32) (i32.atomic.rmw.cmpxchg (get_local $addr) (get_local $expected) (get_local $value))) - (func (export "i64.atomic.rmw.cmpxchg") (param $addr i32) (param $expected i64) (param $value i64) (result i64) (i64.atomic.rmw.cmpxchg (get_local $addr) (get_local $expected) (get_local $value))) - (func (export "i32.atomic.rmw8_u.cmpxchg") (param $addr i32) (param $expected i32) (param $value i32) (result i32) (i32.atomic.rmw8_u.cmpxchg (get_local $addr) (get_local $expected) (get_local $value))) - (func (export "i32.atomic.rmw16_u.cmpxchg") (param $addr i32) (param $expected i32) (param $value i32) (result i32) (i32.atomic.rmw16_u.cmpxchg (get_local $addr) (get_local $expected) (get_local $value))) - (func (export "i64.atomic.rmw8_u.cmpxchg") (param $addr i32) (param $expected i64) (param $value i64) (result i64) (i64.atomic.rmw8_u.cmpxchg (get_local $addr) (get_local $expected) (get_local $value))) - (func (export "i64.atomic.rmw16_u.cmpxchg") (param $addr i32) (param $expected i64) (param $value i64) (result i64) (i64.atomic.rmw16_u.cmpxchg (get_local $addr) (get_local $expected) (get_local $value))) - (func (export "i64.atomic.rmw32_u.cmpxchg") (param $addr i32) (param $expected i64) (param $value i64) (result i64) (i64.atomic.rmw32_u.cmpxchg (get_local $addr) (get_local $expected) (get_local $value))) - -) - -;; *.atomic.load* - -(invoke "init" (i64.const 0x0706050403020100)) - -(assert_return (invoke "i32.atomic.load" (i32.const 0)) (i32.const 0x03020100)) -(assert_return (invoke "i32.atomic.load" (i32.const 4)) (i32.const 0x07060504)) - -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0706050403020100)) - -(assert_return (invoke "i32.atomic.load8_u" (i32.const 0)) (i32.const 0x00)) -(assert_return (invoke "i32.atomic.load8_u" (i32.const 5)) (i32.const 0x05)) - -(assert_return (invoke "i32.atomic.load16_u" (i32.const 0)) (i32.const 0x0100)) -(assert_return (invoke "i32.atomic.load16_u" (i32.const 6)) (i32.const 0x0706)) - -(assert_return (invoke "i64.atomic.load8_u" (i32.const 0)) (i64.const 0x00)) -(assert_return (invoke "i64.atomic.load8_u" (i32.const 5)) (i64.const 0x05)) - -(assert_return (invoke "i64.atomic.load16_u" (i32.const 0)) (i64.const 0x0100)) -(assert_return (invoke "i64.atomic.load16_u" (i32.const 6)) (i64.const 0x0706)) - -(assert_return (invoke "i64.atomic.load32_u" (i32.const 0)) (i64.const 0x03020100)) -(assert_return (invoke "i64.atomic.load32_u" (i32.const 4)) (i64.const 0x07060504)) - -;; *.atomic.store* - -(invoke "init" (i64.const 0x0000000000000000)) - -(assert_return (invoke "i32.atomic.store" (i32.const 0) (i32.const 0xffeeddcc))) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x00000000ffeeddcc)) - -(assert_return (invoke "i64.atomic.store" (i32.const 0) (i64.const 0x0123456789abcdef))) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0123456789abcdef)) - -(assert_return (invoke "i32.atomic.store8" (i32.const 1) (i32.const 0x42))) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0123456789ab42ef)) - -(assert_return (invoke "i32.atomic.store16" (i32.const 4) (i32.const 0x8844))) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0123884489ab42ef)) - -(assert_return (invoke "i64.atomic.store8" (i32.const 1) (i64.const 0x99))) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0123884489ab99ef)) - -(assert_return (invoke "i64.atomic.store16" (i32.const 4) (i64.const 0xcafe))) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0123cafe89ab99ef)) - -(assert_return (invoke "i64.atomic.store32" (i32.const 4) (i64.const 0xdeadbeef))) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0xdeadbeef89ab99ef)) - -;; *.atomic.rmw*.add - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.add" (i32.const 0) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111123456789)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.add" (i32.const 0) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1212121213131313)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.add" (i32.const 0) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111111111de)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.add" (i32.const 0) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111dc0f)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.add" (i32.const 0) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111153)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.add" (i32.const 0) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111d000)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.add" (i32.const 0) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111dbccb7f6)) - -;; *.atomic.rmw*.sub - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.sub" (i32.const 0) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111fedcba99)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.sub" (i32.const 0) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x101010100f0f0f0f)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.sub" (i32.const 0) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111144)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.sub" (i32.const 0) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111114613)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.sub" (i32.const 0) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111111111cf)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.sub" (i32.const 0) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111115222)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.sub" (i32.const 0) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111146556a2c)) - -;; *.atomic.rmw*.and - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.and" (i32.const 0) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111110101010)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.and" (i32.const 0) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0101010100000000)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.and" (i32.const 0) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111101)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.and" (i32.const 0) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111110010)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.and" (i32.const 0) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111100)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.and" (i32.const 0) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111001)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.and" (i32.const 0) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111100110001)) - -;; *.atomic.rmw*.or - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.or" (i32.const 0) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111113355779)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.or" (i32.const 0) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111113131313)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.or" (i32.const 0) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111111111dd)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.or" (i32.const 0) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111dbff)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.or" (i32.const 0) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111153)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.or" (i32.const 0) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111bfff)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.or" (i32.const 0) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111dbbbb7f5)) - -;; *.atomic.rmw*.xor - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.xor" (i32.const 0) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111103254769)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.xor" (i32.const 0) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1010101013131313)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.xor" (i32.const 0) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111111111dc)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.xor" (i32.const 0) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111dbef)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.xor" (i32.const 0) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111153)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.xor" (i32.const 0) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111affe)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.xor" (i32.const 0) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111dbaab7f4)) - -;; *.atomic.rmw*.xchg - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.xchg" (i32.const 0) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111112345678)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.xchg" (i32.const 0) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0101010102020202)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.xchg" (i32.const 0) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111111111cd)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.xchg" (i32.const 0) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111cafe)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.xchg" (i32.const 0) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111142)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.xchg" (i32.const 0) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111beef)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.xchg" (i32.const 0) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111cabba6e5)) - -;; *.atomic.rmw*.cmpxchg (compare false) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.cmpxchg" (i32.const 0) (i32.const 0) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111111)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.cmpxchg" (i32.const 0) (i64.const 0) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111111)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.cmpxchg" (i32.const 0) (i32.const 0) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111111)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.cmpxchg" (i32.const 0) (i32.const 0) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111111)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.cmpxchg" (i32.const 0) (i64.const 0) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111111)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.cmpxchg" (i32.const 0) (i64.const 0) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111111)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.cmpxchg" (i32.const 0) (i64.const 0) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111111)) - -;; *.atomic.rmw*.cmpxchg (compare true) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw.cmpxchg" (i32.const 0) (i32.const 0x11111111) (i32.const 0x12345678)) (i32.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111112345678)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw.cmpxchg" (i32.const 0) (i64.const 0x1111111111111111) (i64.const 0x0101010102020202)) (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x0101010102020202)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw8_u.cmpxchg" (i32.const 0) (i32.const 0x11) (i32.const 0xcdcdcdcd)) (i32.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111111111cd)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i32.atomic.rmw16_u.cmpxchg" (i32.const 0) (i32.const 0x1111) (i32.const 0xcafecafe)) (i32.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111cafe)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw8_u.cmpxchg" (i32.const 0) (i64.const 0x11) (i64.const 0x4242424242424242)) (i64.const 0x11)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x1111111111111142)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw16_u.cmpxchg" (i32.const 0) (i64.const 0x1111) (i64.const 0xbeefbeefbeefbeef)) (i64.const 0x1111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x111111111111beef)) - -(invoke "init" (i64.const 0x1111111111111111)) -(assert_return (invoke "i64.atomic.rmw32_u.cmpxchg" (i32.const 0) (i64.const 0x11111111) (i64.const 0xcabba6e5cabba6e5)) (i64.const 0x11111111)) -(assert_return (invoke "i64.atomic.load" (i32.const 0)) (i64.const 0x11111111cabba6e5)) - - -;; unaligned accesses - -(assert_trap (invoke "i32.atomic.load" (i32.const 1)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.load" (i32.const 1)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.load16_u" (i32.const 1)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.load16_u" (i32.const 1)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.load32_u" (i32.const 1)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.store" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.store" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.store16" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.store16" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.store32" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw.add" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw.add" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw16_u.add" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw16_u.add" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw32_u.add" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw.sub" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw.sub" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw16_u.sub" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw16_u.sub" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw32_u.sub" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw.and" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw.and" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw16_u.and" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw16_u.and" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw32_u.and" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw.or" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw.or" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw16_u.or" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw16_u.or" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw32_u.or" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw.xor" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw.xor" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw16_u.xor" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw16_u.xor" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw32_u.xor" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw.xchg" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw.xchg" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw16_u.xchg" (i32.const 1) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw16_u.xchg" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw32_u.xchg" (i32.const 1) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw.cmpxchg" (i32.const 1) (i32.const 0) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw.cmpxchg" (i32.const 1) (i64.const 0) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i32.atomic.rmw16_u.cmpxchg" (i32.const 1) (i32.const 0) (i32.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw16_u.cmpxchg" (i32.const 1) (i64.const 0) (i64.const 0)) "unaligned atomic") -(assert_trap (invoke "i64.atomic.rmw32_u.cmpxchg" (i32.const 1) (i64.const 0) (i64.const 0)) "unaligned atomic") diff --git a/libraries/wasm-jit/Test/spec/binary.wast b/libraries/wasm-jit/Test/spec/binary.wast deleted file mode 100644 index 8cfeed46f7b..00000000000 --- a/libraries/wasm-jit/Test/spec/binary.wast +++ /dev/null @@ -1,102 +0,0 @@ -(module binary "\00asm\01\00\00\00") -(module binary "\00asm" "\01\00\00\00") -(module $M1 binary "\00asm\01\00\00\00") -(module $M2 binary "\00asm" "\01\00\00\00") - -(assert_malformed (module binary "") "unexpected end") -(assert_malformed (module binary "\01") "unexpected end") -(assert_malformed (module binary "\00as") "unexpected end") -(assert_malformed (module binary "asm\00") "magic header not detected") -(assert_malformed (module binary "msa\00") "magic header not detected") -(assert_malformed (module binary "msa\00\01\00\00\00") "magic header not detected") -(assert_malformed (module binary "msa\00\00\00\00\01") "magic header not detected") -(assert_malformed (module binary "asm\01\00\00\00\00") "magic header not detected") -(assert_malformed (module binary "wasm\01\00\00\00") "magic header not detected") -(assert_malformed (module binary "\7fasm\01\00\00\00") "magic header not detected") -(assert_malformed (module binary "\80asm\01\00\00\00") "magic header not detected") -(assert_malformed (module binary "\82asm\01\00\00\00") "magic header not detected") -(assert_malformed (module binary "\ffasm\01\00\00\00") "magic header not detected") - -;; 8-byte endian-reversed. -(assert_malformed (module binary "\00\00\00\01msa\00") "magic header not detected") - -;; Middle-endian byte orderings. -(assert_malformed (module binary "a\00ms\00\01\00\00") "magic header not detected") -(assert_malformed (module binary "sm\00a\00\00\01\00") "magic header not detected") - -;; Upper-cased. -(assert_malformed (module binary "\00ASM\01\00\00\00") "magic header not detected") - -;; EBCDIC-encoded magic. -(assert_malformed (module binary "\00\81\a2\94\01\00\00\00") "magic header not detected") - -;; Leading UTF-8 BOM. -(assert_malformed (module binary "\ef\bb\bf\00asm\01\00\00\00") "magic header not detected") - -(assert_malformed (module binary "\00asm") "unexpected end") -(assert_malformed (module binary "\00asm\01") "unexpected end") -(assert_malformed (module binary "\00asm\01\00\00") "unexpected end") -(assert_malformed (module binary "\00asm\00\00\00\00") "unknown binary version") -(assert_malformed (module binary "\00asm\0d\00\00\00") "unknown binary version") -(assert_malformed (module binary "\00asm\0e\00\00\00") "unknown binary version") -(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/libraries/wasm-jit/Test/spec/block.wast b/libraries/wasm-jit/Test/spec/block.wast deleted file mode 100644 index f2b6384c3e6..00000000000 --- a/libraries/wasm-jit/Test/spec/block.wast +++ /dev/null @@ -1,299 +0,0 @@ -;; Test `block` operator - -(module - ;; Auxiliary definition - (func $dummy) - - (func (export "empty") - (block) - (block $l) - ) - - (func (export "singular") (result i32) - (block (nop)) - (block (result i32) (i32.const 7)) - ) - - (func (export "multi") (result i32) - (block (call $dummy) (call $dummy) (call $dummy) (call $dummy)) - (block (result i32) (call $dummy) (call $dummy) (call $dummy) (i32.const 8)) - ) - - (func (export "nested") (result i32) - (block (result i32) - (block (call $dummy) (block) (nop)) - (block (result i32) (call $dummy) (i32.const 9)) - ) - ) - - (func (export "deep") (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (block (result i32) (block (result i32) - (call $dummy) (i32.const 150) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - )) - ) - - (func (export "as-unary-operand") (result i32) - (i32.ctz (block (result i32) (call $dummy) (i32.const 13))) - ) - (func (export "as-binary-operand") (result i32) - (i32.mul - (block (result i32) (call $dummy) (i32.const 3)) - (block (result i32) (call $dummy) (i32.const 4)) - ) - ) - (func (export "as-test-operand") (result i32) - (i32.eqz (block (result i32) (call $dummy) (i32.const 13))) - ) - (func (export "as-compare-operand") (result i32) - (f32.gt - (block (result f32) (call $dummy) (f32.const 3)) - (block (result f32) (call $dummy) (f32.const 3)) - ) - ) - - (func (export "break-bare") (result i32) - (block (br 0) (unreachable)) - (block (br_if 0 (i32.const 1)) (unreachable)) - (block (br_table 0 (i32.const 0)) (unreachable)) - (block (br_table 0 0 0 (i32.const 1)) (unreachable)) - (i32.const 19) - ) - (func (export "break-value") (result i32) - (block (result i32) (br 0 (i32.const 18)) (i32.const 19)) - ) - (func (export "break-repeated") (result i32) - (block (result i32) - (br 0 (i32.const 18)) - (br 0 (i32.const 19)) - (drop (br_if 0 (i32.const 20) (i32.const 0))) - (drop (br_if 0 (i32.const 20) (i32.const 1))) - (br 0 (i32.const 21)) - (br_table 0 (i32.const 22) (i32.const 4)) - (br_table 0 0 0 (i32.const 23) (i32.const 1)) - (i32.const 21) - ) - ) - (func (export "break-inner") (result i32) - (local i32) - (set_local 0 (i32.const 0)) - (set_local 0 (i32.add (get_local 0) (block (result i32) (block (result i32) (br 1 (i32.const 0x1)))))) - (set_local 0 (i32.add (get_local 0) (block (result i32) (block (br 0)) (i32.const 0x2)))) - (set_local 0 - (i32.add (get_local 0) (block (result i32) (i32.ctz (br 0 (i32.const 0x4))))) - ) - (set_local 0 - (i32.add (get_local 0) (block (result i32) (i32.ctz (block (result i32) (br 1 (i32.const 0x8)))))) - ) - (get_local 0) - ) - - (func (export "effects") (result i32) - (local i32) - (block - (set_local 0 (i32.const 1)) - (set_local 0 (i32.mul (get_local 0) (i32.const 3))) - (set_local 0 (i32.sub (get_local 0) (i32.const 5))) - (set_local 0 (i32.mul (get_local 0) (i32.const 7))) - (br 0) - (set_local 0 (i32.mul (get_local 0) (i32.const 100))) - ) - (i32.eq (get_local 0) (i32.const -14)) - ) -) - -(assert_return (invoke "empty")) -(assert_return (invoke "singular") (i32.const 7)) -(assert_return (invoke "multi") (i32.const 8)) -(assert_return (invoke "nested") (i32.const 9)) -(assert_return (invoke "deep") (i32.const 150)) - -(assert_return (invoke "as-unary-operand") (i32.const 0)) -(assert_return (invoke "as-binary-operand") (i32.const 12)) -(assert_return (invoke "as-test-operand") (i32.const 0)) -(assert_return (invoke "as-compare-operand") (i32.const 0)) - -(assert_return (invoke "break-bare") (i32.const 19)) -(assert_return (invoke "break-value") (i32.const 18)) -(assert_return (invoke "break-repeated") (i32.const 18)) -(assert_return (invoke "break-inner") (i32.const 0xf)) - -(assert_return (invoke "effects") (i32.const 1)) - -(assert_invalid - (module (func $type-empty-i32 (result i32) (block))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-i64 (result i64) (block))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f32 (result f32) (block))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f64 (result f64) (block))) - "type mismatch" -) - -(assert_invalid - (module (func $type-value-num-vs-void - (block (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-value-empty-vs-num (result i32) - (block (result i32)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-value-void-vs-num (result i32) - (block (result i32) (nop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-value-num-vs-num (result i32) - (block (result i32) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-value-unreached-select (result i32) - (block (result i64) (select (unreachable) (unreachable) (unreachable))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-break-last-void-vs-num (result i32) - (block (result i32) (br 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-empty-vs-num (result i32) - (block (result i32) (br 0) (i32.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-break-void-vs-num (result i32) - (block (result i32) (br 0 (nop)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-num-vs-num (result i32) - (block (result i32) (br 0 (i64.const 1)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-first-void-vs-num (result i32) - (block (result i32) (br 0 (nop)) (br 0 (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-first-num-vs-num (result i32) - (block (result i32) (br 0 (i64.const 1)) (br 0 (i32.const 1))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-break-nested-num-vs-void - (block (result i32) (block (result i32) (br 1 (i32.const 1))) (br 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-nested-empty-vs-num (result i32) - (block (result i32) (block (br 1)) (br 0 (i32.const 1))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-break-nested-void-vs-num (result i32) - (block (result i32) (block (result i32) (br 1 (nop))) (br 0 (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-nested-num-vs-num (result i32) - (block (result i32) - (block (result i32) (br 1 (i64.const 1))) (br 0 (i32.const 1)) - ) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-break-operand-empty-vs-num (result i32) - (i32.ctz (block (br 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-operand-void-vs-num (result i32) - (i64.ctz (block (br 0 (nop)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-operand-num-vs-num (result i32) - (i64.ctz (block (br 0 (i64.const 9)))) - )) - "type mismatch" -) - - -(assert_malformed - (module quote "(func block end $l)") - "mismatching label" -) -(assert_malformed - (module quote "(func block $a end $l)") - "mismatching label" -) diff --git a/libraries/wasm-jit/Test/spec/br.wast b/libraries/wasm-jit/Test/spec/br.wast deleted file mode 100644 index 77f781d4deb..00000000000 --- a/libraries/wasm-jit/Test/spec/br.wast +++ /dev/null @@ -1,447 +0,0 @@ -;; Test `br` operator - -(module - ;; Auxiliary definition - (func $dummy) - - (func (export "type-i32") (block (drop (i32.ctz (br 0))))) - (func (export "type-i64") (block (drop (i64.ctz (br 0))))) - (func (export "type-f32") (block (drop (f32.neg (br 0))))) - (func (export "type-f64") (block (drop (f64.neg (br 0))))) - - (func (export "type-i32-value") (result i32) - (block (result i32) (i32.ctz (br 0 (i32.const 1)))) - ) - (func (export "type-i64-value") (result i64) - (block (result i64) (i64.ctz (br 0 (i64.const 2)))) - ) - (func (export "type-f32-value") (result f32) - (block (result f32) (f32.neg (br 0 (f32.const 3)))) - ) - (func (export "type-f64-value") (result f64) - (block (result f64) (f64.neg (br 0 (f64.const 4)))) - ) - - (func (export "as-block-first") - (block (br 0) (call $dummy)) - ) - (func (export "as-block-mid") - (block (call $dummy) (br 0) (call $dummy)) - ) - (func (export "as-block-last") - (block (nop) (call $dummy) (br 0)) - ) - (func (export "as-block-value") (result i32) - (block (result i32) (nop) (call $dummy) (br 0 (i32.const 2))) - ) - - (func (export "as-loop-first") (result i32) - (block (result i32) (loop (result i32) (br 1 (i32.const 3)) (i32.const 2))) - ) - (func (export "as-loop-mid") (result i32) - (block (result i32) - (loop (result i32) (call $dummy) (br 1 (i32.const 4)) (i32.const 2)) - ) - ) - (func (export "as-loop-last") (result i32) - (block (result i32) - (loop (result i32) (nop) (call $dummy) (br 1 (i32.const 5))) - ) - ) - - (func (export "as-br-value") (result i32) - (block (result i32) (br 0 (br 0 (i32.const 9)))) - ) - - (func (export "as-br_if-cond") - (block (br_if 0 (br 0))) - ) - (func (export "as-br_if-value") (result i32) - (block (result i32) - (drop (br_if 0 (br 0 (i32.const 8)) (i32.const 1))) (i32.const 7) - ) - ) - (func (export "as-br_if-value-cond") (result i32) - (block (result i32) - (drop (br_if 0 (i32.const 6) (br 0 (i32.const 9)))) (i32.const 7) - ) - ) - - (func (export "as-br_table-index") - (block (br_table 0 0 0 (br 0))) - ) - (func (export "as-br_table-value") (result i32) - (block (result i32) - (br_table 0 0 0 (br 0 (i32.const 10)) (i32.const 1)) (i32.const 7) - ) - ) - (func (export "as-br_table-value-index") (result i32) - (block (result i32) - (br_table 0 0 (i32.const 6) (br 0 (i32.const 11))) (i32.const 7) - ) - ) - - (func (export "as-return-value") (result i64) - (block (result i64) (return (br 0 (i64.const 7)))) - ) - - (func (export "as-if-cond") (result i32) - (block (result i32) - (if (result i32) (br 0 (i32.const 2)) - (then (i32.const 0)) - (else (i32.const 1)) - ) - ) - ) - (func (export "as-if-then") (param i32 i32) (result i32) - (block (result i32) - (if (result i32) (get_local 0) - (then (br 1 (i32.const 3))) - (else (get_local 1)) - ) - ) - ) - (func (export "as-if-else") (param i32 i32) (result i32) - (block (result i32) - (if (result i32) (get_local 0) - (then (get_local 1)) - (else (br 1 (i32.const 4))) - ) - ) - ) - - (func (export "as-select-first") (param i32 i32) (result i32) - (block (result i32) - (select (br 0 (i32.const 5)) (get_local 0) (get_local 1)) - ) - ) - (func (export "as-select-second") (param i32 i32) (result i32) - (block (result i32) - (select (get_local 0) (br 0 (i32.const 6)) (get_local 1)) - ) - ) - (func (export "as-select-cond") (result i32) - (block (result i32) - (select (i32.const 0) (i32.const 1) (br 0 (i32.const 7))) - ) - ) - - (func $f (param i32 i32 i32) (result i32) (i32.const -1)) - (func (export "as-call-first") (result i32) - (block (result i32) - (call $f (br 0 (i32.const 12)) (i32.const 2) (i32.const 3)) - ) - ) - (func (export "as-call-mid") (result i32) - (block (result i32) - (call $f (i32.const 1) (br 0 (i32.const 13)) (i32.const 3)) - ) - ) - (func (export "as-call-last") (result i32) - (block (result i32) - (call $f (i32.const 1) (i32.const 2) (br 0 (i32.const 14))) - ) - ) - - (type $sig (func (param i32 i32 i32) (result i32))) - (table anyfunc (elem $f)) - (func (export "as-call_indirect-func") (result i32) - (block (result i32) - (call_indirect $sig - (br 0 (i32.const 20)) - (i32.const 1) (i32.const 2) (i32.const 3) - ) - ) - ) - (func (export "as-call_indirect-first") (result i32) - (block (result i32) - (call_indirect $sig - (i32.const 0) - (br 0 (i32.const 21)) (i32.const 2) (i32.const 3) - ) - ) - ) - (func (export "as-call_indirect-mid") (result i32) - (block (result i32) - (call_indirect $sig - (i32.const 0) - (i32.const 1) (br 0 (i32.const 22)) (i32.const 3) - ) - ) - ) - (func (export "as-call_indirect-last") (result i32) - (block (result i32) - (call_indirect $sig - (i32.const 0) - (i32.const 1) (i32.const 2) (br 0 (i32.const 23)) - ) - ) - ) - - (func (export "as-set_local-value") (result i32) (local f32) - (block (result i32) (set_local 0 (br 0 (i32.const 17))) (i32.const -1)) - ) - - (memory 1) - (func (export "as-load-address") (result f32) - (block (result f32) (f32.load (br 0 (f32.const 1.7)))) - ) - (func (export "as-loadN-address") (result i64) - (block (result i64) (i64.load8_s (br 0 (i64.const 30)))) - ) - - (func (export "as-store-address") (result i32) - (block (result i32) - (f64.store (br 0 (i32.const 30)) (f64.const 7)) (i32.const -1) - ) - ) - (func (export "as-store-value") (result i32) - (block (result i32) - (i64.store (i32.const 2) (br 0 (i32.const 31))) (i32.const -1) - ) - ) - - (func (export "as-storeN-address") (result i32) - (block (result i32) - (i32.store8 (br 0 (i32.const 32)) (i32.const 7)) (i32.const -1) - ) - ) - (func (export "as-storeN-value") (result i32) - (block (result i32) - (i64.store16 (i32.const 2) (br 0 (i32.const 33))) (i32.const -1) - ) - ) - - (func (export "as-unary-operand") (result f32) - (block (result f32) (f32.neg (br 0 (f32.const 3.4)))) - ) - - (func (export "as-binary-left") (result i32) - (block (result i32) (i32.add (br 0 (i32.const 3)) (i32.const 10))) - ) - (func (export "as-binary-right") (result i64) - (block (result i64) (i64.sub (i64.const 10) (br 0 (i64.const 45)))) - ) - - (func (export "as-test-operand") (result i32) - (block (result i32) (i32.eqz (br 0 (i32.const 44)))) - ) - - (func (export "as-compare-left") (result i32) - (block (result i32) (f64.le (br 0 (i32.const 43)) (f64.const 10))) - ) - (func (export "as-compare-right") (result i32) - (block (result i32) (f32.ne (f32.const 10) (br 0 (i32.const 42)))) - ) - - (func (export "as-convert-operand") (result i32) - (block (result i32) (i32.wrap/i64 (br 0 (i32.const 41)))) - ) - - (func (export "as-grow_memory-size") (result i32) - (block (result i32) (grow_memory (br 0 (i32.const 40)))) - ) - - (func (export "nested-block-value") (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (call $dummy) - (i32.add (i32.const 4) (br 0 (i32.const 8))) - ) - ) - ) - - (func (export "nested-br-value") (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop - (block (result i32) - (drop (i32.const 4)) - (br 0 (br 1 (i32.const 8))) - ) - ) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_if-value") (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop - (block (result i32) - (drop (i32.const 4)) - (drop (br_if 0 (br 1 (i32.const 8)) (i32.const 1))) - (i32.const 32) - ) - ) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_if-value-cond") (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop (br_if 0 (i32.const 4) (br 0 (i32.const 8)))) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_table-value") (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop - (block (result i32) - (drop (i32.const 4)) - (br_table 0 (br 1 (i32.const 8)) (i32.const 1)) - ) - ) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_table-value-index") (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (br_table 0 (i32.const 4) (br 0 (i32.const 8))) - (i32.const 16) - ) - ) - ) -) - -(assert_return (invoke "type-i32")) -(assert_return (invoke "type-i64")) -(assert_return (invoke "type-f32")) -(assert_return (invoke "type-f64")) - -(assert_return (invoke "type-i32-value") (i32.const 1)) -(assert_return (invoke "type-i64-value") (i64.const 2)) -(assert_return (invoke "type-f32-value") (f32.const 3)) -(assert_return (invoke "type-f64-value") (f64.const 4)) - -(assert_return (invoke "as-block-first")) -(assert_return (invoke "as-block-mid")) -(assert_return (invoke "as-block-last")) -(assert_return (invoke "as-block-value") (i32.const 2)) - -(assert_return (invoke "as-loop-first") (i32.const 3)) -(assert_return (invoke "as-loop-mid") (i32.const 4)) -(assert_return (invoke "as-loop-last") (i32.const 5)) - -(assert_return (invoke "as-br-value") (i32.const 9)) - -(assert_return (invoke "as-br_if-cond")) -(assert_return (invoke "as-br_if-value") (i32.const 8)) -(assert_return (invoke "as-br_if-value-cond") (i32.const 9)) - -(assert_return (invoke "as-br_table-index")) -(assert_return (invoke "as-br_table-value") (i32.const 10)) -(assert_return (invoke "as-br_table-value-index") (i32.const 11)) - -(assert_return (invoke "as-return-value") (i64.const 7)) - -(assert_return (invoke "as-if-cond") (i32.const 2)) -(assert_return (invoke "as-if-then" (i32.const 1) (i32.const 6)) (i32.const 3)) -(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 6)) (i32.const 4)) -(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) - -(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 6)) (i32.const 5)) -(assert_return (invoke "as-select-first" (i32.const 1) (i32.const 6)) (i32.const 5)) -(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-select-second" (i32.const 1) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-select-cond") (i32.const 7)) - -(assert_return (invoke "as-call-first") (i32.const 12)) -(assert_return (invoke "as-call-mid") (i32.const 13)) -(assert_return (invoke "as-call-last") (i32.const 14)) - -(assert_return (invoke "as-call_indirect-func") (i32.const 20)) -(assert_return (invoke "as-call_indirect-first") (i32.const 21)) -(assert_return (invoke "as-call_indirect-mid") (i32.const 22)) -(assert_return (invoke "as-call_indirect-last") (i32.const 23)) - -(assert_return (invoke "as-set_local-value") (i32.const 17)) - -(assert_return (invoke "as-load-address") (f32.const 1.7)) -(assert_return (invoke "as-loadN-address") (i64.const 30)) - -(assert_return (invoke "as-store-address") (i32.const 30)) -(assert_return (invoke "as-store-value") (i32.const 31)) -(assert_return (invoke "as-storeN-address") (i32.const 32)) -(assert_return (invoke "as-storeN-value") (i32.const 33)) - -(assert_return (invoke "as-unary-operand") (f32.const 3.4)) - -(assert_return (invoke "as-binary-left") (i32.const 3)) -(assert_return (invoke "as-binary-right") (i64.const 45)) - -(assert_return (invoke "as-test-operand") (i32.const 44)) - -(assert_return (invoke "as-compare-left") (i32.const 43)) -(assert_return (invoke "as-compare-right") (i32.const 42)) - -(assert_return (invoke "as-convert-operand") (i32.const 41)) - -(assert_return (invoke "as-grow_memory-size") (i32.const 40)) - -(assert_return (invoke "nested-block-value") (i32.const 9)) -(assert_return (invoke "nested-br-value") (i32.const 9)) -(assert_return (invoke "nested-br_if-value") (i32.const 9)) -(assert_return (invoke "nested-br_if-value-cond") (i32.const 9)) -(assert_return (invoke "nested-br_table-value") (i32.const 9)) -(assert_return (invoke "nested-br_table-value-index") (i32.const 9)) - -(assert_invalid - (module (func $type-arg-empty-vs-num (result i32) - (block (result i32) (br 0) (i32.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-arg-void-vs-num (result i32) - (block (result i32) (br 0 (nop)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-void-vs-num-nested (result i32) - (block (result i32) (i32.const 0) (block (br 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-num-vs-num (result i32) - (block (result i32) (br 0 (i64.const 1)) (i32.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $unbound-label (br 1))) - "unknown label" -) -(assert_invalid - (module (func $unbound-nested-label (block (block (br 5))))) - "unknown label" -) -(assert_invalid - (module (func $large-label (br 0x10000001))) - "unknown label" -) diff --git a/libraries/wasm-jit/Test/spec/br_if.wast b/libraries/wasm-jit/Test/spec/br_if.wast deleted file mode 100644 index 0aa46d4712e..00000000000 --- a/libraries/wasm-jit/Test/spec/br_if.wast +++ /dev/null @@ -1,321 +0,0 @@ -;; Test `br_if` operator - -(module - (func $dummy) - - (func (export "as-block-first") (param i32) (result i32) - (block (br_if 0 (get_local 0)) (return (i32.const 2))) (i32.const 3) - ) - (func (export "as-block-mid") (param i32) (result i32) - (block (call $dummy) (br_if 0 (get_local 0)) (return (i32.const 2))) - (i32.const 3) - ) - (func (export "as-block-last") (param i32) - (block (call $dummy) (call $dummy) (br_if 0 (get_local 0))) - ) - (func (export "as-block-first-value") (param i32) (result i32) - (block (result i32) - (drop (br_if 0 (i32.const 10) (get_local 0))) (return (i32.const 11)) - ) - ) - (func (export "as-block-mid-value") (param i32) (result i32) - (block (result i32) - (call $dummy) - (drop (br_if 0 (i32.const 20) (get_local 0))) - (return (i32.const 21)) - ) - ) - (func (export "as-block-last-value") (param i32) (result i32) - (block (result i32) - (call $dummy) (call $dummy) (br_if 0 (i32.const 11) (get_local 0)) - ) - ) - - (func (export "as-loop-first") (param i32) (result i32) - (block (loop (br_if 1 (get_local 0)) (return (i32.const 2)))) (i32.const 3) - ) - (func (export "as-loop-mid") (param i32) (result i32) - (block (loop (call $dummy) (br_if 1 (get_local 0)) (return (i32.const 2)))) - (i32.const 4) - ) - (func (export "as-loop-last") (param i32) - (loop (call $dummy) (br_if 1 (get_local 0))) - ) - - (func (export "as-if-then") (param i32 i32) - (block - (if (get_local 0) (then (br_if 1 (get_local 1))) (else (call $dummy))) - ) - ) - (func (export "as-if-else") (param i32 i32) - (block - (if (get_local 0) (then (call $dummy)) (else (br_if 1 (get_local 1)))) - ) - ) - - (func (export "nested-block-value") (param i32) (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (i32.add - (i32.const 4) - (block (result i32) - (drop (br_if 1 (i32.const 8) (get_local 0))) - (i32.const 16) - ) - ) - ) - ) - ) - - (func (export "nested-br-value") (param i32) (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (br 0 - (block (result i32) - (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 4) - ) - ) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_if-value") (param i32) (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop (br_if 0 - (block (result i32) - (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 4) - ) - (i32.const 1) - )) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_if-value-cond") (param i32) (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop (br_if 0 - (i32.const 4) - (block (result i32) - (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 1) - ) - )) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_table-value") (param i32) (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (br_table 0 - (block (result i32) - (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 4) - ) - (i32.const 1) - ) - (i32.const 16) - ) - ) - ) - - (func (export "nested-br_table-value-index") (param i32) (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (br_table 0 - (i32.const 4) - (block (result i32) - (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 1) - ) - ) - (i32.const 16) - ) - ) - ) -) - -(assert_return (invoke "as-block-first" (i32.const 0)) (i32.const 2)) -(assert_return (invoke "as-block-first" (i32.const 1)) (i32.const 3)) -(assert_return (invoke "as-block-mid" (i32.const 0)) (i32.const 2)) -(assert_return (invoke "as-block-mid" (i32.const 1)) (i32.const 3)) -(assert_return (invoke "as-block-last" (i32.const 0))) -(assert_return (invoke "as-block-last" (i32.const 1))) -(assert_return (invoke "as-block-last-value" (i32.const 0)) (i32.const 11)) -(assert_return (invoke "as-block-last-value" (i32.const 1)) (i32.const 11)) - -(assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 2)) -(assert_return (invoke "as-loop-first" (i32.const 1)) (i32.const 3)) -(assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 2)) -(assert_return (invoke "as-loop-mid" (i32.const 1)) (i32.const 4)) -(assert_return (invoke "as-loop-last" (i32.const 0))) -(assert_return (invoke "as-loop-last" (i32.const 1))) - -(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 0))) -(assert_return (invoke "as-if-then" (i32.const 4) (i32.const 0))) -(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 1))) -(assert_return (invoke "as-if-then" (i32.const 4) (i32.const 1))) -(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 0))) -(assert_return (invoke "as-if-else" (i32.const 3) (i32.const 0))) -(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 1))) -(assert_return (invoke "as-if-else" (i32.const 3) (i32.const 1))) - -(assert_return (invoke "nested-block-value" (i32.const 0)) (i32.const 21)) -(assert_return (invoke "nested-block-value" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br-value" (i32.const 0)) (i32.const 5)) -(assert_return (invoke "nested-br-value" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br_if-value" (i32.const 0)) (i32.const 5)) -(assert_return (invoke "nested-br_if-value" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br_if-value-cond" (i32.const 0)) (i32.const 5)) -(assert_return (invoke "nested-br_if-value-cond" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br_table-value" (i32.const 0)) (i32.const 5)) -(assert_return (invoke "nested-br_table-value" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br_table-value-index" (i32.const 0)) (i32.const 5)) -(assert_return (invoke "nested-br_table-value-index" (i32.const 1)) (i32.const 9)) - -(assert_invalid - (module (func $type-false-i32 (block (i32.ctz (br_if 0 (i32.const 0)))))) - "type mismatch" -) -(assert_invalid - (module (func $type-false-i64 (block (i64.ctz (br_if 0 (i32.const 0)))))) - "type mismatch" -) -(assert_invalid - (module (func $type-false-f32 (block (f32.neg (br_if 0 (i32.const 0)))))) - "type mismatch" -) -(assert_invalid - (module (func $type-false-f64 (block (f64.neg (br_if 0 (i32.const 0)))))) - "type mismatch" -) - -(assert_invalid - (module (func $type-true-i32 (block (i32.ctz (br_if 0 (i32.const 1)))))) - "type mismatch" -) -(assert_invalid - (module (func $type-true-i64 (block (i64.ctz (br_if 0 (i64.const 1)))))) - "type mismatch" -) -(assert_invalid - (module (func $type-true-f32 (block (f32.neg (br_if 0 (f32.const 1)))))) - "type mismatch" -) -(assert_invalid - (module (func $type-true-f64 (block (f64.neg (br_if 0 (i64.const 1)))))) - "type mismatch" -) - -(assert_invalid - (module (func $type-false-arg-void-vs-num (result i32) - (block (result i32) (br_if 0 (i32.const 0)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-true-arg-void-vs-num (result i32) - (block (result i32) (br_if 0 (i32.const 1)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-false-arg-num-vs-void - (block (br_if 0 (i32.const 0) (i32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-true-arg-num-vs-void - (block (br_if 0 (i32.const 0) (i32.const 1))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-false-arg-void-vs-num (result i32) - (block (result i32) (br_if 0 (nop) (i32.const 0)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-true-arg-void-vs-num (result i32) - (block (result i32) (br_if 0 (nop) (i32.const 1)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-false-arg-num-vs-num (result i32) - (block (result i32) - (drop (br_if 0 (i64.const 1) (i32.const 0))) (i32.const 1) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-true-arg-num-vs-num (result i32) - (block (result i32) - (drop (br_if 0 (i64.const 1) (i32.const 0))) (i32.const 1) - ) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-cond-void-vs-i32 - (block (br_if 0 (nop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-cond-num-vs-i32 - (block (br_if 0 (i64.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-cond-void-vs-i32 (result i32) - (block (result i32) (br_if 0 (i32.const 0) (nop)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-void-vs-num-nested (result i32) - (block (result i32) (i32.const 0) (block (br_if 1 (i32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-cond-num-vs-i32 (result i32) - (block (result i32) (br_if 0 (i32.const 0) (i64.const 0)) (i32.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $unbound-label (br_if 1 (i32.const 1)))) - "unknown label" -) -(assert_invalid - (module (func $unbound-nested-label (block (block (br_if 5 (i32.const 1)))))) - "unknown label" -) -(assert_invalid - (module (func $large-label (br_if 0x10000001 (i32.const 1)))) - "unknown label" -) - diff --git a/libraries/wasm-jit/Test/spec/br_table.wast b/libraries/wasm-jit/Test/spec/br_table.wast deleted file mode 100644 index c8d6082d727..00000000000 --- a/libraries/wasm-jit/Test/spec/br_table.wast +++ /dev/null @@ -1,1515 +0,0 @@ -;; Test `br_table` operator - -(module - ;; Auxiliary definition - (func $dummy) - - (func (export "type-i32") - (block (drop (i32.ctz (br_table 0 0 (i32.const 0))))) - ) - (func (export "type-i64") - (block (drop (i64.ctz (br_table 0 0 (i32.const 0))))) - ) - (func (export "type-f32") - (block (drop (f32.neg (br_table 0 0 (i32.const 0))))) - ) - (func (export "type-f64") - (block (drop (f64.neg (br_table 0 0 (i32.const 0))))) - ) - - (func (export "type-i32-value") (result i32) - (block (result i32) (i32.ctz (br_table 0 0 (i32.const 1) (i32.const 0)))) - ) - (func (export "type-i64-value") (result i64) - (block (result i64) (i64.ctz (br_table 0 0 (i64.const 2) (i32.const 0)))) - ) - (func (export "type-f32-value") (result f32) - (block (result f32) (f32.neg (br_table 0 0 (f32.const 3) (i32.const 0)))) - ) - (func (export "type-f64-value") (result f64) - (block (result f64) (f64.neg (br_table 0 0 (f64.const 4) (i32.const 0)))) - ) - - (func (export "empty") (param i32) (result i32) - (block (br_table 0 (get_local 0)) (return (i32.const 21))) - (i32.const 22) - ) - (func (export "empty-value") (param i32) (result i32) - (block (result i32) - (br_table 0 (i32.const 33) (get_local 0)) (i32.const 31) - ) - ) - - (func (export "singleton") (param i32) (result i32) - (block - (block - (br_table 1 0 (get_local 0)) - (return (i32.const 21)) - ) - (return (i32.const 20)) - ) - (i32.const 22) - ) - - (func (export "singleton-value") (param i32) (result i32) - (block (result i32) - (drop - (block (result i32) - (br_table 0 1 (i32.const 33) (get_local 0)) - (return (i32.const 31)) - ) - ) - (i32.const 32) - ) - ) - - (func (export "multiple") (param i32) (result i32) - (block - (block - (block - (block - (block - (br_table 3 2 1 0 4 (get_local 0)) - (return (i32.const 99)) - ) - (return (i32.const 100)) - ) - (return (i32.const 101)) - ) - (return (i32.const 102)) - ) - (return (i32.const 103)) - ) - (i32.const 104) - ) - - (func (export "multiple-value") (param i32) (result i32) - (local i32) - (set_local 1 (block (result i32) - (set_local 1 (block (result i32) - (set_local 1 (block (result i32) - (set_local 1 (block (result i32) - (set_local 1 (block (result i32) - (br_table 3 2 1 0 4 (i32.const 200) (get_local 0)) - (return (i32.add (get_local 1) (i32.const 99))) - )) - (return (i32.add (get_local 1) (i32.const 10))) - )) - (return (i32.add (get_local 1) (i32.const 11))) - )) - (return (i32.add (get_local 1) (i32.const 12))) - )) - (return (i32.add (get_local 1) (i32.const 13))) - )) - (i32.add (get_local 1) (i32.const 14)) - ) - - (func (export "large") (param i32) (result i32) - (block - (block - (br_table - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 - (get_local 0) - ) - (return (i32.const -1)) - ) - (return (i32.const 0)) - ) - (return (i32.const 1)) - ) - - (func (export "as-block-first") - (block (br_table 0 0 0 (i32.const 0)) (call $dummy)) - ) - (func (export "as-block-mid") - (block (call $dummy) (br_table 0 0 0 (i32.const 0)) (call $dummy)) - ) - (func (export "as-block-last") - (block (nop) (call $dummy) (br_table 0 0 0 (i32.const 0))) - ) - (func (export "as-block-value") (result i32) - (block (result i32) - (nop) (call $dummy) (br_table 0 0 0 (i32.const 2) (i32.const 0)) - ) - ) - - (func (export "as-loop-first") (result i32) - (loop (result i32) (br_table 1 1 (i32.const 3) (i32.const 0)) (i32.const 1)) - ) - (func (export "as-loop-mid") (result i32) - (loop (result i32) - (call $dummy) - (br_table 1 1 1 (i32.const 4) (i32.const -1)) - (i32.const 2) - ) - ) - (func (export "as-loop-last") (result i32) - (loop (result i32) - (nop) (call $dummy) (br_table 1 1 1 (i32.const 5) (i32.const 1)) - ) - ) - - (func (export "as-br-value") (result i32) - (block (result i32) (br 0 (br 0 (i32.const 9)))) - ) - - (func (export "as-br_if-cond") - (block (br_if 0 (br_table 0 0 0 (i32.const 1)))) - ) - (func (export "as-br_if-value") (result i32) - (block (result i32) - (drop (br_if 0 (br_table 0 (i32.const 8) (i32.const 0)) (i32.const 1))) - (i32.const 7) - ) - ) - (func (export "as-br_if-value-cond") (result i32) - (block (result i32) - (drop (br_if 0 (i32.const 6) (br_table 0 0 (i32.const 9) (i32.const 0)))) - (i32.const 7) - ) - ) - - (func (export "as-br_table-index") - (block (br_table 0 0 0 (br_table 0 (i32.const 1)))) - ) - (func (export "as-br_table-value") (result i32) - (block (result i32) - (br_table 0 0 0 (br_table 0 (i32.const 10) (i32.const 0)) (i32.const 1)) - (i32.const 7) - ) - ) - (func (export "as-br_table-value-index") (result i32) - (block (result i32) - (br_table 0 0 (i32.const 6) (br_table 0 (i32.const 11) (i32.const 1))) - (i32.const 7) - ) - ) - - (func (export "as-return-value") (result i64) - (block (result i64) (return (br_table 0 (i64.const 7) (i32.const 0)))) - ) - - (func (export "as-if-cond") (result i32) - (block (result i32) - (if (result i32) - (br_table 0 (i32.const 2) (i32.const 0)) - (then (i32.const 0)) - (else (i32.const 1)) - ) - ) - ) - (func (export "as-if-then") (param i32 i32) (result i32) - (block (result i32) - (if (result i32) - (get_local 0) - (then (br_table 1 (i32.const 3) (i32.const 0))) - (else (get_local 1)) - ) - ) - ) - (func (export "as-if-else") (param i32 i32) (result i32) - (block (result i32) - (if (result i32) - (get_local 0) - (then (get_local 1)) - (else (br_table 1 0 (i32.const 4) (i32.const 0))) - ) - ) - ) - - (func (export "as-select-first") (param i32 i32) (result i32) - (block (result i32) - (select - (br_table 0 (i32.const 5) (i32.const 0)) (get_local 0) (get_local 1) - ) - ) - ) - (func (export "as-select-second") (param i32 i32) (result i32) - (block (result i32) - (select - (get_local 0) (br_table 0 (i32.const 6) (i32.const 1)) (get_local 1) - ) - ) - ) - (func (export "as-select-cond") (result i32) - (block (result i32) - (select - (i32.const 0) (i32.const 1) (br_table 0 (i32.const 7) (i32.const 1)) - ) - ) - ) - - (func $f (param i32 i32 i32) (result i32) (i32.const -1)) - (func (export "as-call-first") (result i32) - (block (result i32) - (call $f - (br_table 0 (i32.const 12) (i32.const 1)) (i32.const 2) (i32.const 3) - ) - ) - ) - (func (export "as-call-mid") (result i32) - (block (result i32) - (call $f - (i32.const 1) (br_table 0 (i32.const 13) (i32.const 1)) (i32.const 3) - ) - ) - ) - (func (export "as-call-last") (result i32) - (block (result i32) - (call $f - (i32.const 1) (i32.const 2) (br_table 0 (i32.const 14) (i32.const 1)) - ) - ) - ) - - (type $sig (func (param i32 i32 i32) (result i32))) - (table anyfunc (elem $f)) - (func (export "as-call_indirect-first") (result i32) - (block (result i32) - (call_indirect $sig - (br_table 0 (i32.const 20) (i32.const 1)) (i32.const 1) (i32.const 2) - (i32.const 3) - ) - ) - ) - (func (export "as-call_indirect-mid") (result i32) - (block (result i32) - (call_indirect $sig - (i32.const 0) (br_table 0 (i32.const 21) (i32.const 1)) (i32.const 2) - (i32.const 3) - ) - ) - ) - (func (export "as-call_indirect-last") (result i32) - (block (result i32) - (call_indirect $sig - (i32.const 0) (i32.const 1) (br_table 0 (i32.const 22) (i32.const 1)) - (i32.const 3) - ) - ) - ) - (func (export "as-call_indirect-func") (result i32) - (block (result i32) - (call_indirect $sig - (i32.const 0) (i32.const 1) (i32.const 2) - (br_table 0 (i32.const 23) (i32.const 1)) - ) - ) - ) - - (func (export "as-set_local-value") (result i32) - (local f32) - (block (result i32) - (set_local 0 (br_table 0 (i32.const 17) (i32.const 1))) - (i32.const -1) - ) - ) - - (memory 1) - (func (export "as-load-address") (result f32) - (block (result f32) (f32.load (br_table 0 (f32.const 1.7) (i32.const 1)))) - ) - (func (export "as-loadN-address") (result i64) - (block (result i64) (i64.load8_s (br_table 0 (i64.const 30) (i32.const 1)))) - ) - - (func (export "as-store-address") (result i32) - (block (result i32) - (f64.store (br_table 0 (i32.const 30) (i32.const 1)) (f64.const 7)) - (i32.const -1) - ) - ) - (func (export "as-store-value") (result i32) - (block (result i32) - (i64.store (i32.const 2) (br_table 0 (i32.const 31) (i32.const 1))) - (i32.const -1) - ) - ) - - (func (export "as-storeN-address") (result i32) - (block (result i32) - (i32.store8 (br_table 0 (i32.const 32) (i32.const 0)) (i32.const 7)) - (i32.const -1) - ) - ) - (func (export "as-storeN-value") (result i32) - (block (result i32) - (i64.store16 (i32.const 2) (br_table 0 (i32.const 33) (i32.const 0))) - (i32.const -1) - ) - ) - - (func (export "as-unary-operand") (result f32) - (block (result f32) (f32.neg (br_table 0 (f32.const 3.4) (i32.const 0)))) - ) - - (func (export "as-binary-left") (result i32) - (block (result i32) - (i32.add (br_table 0 0 (i32.const 3) (i32.const 0)) (i32.const 10)) - ) - ) - (func (export "as-binary-right") (result i64) - (block (result i64) - (i64.sub (i64.const 10) (br_table 0 (i64.const 45) (i32.const 0))) - ) - ) - - (func (export "as-test-operand") (result i32) - (block (result i32) (i32.eqz (br_table 0 (i32.const 44) (i32.const 0)))) - ) - - (func (export "as-compare-left") (result i32) - (block (result i32) - (f64.le (br_table 0 0 (i32.const 43) (i32.const 0)) (f64.const 10)) - ) - ) - (func (export "as-compare-right") (result i32) - (block (result i32) - (f32.ne (f32.const 10) (br_table 0 (i32.const 42) (i32.const 0))) - ) - ) - - (func (export "as-convert-operand") (result i32) - (block (result i32) - (i32.wrap/i64 (br_table 0 (i32.const 41) (i32.const 0))) - ) - ) - - (func (export "as-grow_memory-size") (result i32) - (block (result i32) (grow_memory (br_table 0 (i32.const 40) (i32.const 0)))) - ) - - (func (export "nested-block-value") (param i32) (result i32) - (block (result i32) - (drop (i32.const -1)) - (i32.add - (i32.const 1) - (block (result i32) - (i32.add - (i32.const 2) - (block (result i32) - (drop (i32.const 4)) - (i32.add - (i32.const 8) - (br_table 0 1 2 (i32.const 16) (get_local 0)) - ) - ) - ) - ) - ) - ) - ) - - (func (export "nested-br-value") (param i32) (result i32) - (block (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop - (block (result i32) - (drop (i32.const 4)) - (br 0 (br_table 2 1 0 (i32.const 8) (get_local 0))) - ) - ) - (i32.const 16) - ) - ) - ) - ) - - (func (export "nested-br_if-value") (param i32) (result i32) - (block (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop - (block (result i32) - (drop (i32.const 4)) - (drop - (br_if 0 - (br_table 0 1 2 (i32.const 8) (get_local 0)) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - (i32.const 16) - ) - ) - ) - ) - - (func (export "nested-br_if-value-cond") (param i32) (result i32) - (block (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop - (br_if 0 (i32.const 4) (br_table 0 1 0 (i32.const 8) (get_local 0))) - ) - (i32.const 16) - ) - ) - ) - ) - - (func (export "nested-br_table-value") (param i32) (result i32) - (block (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (drop - (block (result i32) - (drop (i32.const 4)) - (br_table 0 (br_table 0 1 2 (i32.const 8) (get_local 0)) (i32.const 1)) - (i32.const 32) - ) - ) - (i32.const 16) - ) - ) - ) - ) - - (func (export "nested-br_table-value-index") (param i32) (result i32) - (block (result i32) - (i32.add - (i32.const 1) - (block (result i32) - (drop (i32.const 2)) - (br_table 0 (i32.const 4) (br_table 0 1 0 (i32.const 8) (get_local 0))) - (i32.const 16) - ) - ) - ) - ) - - (func (export "nested-br_table-loop-block") (param i32) (result i32) - (set_local 0 - (loop (result i32) - (block - (br_table 1 0 0 (get_local 0)) - ) - (i32.const 0) - ) - ) - (loop (result i32) - (block - (br_table 0 1 1 (get_local 0)) - ) - (i32.const 3) - ) - ) -) - -(assert_return (invoke "type-i32")) -(assert_return (invoke "type-i64")) -(assert_return (invoke "type-f32")) -(assert_return (invoke "type-f64")) - -(assert_return (invoke "type-i32-value") (i32.const 1)) -(assert_return (invoke "type-i64-value") (i64.const 2)) -(assert_return (invoke "type-f32-value") (f32.const 3)) -(assert_return (invoke "type-f64-value") (f64.const 4)) - -(assert_return (invoke "empty" (i32.const 0)) (i32.const 22)) -(assert_return (invoke "empty" (i32.const 1)) (i32.const 22)) -(assert_return (invoke "empty" (i32.const 11)) (i32.const 22)) -(assert_return (invoke "empty" (i32.const -1)) (i32.const 22)) -(assert_return (invoke "empty" (i32.const -100)) (i32.const 22)) -(assert_return (invoke "empty" (i32.const 0xffffffff)) (i32.const 22)) - -(assert_return (invoke "empty-value" (i32.const 0)) (i32.const 33)) -(assert_return (invoke "empty-value" (i32.const 1)) (i32.const 33)) -(assert_return (invoke "empty-value" (i32.const 11)) (i32.const 33)) -(assert_return (invoke "empty-value" (i32.const -1)) (i32.const 33)) -(assert_return (invoke "empty-value" (i32.const -100)) (i32.const 33)) -(assert_return (invoke "empty-value" (i32.const 0xffffffff)) (i32.const 33)) - -(assert_return (invoke "singleton" (i32.const 0)) (i32.const 22)) -(assert_return (invoke "singleton" (i32.const 1)) (i32.const 20)) -(assert_return (invoke "singleton" (i32.const 11)) (i32.const 20)) -(assert_return (invoke "singleton" (i32.const -1)) (i32.const 20)) -(assert_return (invoke "singleton" (i32.const -100)) (i32.const 20)) -(assert_return (invoke "singleton" (i32.const 0xffffffff)) (i32.const 20)) - -(assert_return (invoke "singleton-value" (i32.const 0)) (i32.const 32)) -(assert_return (invoke "singleton-value" (i32.const 1)) (i32.const 33)) -(assert_return (invoke "singleton-value" (i32.const 11)) (i32.const 33)) -(assert_return (invoke "singleton-value" (i32.const -1)) (i32.const 33)) -(assert_return (invoke "singleton-value" (i32.const -100)) (i32.const 33)) -(assert_return (invoke "singleton-value" (i32.const 0xffffffff)) (i32.const 33)) - -(assert_return (invoke "multiple" (i32.const 0)) (i32.const 103)) -(assert_return (invoke "multiple" (i32.const 1)) (i32.const 102)) -(assert_return (invoke "multiple" (i32.const 2)) (i32.const 101)) -(assert_return (invoke "multiple" (i32.const 3)) (i32.const 100)) -(assert_return (invoke "multiple" (i32.const 4)) (i32.const 104)) -(assert_return (invoke "multiple" (i32.const 5)) (i32.const 104)) -(assert_return (invoke "multiple" (i32.const 6)) (i32.const 104)) -(assert_return (invoke "multiple" (i32.const 10)) (i32.const 104)) -(assert_return (invoke "multiple" (i32.const -1)) (i32.const 104)) -(assert_return (invoke "multiple" (i32.const 0xffffffff)) (i32.const 104)) - -(assert_return (invoke "multiple-value" (i32.const 0)) (i32.const 213)) -(assert_return (invoke "multiple-value" (i32.const 1)) (i32.const 212)) -(assert_return (invoke "multiple-value" (i32.const 2)) (i32.const 211)) -(assert_return (invoke "multiple-value" (i32.const 3)) (i32.const 210)) -(assert_return (invoke "multiple-value" (i32.const 4)) (i32.const 214)) -(assert_return (invoke "multiple-value" (i32.const 5)) (i32.const 214)) -(assert_return (invoke "multiple-value" (i32.const 6)) (i32.const 214)) -(assert_return (invoke "multiple-value" (i32.const 10)) (i32.const 214)) -(assert_return (invoke "multiple-value" (i32.const -1)) (i32.const 214)) -(assert_return (invoke "multiple-value" (i32.const 0xffffffff)) (i32.const 214)) - -(assert_return (invoke "large" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "large" (i32.const 1)) (i32.const 1)) -(assert_return (invoke "large" (i32.const 100)) (i32.const 0)) -(assert_return (invoke "large" (i32.const 101)) (i32.const 1)) -(assert_return (invoke "large" (i32.const 10000)) (i32.const 0)) -(assert_return (invoke "large" (i32.const 10001)) (i32.const 1)) -(assert_return (invoke "large" (i32.const 1000000)) (i32.const 1)) -(assert_return (invoke "large" (i32.const 1000001)) (i32.const 1)) - -(assert_return (invoke "as-block-first")) -(assert_return (invoke "as-block-mid")) -(assert_return (invoke "as-block-last")) -(assert_return (invoke "as-block-value") (i32.const 2)) - -(assert_return (invoke "as-loop-first") (i32.const 3)) -(assert_return (invoke "as-loop-mid") (i32.const 4)) -(assert_return (invoke "as-loop-last") (i32.const 5)) - -(assert_return (invoke "as-br-value") (i32.const 9)) - -(assert_return (invoke "as-br_if-cond")) -(assert_return (invoke "as-br_if-value") (i32.const 8)) -(assert_return (invoke "as-br_if-value-cond") (i32.const 9)) - -(assert_return (invoke "as-br_table-index")) -(assert_return (invoke "as-br_table-value") (i32.const 10)) -(assert_return (invoke "as-br_table-value-index") (i32.const 11)) - -(assert_return (invoke "as-return-value") (i64.const 7)) - -(assert_return (invoke "as-if-cond") (i32.const 2)) -(assert_return (invoke "as-if-then" (i32.const 1) (i32.const 6)) (i32.const 3)) -(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 6)) (i32.const 4)) -(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) - -(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 6)) (i32.const 5)) -(assert_return (invoke "as-select-first" (i32.const 1) (i32.const 6)) (i32.const 5)) -(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-select-second" (i32.const 1) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-select-cond") (i32.const 7)) - -(assert_return (invoke "as-call-first") (i32.const 12)) -(assert_return (invoke "as-call-mid") (i32.const 13)) -(assert_return (invoke "as-call-last") (i32.const 14)) - -(assert_return (invoke "as-call_indirect-first") (i32.const 20)) -(assert_return (invoke "as-call_indirect-mid") (i32.const 21)) -(assert_return (invoke "as-call_indirect-last") (i32.const 22)) -(assert_return (invoke "as-call_indirect-func") (i32.const 23)) - -(assert_return (invoke "as-set_local-value") (i32.const 17)) - -(assert_return (invoke "as-load-address") (f32.const 1.7)) -(assert_return (invoke "as-loadN-address") (i64.const 30)) - -(assert_return (invoke "as-store-address") (i32.const 30)) -(assert_return (invoke "as-store-value") (i32.const 31)) -(assert_return (invoke "as-storeN-address") (i32.const 32)) -(assert_return (invoke "as-storeN-value") (i32.const 33)) - -(assert_return (invoke "as-unary-operand") (f32.const 3.4)) - -(assert_return (invoke "as-binary-left") (i32.const 3)) -(assert_return (invoke "as-binary-right") (i64.const 45)) - -(assert_return (invoke "as-test-operand") (i32.const 44)) - -(assert_return (invoke "as-compare-left") (i32.const 43)) -(assert_return (invoke "as-compare-right") (i32.const 42)) - -(assert_return (invoke "as-convert-operand") (i32.const 41)) - -(assert_return (invoke "as-grow_memory-size") (i32.const 40)) - -(assert_return (invoke "nested-block-value" (i32.const 0)) (i32.const 19)) -(assert_return (invoke "nested-block-value" (i32.const 1)) (i32.const 17)) -(assert_return (invoke "nested-block-value" (i32.const 2)) (i32.const 16)) -(assert_return (invoke "nested-block-value" (i32.const 10)) (i32.const 16)) -(assert_return (invoke "nested-block-value" (i32.const -1)) (i32.const 16)) -(assert_return (invoke "nested-block-value" (i32.const 100000)) (i32.const 16)) - -(assert_return (invoke "nested-br-value" (i32.const 0)) (i32.const 8)) -(assert_return (invoke "nested-br-value" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br-value" (i32.const 2)) (i32.const 17)) -(assert_return (invoke "nested-br-value" (i32.const 11)) (i32.const 17)) -(assert_return (invoke "nested-br-value" (i32.const -4)) (i32.const 17)) -(assert_return (invoke "nested-br-value" (i32.const 10213210)) (i32.const 17)) - -(assert_return (invoke "nested-br_if-value" (i32.const 0)) (i32.const 17)) -(assert_return (invoke "nested-br_if-value" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br_if-value" (i32.const 2)) (i32.const 8)) -(assert_return (invoke "nested-br_if-value" (i32.const 9)) (i32.const 8)) -(assert_return (invoke "nested-br_if-value" (i32.const -9)) (i32.const 8)) -(assert_return (invoke "nested-br_if-value" (i32.const 999999)) (i32.const 8)) - -(assert_return (invoke "nested-br_if-value-cond" (i32.const 0)) (i32.const 9)) -(assert_return (invoke "nested-br_if-value-cond" (i32.const 1)) (i32.const 8)) -(assert_return (invoke "nested-br_if-value-cond" (i32.const 2)) (i32.const 9)) -(assert_return (invoke "nested-br_if-value-cond" (i32.const 3)) (i32.const 9)) -(assert_return (invoke "nested-br_if-value-cond" (i32.const -1000000)) (i32.const 9)) -(assert_return (invoke "nested-br_if-value-cond" (i32.const 9423975)) (i32.const 9)) - -(assert_return (invoke "nested-br_table-value" (i32.const 0)) (i32.const 17)) -(assert_return (invoke "nested-br_table-value" (i32.const 1)) (i32.const 9)) -(assert_return (invoke "nested-br_table-value" (i32.const 2)) (i32.const 8)) -(assert_return (invoke "nested-br_table-value" (i32.const 9)) (i32.const 8)) -(assert_return (invoke "nested-br_table-value" (i32.const -9)) (i32.const 8)) -(assert_return (invoke "nested-br_table-value" (i32.const 999999)) (i32.const 8)) - -(assert_return (invoke "nested-br_table-value-index" (i32.const 0)) (i32.const 9)) -(assert_return (invoke "nested-br_table-value-index" (i32.const 1)) (i32.const 8)) -(assert_return (invoke "nested-br_table-value-index" (i32.const 2)) (i32.const 9)) -(assert_return (invoke "nested-br_table-value-index" (i32.const 3)) (i32.const 9)) -(assert_return (invoke "nested-br_table-value-index" (i32.const -1000000)) (i32.const 9)) -(assert_return (invoke "nested-br_table-value-index" (i32.const 9423975)) (i32.const 9)) - -(assert_return (invoke "nested-br_table-loop-block" (i32.const 1)) (i32.const 3)) - -(assert_invalid - (module (func $type-arg-void-vs-num (result i32) - (block (br_table 0 (i32.const 1)) (i32.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-arg-void-vs-num (result i32) - (block (result i32) (br_table 0 (nop) (i32.const 1)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-num-vs-num (result i32) - (block (result i32) - (br_table 0 0 0 (i64.const 1) (i32.const 1)) (i32.const 1) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-num-vs-arg-num - (block - (block (result f32) - (br_table 0 1 (f32.const 0) (i32.const 0)) - ) - (drop) - ) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-index-void-vs-i32 - (block (br_table 0 0 0 (nop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-index-num-vs-i32 - (block (br_table 0 (i64.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-index-void-vs-i32 (result i32) - (block (result i32) (br_table 0 0 (i32.const 0) (nop)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-void-vs-num-nested (result i32) - (block (result i32) (i32.const 0) (block (br_table 1 (i32.const 0)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-arg-index-num-vs-i32 (result i32) - (block (result i32) - (br_table 0 0 (i32.const 0) (i64.const 0)) (i32.const 1) - ) - )) - "type mismatch" -) - -(assert_invalid - (module (func $unbound-label - (block (br_table 2 1 (i32.const 1))) - )) - "unknown label" -) -(assert_invalid - (module (func $unbound-nested-label - (block (block (br_table 0 5 (i32.const 1)))) - )) - "unknown label" -) -(assert_invalid - (module (func $large-label - (block (br_table 0 0x10000001 0 (i32.const 1))) - )) - "unknown label" -) - -(assert_invalid - (module (func $unbound-label-default - (block (br_table 1 2 (i32.const 1))) - )) - "unknown label" -) -(assert_invalid - (module (func $unbound-nested-label-default - (block (block (br_table 0 5 (i32.const 1)))) - )) - "unknown label" -) -(assert_invalid - (module (func $large-label-default - (block (br_table 0 0 0x10000001 (i32.const 1))) - )) - "unknown label" -) - diff --git a/libraries/wasm-jit/Test/spec/break-drop.wast b/libraries/wasm-jit/Test/spec/break-drop.wast deleted file mode 100644 index e10df667154..00000000000 --- a/libraries/wasm-jit/Test/spec/break-drop.wast +++ /dev/null @@ -1,9 +0,0 @@ -(module - (func (export "br") (block (br 0))) - (func (export "br_if") (block (br_if 0 (i32.const 1)))) - (func (export "br_table") (block (br_table 0 (i32.const 0)))) -) - -(assert_return (invoke "br")) -(assert_return (invoke "br_if")) -(assert_return (invoke "br_table")) diff --git a/libraries/wasm-jit/Test/spec/call.wast b/libraries/wasm-jit/Test/spec/call.wast deleted file mode 100644 index 3a89f23233f..00000000000 --- a/libraries/wasm-jit/Test/spec/call.wast +++ /dev/null @@ -1,242 +0,0 @@ -;; Test `call` operator - -(module - ;; Auxiliary definitions - (func $const-i32 (result i32) (i32.const 0x132)) - (func $const-i64 (result i64) (i64.const 0x164)) - (func $const-f32 (result f32) (f32.const 0xf32)) - (func $const-f64 (result f64) (f64.const 0xf64)) - - (func $id-i32 (param i32) (result i32) (get_local 0)) - (func $id-i64 (param i64) (result i64) (get_local 0)) - (func $id-f32 (param f32) (result f32) (get_local 0)) - (func $id-f64 (param f64) (result f64) (get_local 0)) - - (func $f32-i32 (param f32 i32) (result i32) (get_local 1)) - (func $i32-i64 (param i32 i64) (result i64) (get_local 1)) - (func $f64-f32 (param f64 f32) (result f32) (get_local 1)) - (func $i64-f64 (param i64 f64) (result f64) (get_local 1)) - - ;; Typing - - (func (export "type-i32") (result i32) (call $const-i32)) - (func (export "type-i64") (result i64) (call $const-i64)) - (func (export "type-f32") (result f32) (call $const-f32)) - (func (export "type-f64") (result f64) (call $const-f64)) - - (func (export "type-first-i32") (result i32) (call $id-i32 (i32.const 32))) - (func (export "type-first-i64") (result i64) (call $id-i64 (i64.const 64))) - (func (export "type-first-f32") (result f32) (call $id-f32 (f32.const 1.32))) - (func (export "type-first-f64") (result f64) (call $id-f64 (f64.const 1.64))) - - (func (export "type-second-i32") (result i32) - (call $f32-i32 (f32.const 32.1) (i32.const 32)) - ) - (func (export "type-second-i64") (result i64) - (call $i32-i64 (i32.const 32) (i64.const 64)) - ) - (func (export "type-second-f32") (result f32) - (call $f64-f32 (f64.const 64) (f32.const 32)) - ) - (func (export "type-second-f64") (result f64) - (call $i64-f64 (i64.const 64) (f64.const 64.1)) - ) - - ;; Recursion - - (func $fac (export "fac") (param i64) (result i64) - (if (result i64) (i64.eqz (get_local 0)) - (then (i64.const 1)) - (else - (i64.mul - (get_local 0) - (call $fac (i64.sub (get_local 0) (i64.const 1))) - ) - ) - ) - ) - - (func $fac-acc (export "fac-acc") (param i64 i64) (result i64) - (if (result i64) (i64.eqz (get_local 0)) - (then (get_local 1)) - (else - (call $fac-acc - (i64.sub (get_local 0) (i64.const 1)) - (i64.mul (get_local 0) (get_local 1)) - ) - ) - ) - ) - - (func $fib (export "fib") (param i64) (result i64) - (if (result i64) (i64.le_u (get_local 0) (i64.const 1)) - (then (i64.const 1)) - (else - (i64.add - (call $fib (i64.sub (get_local 0) (i64.const 2))) - (call $fib (i64.sub (get_local 0) (i64.const 1))) - ) - ) - ) - ) - - (func $even (export "even") (param i64) (result i32) - (if (result i32) (i64.eqz (get_local 0)) - (then (i32.const 44)) - (else (call $odd (i64.sub (get_local 0) (i64.const 1)))) - ) - ) - (func $odd (export "odd") (param i64) (result i32) - (if (result i32) (i64.eqz (get_local 0)) - (then (i32.const 99)) - (else (call $even (i64.sub (get_local 0) (i64.const 1)))) - ) - ) - - ;; Stack exhaustion - - ;; Implementations are required to have every call consume some abstract - ;; resource towards exhausting some abstract finite limit, such that - ;; infinitely recursive test cases reliably trap in finite time. This is - ;; because otherwise applications could come to depend on it on those - ;; implementations and be incompatible with implementations that don't do - ;; it (or don't do it under the same circumstances). - - (func $runaway (export "runaway") (call $runaway)) - - (func $mutual-runaway1 (export "mutual-runaway") (call $mutual-runaway2)) - (func $mutual-runaway2 (call $mutual-runaway1)) -) - -(assert_return (invoke "type-i32") (i32.const 0x132)) -(assert_return (invoke "type-i64") (i64.const 0x164)) -(assert_return (invoke "type-f32") (f32.const 0xf32)) -(assert_return (invoke "type-f64") (f64.const 0xf64)) - -(assert_return (invoke "type-first-i32") (i32.const 32)) -(assert_return (invoke "type-first-i64") (i64.const 64)) -(assert_return (invoke "type-first-f32") (f32.const 1.32)) -(assert_return (invoke "type-first-f64") (f64.const 1.64)) - -(assert_return (invoke "type-second-i32") (i32.const 32)) -(assert_return (invoke "type-second-i64") (i64.const 64)) -(assert_return (invoke "type-second-f32") (f32.const 32)) -(assert_return (invoke "type-second-f64") (f64.const 64.1)) - -(assert_return (invoke "fac" (i64.const 0)) (i64.const 1)) -(assert_return (invoke "fac" (i64.const 1)) (i64.const 1)) -(assert_return (invoke "fac" (i64.const 5)) (i64.const 120)) -(assert_return (invoke "fac" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_return (invoke "fac-acc" (i64.const 0) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "fac-acc" (i64.const 1) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "fac-acc" (i64.const 5) (i64.const 1)) (i64.const 120)) -(assert_return - (invoke "fac-acc" (i64.const 25) (i64.const 1)) - (i64.const 7034535277573963776) -) - -(assert_return (invoke "fib" (i64.const 0)) (i64.const 1)) -(assert_return (invoke "fib" (i64.const 1)) (i64.const 1)) -(assert_return (invoke "fib" (i64.const 2)) (i64.const 2)) -(assert_return (invoke "fib" (i64.const 5)) (i64.const 8)) -(assert_return (invoke "fib" (i64.const 20)) (i64.const 10946)) - -(assert_return (invoke "even" (i64.const 0)) (i32.const 44)) -(assert_return (invoke "even" (i64.const 1)) (i32.const 99)) -(assert_return (invoke "even" (i64.const 100)) (i32.const 44)) -(assert_return (invoke "even" (i64.const 77)) (i32.const 99)) -(assert_return (invoke "odd" (i64.const 0)) (i32.const 99)) -(assert_return (invoke "odd" (i64.const 1)) (i32.const 44)) -(assert_return (invoke "odd" (i64.const 200)) (i32.const 99)) -(assert_return (invoke "odd" (i64.const 77)) (i32.const 44)) - -(assert_exhaustion (invoke "runaway") "call stack exhausted") -(assert_exhaustion (invoke "mutual-runaway") "call stack exhausted") - - -;; Invalid typing - -(assert_invalid - (module - (func $type-void-vs-num (i32.eqz (call 1))) - (func) - ) - "type mismatch" -) -(assert_invalid - (module - (func $type-num-vs-num (i32.eqz (call 1))) - (func (result i64) (i64.const 1)) - ) - "type mismatch" -) - -(assert_invalid - (module - (func $arity-0-vs-1 (call 1)) - (func (param i32)) - ) - "type mismatch" -) -(assert_invalid - (module - (func $arity-0-vs-2 (call 1)) - (func (param f64 i32)) - ) - "type mismatch" -) -(assert_invalid - (module - (func $arity-1-vs-0 (call 1 (i32.const 1))) - (func) - ) - "type mismatch" -) -(assert_invalid - (module - (func $arity-2-vs-0 (call 1 (f64.const 2) (i32.const 1))) - (func) - ) - "type mismatch" -) - -(assert_invalid - (module - (func $type-first-void-vs-num (call 1 (nop) (i32.const 1))) - (func (param i32 i32)) - ) - "type mismatch" -) -(assert_invalid - (module - (func $type-second-void-vs-num (call 1 (i32.const 1) (nop))) - (func (param i32 i32)) - ) - "type mismatch" -) -(assert_invalid - (module - (func $type-first-num-vs-num (call 1 (f64.const 1) (i32.const 1))) - (func (param i32 f64)) - ) - "type mismatch" -) -(assert_invalid - (module - (func $type-second-num-vs-num (call 1 (i32.const 1) (f64.const 1))) - (func (param f64 i32)) - ) - "type mismatch" -) - - -;; Unbound function - -(assert_invalid - (module (func $unbound-func (call 1))) - "unknown function" -) -(assert_invalid - (module (func $large-func (call 1012321300))) - "unknown function" -) diff --git a/libraries/wasm-jit/Test/spec/call_indirect.wast b/libraries/wasm-jit/Test/spec/call_indirect.wast deleted file mode 100644 index b9b152e8225..00000000000 --- a/libraries/wasm-jit/Test/spec/call_indirect.wast +++ /dev/null @@ -1,378 +0,0 @@ -;; Test `call_indirect` operator - -(module - ;; Auxiliary definitions - (type $proc (func)) - (type $out-i32 (func (result i32))) - (type $out-i64 (func (result i64))) - (type $out-f32 (func (result f32))) - (type $out-f64 (func (result f64))) - (type $over-i32 (func (param i32) (result i32))) - (type $over-i64 (func (param i64) (result i64))) - (type $over-f32 (func (param f32) (result f32))) - (type $over-f64 (func (param f64) (result f64))) - (type $f32-i32 (func (param f32 i32) (result i32))) - (type $i32-i64 (func (param i32 i64) (result i64))) - (type $f64-f32 (func (param f64 f32) (result f32))) - (type $i64-f64 (func (param i64 f64) (result f64))) - (type $over-i32-duplicate (func (param i32) (result i32))) - (type $over-i64-duplicate (func (param i64) (result i64))) - (type $over-f32-duplicate (func (param f32) (result f32))) - (type $over-f64-duplicate (func (param f64) (result f64))) - - (func $const-i32 (type $out-i32) (i32.const 0x132)) - (func $const-i64 (type $out-i64) (i64.const 0x164)) - (func $const-f32 (type $out-f32) (f32.const 0xf32)) - (func $const-f64 (type $out-f64) (f64.const 0xf64)) - - (func $id-i32 (type $over-i32) (get_local 0)) - (func $id-i64 (type $over-i64) (get_local 0)) - (func $id-f32 (type $over-f32) (get_local 0)) - (func $id-f64 (type $over-f64) (get_local 0)) - - (func $i32-i64 (type $i32-i64) (get_local 1)) - (func $i64-f64 (type $i64-f64) (get_local 1)) - (func $f32-i32 (type $f32-i32) (get_local 1)) - (func $f64-f32 (type $f64-f32) (get_local 1)) - - (func $over-i32-duplicate (type $over-i32-duplicate) (get_local 0)) - (func $over-i64-duplicate (type $over-i64-duplicate) (get_local 0)) - (func $over-f32-duplicate (type $over-f32-duplicate) (get_local 0)) - (func $over-f64-duplicate (type $over-f64-duplicate) (get_local 0)) - - (table anyfunc - (elem - $const-i32 $const-i64 $const-f32 $const-f64 - $id-i32 $id-i64 $id-f32 $id-f64 - $f32-i32 $i32-i64 $f64-f32 $i64-f64 - $fac $fib $even $odd - $runaway $mutual-runaway1 $mutual-runaway2 - $over-i32-duplicate $over-i64-duplicate - $over-f32-duplicate $over-f64-duplicate - ) - ) - - ;; Typing - - (func (export "type-i32") (result i32) (call_indirect $out-i32 (i32.const 0))) - (func (export "type-i64") (result i64) (call_indirect $out-i64 (i32.const 1))) - (func (export "type-f32") (result f32) (call_indirect $out-f32 (i32.const 2))) - (func (export "type-f64") (result f64) (call_indirect $out-f64 (i32.const 3))) - - (func (export "type-index") (result i64) - (call_indirect $over-i64 (i64.const 100) (i32.const 5)) - ) - - (func (export "type-first-i32") (result i32) - (call_indirect $over-i32 (i32.const 32) (i32.const 4)) - ) - (func (export "type-first-i64") (result i64) - (call_indirect $over-i64 (i64.const 64) (i32.const 5)) - ) - (func (export "type-first-f32") (result f32) - (call_indirect $over-f32 (f32.const 1.32) (i32.const 6)) - ) - (func (export "type-first-f64") (result f64) - (call_indirect $over-f64 (f64.const 1.64) (i32.const 7)) - ) - - (func (export "type-second-i32") (result i32) - (call_indirect $f32-i32 (f32.const 32.1) (i32.const 32) (i32.const 8)) - ) - (func (export "type-second-i64") (result i64) - (call_indirect $i32-i64 (i32.const 32) (i64.const 64) (i32.const 9)) - ) - (func (export "type-second-f32") (result f32) - (call_indirect $f64-f32 (f64.const 64) (f32.const 32) (i32.const 10)) - ) - (func (export "type-second-f64") (result f64) - (call_indirect $i64-f64 (i64.const 64) (f64.const 64.1) (i32.const 11)) - ) - - ;; Dispatch - - (func (export "dispatch") (param i32 i64) (result i64) - (call_indirect $over-i64 (get_local 1) (get_local 0)) - ) - - (func (export "dispatch-structural") (param i32) (result i64) - (call_indirect $over-i64-duplicate (i64.const 9) (get_local 0)) - ) - - ;; Recursion - - (func $fac (export "fac") (type $over-i64) - (if (result i64) (i64.eqz (get_local 0)) - (then (i64.const 1)) - (else - (i64.mul - (get_local 0) - (call_indirect $over-i64 - (i64.sub (get_local 0) (i64.const 1)) - (i32.const 12) - ) - ) - ) - ) - ) - - (func $fib (export "fib") (type $over-i64) - (if (result i64) (i64.le_u (get_local 0) (i64.const 1)) - (then (i64.const 1)) - (else - (i64.add - (call_indirect $over-i64 - (i64.sub (get_local 0) (i64.const 2)) - (i32.const 13) - ) - (call_indirect $over-i64 - (i64.sub (get_local 0) (i64.const 1)) - (i32.const 13) - ) - ) - ) - ) - ) - - (func $even (export "even") (param i32) (result i32) - (if (result i32) (i32.eqz (get_local 0)) - (then (i32.const 44)) - (else - (call_indirect $over-i32 - (i32.sub (get_local 0) (i32.const 1)) - (i32.const 15) - ) - ) - ) - ) - (func $odd (export "odd") (param i32) (result i32) - (if (result i32) (i32.eqz (get_local 0)) - (then (i32.const 99)) - (else - (call_indirect $over-i32 - (i32.sub (get_local 0) (i32.const 1)) - (i32.const 14) - ) - ) - ) - ) - - ;; Stack exhaustion - - ;; Implementations are required to have every call consume some abstract - ;; resource towards exhausting some abstract finite limit, such that - ;; infinitely recursive test cases reliably trap in finite time. This is - ;; because otherwise applications could come to depend on it on those - ;; implementations and be incompatible with implementations that don't do - ;; it (or don't do it under the same circumstances). - - (func $runaway (export "runaway") (call_indirect $proc (i32.const 16))) - - (func $mutual-runaway1 (export "mutual-runaway") (call_indirect $proc (i32.const 18))) - (func $mutual-runaway2 (call_indirect $proc (i32.const 17))) -) - -(assert_return (invoke "type-i32") (i32.const 0x132)) -(assert_return (invoke "type-i64") (i64.const 0x164)) -(assert_return (invoke "type-f32") (f32.const 0xf32)) -(assert_return (invoke "type-f64") (f64.const 0xf64)) - -(assert_return (invoke "type-index") (i64.const 100)) - -(assert_return (invoke "type-first-i32") (i32.const 32)) -(assert_return (invoke "type-first-i64") (i64.const 64)) -(assert_return (invoke "type-first-f32") (f32.const 1.32)) -(assert_return (invoke "type-first-f64") (f64.const 1.64)) - -(assert_return (invoke "type-second-i32") (i32.const 32)) -(assert_return (invoke "type-second-i64") (i64.const 64)) -(assert_return (invoke "type-second-f32") (f32.const 32)) -(assert_return (invoke "type-second-f64") (f64.const 64.1)) - -(assert_return (invoke "dispatch" (i32.const 5) (i64.const 2)) (i64.const 2)) -(assert_return (invoke "dispatch" (i32.const 5) (i64.const 5)) (i64.const 5)) -(assert_return (invoke "dispatch" (i32.const 12) (i64.const 5)) (i64.const 120)) -(assert_return (invoke "dispatch" (i32.const 13) (i64.const 5)) (i64.const 8)) -(assert_return (invoke "dispatch" (i32.const 20) (i64.const 2)) (i64.const 2)) -(assert_trap (invoke "dispatch" (i32.const 0) (i64.const 2)) "indirect call signature mismatch") -(assert_trap (invoke "dispatch" (i32.const 15) (i64.const 2)) "indirect call signature mismatch") -(assert_trap (invoke "dispatch" (i32.const 23) (i64.const 2)) "undefined element") -(assert_trap (invoke "dispatch" (i32.const -1) (i64.const 2)) "undefined element") -(assert_trap (invoke "dispatch" (i32.const 1213432423) (i64.const 2)) "undefined element") - -(assert_return (invoke "dispatch-structural" (i32.const 5)) (i64.const 9)) -(assert_return (invoke "dispatch-structural" (i32.const 5)) (i64.const 9)) -(assert_return (invoke "dispatch-structural" (i32.const 12)) (i64.const 362880)) -(assert_return (invoke "dispatch-structural" (i32.const 20)) (i64.const 9)) -(assert_trap (invoke "dispatch-structural" (i32.const 11)) "indirect call signature mismatch") -(assert_trap (invoke "dispatch-structural" (i32.const 22)) "indirect call signature mismatch") - -(assert_return (invoke "fac" (i64.const 0)) (i64.const 1)) -(assert_return (invoke "fac" (i64.const 1)) (i64.const 1)) -(assert_return (invoke "fac" (i64.const 5)) (i64.const 120)) -(assert_return (invoke "fac" (i64.const 25)) (i64.const 7034535277573963776)) - -(assert_return (invoke "fib" (i64.const 0)) (i64.const 1)) -(assert_return (invoke "fib" (i64.const 1)) (i64.const 1)) -(assert_return (invoke "fib" (i64.const 2)) (i64.const 2)) -(assert_return (invoke "fib" (i64.const 5)) (i64.const 8)) -(assert_return (invoke "fib" (i64.const 20)) (i64.const 10946)) - -(assert_return (invoke "even" (i32.const 0)) (i32.const 44)) -(assert_return (invoke "even" (i32.const 1)) (i32.const 99)) -(assert_return (invoke "even" (i32.const 100)) (i32.const 44)) -(assert_return (invoke "even" (i32.const 77)) (i32.const 99)) -(assert_return (invoke "odd" (i32.const 0)) (i32.const 99)) -(assert_return (invoke "odd" (i32.const 1)) (i32.const 44)) -(assert_return (invoke "odd" (i32.const 200)) (i32.const 99)) -(assert_return (invoke "odd" (i32.const 77)) (i32.const 44)) - -(assert_exhaustion (invoke "runaway") "call stack exhausted") -(assert_exhaustion (invoke "mutual-runaway") "call stack exhausted") - - -;; Invalid typing - -(assert_invalid - (module - (type (func)) - (func $no-table (call_indirect 0 (i32.const 0))) - ) - "unknown table" -) - -(assert_invalid - (module - (type (func)) - (table 0 anyfunc) - (func $type-void-vs-num (i32.eqz (call_indirect 0 (i32.const 0)))) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func (result i64))) - (table 0 anyfunc) - (func $type-num-vs-num (i32.eqz (call_indirect 0 (i32.const 0)))) - ) - "type mismatch" -) - -(assert_invalid - (module - (type (func (param i32))) - (table 0 anyfunc) - (func $arity-0-vs-1 (call_indirect 0 (i32.const 0))) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func (param f64 i32))) - (table 0 anyfunc) - (func $arity-0-vs-2 (call_indirect 0 (i32.const 0))) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func)) - (table 0 anyfunc) - (func $arity-1-vs-0 (call_indirect 0 (i32.const 1) (i32.const 0))) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func)) - (table 0 anyfunc) - (func $arity-2-vs-0 - (call_indirect 0 (f64.const 2) (i32.const 1) (i32.const 0)) - ) - ) - "type mismatch" -) - -(assert_invalid - (module - (type (func (param i32))) - (table 0 anyfunc) - (func $type-func-void-vs-i32 (call_indirect 0 (i32.const 1) (nop))) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func (param i32))) - (table 0 anyfunc) - (func $type-func-num-vs-i32 (call_indirect 0 (i32.const 0) (i64.const 1))) - ) - "type mismatch" -) - -(assert_invalid - (module - (type (func (param i32 i32))) - (table 0 anyfunc) - (func $type-first-void-vs-num - (call_indirect 0 (nop) (i32.const 1) (i32.const 0)) - ) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func (param i32 i32))) - (table 0 anyfunc) - (func $type-second-void-vs-num - (call_indirect 0 (i32.const 1) (nop) (i32.const 0)) - ) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func (param i32 f64))) - (table 0 anyfunc) - (func $type-first-num-vs-num - (call_indirect 0 (f64.const 1) (i32.const 1) (i32.const 0)) - ) - ) - "type mismatch" -) -(assert_invalid - (module - (type (func (param f64 i32))) - (table 0 anyfunc) - (func $type-second-num-vs-num - (call_indirect 0 (i32.const 1) (f64.const 1) (i32.const 0)) - ) - ) - "type mismatch" -) - - -;; Unbound type - -(assert_invalid - (module - (table 0 anyfunc) - (func $unbound-type (call_indirect 1 (i32.const 0))) - ) - "unknown type" -) -(assert_invalid - (module - (table 0 anyfunc) - (func $large-type (call_indirect 1012321300 (i32.const 0))) - ) - "unknown type" -) - - -;; Unbound function in table - -(assert_invalid - (module (table anyfunc (elem 0 0))) - "unknown function 0" -) diff --git a/libraries/wasm-jit/Test/spec/comments.wast b/libraries/wasm-jit/Test/spec/comments.wast deleted file mode 100644 index 90a64b42d9e..00000000000 Binary files a/libraries/wasm-jit/Test/spec/comments.wast and /dev/null differ diff --git a/libraries/wasm-jit/Test/spec/const.wast b/libraries/wasm-jit/Test/spec/const.wast deleted file mode 100644 index 5929646c3e7..00000000000 --- a/libraries/wasm-jit/Test/spec/const.wast +++ /dev/null @@ -1,137 +0,0 @@ -;; Test t.const instructions - -;; Syntax error - -(module (func (i32.const 0xffffffff) drop)) -(module (func (i32.const -0x80000000) drop)) -(assert_malformed - (module quote "(func (i32.const 0x100000000) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (i32.const -0x80000001) drop)") - "constant out of range" -) - -(module (func (i32.const 4294967295) drop)) -(module (func (i32.const -2147483648) drop)) -(assert_malformed - (module quote "(func (i32.const 4294967296) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (i32.const -2147483649) drop)") - "constant out of range" -) - -(module (func (i64.const 0xffffffffffffffff) drop)) -(module (func (i64.const -0x8000000000000000) drop)) -(assert_malformed - (module quote "(func (i64.const 0x10000000000000000) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (i64.const -0x8000000000000001) drop)") - "constant out of range" -) - -(module (func (i64.const 18446744073709551615) drop)) -(module (func (i64.const -9223372036854775808) drop)) -(assert_malformed - (module quote "(func (i64.const 18446744073709551616) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (i64.const -9223372036854775809) drop)") - "constant out of range" -) - -(module (func (f32.const 0x1p127) drop)) -(module (func (f32.const -0x1p127) drop)) -(module (func (f32.const 0x1.fffffep127) drop)) -(module (func (f32.const -0x1.fffffep127) drop)) -(module (func (f32.const 0x1.fffffe7p127) drop)) -(module (func (f32.const -0x1.fffffe7p127) drop)) -(assert_malformed - (module quote "(func (f32.const 0x1p128) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f32.const -0x1p128) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f32.const 0x1.ffffffp127) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f32.const -0x1.ffffffp127) drop)") - "constant out of range" -) - -(module (func (f32.const 1e38) drop)) -(module (func (f32.const -1e38) drop)) -(assert_malformed - (module quote "(func (f32.const 1e39) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f32.const -1e39) drop)") - "constant out of range" -) - -(module (func (f32.const 340282356779733623858607532500980858880) drop)) -(module (func (f32.const -340282356779733623858607532500980858880) drop)) -(assert_malformed - (module quote "(func (f32.const 340282356779733661637539395458142568448) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f32.const -340282356779733661637539395458142568448) drop)") - "constant out of range" -) - -(module (func (f64.const 0x1p1023) drop)) -(module (func (f64.const -0x1p1023) drop)) -(module (func (f64.const 0x1.fffffffffffffp1023) drop)) -(module (func (f64.const -0x1.fffffffffffffp1023) drop)) -(module (func (f64.const 0x1.fffffffffffff7p1023) drop)) -(module (func (f64.const -0x1.fffffffffffff7p1023) drop)) -(assert_malformed - (module quote "(func (f64.const 0x1p1024) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f64.const -0x1p1024) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f64.const 0x1.fffffffffffff8p1023) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f64.const -0x1.fffffffffffff8p1023) drop)") - "constant out of range" -) - -(module (func (f64.const 1e308) drop)) -(module (func (f64.const -1e308) drop)) -(assert_malformed - (module quote "(func (f64.const 1e309) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f64.const -1e309) drop)") - "constant out of range" -) - -(module (func (f64.const 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368) drop)) -(module (func (f64.const -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368) drop)) -(assert_malformed - (module quote "(func (f64.const 269653970229347356221791135597556535197105851288767494898376215204735891170042808140884337949150317257310688430271573696351481990334196274152701320055306275479074865864826923114368235135583993416113802762682700913456874855354834422248712838998185022412196739306217084753107265771378949821875606039276187287552) drop)") - "constant out of range" -) -(assert_malformed - (module quote "(func (f64.const -269653970229347356221791135597556535197105851288767494898376215204735891170042808140884337949150317257310688430271573696351481990334196274152701320055306275479074865864826923114368235135583993416113802762682700913456874855354834422248712838998185022412196739306217084753107265771378949821875606039276187287552) drop)") - "constant out of range" -) diff --git a/libraries/wasm-jit/Test/spec/conversions.wast b/libraries/wasm-jit/Test/spec/conversions.wast deleted file mode 100644 index e664e1a6e37..00000000000 --- a/libraries/wasm-jit/Test/spec/conversions.wast +++ /dev/null @@ -1,461 +0,0 @@ -(module - (func (export "i64.extend_s_i32") (param $x i32) (result i64) (i64.extend_s/i32 (get_local $x))) - (func (export "i64.extend_u_i32") (param $x i32) (result i64) (i64.extend_u/i32 (get_local $x))) - (func (export "i32.wrap_i64") (param $x i64) (result i32) (i32.wrap/i64 (get_local $x))) - (func (export "i32.trunc_s_f32") (param $x f32) (result i32) (i32.trunc_s/f32 (get_local $x))) - (func (export "i32.trunc_u_f32") (param $x f32) (result i32) (i32.trunc_u/f32 (get_local $x))) - (func (export "i32.trunc_s_f64") (param $x f64) (result i32) (i32.trunc_s/f64 (get_local $x))) - (func (export "i32.trunc_u_f64") (param $x f64) (result i32) (i32.trunc_u/f64 (get_local $x))) - (func (export "i64.trunc_s_f32") (param $x f32) (result i64) (i64.trunc_s/f32 (get_local $x))) - (func (export "i64.trunc_u_f32") (param $x f32) (result i64) (i64.trunc_u/f32 (get_local $x))) - (func (export "i64.trunc_s_f64") (param $x f64) (result i64) (i64.trunc_s/f64 (get_local $x))) - (func (export "i64.trunc_u_f64") (param $x f64) (result i64) (i64.trunc_u/f64 (get_local $x))) - (func (export "f32.convert_s_i32") (param $x i32) (result f32) (f32.convert_s/i32 (get_local $x))) - (func (export "f32.convert_s_i64") (param $x i64) (result f32) (f32.convert_s/i64 (get_local $x))) - (func (export "f64.convert_s_i32") (param $x i32) (result f64) (f64.convert_s/i32 (get_local $x))) - (func (export "f64.convert_s_i64") (param $x i64) (result f64) (f64.convert_s/i64 (get_local $x))) - (func (export "f32.convert_u_i32") (param $x i32) (result f32) (f32.convert_u/i32 (get_local $x))) - (func (export "f32.convert_u_i64") (param $x i64) (result f32) (f32.convert_u/i64 (get_local $x))) - (func (export "f64.convert_u_i32") (param $x i32) (result f64) (f64.convert_u/i32 (get_local $x))) - (func (export "f64.convert_u_i64") (param $x i64) (result f64) (f64.convert_u/i64 (get_local $x))) - (func (export "f64.promote_f32") (param $x f32) (result f64) (f64.promote/f32 (get_local $x))) - (func (export "f32.demote_f64") (param $x f64) (result f32) (f32.demote/f64 (get_local $x))) - (func (export "f32.reinterpret_i32") (param $x i32) (result f32) (f32.reinterpret/i32 (get_local $x))) - (func (export "f64.reinterpret_i64") (param $x i64) (result f64) (f64.reinterpret/i64 (get_local $x))) - (func (export "i32.reinterpret_f32") (param $x f32) (result i32) (i32.reinterpret/f32 (get_local $x))) - (func (export "i64.reinterpret_f64") (param $x f64) (result i64) (i64.reinterpret/f64 (get_local $x))) -) - -(assert_return (invoke "i64.extend_s_i32" (i32.const 0)) (i64.const 0)) -(assert_return (invoke "i64.extend_s_i32" (i32.const 10000)) (i64.const 10000)) -(assert_return (invoke "i64.extend_s_i32" (i32.const -10000)) (i64.const -10000)) -(assert_return (invoke "i64.extend_s_i32" (i32.const -1)) (i64.const -1)) -(assert_return (invoke "i64.extend_s_i32" (i32.const 0x7fffffff)) (i64.const 0x000000007fffffff)) -(assert_return (invoke "i64.extend_s_i32" (i32.const 0x80000000)) (i64.const 0xffffffff80000000)) - -(assert_return (invoke "i64.extend_u_i32" (i32.const 0)) (i64.const 0)) -(assert_return (invoke "i64.extend_u_i32" (i32.const 10000)) (i64.const 10000)) -(assert_return (invoke "i64.extend_u_i32" (i32.const -10000)) (i64.const 0x00000000ffffd8f0)) -(assert_return (invoke "i64.extend_u_i32" (i32.const -1)) (i64.const 0xffffffff)) -(assert_return (invoke "i64.extend_u_i32" (i32.const 0x7fffffff)) (i64.const 0x000000007fffffff)) -(assert_return (invoke "i64.extend_u_i32" (i32.const 0x80000000)) (i64.const 0x0000000080000000)) - -(assert_return (invoke "i32.wrap_i64" (i64.const -1)) (i32.const -1)) -(assert_return (invoke "i32.wrap_i64" (i64.const -100000)) (i32.const -100000)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0x80000000)) (i32.const 0x80000000)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0xffffffff7fffffff)) (i32.const 0x7fffffff)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0xffffffff00000000)) (i32.const 0x00000000)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0xfffffffeffffffff)) (i32.const 0xffffffff)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0xffffffff00000001)) (i32.const 0x00000001)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0)) (i32.const 0)) -(assert_return (invoke "i32.wrap_i64" (i64.const 1311768467463790320)) (i32.const 0x9abcdef0)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0x00000000ffffffff)) (i32.const 0xffffffff)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0x0000000100000000)) (i32.const 0x00000000)) -(assert_return (invoke "i32.wrap_i64" (i64.const 0x0000000100000001)) (i32.const 0x00000001)) - -(assert_return (invoke "i32.trunc_s_f32" (f32.const 0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const 1.0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const 0x1.19999ap+0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const 1.5)) (i32.const 1)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -1.0)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -0x1.19999ap+0)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -1.5)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -1.9)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -2.0)) (i32.const -2)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const 2147483520.0)) (i32.const 2147483520)) -(assert_return (invoke "i32.trunc_s_f32" (f32.const -2147483648.0)) (i32.const -2147483648)) -(assert_trap (invoke "i32.trunc_s_f32" (f32.const 2147483648.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f32" (f32.const -2147483904.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f32" (f32.const inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f32" (f32.const -inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_s_f32" (f32.const nan:0x200000)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_s_f32" (f32.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_s_f32" (f32.const -nan:0x200000)) "invalid conversion to integer") - -(assert_return (invoke "i32.trunc_u_f32" (f32.const 0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const -0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const 1.0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const 0x1.19999ap+0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const 1.5)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const 1.9)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const 2.0)) (i32.const 2)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 0000 -(assert_return (invoke "i32.trunc_u_f32" (f32.const 4294967040.0)) (i32.const -256)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const -0x1.ccccccp-1)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f32" (f32.const -0x1.fffffep-1)) (i32.const 0)) -(assert_trap (invoke "i32.trunc_u_f32" (f32.const 4294967296.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f32" (f32.const -1.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f32" (f32.const inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f32" (f32.const -inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_u_f32" (f32.const nan:0x200000)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_u_f32" (f32.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_u_f32" (f32.const -nan:0x200000)) "invalid conversion to integer") - -(assert_return (invoke "i32.trunc_s_f64" (f64.const 0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const 1.0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const 0x1.199999999999ap+0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const 1.5)) (i32.const 1)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -1.0)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -0x1.199999999999ap+0)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -1.5)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -1.9)) (i32.const -1)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -2.0)) (i32.const -2)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const 2147483647.0)) (i32.const 2147483647)) -(assert_return (invoke "i32.trunc_s_f64" (f64.const -2147483648.0)) (i32.const -2147483648)) -(assert_trap (invoke "i32.trunc_s_f64" (f64.const 2147483648.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f64" (f64.const -2147483649.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f64" (f64.const inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f64" (f64.const -inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_s_f64" (f64.const nan:0x4000000000000)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_s_f64" (f64.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_s_f64" (f64.const -nan:0x4000000000000)) "invalid conversion to integer") - -(assert_return (invoke "i32.trunc_u_f64" (f64.const 0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const -0.0)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 1.0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 0x1.199999999999ap+0)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 1.5)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 1.9)) (i32.const 1)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 2.0)) (i32.const 2)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 0000 -(assert_return (invoke "i32.trunc_u_f64" (f64.const 4294967295.0)) (i32.const -1)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const -0x1.ccccccccccccdp-1)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const -0x1.fffffffffffffp-1)) (i32.const 0)) -(assert_return (invoke "i32.trunc_u_f64" (f64.const 1e8)) (i32.const 100000000)) -(assert_trap (invoke "i32.trunc_u_f64" (f64.const 4294967296.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const -1.0)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const 1e16)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const 1e30)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const 9223372036854775808)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const -inf)) "integer overflow") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const nan:0x4000000000000)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i32.trunc_u_f64" (f64.const -nan:0x4000000000000)) "invalid conversion to integer") - -(assert_return (invoke "i64.trunc_s_f32" (f32.const 0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const 0x1p-149)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -0x1p-149)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const 1.0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const 0x1.19999ap+0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const 1.5)) (i64.const 1)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -1.0)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -0x1.19999ap+0)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -1.5)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -1.9)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -2.0)) (i64.const -2)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 0000 -(assert_return (invoke "i64.trunc_s_f32" (f32.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 0000 -(assert_return (invoke "i64.trunc_s_f32" (f32.const 9223371487098961920.0)) (i64.const 9223371487098961920)) -(assert_return (invoke "i64.trunc_s_f32" (f32.const -9223372036854775808.0)) (i64.const -9223372036854775808)) -(assert_trap (invoke "i64.trunc_s_f32" (f32.const 9223372036854775808.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f32" (f32.const -9223373136366403584.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f32" (f32.const inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f32" (f32.const -inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_s_f32" (f32.const nan:0x200000)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_s_f32" (f32.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_s_f32" (f32.const -nan:0x200000)) "invalid conversion to integer") - -(assert_return (invoke "i64.trunc_u_f32" (f32.const 0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const -0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const 0x1p-149)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const -0x1p-149)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const 1.0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const 0x1.19999ap+0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const 1.5)) (i64.const 1)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const 4294967296)) (i64.const 4294967296)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const 18446742974197923840.0)) (i64.const -1099511627776)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const -0x1.ccccccp-1)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f32" (f32.const -0x1.fffffep-1)) (i64.const 0)) -(assert_trap (invoke "i64.trunc_u_f32" (f32.const 18446744073709551616.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f32" (f32.const -1.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f32" (f32.const inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f32" (f32.const -inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_u_f32" (f32.const nan:0x200000)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_u_f32" (f32.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_u_f32" (f32.const -nan:0x200000)) "invalid conversion to integer") - -(assert_return (invoke "i64.trunc_s_f64" (f64.const 0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const 0x0.0000000000001p-1022)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -0x0.0000000000001p-1022)) (i64.const 0)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const 1.0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const 0x1.199999999999ap+0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const 1.5)) (i64.const 1)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -1.0)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -0x1.199999999999ap+0)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -1.5)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -1.9)) (i64.const -1)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -2.0)) (i64.const -2)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 0000 -(assert_return (invoke "i64.trunc_s_f64" (f64.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 0000 -(assert_return (invoke "i64.trunc_s_f64" (f64.const 9223372036854774784.0)) (i64.const 9223372036854774784)) -(assert_return (invoke "i64.trunc_s_f64" (f64.const -9223372036854775808.0)) (i64.const -9223372036854775808)) -(assert_trap (invoke "i64.trunc_s_f64" (f64.const 9223372036854775808.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f64" (f64.const -9223372036854777856.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f64" (f64.const inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f64" (f64.const -inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_s_f64" (f64.const nan:0x4000000000000)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_s_f64" (f64.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_s_f64" (f64.const -nan:0x4000000000000)) "invalid conversion to integer") - -(assert_return (invoke "i64.trunc_u_f64" (f64.const 0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const -0.0)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 0x0.0000000000001p-1022)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const -0x0.0000000000001p-1022)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 1.0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 0x1.199999999999ap+0)) (i64.const 1)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 1.5)) (i64.const 1)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 4294967295)) (i64.const 0xffffffff)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 4294967296)) (i64.const 0x100000000)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 18446744073709549568.0)) (i64.const -2048)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const -0x1.ccccccccccccdp-1)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const -0x1.fffffffffffffp-1)) (i64.const 0)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 1e8)) (i64.const 100000000)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 1e16)) (i64.const 10000000000000000)) -(assert_return (invoke "i64.trunc_u_f64" (f64.const 9223372036854775808)) (i64.const -9223372036854775808)) -(assert_trap (invoke "i64.trunc_u_f64" (f64.const 18446744073709551616.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f64" (f64.const -1.0)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f64" (f64.const inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f64" (f64.const -inf)) "integer overflow") -(assert_trap (invoke "i64.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_u_f64" (f64.const nan:0x4000000000000)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_u_f64" (f64.const -nan)) "invalid conversion to integer") -(assert_trap (invoke "i64.trunc_u_f64" (f64.const -nan:0x4000000000000)) "invalid conversion to integer") - -(assert_return (invoke "f32.convert_s_i32" (i32.const 1)) (f32.const 1.0)) -(assert_return (invoke "f32.convert_s_i32" (i32.const -1)) (f32.const -1.0)) -(assert_return (invoke "f32.convert_s_i32" (i32.const 0)) (f32.const 0.0)) -(assert_return (invoke "f32.convert_s_i32" (i32.const 2147483647)) (f32.const 2147483648)) -(assert_return (invoke "f32.convert_s_i32" (i32.const -2147483648)) (f32.const -2147483648)) -(assert_return (invoke "f32.convert_s_i32" (i32.const 1234567890)) (f32.const 0x1.26580cp+30)) -;; Test rounding directions. -(assert_return (invoke "f32.convert_s_i32" (i32.const 16777217)) (f32.const 16777216.0)) -(assert_return (invoke "f32.convert_s_i32" (i32.const -16777217)) (f32.const -16777216.0)) -(assert_return (invoke "f32.convert_s_i32" (i32.const 16777219)) (f32.const 16777220.0)) -(assert_return (invoke "f32.convert_s_i32" (i32.const -16777219)) (f32.const -16777220.0)) - -(assert_return (invoke "f32.convert_s_i64" (i64.const 1)) (f32.const 1.0)) -(assert_return (invoke "f32.convert_s_i64" (i64.const -1)) (f32.const -1.0)) -(assert_return (invoke "f32.convert_s_i64" (i64.const 0)) (f32.const 0.0)) -(assert_return (invoke "f32.convert_s_i64" (i64.const 9223372036854775807)) (f32.const 9223372036854775807)) -(assert_return (invoke "f32.convert_s_i64" (i64.const -9223372036854775808)) (f32.const -9223372036854775808)) -(assert_return (invoke "f32.convert_s_i64" (i64.const 314159265358979)) (f32.const 0x1.1db9e8p+48)) ;; PI -;; Test rounding directions. -(assert_return (invoke "f32.convert_s_i64" (i64.const 16777217)) (f32.const 16777216.0)) -(assert_return (invoke "f32.convert_s_i64" (i64.const -16777217)) (f32.const -16777216.0)) -(assert_return (invoke "f32.convert_s_i64" (i64.const 16777219)) (f32.const 16777220.0)) -(assert_return (invoke "f32.convert_s_i64" (i64.const -16777219)) (f32.const -16777220.0)) - -(assert_return (invoke "f64.convert_s_i32" (i32.const 1)) (f64.const 1.0)) -(assert_return (invoke "f64.convert_s_i32" (i32.const -1)) (f64.const -1.0)) -(assert_return (invoke "f64.convert_s_i32" (i32.const 0)) (f64.const 0.0)) -(assert_return (invoke "f64.convert_s_i32" (i32.const 2147483647)) (f64.const 2147483647)) -(assert_return (invoke "f64.convert_s_i32" (i32.const -2147483648)) (f64.const -2147483648)) -(assert_return (invoke "f64.convert_s_i32" (i32.const 987654321)) (f64.const 987654321)) - -(assert_return (invoke "f64.convert_s_i64" (i64.const 1)) (f64.const 1.0)) -(assert_return (invoke "f64.convert_s_i64" (i64.const -1)) (f64.const -1.0)) -(assert_return (invoke "f64.convert_s_i64" (i64.const 0)) (f64.const 0.0)) -(assert_return (invoke "f64.convert_s_i64" (i64.const 9223372036854775807)) (f64.const 9223372036854775807)) -(assert_return (invoke "f64.convert_s_i64" (i64.const -9223372036854775808)) (f64.const -9223372036854775808)) -(assert_return (invoke "f64.convert_s_i64" (i64.const 4669201609102990)) (f64.const 4669201609102990)) ;; Feigenbaum -;; Test rounding directions. -(assert_return (invoke "f64.convert_s_i64" (i64.const 9007199254740993)) (f64.const 9007199254740992)) -(assert_return (invoke "f64.convert_s_i64" (i64.const -9007199254740993)) (f64.const -9007199254740992)) -(assert_return (invoke "f64.convert_s_i64" (i64.const 9007199254740995)) (f64.const 9007199254740996)) -(assert_return (invoke "f64.convert_s_i64" (i64.const -9007199254740995)) (f64.const -9007199254740996)) - -(assert_return (invoke "f32.convert_u_i32" (i32.const 1)) (f32.const 1.0)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0)) (f32.const 0.0)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 2147483647)) (f32.const 2147483648)) -(assert_return (invoke "f32.convert_u_i32" (i32.const -2147483648)) (f32.const 2147483648)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0x12345678)) (f32.const 0x1.234568p+28)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0xffffffff)) (f32.const 4294967296.0)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0x80000080)) (f32.const 0x1.000000p+31)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0x80000081)) (f32.const 0x1.000002p+31)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0x80000082)) (f32.const 0x1.000002p+31)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0xfffffe80)) (f32.const 0x1.fffffcp+31)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0xfffffe81)) (f32.const 0x1.fffffep+31)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 0xfffffe82)) (f32.const 0x1.fffffep+31)) -;; Test rounding directions. -(assert_return (invoke "f32.convert_u_i32" (i32.const 16777217)) (f32.const 16777216.0)) -(assert_return (invoke "f32.convert_u_i32" (i32.const 16777219)) (f32.const 16777220.0)) - -(assert_return (invoke "f32.convert_u_i64" (i64.const 1)) (f32.const 1.0)) -(assert_return (invoke "f32.convert_u_i64" (i64.const 0)) (f32.const 0.0)) -(assert_return (invoke "f32.convert_u_i64" (i64.const 9223372036854775807)) (f32.const 9223372036854775807)) -(assert_return (invoke "f32.convert_u_i64" (i64.const -9223372036854775808)) (f32.const 9223372036854775808)) -(assert_return (invoke "f32.convert_u_i64" (i64.const 0xffffffffffffffff)) (f32.const 18446744073709551616.0)) -;; Test rounding directions. -(assert_return (invoke "f32.convert_u_i64" (i64.const 16777217)) (f32.const 16777216.0)) -(assert_return (invoke "f32.convert_u_i64" (i64.const 16777219)) (f32.const 16777220.0)) - -(assert_return (invoke "f64.convert_u_i32" (i32.const 1)) (f64.const 1.0)) -(assert_return (invoke "f64.convert_u_i32" (i32.const 0)) (f64.const 0.0)) -(assert_return (invoke "f64.convert_u_i32" (i32.const 2147483647)) (f64.const 2147483647)) -(assert_return (invoke "f64.convert_u_i32" (i32.const -2147483648)) (f64.const 2147483648)) -(assert_return (invoke "f64.convert_u_i32" (i32.const 0xffffffff)) (f64.const 4294967295.0)) - -(assert_return (invoke "f64.convert_u_i64" (i64.const 1)) (f64.const 1.0)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0)) (f64.const 0.0)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 9223372036854775807)) (f64.const 9223372036854775807)) -(assert_return (invoke "f64.convert_u_i64" (i64.const -9223372036854775808)) (f64.const 9223372036854775808)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0xffffffffffffffff)) (f64.const 18446744073709551616.0)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0x8000000000000400)) (f64.const 0x1.0000000000000p+63)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0x8000000000000401)) (f64.const 0x1.0000000000001p+63)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0x8000000000000402)) (f64.const 0x1.0000000000001p+63)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0xfffffffffffff400)) (f64.const 0x1.ffffffffffffep+63)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0xfffffffffffff401)) (f64.const 0x1.fffffffffffffp+63)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 0xfffffffffffff402)) (f64.const 0x1.fffffffffffffp+63)) -;; Test rounding directions. -(assert_return (invoke "f64.convert_u_i64" (i64.const 9007199254740993)) (f64.const 9007199254740992)) -(assert_return (invoke "f64.convert_u_i64" (i64.const 9007199254740995)) (f64.const 9007199254740996)) - -(assert_return (invoke "f64.promote_f32" (f32.const 0.0)) (f64.const 0.0)) -(assert_return (invoke "f64.promote_f32" (f32.const -0.0)) (f64.const -0.0)) -(assert_return (invoke "f64.promote_f32" (f32.const 0x1p-149)) (f64.const 0x1p-149)) -(assert_return (invoke "f64.promote_f32" (f32.const -0x1p-149)) (f64.const -0x1p-149)) -(assert_return (invoke "f64.promote_f32" (f32.const 1.0)) (f64.const 1.0)) -(assert_return (invoke "f64.promote_f32" (f32.const -1.0)) (f64.const -1.0)) -(assert_return (invoke "f64.promote_f32" (f32.const -0x1.fffffep+127)) (f64.const -0x1.fffffep+127)) -(assert_return (invoke "f64.promote_f32" (f32.const 0x1.fffffep+127)) (f64.const 0x1.fffffep+127)) -;; Generated randomly by picking a random int and reinterpret it to float. -(assert_return (invoke "f64.promote_f32" (f32.const 0x1p-119)) (f64.const 0x1p-119)) -;; Generated randomly by picking a random float. -(assert_return (invoke "f64.promote_f32" (f32.const 0x1.8f867ep+125)) (f64.const 6.6382536710104395e+37)) -(assert_return (invoke "f64.promote_f32" (f32.const inf)) (f64.const inf)) -(assert_return (invoke "f64.promote_f32" (f32.const -inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "f64.promote_f32" (f32.const nan))) -(assert_return_arithmetic_nan (invoke "f64.promote_f32" (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "f64.promote_f32" (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "f64.promote_f32" (f32.const -nan:0x200000))) - -(assert_return (invoke "f32.demote_f64" (f64.const 0.0)) (f32.const 0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const -0.0)) (f32.const -0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x0.0000000000001p-1022)) (f32.const 0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x0.0000000000001p-1022)) (f32.const -0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const 1.0)) (f32.const 1.0)) -(assert_return (invoke "f32.demote_f64" (f64.const -1.0)) (f32.const -1.0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffe0000000p-127)) (f32.const 0x1p-126)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffe0000000p-127)) (f32.const -0x1p-126)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffdfffffffp-127)) (f32.const 0x1.fffffcp-127)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffdfffffffp-127)) (f32.const -0x1.fffffcp-127)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffd0000000p+127)) (f32.const 0x1.fffffcp+127)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffd0000000p+127)) (f32.const -0x1.fffffcp+127)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffd0000001p+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffd0000001p+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffefffffffp+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffefffffffp+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.ffffffp+127)) (f32.const inf)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.ffffffp+127)) (f32.const -inf)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1p-119)) (f32.const 0x1p-119)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.8f867ep+125)) (f32.const 0x1.8f867ep+125)) -(assert_return (invoke "f32.demote_f64" (f64.const inf)) (f32.const inf)) -(assert_return (invoke "f32.demote_f64" (f64.const -inf)) (f32.const -inf)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000000000001p+0)) (f32.const 1.0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffffffffffp-1)) (f32.const 1.0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000000p+0)) (f32.const 0x1.000000p+0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000001p+0)) (f32.const 0x1.000002p+0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.000002fffffffp+0)) (f32.const 0x1.000002p+0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000030000000p+0)) (f32.const 0x1.000004p+0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000050000000p+0)) (f32.const 0x1.000004p+0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000000p+24)) (f32.const 0x1.0p+24)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000001p+24)) (f32.const 0x1.000002p+24)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.000002fffffffp+24)) (f32.const 0x1.000002p+24)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000030000000p+24)) (f32.const 0x1.000004p+24)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.4eae4f7024c7p+108)) (f32.const 0x1.4eae5p+108)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.a12e71e358685p-113)) (f32.const 0x1.a12e72p-113)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.cb98354d521ffp-127)) (f32.const 0x1.cb9834p-127)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.6972b30cfb562p+1)) (f32.const -0x1.6972b4p+1)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.bedbe4819d4c4p+112)) (f32.const -0x1.bedbe4p+112)) -(assert_return_canonical_nan (invoke "f32.demote_f64" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "f32.demote_f64" (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "f32.demote_f64" (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "f32.demote_f64" (f64.const -nan:0x4000000000000))) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1p-1022)) (f32.const 0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1p-1022)) (f32.const -0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0p-150)) (f32.const 0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.0p-150)) (f32.const -0.0)) -(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000000000001p-150)) (f32.const 0x1p-149)) -(assert_return (invoke "f32.demote_f64" (f64.const -0x1.0000000000001p-150)) (f32.const -0x1p-149)) - -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0)) (f32.const 0.0)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x80000000)) (f32.const -0.0)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 1)) (f32.const 0x1p-149)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const -1)) (f32.const -nan:0x7fffff)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 123456789)) (f32.const 0x1.b79a2ap-113)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const -2147483647)) (f32.const -0x1p-149)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x7f800000)) (f32.const inf)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0xff800000)) (f32.const -inf)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x7fc00000)) (f32.const nan)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0xffc00000)) (f32.const -nan)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x7fa00000)) (f32.const nan:0x200000)) -(assert_return (invoke "f32.reinterpret_i32" (i32.const 0xffa00000)) (f32.const -nan:0x200000)) - -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0)) (f64.const 0.0)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 1)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const -1)) (f64.const -nan:0xfffffffffffff)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x8000000000000000)) (f64.const -0.0)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 1234567890)) (f64.const 0x0.00000499602d2p-1022)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const -9223372036854775807)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x7ff0000000000000)) (f64.const inf)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0xfff0000000000000)) (f64.const -inf)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x7ff8000000000000)) (f64.const nan)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0xfff8000000000000)) (f64.const -nan)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x7ff4000000000000)) (f64.const nan:0x4000000000000)) -(assert_return (invoke "f64.reinterpret_i64" (i64.const 0xfff4000000000000)) (f64.const -nan:0x4000000000000)) - -(assert_return (invoke "i32.reinterpret_f32" (f32.const 0.0)) (i32.const 0)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const -0.0)) (i32.const 0x80000000)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const -nan:0x7fffff)) (i32.const -1)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const -0x1p-149)) (i32.const 0x80000001)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const 1.0)) (i32.const 1065353216)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const 3.1415926)) (i32.const 1078530010)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const 0x1.fffffep+127)) (i32.const 2139095039)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const -0x1.fffffep+127)) (i32.const -8388609)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const inf)) (i32.const 0x7f800000)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const -inf)) (i32.const 0xff800000)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const nan)) (i32.const 0x7fc00000)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const -nan)) (i32.const 0xffc00000)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const nan:0x200000)) (i32.const 0x7fa00000)) -(assert_return (invoke "i32.reinterpret_f32" (f32.const -nan:0x200000)) (i32.const 0xffa00000)) - -(assert_return (invoke "i64.reinterpret_f64" (f64.const 0.0)) (i64.const 0)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const -0.0)) (i64.const 0x8000000000000000)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const 0x0.0000000000001p-1022)) (i64.const 1)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const -nan:0xfffffffffffff)) (i64.const -1)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const -0x0.0000000000001p-1022)) (i64.const 0x8000000000000001)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const 1.0)) (i64.const 4607182418800017408)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const 3.14159265358979)) (i64.const 4614256656552045841)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const 0x1.fffffffffffffp+1023)) (i64.const 9218868437227405311)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const -0x1.fffffffffffffp+1023)) (i64.const -4503599627370497)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const inf)) (i64.const 0x7ff0000000000000)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const -inf)) (i64.const 0xfff0000000000000)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const nan)) (i64.const 0x7ff8000000000000)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const -nan)) (i64.const 0xfff8000000000000)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const nan:0x4000000000000)) (i64.const 0x7ff4000000000000)) -(assert_return (invoke "i64.reinterpret_f64" (f64.const -nan:0x4000000000000)) (i64.const 0xfff4000000000000)) diff --git a/libraries/wasm-jit/Test/spec/custom_section.wast b/libraries/wasm-jit/Test/spec/custom_section.wast deleted file mode 100644 index c6c338905a4..00000000000 --- a/libraries/wasm-jit/Test/spec/custom_section.wast +++ /dev/null @@ -1,112 +0,0 @@ -(module binary - "\00asm" "\01\00\00\00" - "\00\24\10" "a custom section" "this is the payload" - "\00\20\10" "a custom section" "this is payload" - "\00\11\10" "a custom section" "" - "\00\10\00" "" "this is payload" - "\00\01\00" "" "" - "\00\24\10" "\00\00custom sectio\00" "this is the payload" - "\00\24\10" "\ef\bb\bfa custom sect" "this is the payload" - "\00\24\10" "a custom sect\e2\8c\a3" "this is the payload" - "\00\1f\16" "module within a module" "\00asm" "\01\00\00\00" -) - -(module binary - "\00asm" "\01\00\00\00" - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\01\01\00" ;; type section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\02\01\00" ;; import section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\03\01\00" ;; function section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\04\01\00" ;; table section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\05\01\00" ;; memory section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\06\01\00" ;; global section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\07\01\00" ;; export section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\09\01\00" ;; element section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\0a\01\00" ;; code section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" - "\0b\01\00" ;; data section - "\00\0e\06" "custom" "payload" - "\00\0e\06" "custom" "payload" -) - -(module binary - "\00asm" "\01\00\00\00" - "\01\07\01\60\02\7f\7f\01\7f" ;; type section - "\00\1a\06" "custom" "this is the payload" ;; custom section - "\03\02\01\00" ;; function section - "\07\0a\01\06\61\64\64\54\77\6f\00\00" ;; export section - "\0a\09\01\07\00\20\00\20\01\6a\0b" ;; code section - "\00\1b\07" "custom2" "this is the payload" ;; custom section -) - -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00" - ) - "unexpected end" -) - -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\00" - ) - "unexpected end" -) - -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\26\10" "a custom section" "this is the payload" - ) - "unexpected end" -) - -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\25\10" "a custom section" "this is the payload" - "\00\24\10" "a custom section" "this is the payload" - ) - "invalid section id" -) - -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\01\07\01\60\02\7f\7f\01\7f" ;; type section - "\00\25\10" "a custom section" "this is the payload" ;; invalid length! - "\03\02\01\00" ;; function section - "\0a\09\01\07\00\20\00\20\01\6a\0b" ;; code section - "\00\1b\07" "custom2" "this is the payload" ;; custom section - ) - "function and code section have inconsistent lengths" -) - -;; Test concatenated modules. -(assert_malformed - (module binary - "\00asm\01\00\00\00" - "\00asm\01\00\00\00" - ) - "length out of bounds" -) diff --git a/libraries/wasm-jit/Test/spec/elem.wast b/libraries/wasm-jit/Test/spec/elem.wast deleted file mode 100644 index c75e07b23e3..00000000000 --- a/libraries/wasm-jit/Test/spec/elem.wast +++ /dev/null @@ -1,215 +0,0 @@ -;; Test the element section - -(module - (table 10 anyfunc) - (elem (i32.const 0) $f) - (func $f) -) - -(module - (table 10 anyfunc) - (elem (i32.const 9) $f) - (func $f) -) - -(module - (type $out-i32 (func (result i32))) - (table 10 anyfunc) - (elem (i32.const 7) $const-i32-a) - (elem (i32.const 9) $const-i32-b) - (func $const-i32-a (type $out-i32) (i32.const 65)) - (func $const-i32-b (type $out-i32) (i32.const 66)) - (func (export "call-7") (type $out-i32) - (call_indirect $out-i32 (i32.const 7)) - ) - (func (export "call-9") (type $out-i32) - (call_indirect $out-i32 (i32.const 9)) - ) -) - -(assert_return (invoke "call-7") (i32.const 65)) -(assert_return (invoke "call-9") (i32.const 66)) - -;; Two elements target the same slot - -(module - (type $out-i32 (func (result i32))) - (table 10 anyfunc) - (elem (i32.const 9) $const-i32-a) - (elem (i32.const 9) $const-i32-b) - (func $const-i32-a (type $out-i32) (i32.const 65)) - (func $const-i32-b (type $out-i32) (i32.const 66)) - (func (export "call-overwritten-element") (type $out-i32) - (call_indirect $out-i32 (i32.const 9)) - ) -) - -(assert_return (invoke "call-overwritten-element") (i32.const 66)) - -;; Invalid bounds for elements - -(assert_unlinkable - (module - (table 10 anyfunc) - (elem (i32.const 10) $f) - (func $f) - ) - "elements segment does not fit" -) - -(assert_unlinkable - (module - (table 10 20 anyfunc) - (elem (i32.const 10) $f) - (func $f) - ) - "elements segment does not fit" -) - -(assert_unlinkable - (module - (table 10 anyfunc) - (elem (i32.const -1) $f) - (func $f) - ) - "elements segment does not fit" -) - -(assert_unlinkable - (module - (table 10 anyfunc) - (elem (i32.const -10) $f) - (func $f) - ) - "elements segment does not fit" -) - -;; Tests with an imported table - -(module - (import "spectest" "table" (table 10 anyfunc)) - (elem (i32.const 0) $f) - (func $f) -) - -(module - (import "spectest" "table" (table 10 anyfunc)) - (elem (i32.const 9) $f) - (func $f) -) - -;; Two elements target the same slot - -(module - (type $out-i32 (func (result i32))) - (import "spectest" "table" (table 10 anyfunc)) - (elem (i32.const 9) $const-i32-a) - (elem (i32.const 9) $const-i32-b) - (func $const-i32-a (type $out-i32) (i32.const 65)) - (func $const-i32-b (type $out-i32) (i32.const 66)) - (func (export "call-overwritten-element") (type $out-i32) - (call_indirect $out-i32 (i32.const 9)) - ) -) - -(assert_return (invoke "call-overwritten-element") (i32.const 66)) - -;; Invalid bounds for elements - -(assert_unlinkable - (module - (import "spectest" "table" (table 10 anyfunc)) - (elem (i32.const 10) $f) - (func $f) - ) - "elements segment does not fit" -) - -(assert_unlinkable - (module - (import "spectest" "table" (table 10 20 anyfunc)) - (elem (i32.const 10) $f) - (func $f) - ) - "elements segment does not fit" -) - -(assert_unlinkable - (module - (import "spectest" "table" (table 10 anyfunc)) - (elem (i32.const -1) $f) - (func $f) - ) - "elements segment does not fit" -) - -(assert_unlinkable - (module - (import "spectest" "table" (table 10 anyfunc)) - (elem (i32.const -10) $f) - (func $f) - ) - "elements segment does not fit" -) - -;; Element without table - -(assert_invalid - (module - (elem (i32.const 0) $f) - (func $f) - ) - "unknown table 0" -) - -;; Test element sections across multiple modules change the same table - -(module $module1 - (type $out-i32 (func (result i32))) - (table (export "shared-table") 10 anyfunc) - (elem (i32.const 8) $const-i32-a) - (elem (i32.const 9) $const-i32-b) - (func $const-i32-a (type $out-i32) (i32.const 65)) - (func $const-i32-b (type $out-i32) (i32.const 66)) - (func (export "call-7") (type $out-i32) - (call_indirect $out-i32 (i32.const 7)) - ) - (func (export "call-8") (type $out-i32) - (call_indirect $out-i32 (i32.const 8)) - ) - (func (export "call-9") (type $out-i32) - (call_indirect $out-i32 (i32.const 9)) - ) -) - -(register "module1" $module1) - -(assert_trap (invoke $module1 "call-7") "uninitialized element 7") -(assert_return (invoke $module1 "call-8") (i32.const 65)) -(assert_return (invoke $module1 "call-9") (i32.const 66)) - -(module $module2 - (type $out-i32 (func (result i32))) - (import "module1" "shared-table" (table 10 anyfunc)) - (elem (i32.const 7) $const-i32-c) - (elem (i32.const 8) $const-i32-d) - (func $const-i32-c (type $out-i32) (i32.const 67)) - (func $const-i32-d (type $out-i32) (i32.const 68)) -) - -(assert_return (invoke $module1 "call-7") (i32.const 67)) -(assert_return (invoke $module1 "call-8") (i32.const 68)) -(assert_return (invoke $module1 "call-9") (i32.const 66)) - -(module $module3 - (type $out-i32 (func (result i32))) - (import "module1" "shared-table" (table 10 anyfunc)) - (elem (i32.const 8) $const-i32-e) - (elem (i32.const 9) $const-i32-f) - (func $const-i32-e (type $out-i32) (i32.const 69)) - (func $const-i32-f (type $out-i32) (i32.const 70)) -) - -(assert_return (invoke $module1 "call-7") (i32.const 67)) -(assert_return (invoke $module1 "call-8") (i32.const 69)) -(assert_return (invoke $module1 "call-9") (i32.const 70)) diff --git a/libraries/wasm-jit/Test/spec/endianness.wast b/libraries/wasm-jit/Test/spec/endianness.wast deleted file mode 100644 index 8dc0c2e2eb8..00000000000 --- a/libraries/wasm-jit/Test/spec/endianness.wast +++ /dev/null @@ -1,217 +0,0 @@ -(module - (memory 1) - - ;; Stores an i16 value in little-endian-format - (func $i16_store_little (param $address i32) (param $value i32) - (i32.store8 (get_local $address) (get_local $value)) - (i32.store8 (i32.add (get_local $address) (i32.const 1)) (i32.shr_u (get_local $value) (i32.const 8))) - ) - - ;; Stores an i32 value in little-endian format - (func $i32_store_little (param $address i32) (param $value i32) - (call $i16_store_little (get_local $address) (get_local $value)) - (call $i16_store_little (i32.add (get_local $address) (i32.const 2)) (i32.shr_u (get_local $value) (i32.const 16))) - ) - - ;; Stores an i64 value in little-endian format - (func $i64_store_little (param $address i32) (param $value i64) - (call $i32_store_little (get_local $address) (i32.wrap/i64 (get_local $value))) - (call $i32_store_little (i32.add (get_local $address) (i32.const 4)) (i32.wrap/i64 (i64.shr_u (get_local $value) (i64.const 32)))) - ) - - ;; Loads an i16 value in little-endian format - (func $i16_load_little (param $address i32) (result i32) - (i32.or - (i32.load8_u (get_local $address)) - (i32.shl (i32.load8_u (i32.add (get_local $address) (i32.const 1))) (i32.const 8)) - ) - ) - - ;; Loads an i32 value in little-endian format - (func $i32_load_little (param $address i32) (result i32) - (i32.or - (call $i16_load_little (get_local $address)) - (i32.shl (call $i16_load_little (i32.add (get_local $address) (i32.const 2))) (i32.const 16)) - ) - ) - - ;; Loads an i64 value in little-endian format - (func $i64_load_little (param $address i32) (result i64) - (i64.or - (i64.extend_u/i32 (call $i32_load_little (get_local $address))) - (i64.shl (i64.extend_u/i32 (call $i32_load_little (i32.add (get_local $address) (i32.const 4)))) (i64.const 32)) - ) - ) - - (func (export "i32_load16_s") (param $value i32) (result i32) - (call $i16_store_little (i32.const 0) (get_local $value)) - (i32.load16_s (i32.const 0)) - ) - - (func (export "i32_load16_u") (param $value i32) (result i32) - (call $i16_store_little (i32.const 0) (get_local $value)) - (i32.load16_u (i32.const 0)) - ) - - (func (export "i32_load") (param $value i32) (result i32) - (call $i32_store_little (i32.const 0) (get_local $value)) - (i32.load (i32.const 0)) - ) - - (func (export "i64_load16_s") (param $value i64) (result i64) - (call $i16_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) - (i64.load16_s (i32.const 0)) - ) - - (func (export "i64_load16_u") (param $value i64) (result i64) - (call $i16_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) - (i64.load16_u (i32.const 0)) - ) - - (func (export "i64_load32_s") (param $value i64) (result i64) - (call $i32_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) - (i64.load32_s (i32.const 0)) - ) - - (func (export "i64_load32_u") (param $value i64) (result i64) - (call $i32_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) - (i64.load32_u (i32.const 0)) - ) - - (func (export "i64_load") (param $value i64) (result i64) - (call $i64_store_little (i32.const 0) (get_local $value)) - (i64.load (i32.const 0)) - ) - - (func (export "f32_load") (param $value f32) (result f32) - (call $i32_store_little (i32.const 0) (i32.reinterpret/f32 (get_local $value))) - (f32.load (i32.const 0)) - ) - - (func (export "f64_load") (param $value f64) (result f64) - (call $i64_store_little (i32.const 0) (i64.reinterpret/f64 (get_local $value))) - (f64.load (i32.const 0)) - ) - - - (func (export "i32_store16") (param $value i32) (result i32) - (i32.store16 (i32.const 0) (get_local $value)) - (call $i16_load_little (i32.const 0)) - ) - - (func (export "i32_store") (param $value i32) (result i32) - (i32.store (i32.const 0) (get_local $value)) - (call $i32_load_little (i32.const 0)) - ) - - (func (export "i64_store16") (param $value i64) (result i64) - (i64.store16 (i32.const 0) (get_local $value)) - (i64.extend_u/i32 (call $i16_load_little (i32.const 0))) - ) - - (func (export "i64_store32") (param $value i64) (result i64) - (i64.store32 (i32.const 0) (get_local $value)) - (i64.extend_u/i32 (call $i32_load_little (i32.const 0))) - ) - - (func (export "i64_store") (param $value i64) (result i64) - (i64.store (i32.const 0) (get_local $value)) - (call $i64_load_little (i32.const 0)) - ) - - (func (export "f32_store") (param $value f32) (result f32) - (f32.store (i32.const 0) (get_local $value)) - (f32.reinterpret/i32 (call $i32_load_little (i32.const 0))) - ) - - (func (export "f64_store") (param $value f64) (result f64) - (f64.store (i32.const 0) (get_local $value)) - (f64.reinterpret/i64 (call $i64_load_little (i32.const 0))) - ) -) - -(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1)) -(assert_return (invoke "i32_load16_s" (i32.const -4242)) (i32.const -4242)) -(assert_return (invoke "i32_load16_s" (i32.const 42)) (i32.const 42)) -(assert_return (invoke "i32_load16_s" (i32.const 0x3210)) (i32.const 0x3210)) - -(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 0xFFFF)) -(assert_return (invoke "i32_load16_u" (i32.const -4242)) (i32.const 61294)) -(assert_return (invoke "i32_load16_u" (i32.const 42)) (i32.const 42)) -(assert_return (invoke "i32_load16_u" (i32.const 0xCAFE)) (i32.const 0xCAFE)) - -(assert_return (invoke "i32_load" (i32.const -1)) (i32.const -1)) -(assert_return (invoke "i32_load" (i32.const -42424242)) (i32.const -42424242)) -(assert_return (invoke "i32_load" (i32.const 42424242)) (i32.const 42424242)) -(assert_return (invoke "i32_load" (i32.const 0xABAD1DEA)) (i32.const 0xABAD1DEA)) - -(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1)) -(assert_return (invoke "i64_load16_s" (i64.const -4242)) (i64.const -4242)) -(assert_return (invoke "i64_load16_s" (i64.const 42)) (i64.const 42)) -(assert_return (invoke "i64_load16_s" (i64.const 0x3210)) (i64.const 0x3210)) - -(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 0xFFFF)) -(assert_return (invoke "i64_load16_u" (i64.const -4242)) (i64.const 61294)) -(assert_return (invoke "i64_load16_u" (i64.const 42)) (i64.const 42)) -(assert_return (invoke "i64_load16_u" (i64.const 0xCAFE)) (i64.const 0xCAFE)) - -(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1)) -(assert_return (invoke "i64_load32_s" (i64.const -42424242)) (i64.const -42424242)) -(assert_return (invoke "i64_load32_s" (i64.const 42424242)) (i64.const 42424242)) -(assert_return (invoke "i64_load32_s" (i64.const 0x12345678)) (i64.const 0x12345678)) - -(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 0xFFFFFFFF)) -(assert_return (invoke "i64_load32_u" (i64.const -42424242)) (i64.const 4252543054)) -(assert_return (invoke "i64_load32_u" (i64.const 42424242)) (i64.const 42424242)) -(assert_return (invoke "i64_load32_u" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) - -(assert_return (invoke "i64_load" (i64.const -1)) (i64.const -1)) -(assert_return (invoke "i64_load" (i64.const -42424242)) (i64.const -42424242)) -(assert_return (invoke "i64_load" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) -(assert_return (invoke "i64_load" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) - -(assert_return (invoke "f32_load" (f32.const -1)) (f32.const -1)) -(assert_return (invoke "f32_load" (f32.const 1234e-5)) (f32.const 1234e-5)) -(assert_return (invoke "f32_load" (f32.const 4242.4242)) (f32.const 4242.4242)) -(assert_return (invoke "f32_load" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) - -(assert_return (invoke "f64_load" (f64.const -1)) (f64.const -1)) -(assert_return (invoke "f64_load" (f64.const 123456789e-5)) (f64.const 123456789e-5)) -(assert_return (invoke "f64_load" (f64.const 424242.424242)) (f64.const 424242.424242)) -(assert_return (invoke "f64_load" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) - - -(assert_return (invoke "i32_store16" (i32.const -1)) (i32.const 0xFFFF)) -(assert_return (invoke "i32_store16" (i32.const -4242)) (i32.const 61294)) -(assert_return (invoke "i32_store16" (i32.const 42)) (i32.const 42)) -(assert_return (invoke "i32_store16" (i32.const 0xCAFE)) (i32.const 0xCAFE)) - -(assert_return (invoke "i32_store" (i32.const -1)) (i32.const -1)) -(assert_return (invoke "i32_store" (i32.const -4242)) (i32.const -4242)) -(assert_return (invoke "i32_store" (i32.const 42424242)) (i32.const 42424242)) -(assert_return (invoke "i32_store" (i32.const 0xDEADCAFE)) (i32.const 0xDEADCAFE)) - -(assert_return (invoke "i64_store16" (i64.const -1)) (i64.const 0xFFFF)) -(assert_return (invoke "i64_store16" (i64.const -4242)) (i64.const 61294)) -(assert_return (invoke "i64_store16" (i64.const 42)) (i64.const 42)) -(assert_return (invoke "i64_store16" (i64.const 0xCAFE)) (i64.const 0xCAFE)) - -(assert_return (invoke "i64_store32" (i64.const -1)) (i64.const 0xFFFFFFFF)) -(assert_return (invoke "i64_store32" (i64.const -4242)) (i64.const 4294963054)) -(assert_return (invoke "i64_store32" (i64.const 42424242)) (i64.const 42424242)) -(assert_return (invoke "i64_store32" (i64.const 0xDEADCAFE)) (i64.const 0xDEADCAFE)) - -(assert_return (invoke "i64_store" (i64.const -1)) (i64.const -1)) -(assert_return (invoke "i64_store" (i64.const -42424242)) (i64.const -42424242)) -(assert_return (invoke "i64_store" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) -(assert_return (invoke "i64_store" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) - -(assert_return (invoke "f32_store" (f32.const -1)) (f32.const -1)) -(assert_return (invoke "f32_store" (f32.const 1234e-5)) (f32.const 1234e-5)) -(assert_return (invoke "f32_store" (f32.const 4242.4242)) (f32.const 4242.4242)) -(assert_return (invoke "f32_store" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) - -(assert_return (invoke "f64_store" (f64.const -1)) (f64.const -1)) -(assert_return (invoke "f64_store" (f64.const 123456789e-5)) (f64.const 123456789e-5)) -(assert_return (invoke "f64_store" (f64.const 424242.424242)) (f64.const 424242.424242)) -(assert_return (invoke "f64_store" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) diff --git a/libraries/wasm-jit/Test/spec/exports.wast b/libraries/wasm-jit/Test/spec/exports.wast deleted file mode 100644 index 6841aa873ea..00000000000 --- a/libraries/wasm-jit/Test/spec/exports.wast +++ /dev/null @@ -1,198 +0,0 @@ -;; Functions - -(module (func) (export "a" (func 0))) -(module (func) (export "a" (func 0)) (export "b" (func 0))) -(module (func) (func) (export "a" (func 0)) (export "b" (func 1))) - -(module (func (export "a"))) -(module (func (export "a") (export "b") (export "c"))) -(module (func (export "a") (export "b") (param i32))) -(module (func) (export "a" (func 0))) -(module (func $a (export "a"))) -(module (func $a) (export "a" (func $a))) -(module (export "a" (func 0)) (func)) -(module (export "a" (func $a)) (func $a)) - -(module $Func - (export "e" (func $f)) - (func $f (param $n i32) (result i32) - (return (i32.add (get_local $n) (i32.const 1))) - ) -) -(assert_return (invoke "e" (i32.const 42)) (i32.const 43)) -(assert_return (invoke $Func "e" (i32.const 42)) (i32.const 43)) -(module) -(module $Other1) -(assert_return (invoke $Func "e" (i32.const 42)) (i32.const 43)) - -(assert_invalid - (module (func) (export "a" (func 1))) - "unknown function" -) -(assert_invalid - (module (func) (export "a" (func 0)) (export "a" (func 0))) - "duplicate export name" -) -(assert_invalid - (module (func) (func) (export "a" (func 0)) (export "a" (func 1))) - "duplicate export name" -) -(assert_invalid - (module (func) (global i32 (i32.const 0)) (export "a" (func 0)) (export "a" (global 0))) - "duplicate export name" -) -(assert_invalid - (module (func) (table 0 anyfunc) (export "a" (func 0)) (export "a" (table 0))) - "duplicate export name" -) -(assert_invalid - (module (func) (memory 0) (export "a" (func 0)) (export "a" (memory 0))) - "duplicate export name" -) - - -;; Globals - -(module (global i32 (i32.const 0)) (export "a" (global 0))) -(module (global i32 (i32.const 0)) (export "a" (global 0)) (export "b" (global 0))) -(module (global i32 (i32.const 0)) (global i32 (i32.const 0)) (export "a" (global 0)) (export "b" (global 1))) - -(module (global (export "a") i32 (i32.const 0))) -(module (global i32 (i32.const 0)) (export "a" (global 0))) -(module (global $a (export "a") i32 (i32.const 0))) -(module (global $a i32 (i32.const 0)) (export "a" (global $a))) -(module (export "a" (global 0)) (global i32 (i32.const 0))) -(module (export "a" (global $a)) (global $a i32 (i32.const 0))) - -(module $Global - (export "e" (global $g)) - (global $g i32 (i32.const 42)) -) -(assert_return (get "e") (i32.const 42)) -(assert_return (get $Global "e") (i32.const 42)) -(module) -(module $Other2) -(assert_return (get $Global "e") (i32.const 42)) - -(assert_invalid - (module (global i32 (i32.const 0)) (export "a" (global 1))) - "unknown global" -) -(assert_invalid - (module (global i32 (i32.const 0)) (export "a" (global 0)) (export "a" (global 0))) - "duplicate export name" -) -(assert_invalid - (module (global i32 (i32.const 0)) (global i32 (i32.const 0)) (export "a" (global 0)) (export "a" (global 1))) - "duplicate export name" -) -(assert_invalid - (module (global i32 (i32.const 0)) (func) (export "a" (global 0)) (export "a" (func 0))) - "duplicate export name" -) -(assert_invalid - (module (global i32 (i32.const 0)) (table 0 anyfunc) (export "a" (global 0)) (export "a" (table 0))) - "duplicate export name" -) -(assert_invalid - (module (global i32 (i32.const 0)) (memory 0) (export "a" (global 0)) (export "a" (memory 0))) - "duplicate export name" -) - - -;; Tables - -(module (table 0 anyfunc) (export "a" (table 0))) -(module (table 0 anyfunc) (export "a" (table 0)) (export "b" (table 0))) -;; No multiple tables yet. -;; (module (table 0 anyfunc) (table 0 anyfunc) (export "a" (table 0)) (export "b" (table 1))) - -(module (table (export "a") 0 anyfunc)) -(module (table (export "a") 0 1 anyfunc)) -(module (table 0 anyfunc) (export "a" (table 0))) -(module (table 0 1 anyfunc) (export "a" (table 0))) -(module (table $a (export "a") 0 anyfunc)) -(module (table $a (export "a") 0 1 anyfunc)) -(module (table $a 0 anyfunc) (export "a" (table $a))) -(module (table $a 0 1 anyfunc) (export "a" (table $a))) -(module (export "a" (table 0)) (table 0 anyfunc)) -(module (export "a" (table 0)) (table 0 1 anyfunc)) -(module (export "a" (table $a)) (table $a 0 anyfunc)) -(module (export "a" (table $a)) (table $a 0 1 anyfunc)) - -(; TODO: access table ;) - -(assert_invalid - (module (table 0 anyfunc) (export "a" (table 1))) - "unknown table" -) -(assert_invalid - (module (table 0 anyfunc) (export "a" (table 0)) (export "a" (table 0))) - "duplicate export name" -) -;; No multiple tables yet. -;; (assert_invalid -;; (module (table 0 anyfunc) (table 0 anyfunc) (export "a" (table 0)) (export "a" (table 1))) -;; "duplicate export name" -;; ) -(assert_invalid - (module (table 0 anyfunc) (func) (export "a" (table 0)) (export "a" (func 0))) - "duplicate export name" -) -(assert_invalid - (module (table 0 anyfunc) (global i32 (i32.const 0)) (export "a" (table 0)) (export "a" (global 0))) - "duplicate export name" -) -(assert_invalid - (module (table 0 anyfunc) (memory 0) (export "a" (table 0)) (export "a" (memory 0))) - "duplicate export name" -) - - -;; Memories - -(module (memory 0) (export "a" (memory 0))) -(module (memory 0) (export "a" (memory 0)) (export "b" (memory 0))) -;; No multiple memories yet. -;; (module (memory 0) (memory 0) (export "a" (memory 0)) (export "b" (memory 1))) - -(module (memory (export "a") 0)) -(module (memory (export "a") 0 1)) -(module (memory 0) (export "a" (memory 0))) -(module (memory 0 1) (export "a" (memory 0))) -(module (memory $a (export "a") 0)) -(module (memory $a (export "a") 0 1)) -(module (memory $a 0) (export "a" (memory $a))) -(module (memory $a 0 1) (export "a" (memory $a))) -(module (export "a" (memory 0)) (memory 0)) -(module (export "a" (memory 0)) (memory 0 1)) -(module (export "a" (memory $a)) (memory $a 0)) -(module (export "a" (memory $a)) (memory $a 0 1)) - -(; TODO: access memory ;) - -(assert_invalid - (module (memory 0) (export "a" (memory 1))) - "unknown memory" -) -(assert_invalid - (module (memory 0) (export "a" (memory 0)) (export "a" (memory 0))) - "duplicate export name" -) -;; No multiple memories yet. -;; (assert_invalid -;; (module (memory 0) (memory 0) (export "a" (memory 0)) (export "a" (memory 1))) -;; "duplicate export name" -;; ) -(assert_invalid - (module (memory 0) (func) (export "a" (memory 0)) (export "a" (func 0))) - "duplicate export name" -) -(assert_invalid - (module (memory 0) (global i32 (i32.const 0)) (export "a" (memory 0)) (export "a" (global 0))) - "duplicate export name" -) -(assert_invalid - (module (memory 0) (table 0 anyfunc) (export "a" (memory 0)) (export "a" (table 0))) - "duplicate export name" -) diff --git a/libraries/wasm-jit/Test/spec/f32.wast b/libraries/wasm-jit/Test/spec/f32.wast deleted file mode 100644 index 2595a4ac9a8..00000000000 --- a/libraries/wasm-jit/Test/spec/f32.wast +++ /dev/null @@ -1,2518 +0,0 @@ -;; Test all the f32 operators on major boundary values and all special -;; values (except comparison and bitwise operators, which are tested in -;; f32_bitwise.wast and f32_cmp.wast). - -(module - (func (export "add") (param $x f32) (param $y f32) (result f32) (f32.add (get_local $x) (get_local $y))) - (func (export "sub") (param $x f32) (param $y f32) (result f32) (f32.sub (get_local $x) (get_local $y))) - (func (export "mul") (param $x f32) (param $y f32) (result f32) (f32.mul (get_local $x) (get_local $y))) - (func (export "div") (param $x f32) (param $y f32) (result f32) (f32.div (get_local $x) (get_local $y))) - (func (export "sqrt") (param $x f32) (result f32) (f32.sqrt (get_local $x))) - (func (export "min") (param $x f32) (param $y f32) (result f32) (f32.min (get_local $x) (get_local $y))) - (func (export "max") (param $x f32) (param $y f32) (result f32) (f32.max (get_local $x) (get_local $y))) - (func (export "ceil") (param $x f32) (result f32) (f32.ceil (get_local $x))) - (func (export "floor") (param $x f32) (result f32) (f32.floor (get_local $x))) - (func (export "trunc") (param $x f32) (result f32) (f32.trunc (get_local $x))) - (func (export "nearest") (param $x f32) (result f32) (f32.nearest (get_local $x))) -) - -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x0p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x0p+0) (f32.const nan:0x200000))) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-148)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-148)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1.000002p-126)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1.fffffcp-127)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1.fffffcp-127)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1.000002p-126)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p-149) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p-149) (f32.const nan:0x200000))) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1.000002p-126)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1.fffffcp-127)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1.fffffcp-127)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1.000002p-126)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-125)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-125)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p-126) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p-126) (f32.const nan:0x200000))) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1.8p+0)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1.8p+0)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.b21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.721fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.721fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.b21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p-1) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p-1) (f32.const nan:0x200000))) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1.8p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1.8p+0)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+1)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+1)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.d21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.521fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.521fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.d21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1p+0) (f32.const nan:0x200000))) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.b21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.721fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.721fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.b21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.d21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.521fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.521fb6p+2)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.d21fb6p+2)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+3)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+3)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const 0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return (invoke "add" (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const -0x1p-126)) (f32.const inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const -0x1p-1)) (f32.const inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const -0x1p+0)) (f32.const inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const 0x1p+0)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "add" (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "add" (f32.const -inf) (f32.const -inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -inf) (f32.const inf))) -(assert_return_canonical_nan (invoke "add" (f32.const inf) (f32.const -inf))) -(assert_return (invoke "add" (f32.const inf) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "add" (f32.const -inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const -nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "add" (f32.const -nan:0x200000) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "add" (f32.const nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "add" (f32.const nan:0x200000) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x0p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x0p+0) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p-148)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p-148)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1.fffffcp-127)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1.000002p-126)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1.000002p-126)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1.fffffcp-127)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p-149) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p-149) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1.fffffcp-127)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1.000002p-126)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1.000002p-126)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1.fffffcp-127)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p-125)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p-125)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p-126) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p-126) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1.8p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1.8p+0)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.721fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.b21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.b21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.721fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p-1) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p-1) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1.8p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1.8p+0)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+1)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+1)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.521fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.d21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.d21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.521fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1p+0) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.721fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.b21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.b21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.721fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.521fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.d21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.d21fb6p+2)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.521fb6p+2)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+3)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+3)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return (invoke "sub" (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -0x1p-126)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -0x1p-1)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -0x1p+0)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const 0x1p+0)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const -inf) (f32.const -inf))) -(assert_return (invoke "sub" (f32.const -inf) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "sub" (f32.const inf) (f32.const -inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "sub" (f32.const inf) (f32.const inf))) -(assert_return_canonical_nan (invoke "sub" (f32.const -inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const -nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const -nan:0x200000) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sub" (f32.const nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "sub" (f32.const nan:0x200000) (f32.const nan:0x200000))) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x0p+0) (f32.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x0p+0) (f32.const inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x0p+0) (f32.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x0p+0) (f32.const inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x0p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x0p+0) (f32.const nan:0x200000))) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.8p-147)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.8p-147)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p-147)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p-147)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p-149) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p-149) (f32.const nan:0x200000))) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-127)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-127)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-127)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-127)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p-126) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p-126) (f32.const nan:0x200000))) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-127)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-127)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-127)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-127)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p-2)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p-2)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-2)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-2)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p-1) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p-1) (f32.const nan:0x200000))) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1p+0) (f32.const nan:0x200000))) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.8p-147)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.8p-147)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.8p-147)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.8p-147)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p-124)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+1)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.3bd3cep+5)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.3bd3cep+5)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.3bd3cep+5)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.3bd3cep+5)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep-22)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+1)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+126)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -inf) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const -inf) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const inf) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const inf) (f32.const 0x0p+0))) -(assert_return (invoke "mul" (f32.const -inf) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const -0x1p-126)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const -0x1p-1)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const -0x1p+0)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const -0x1p+0)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const 0x1p+0)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "mul" (f32.const -inf) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "mul" (f32.const inf) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "mul" (f32.const -inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const -nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const -nan:0x200000) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "mul" (f32.const nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "mul" (f32.const nan:0x200000) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x0p+0) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x0p+0) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x0p+0) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x0p+0) (f32.const 0x0p+0))) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f32.const -0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x0p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x0p+0) (f32.const nan:0x200000))) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1p-23)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1p-23)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-23)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-23)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-148)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-148)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-148)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-148)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p-149) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p-149) (f32.const nan:0x200000))) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1p+23)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1p+23)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p+23)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p+23)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-125)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-125)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-125)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-125)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f3p-129)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f3p-129)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f3p-129)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f3p-129)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p-126) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p-126) (f32.const nan:0x200000))) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p+125)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p+125)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p+125)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p+125)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f306p-4)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f306p-4)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f306p-4)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f306p-4)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-129)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-129)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-129)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-129)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p-1) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p-1) (f32.const nan:0x200000))) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+126)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+126)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+126)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+126)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p+1)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p+1)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+1)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+1)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f306p-3)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f306p-3)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f306p-3)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f306p-3)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-128)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-128)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-128)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-128)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1p+0) (f32.const nan:0x200000))) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+3)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+3)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+3)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+3)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.921fb8p-126)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.921fb8p-126)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb8p-126)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb8p-126)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f304p+125)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f304p+125)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f304p+125)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f304p+125)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const 0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return (invoke "div" (f32.const -inf) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const -0x1p-126)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const -0x1p-1)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const -0x1p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const -0x1p+0)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const 0x1p+0)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "div" (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "div" (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return_canonical_nan (invoke "div" (f32.const -inf) (f32.const -inf))) -(assert_return_canonical_nan (invoke "div" (f32.const -inf) (f32.const inf))) -(assert_return_canonical_nan (invoke "div" (f32.const inf) (f32.const -inf))) -(assert_return_canonical_nan (invoke "div" (f32.const inf) (f32.const inf))) -(assert_return_canonical_nan (invoke "div" (f32.const -inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const -nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "div" (f32.const -nan:0x200000) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "div" (f32.const nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "div" (f32.const nan:0x200000) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const inf)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "min" (f32.const -0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x0p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x0p+0) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const inf)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const inf)) (f32.const 0x1p-149)) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p-149) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p-149) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const inf)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const inf)) (f32.const 0x1p-126)) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p-126) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p-126) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const inf)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const inf)) (f32.const 0x1p-1)) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p-1) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p-1) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const inf)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const inf)) (f32.const 0x1p+0)) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1p+0) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const 0x1.921fb6p+2)) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const 0x1.fffffep+127)) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const 0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return (invoke "min" (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const 0x0p+0)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "min" (f32.const inf) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "min" (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const 0x1p-149)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "min" (f32.const inf) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "min" (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const 0x1p-126)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "min" (f32.const inf) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "min" (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const 0x1p-1)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "min" (f32.const inf) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "min" (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const 0x1p+0)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "min" (f32.const inf) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "min" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "min" (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "min" (f32.const -inf) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const -inf) (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "min" (f32.const inf) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "min" (f32.const -inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const -nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "min" (f32.const -nan:0x200000) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "min" (f32.const nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "min" (f32.const nan:0x200000) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -inf)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x0p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x0p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x0p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x0p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x0p+0) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -inf)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -inf)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p-149) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p-149) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p-149) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p-149) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p-149) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -inf)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -inf)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p-126) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p-126) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p-126) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p-126) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p-126) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -inf)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -inf)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p-1) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p-1) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p-1) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p-1) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p-1) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -inf)) (f32.const -0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -inf)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1p+0) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p+0) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p+0) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1p+0) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1p+0) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const 0x1.fffffep+127) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000))) -(assert_return (invoke "max" (f32.const -inf) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "max" (f32.const -inf) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "max" (f32.const inf) (f32.const -0x0p+0)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "max" (f32.const -inf) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "max" (f32.const inf) (f32.const -0x1p-149)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "max" (f32.const -inf) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "max" (f32.const inf) (f32.const -0x1p-126)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "max" (f32.const -inf) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "max" (f32.const inf) (f32.const -0x1p-1)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "max" (f32.const -inf) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "max" (f32.const inf) (f32.const -0x1p+0)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const 0x1p+0)) (f32.const inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "max" (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "max" (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "max" (f32.const -inf) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "max" (f32.const inf) (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "max" (f32.const -inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const inf) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const inf) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const inf) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const inf) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const 0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -0x1p-149))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -0x1p-149))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const 0x1p-149))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const 0x1p-149))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -0x1p-126))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -0x1p-126))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const 0x1p-126))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const 0x1p-126))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const 0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const 0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const 0x1.921fb6p+2))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const 0x1.fffffep+127))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -inf))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -inf))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const inf))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const inf))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const -nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "max" (f32.const -nan:0x200000) (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan) (f32.const -nan:0x200000))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "max" (f32.const nan) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan) (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "max" (f32.const nan:0x200000) (f32.const nan:0x200000))) -(assert_return (invoke "sqrt" (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "sqrt" (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -0x1p-149))) -(assert_return (invoke "sqrt" (f32.const 0x1p-149)) (f32.const 0x1.6a09e6p-75)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -0x1p-126))) -(assert_return (invoke "sqrt" (f32.const 0x1p-126)) (f32.const 0x1p-63)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -0x1p-1))) -(assert_return (invoke "sqrt" (f32.const 0x1p-1)) (f32.const 0x1.6a09e6p-1)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -0x1p+0))) -(assert_return (invoke "sqrt" (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -0x1.921fb6p+2))) -(assert_return (invoke "sqrt" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.40d932p+1)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -0x1.fffffep+127))) -(assert_return (invoke "sqrt" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+63)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -inf))) -(assert_return (invoke "sqrt" (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "sqrt" (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "sqrt" (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "sqrt" (f32.const nan))) -(assert_return_arithmetic_nan (invoke "sqrt" (f32.const nan:0x200000))) -(assert_return (invoke "floor" (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "floor" (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "floor" (f32.const -0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "floor" (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "floor" (f32.const -0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "floor" (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "floor" (f32.const -0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "floor" (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "floor" (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "floor" (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "floor" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.cp+2)) -(assert_return (invoke "floor" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2)) -(assert_return (invoke "floor" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "floor" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "floor" (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "floor" (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "floor" (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "floor" (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "floor" (f32.const nan))) -(assert_return_arithmetic_nan (invoke "floor" (f32.const nan:0x200000))) -(assert_return (invoke "ceil" (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "ceil" (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "ceil" (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "ceil" (f32.const 0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "ceil" (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "ceil" (f32.const 0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "ceil" (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "ceil" (f32.const 0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "ceil" (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "ceil" (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "ceil" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2)) -(assert_return (invoke "ceil" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.cp+2)) -(assert_return (invoke "ceil" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "ceil" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "ceil" (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "ceil" (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "ceil" (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "ceil" (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "ceil" (f32.const nan))) -(assert_return_arithmetic_nan (invoke "ceil" (f32.const nan:0x200000))) -(assert_return (invoke "trunc" (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "trunc" (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "trunc" (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "trunc" (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "trunc" (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "trunc" (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "trunc" (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "trunc" (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "trunc" (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "trunc" (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "trunc" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2)) -(assert_return (invoke "trunc" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2)) -(assert_return (invoke "trunc" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "trunc" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "trunc" (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "trunc" (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "trunc" (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "trunc" (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "trunc" (f32.const nan))) -(assert_return_arithmetic_nan (invoke "trunc" (f32.const nan:0x200000))) -(assert_return (invoke "nearest" (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "nearest" (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "nearest" (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "nearest" (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "nearest" (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "nearest" (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "nearest" (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "nearest" (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "nearest" (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "nearest" (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "nearest" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2)) -(assert_return (invoke "nearest" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2)) -(assert_return (invoke "nearest" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "nearest" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "nearest" (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "nearest" (f32.const inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "nearest" (f32.const -nan))) -(assert_return_arithmetic_nan (invoke "nearest" (f32.const -nan:0x200000))) -(assert_return_canonical_nan (invoke "nearest" (f32.const nan))) -(assert_return_arithmetic_nan (invoke "nearest" (f32.const nan:0x200000))) diff --git a/libraries/wasm-jit/Test/spec/f32_bitwise.wast b/libraries/wasm-jit/Test/spec/f32_bitwise.wast deleted file mode 100644 index 12bdb866e06..00000000000 --- a/libraries/wasm-jit/Test/spec/f32_bitwise.wast +++ /dev/null @@ -1,369 +0,0 @@ -;; Test all the f32 bitwise operators on major boundary values and all special -;; values. - -(module - (func (export "abs") (param $x f32) (result f32) (f32.abs (get_local $x))) - (func (export "neg") (param $x f32) (result f32) (f32.neg (get_local $x))) - (func (export "copysign") (param $x f32) (param $y f32) (result f32) (f32.copysign (get_local $x) (get_local $y))) -) - -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -inf)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const inf)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -nan)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const nan)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -nan)) (f32.const -0x0p+0)) -(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const nan)) (f32.const 0x0p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -inf)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const inf)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -inf)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const inf)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -nan)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const nan)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -nan)) (f32.const -0x1p-149)) -(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const nan)) (f32.const 0x1p-149)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -inf)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const inf)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -inf)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const inf)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -nan)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const nan)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -nan)) (f32.const -0x1p-126)) -(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const nan)) (f32.const 0x1p-126)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -inf)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const inf)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -inf)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const inf)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -nan)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const nan)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -nan)) (f32.const -0x1p-1)) -(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const nan)) (f32.const 0x1p-1)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -inf)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const inf)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -inf)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const inf)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -nan)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const nan)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -nan)) (f32.const -0x1p+0)) -(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const nan)) (f32.const 0x1p+0)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const inf)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const inf)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const nan)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const nan)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -inf)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const inf)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -inf)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const inf)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -nan)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const nan)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -nan)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const nan)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -0x0p+0)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const 0x0p+0)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -0x1p-149)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const 0x1p-149)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -0x1p-126)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const 0x1p-126)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -0x1p-1)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const 0x1p-1)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -0x1p+0)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const 0x1p+0)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -0x1p+0)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const 0x1p+0)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -0x1.921fb6p+2)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const 0x1.921fb6p+2)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -0x1.fffffep+127)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const 0x1.fffffep+127)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -inf)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const inf)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const -nan)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const -inf) (f32.const nan)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const -nan)) (f32.const -inf)) -(assert_return (invoke "copysign" (f32.const inf) (f32.const nan)) (f32.const inf)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x0p+0)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x0p+0)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x0p+0)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x0p+0)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p-149)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p-149)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p-149)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p-149)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p-126)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p-126)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p-126)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p-126)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p-1)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p-1)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p-1)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p-1)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p+0)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p+0)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p+0)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p+0)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -inf)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const inf)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -inf)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const inf)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const -nan)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const -nan) (f32.const nan)) (f32.const nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const -nan)) (f32.const -nan)) -(assert_return (invoke "copysign" (f32.const nan) (f32.const nan)) (f32.const nan)) -(assert_return (invoke "abs" (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "abs" (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "abs" (f32.const -0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "abs" (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "abs" (f32.const -0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "abs" (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "abs" (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "abs" (f32.const 0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "abs" (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "abs" (f32.const 0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "abs" (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "abs" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "abs" (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "abs" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "abs" (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "abs" (f32.const inf)) (f32.const inf)) -(assert_return (invoke "abs" (f32.const -nan)) (f32.const nan)) -(assert_return (invoke "abs" (f32.const nan)) (f32.const nan)) -(assert_return (invoke "neg" (f32.const -0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "neg" (f32.const 0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "neg" (f32.const -0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "neg" (f32.const 0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "neg" (f32.const -0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "neg" (f32.const 0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "neg" (f32.const -0x1p-1)) (f32.const 0x1p-1)) -(assert_return (invoke "neg" (f32.const 0x1p-1)) (f32.const -0x1p-1)) -(assert_return (invoke "neg" (f32.const -0x1p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "neg" (f32.const 0x1p+0)) (f32.const -0x1p+0)) -(assert_return (invoke "neg" (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) -(assert_return (invoke "neg" (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) -(assert_return (invoke "neg" (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "neg" (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "neg" (f32.const -inf)) (f32.const inf)) -(assert_return (invoke "neg" (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "neg" (f32.const -nan)) (f32.const nan)) -(assert_return (invoke "neg" (f32.const nan)) (f32.const -nan)) diff --git a/libraries/wasm-jit/Test/spec/f32_cmp.wast b/libraries/wasm-jit/Test/spec/f32_cmp.wast deleted file mode 100644 index 5bae18bcd8c..00000000000 --- a/libraries/wasm-jit/Test/spec/f32_cmp.wast +++ /dev/null @@ -1,2412 +0,0 @@ -;; Test all the f32 comparison operators on major boundary values and all -;; special values. - -(module - (func (export "eq") (param $x f32) (param $y f32) (result i32) (f32.eq (get_local $x) (get_local $y))) - (func (export "ne") (param $x f32) (param $y f32) (result i32) (f32.ne (get_local $x) (get_local $y))) - (func (export "lt") (param $x f32) (param $y f32) (result i32) (f32.lt (get_local $x) (get_local $y))) - (func (export "le") (param $x f32) (param $y f32) (result i32) (f32.le (get_local $x) (get_local $y))) - (func (export "gt") (param $x f32) (param $y f32) (result i32) (f32.gt (get_local $x) (get_local $y))) - (func (export "ge") (param $x f32) (param $y f32) (result i32) (f32.ge (get_local $x) (get_local $y))) -) - -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "eq" (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -inf) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const inf) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "ne" (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "lt" (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const inf) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "le" (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f32.const inf) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "gt" (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const 0x1p-149)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const 0x1p-126)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const 0x1.921fb6p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const 0x1.fffffep+127)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const inf) (f32.const inf)) (i32.const 1)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const inf) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const 0x1p-149)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const 0x1p-126)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const 0x1.921fb6p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const 0x1.fffffep+127)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const -nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const -nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan) (f32.const nan:0x200000)) (i32.const 0)) -(assert_return (invoke "ge" (f32.const nan:0x200000) (f32.const nan:0x200000)) (i32.const 0)) diff --git a/libraries/wasm-jit/Test/spec/f64.wast b/libraries/wasm-jit/Test/spec/f64.wast deleted file mode 100644 index 50db4e708d2..00000000000 --- a/libraries/wasm-jit/Test/spec/f64.wast +++ /dev/null @@ -1,2518 +0,0 @@ -;; Test all the f64 operators on major boundary values and all special -;; values (except comparison and bitwise operators, which are tested in -;; f64_bitwise.wast and f64_cmp.wast). - -(module - (func (export "add") (param $x f64) (param $y f64) (result f64) (f64.add (get_local $x) (get_local $y))) - (func (export "sub") (param $x f64) (param $y f64) (result f64) (f64.sub (get_local $x) (get_local $y))) - (func (export "mul") (param $x f64) (param $y f64) (result f64) (f64.mul (get_local $x) (get_local $y))) - (func (export "div") (param $x f64) (param $y f64) (result f64) (f64.div (get_local $x) (get_local $y))) - (func (export "sqrt") (param $x f64) (result f64) (f64.sqrt (get_local $x))) - (func (export "min") (param $x f64) (param $y f64) (result f64) (f64.min (get_local $x) (get_local $y))) - (func (export "max") (param $x f64) (param $y f64) (result f64) (f64.max (get_local $x) (get_local $y))) - (func (export "ceil") (param $x f64) (result f64) (f64.ceil (get_local $x))) - (func (export "floor") (param $x f64) (result f64) (f64.floor (get_local $x))) - (func (export "trunc") (param $x f64) (result f64) (f64.trunc (get_local $x))) - (func (export "nearest") (param $x f64) (result f64) (f64.nearest (get_local $x))) -) - -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000002p-1022)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000002p-1022)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.fffffffffffffp-1022)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.fffffffffffffp-1022)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.fffffffffffffp-1022)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.fffffffffffffp-1022)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.0000000000001p-1022)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1021)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1021)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1.8p+0)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1.8p+0)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.b21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.721fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.721fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.b21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1.8p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1.8p+0)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+1)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+1)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.d21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.521fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.521fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.d21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.b21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.721fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.721fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.b21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.d21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.521fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.521fb54442d18p+2)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.d21fb54442d18p+2)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+3)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+3)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return (invoke "add" (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const -0x1p-1022)) (f64.const inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const -0x1p-1)) (f64.const inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const -0x1p+0)) (f64.const inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const 0x1p+0)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "add" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "add" (f64.const -inf) (f64.const -inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -inf) (f64.const inf))) -(assert_return_canonical_nan (invoke "add" (f64.const inf) (f64.const -inf))) -(assert_return (invoke "add" (f64.const inf) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "add" (f64.const -inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const -nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "add" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "add" (f64.const nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "add" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000002p-1022)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000002p-1022)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0.fffffffffffffp-1022)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x1.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x1.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0.fffffffffffffp-1022)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.fffffffffffffp-1022)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.0000000000001p-1022)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.fffffffffffffp-1022)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-1021)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-1021)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1.8p+0)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1.8p+0)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.721fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.b21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.b21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.721fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1.8p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1.8p+0)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+1)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+1)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.521fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.d21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.d21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.521fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.721fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.b21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.b21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.721fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.521fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.d21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.d21fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.521fb54442d18p+2)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+3)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+3)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sub" (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -0x1p-1022)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -0x1p-1)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -0x1p+0)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const 0x1p+0)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const -inf) (f64.const -inf))) -(assert_return (invoke "sub" (f64.const -inf) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "sub" (f64.const inf) (f64.const -inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "sub" (f64.const inf) (f64.const inf))) -(assert_return_canonical_nan (invoke "sub" (f64.const -inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const -nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sub" (f64.const nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "sub" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x0p+0) (f64.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x0p+0) (f64.const inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x0p+0) (f64.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x0p+0) (f64.const inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x0.8p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p-2)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p-2)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-2)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-2)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000006p-1022)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p-1020)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+1)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.3bd3cc9be45dep+5)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.3bd3cc9be45dep+5)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.3bd3cc9be45dep+5)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.3bd3cc9be45dep+5)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp-51)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1022)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -inf) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const -inf) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const inf) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const inf) (f64.const 0x0p+0))) -(assert_return (invoke "mul" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const -0x1p-1022)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const -0x1p-1)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const -0x1p+0)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const -0x1p+0)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const 0x1p+0)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "mul" (f64.const -inf) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "mul" (f64.const inf) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "mul" (f64.const -inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const -nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "mul" (f64.const nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "mul" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x0p+0) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x0p+0) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x0p+0) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x0p+0) (f64.const 0x0p+0))) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f64.const -0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-52)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-52)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-52)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-52)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0.0000000000002p-1022)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0.0000000000002p-1022)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000002p-1022)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000002p-1022)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+52)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+52)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+52)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+52)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1021)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1021)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1021)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1021)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.28be60db9391p-1022)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.28be60db9391p-1022)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.28be60db9391p-1022)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.28be60db9391p-1022)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p+1021)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p+1021)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p+1021)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p+1021)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-4)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-4)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-4)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-4)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.2p-1022)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.2p-1022)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.2p-1022)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.2p-1022)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+1022)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+1022)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+1022)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+1022)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p+1)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p+1)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+1)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+1)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-3)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-3)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-3)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-3)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.4p-1022)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.4p-1022)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.4p-1022)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.4p-1022)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+3)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+3)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+3)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+3)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d19p-1022)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d19p-1022)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d19p-1022)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d19p-1022)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c882p+1021)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c882p+1021)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c882p+1021)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c882p+1021)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return (invoke "div" (f64.const -inf) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const -0x1p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const -0x1p-1)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const -0x1p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const -0x1p+0)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const 0x1p+0)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "div" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "div" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return_canonical_nan (invoke "div" (f64.const -inf) (f64.const -inf))) -(assert_return_canonical_nan (invoke "div" (f64.const -inf) (f64.const inf))) -(assert_return_canonical_nan (invoke "div" (f64.const inf) (f64.const -inf))) -(assert_return_canonical_nan (invoke "div" (f64.const inf) (f64.const inf))) -(assert_return_canonical_nan (invoke "div" (f64.const -inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const -nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "div" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "div" (f64.const nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "div" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const inf)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "min" (f64.const -0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0.0000000000001p-1022)) -(assert_return_canonical_nan (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const inf)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const inf)) (f64.const 0x1p-1022)) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const inf)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const inf)) (f64.const 0x1p-1)) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const inf)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const inf)) (f64.const 0x1p+0)) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return (invoke "min" (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const 0x0p+0)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "min" (f64.const inf) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "min" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "min" (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const 0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "min" (f64.const inf) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "min" (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const 0x1p-1)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "min" (f64.const inf) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "min" (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const 0x1p+0)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "min" (f64.const inf) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "min" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "min" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "min" (f64.const -inf) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const -inf) (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "min" (f64.const inf) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "min" (f64.const -inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const -nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "min" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "min" (f64.const nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "min" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -inf)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x0p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x0p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x0p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -inf)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1p-1022) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1p-1022) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -inf)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -inf)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1p-1) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1p-1) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1p-1) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -inf)) (f64.const -0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -inf)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1p+0) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1p+0) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1p+0) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000))) -(assert_return (invoke "max" (f64.const -inf) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "max" (f64.const -inf) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "max" (f64.const inf) (f64.const -0x0p+0)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "max" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "max" (f64.const -inf) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "max" (f64.const inf) (f64.const -0x1p-1022)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "max" (f64.const -inf) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "max" (f64.const inf) (f64.const -0x1p-1)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "max" (f64.const -inf) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "max" (f64.const inf) (f64.const -0x1p+0)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const 0x1p+0)) (f64.const inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "max" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "max" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "max" (f64.const -inf) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "max" (f64.const inf) (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "max" (f64.const -inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const inf) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const inf) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const inf) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const inf) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const 0x0p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const 0x0p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -0x1p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const 0x1p-1022))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const 0x1p-1))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const 0x1p-1))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const 0x1p+0))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const 0x1p+0))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -inf))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -inf))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const inf))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const inf))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const -nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "max" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan) (f64.const -nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "max" (f64.const nan) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const nan))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan) (f64.const nan:0x4000000000000))) -(assert_return_arithmetic_nan (invoke "max" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000))) -(assert_return (invoke "sqrt" (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "sqrt" (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -0x0.0000000000001p-1022))) -(assert_return (invoke "sqrt" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-537)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -0x1p-1022))) -(assert_return (invoke "sqrt" (f64.const 0x1p-1022)) (f64.const 0x1p-511)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -0x1p-1))) -(assert_return (invoke "sqrt" (f64.const 0x1p-1)) (f64.const 0x1.6a09e667f3bcdp-1)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -0x1p+0))) -(assert_return (invoke "sqrt" (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -0x1.921fb54442d18p+2))) -(assert_return (invoke "sqrt" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.40d931ff62705p+1)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -0x1.fffffffffffffp+1023))) -(assert_return (invoke "sqrt" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+511)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -inf))) -(assert_return (invoke "sqrt" (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "sqrt" (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "sqrt" (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "sqrt" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "sqrt" (f64.const nan:0x4000000000000))) -(assert_return (invoke "floor" (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "floor" (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "floor" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "floor" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "floor" (f64.const -0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "floor" (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "floor" (f64.const -0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "floor" (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "floor" (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "floor" (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "floor" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.cp+2)) -(assert_return (invoke "floor" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2)) -(assert_return (invoke "floor" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "floor" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "floor" (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "floor" (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "floor" (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "floor" (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "floor" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "floor" (f64.const nan:0x4000000000000))) -(assert_return (invoke "ceil" (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "ceil" (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "ceil" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "ceil" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "ceil" (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "ceil" (f64.const 0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "ceil" (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "ceil" (f64.const 0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "ceil" (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "ceil" (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "ceil" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2)) -(assert_return (invoke "ceil" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.cp+2)) -(assert_return (invoke "ceil" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "ceil" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "ceil" (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "ceil" (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "ceil" (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "ceil" (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "ceil" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "ceil" (f64.const nan:0x4000000000000))) -(assert_return (invoke "trunc" (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "trunc" (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "trunc" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "trunc" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "trunc" (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "trunc" (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "trunc" (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "trunc" (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "trunc" (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "trunc" (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "trunc" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2)) -(assert_return (invoke "trunc" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2)) -(assert_return (invoke "trunc" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "trunc" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "trunc" (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "trunc" (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "trunc" (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "trunc" (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "trunc" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "trunc" (f64.const nan:0x4000000000000))) -(assert_return (invoke "nearest" (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "nearest" (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "nearest" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "nearest" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "nearest" (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "nearest" (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "nearest" (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "nearest" (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "nearest" (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "nearest" (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "nearest" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2)) -(assert_return (invoke "nearest" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2)) -(assert_return (invoke "nearest" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "nearest" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "nearest" (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "nearest" (f64.const inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "nearest" (f64.const -nan))) -(assert_return_arithmetic_nan (invoke "nearest" (f64.const -nan:0x4000000000000))) -(assert_return_canonical_nan (invoke "nearest" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "nearest" (f64.const nan:0x4000000000000))) diff --git a/libraries/wasm-jit/Test/spec/f64_bitwise.wast b/libraries/wasm-jit/Test/spec/f64_bitwise.wast deleted file mode 100644 index 86c64b54de3..00000000000 --- a/libraries/wasm-jit/Test/spec/f64_bitwise.wast +++ /dev/null @@ -1,369 +0,0 @@ -;; Test all the f64 bitwise operators on major boundary values and all special -;; values. - -(module - (func (export "abs") (param $x f64) (result f64) (f64.abs (get_local $x))) - (func (export "neg") (param $x f64) (result f64) (f64.neg (get_local $x))) - (func (export "copysign") (param $x f64) (param $y f64) (result f64) (f64.copysign (get_local $x) (get_local $y))) -) - -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -inf)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const inf)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -nan)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const nan)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -nan)) (f64.const -0x0p+0)) -(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const nan)) (f64.const 0x0p+0)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -inf)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const inf)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -inf)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const inf)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -nan)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const nan)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -nan)) (f64.const -0x1p-1022)) -(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const nan)) (f64.const 0x1p-1022)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -inf)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const inf)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -inf)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const inf)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -nan)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const nan)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -nan)) (f64.const -0x1p-1)) -(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const nan)) (f64.const 0x1p-1)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -inf)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const inf)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -inf)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const inf)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -nan)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const nan)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -nan)) (f64.const -0x1p+0)) -(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const nan)) (f64.const 0x1p+0)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -0x0p+0)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const 0x0p+0)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -0x1p-1022)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const 0x1p-1022)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -0x1p-1)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const 0x1p-1)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -0x1p+0)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const 0x1p+0)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -0x1p+0)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const 0x1p+0)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -inf)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const inf)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const -nan)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const -inf) (f64.const nan)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const -nan)) (f64.const -inf)) -(assert_return (invoke "copysign" (f64.const inf) (f64.const nan)) (f64.const inf)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x0p+0)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x0p+0)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x0p+0)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x0p+0)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1p-1022)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1p-1022)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1p-1022)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1p-1022)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1p-1)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1p-1)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1p-1)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1p-1)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1p+0)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1p+0)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1p+0)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1p+0)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -inf)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const inf)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -inf)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const inf)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const -nan)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const -nan) (f64.const nan)) (f64.const nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const -nan)) (f64.const -nan)) -(assert_return (invoke "copysign" (f64.const nan) (f64.const nan)) (f64.const nan)) -(assert_return (invoke "abs" (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "abs" (f64.const 0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "abs" (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "abs" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "abs" (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "abs" (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "abs" (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "abs" (f64.const 0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "abs" (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "abs" (f64.const 0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "abs" (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "abs" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "abs" (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "abs" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "abs" (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "abs" (f64.const inf)) (f64.const inf)) -(assert_return (invoke "abs" (f64.const -nan)) (f64.const nan)) -(assert_return (invoke "abs" (f64.const nan)) (f64.const nan)) -(assert_return (invoke "neg" (f64.const -0x0p+0)) (f64.const 0x0p+0)) -(assert_return (invoke "neg" (f64.const 0x0p+0)) (f64.const -0x0p+0)) -(assert_return (invoke "neg" (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) -(assert_return (invoke "neg" (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) -(assert_return (invoke "neg" (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) -(assert_return (invoke "neg" (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) -(assert_return (invoke "neg" (f64.const -0x1p-1)) (f64.const 0x1p-1)) -(assert_return (invoke "neg" (f64.const 0x1p-1)) (f64.const -0x1p-1)) -(assert_return (invoke "neg" (f64.const -0x1p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "neg" (f64.const 0x1p+0)) (f64.const -0x1p+0)) -(assert_return (invoke "neg" (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) -(assert_return (invoke "neg" (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) -(assert_return (invoke "neg" (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "neg" (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) -(assert_return (invoke "neg" (f64.const -inf)) (f64.const inf)) -(assert_return (invoke "neg" (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "neg" (f64.const -nan)) (f64.const nan)) -(assert_return (invoke "neg" (f64.const nan)) (f64.const -nan)) diff --git a/libraries/wasm-jit/Test/spec/f64_cmp.wast b/libraries/wasm-jit/Test/spec/f64_cmp.wast deleted file mode 100644 index 8fe9be4e5c3..00000000000 --- a/libraries/wasm-jit/Test/spec/f64_cmp.wast +++ /dev/null @@ -1,2412 +0,0 @@ -;; Test all the f64 comparison operators on major boundary values and all -;; special values. - -(module - (func (export "eq") (param $x f64) (param $y f64) (result i32) (f64.eq (get_local $x) (get_local $y))) - (func (export "ne") (param $x f64) (param $y f64) (result i32) (f64.ne (get_local $x) (get_local $y))) - (func (export "lt") (param $x f64) (param $y f64) (result i32) (f64.lt (get_local $x) (get_local $y))) - (func (export "le") (param $x f64) (param $y f64) (result i32) (f64.le (get_local $x) (get_local $y))) - (func (export "gt") (param $x f64) (param $y f64) (result i32) (f64.gt (get_local $x) (get_local $y))) - (func (export "ge") (param $x f64) (param $y f64) (result i32) (f64.ge (get_local $x) (get_local $y))) -) - -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "lt" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const inf) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "le" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "gt" (f64.const inf) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "gt" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const 0x0p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const 0x1p-1022)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const 0x1p-1)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const 0x1p+0)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const inf) (f64.const inf)) (i32.const 1)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const inf) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const 0x0p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const 0x1p-1022)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const 0x1p-1)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const 0x1p+0)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const inf)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const -nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const -nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan) (f64.const nan:0x4000000000000)) (i32.const 0)) -(assert_return (invoke "ge" (f64.const nan:0x4000000000000) (f64.const nan:0x4000000000000)) (i32.const 0)) diff --git a/libraries/wasm-jit/Test/spec/fac.wast b/libraries/wasm-jit/Test/spec/fac.wast deleted file mode 100644 index acc8962313c..00000000000 --- a/libraries/wasm-jit/Test/spec/fac.wast +++ /dev/null @@ -1,89 +0,0 @@ -(module - ;; Recursive factorial - (func (export "fac-rec") (param i64) (result i64) - (if (result i64) (i64.eq (get_local 0) (i64.const 0)) - (then (i64.const 1)) - (else - (i64.mul (get_local 0) (call 0 (i64.sub (get_local 0) (i64.const 1)))) - ) - ) - ) - - ;; Recursive factorial named - (func $fac-rec-named (export "fac-rec-named") (param $n i64) (result i64) - (if (result i64) (i64.eq (get_local $n) (i64.const 0)) - (then (i64.const 1)) - (else - (i64.mul - (get_local $n) - (call $fac-rec-named (i64.sub (get_local $n) (i64.const 1))) - ) - ) - ) - ) - - ;; Iterative factorial - (func (export "fac-iter") (param i64) (result i64) - (local i64 i64) - (set_local 1 (get_local 0)) - (set_local 2 (i64.const 1)) - (block - (loop - (if - (i64.eq (get_local 1) (i64.const 0)) - (then (br 2)) - (else - (set_local 2 (i64.mul (get_local 1) (get_local 2))) - (set_local 1 (i64.sub (get_local 1) (i64.const 1))) - ) - ) - (br 0) - ) - ) - (get_local 2) - ) - - ;; Iterative factorial named - (func (export "fac-iter-named") (param $n i64) (result i64) - (local $i i64) - (local $res i64) - (set_local $i (get_local $n)) - (set_local $res (i64.const 1)) - (block $done - (loop $loop - (if - (i64.eq (get_local $i) (i64.const 0)) - (then (br $done)) - (else - (set_local $res (i64.mul (get_local $i) (get_local $res))) - (set_local $i (i64.sub (get_local $i) (i64.const 1))) - ) - ) - (br $loop) - ) - ) - (get_local $res) - ) - - ;; Optimized factorial. - (func (export "fac-opt") (param i64) (result i64) - (local i64) - (set_local 1 (i64.const 1)) - (block - (br_if 0 (i64.lt_s (get_local 0) (i64.const 2))) - (loop - (set_local 1 (i64.mul (get_local 1) (get_local 0))) - (set_local 0 (i64.add (get_local 0) (i64.const -1))) - (br_if 0 (i64.gt_s (get_local 0) (i64.const 1))) - ) - ) - (get_local 1) - ) -) - -(assert_return (invoke "fac-rec" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_return (invoke "fac-iter" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_return (invoke "fac-rec-named" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_return (invoke "fac-iter-named" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_return (invoke "fac-opt" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_exhaustion (invoke "fac-rec" (i64.const 1073741824)) "call stack exhausted") diff --git a/libraries/wasm-jit/Test/spec/float_exprs.wast b/libraries/wasm-jit/Test/spec/float_exprs.wast deleted file mode 100644 index 1e4fdf0b1a2..00000000000 --- a/libraries/wasm-jit/Test/spec/float_exprs.wast +++ /dev/null @@ -1,2570 +0,0 @@ -;; Test interesting floating-point "expressions". These tests contain code -;; patterns which tempt common value-changing optimizations. - -;; Test that x*y+z is not done with x87-style intermediate precision. - -(module - (func (export "f64.no_contraction") (param $x f64) (param $y f64) (param $z f64) (result f64) - (f64.add (f64.mul (get_local $x) (get_local $y)) (get_local $z))) -) - -(assert_return (invoke "f64.no_contraction" (f64.const -0x1.9e87ce14273afp-103) (f64.const 0x1.2515ad31db63ep+664) (f64.const 0x1.868c6685e6185p+533)) (f64.const -0x1.da94885b11493p+561)) -(assert_return (invoke "f64.no_contraction" (f64.const 0x1.da21c460a6f44p+52) (f64.const 0x1.60859d2e7714ap-321) (f64.const 0x1.e63f1b7b660e1p-302)) (f64.const 0x1.4672f256d1794p-268)) -(assert_return (invoke "f64.no_contraction" (f64.const -0x1.f3eaf43f327cp-594) (f64.const 0x1.dfcc009906b57p+533) (f64.const 0x1.5984e03c520a1p-104)) (f64.const -0x1.d4797fb3db166p-60)) -(assert_return (invoke "f64.no_contraction" (f64.const 0x1.dab6c772cb2e2p-69) (f64.const -0x1.d761663679a84p-101) (f64.const 0x1.f22f92c843226p-218)) (f64.const -0x1.b50d72dfcef68p-169)) -(assert_return (invoke "f64.no_contraction" (f64.const -0x1.87c5def1e4d3dp-950) (f64.const -0x1.50cd5dab2207fp+935) (f64.const 0x1.e629bd0da8c5dp-54)) (f64.const 0x1.01b6feb4e78a7p-14)) - -;; Test that x*y+z is not folded to fma. - -(module - (func (export "f32.no_fma") (param $x f32) (param $y f32) (param $z f32) (result f32) - (f32.add (f32.mul (get_local $x) (get_local $y)) (get_local $z))) - (func (export "f64.no_fma") (param $x f64) (param $y f64) (param $z f64) (result f64) - (f64.add (f64.mul (get_local $x) (get_local $y)) (get_local $z))) -) - -(assert_return (invoke "f32.no_fma" (f32.const 0x1.a78402p+124) (f32.const 0x1.cf8548p-23) (f32.const 0x1.992adap+107)) (f32.const 0x1.a5262cp+107)) -(assert_return (invoke "f32.no_fma" (f32.const 0x1.ed15a4p-28) (f32.const -0x1.613c72p-50) (f32.const 0x1.4757bp-88)) (f32.const -0x1.5406b8p-77)) -(assert_return (invoke "f32.no_fma" (f32.const 0x1.ae63a2p+37) (f32.const 0x1.b3a59ap-13) (f32.const 0x1.c16918p+10)) (f32.const 0x1.6e385cp+25)) -(assert_return (invoke "f32.no_fma" (f32.const 0x1.2a77fap-8) (f32.const -0x1.bb7356p+22) (f32.const -0x1.32be2ap+1)) (f32.const -0x1.0286d4p+15)) -(assert_return (invoke "f32.no_fma" (f32.const 0x1.298fb6p+126) (f32.const -0x1.03080cp-70) (f32.const -0x1.418de6p+34)) (f32.const -0x1.2d15c6p+56)) -(assert_return (invoke "f64.no_fma" (f64.const 0x1.ac357ff46eed4p+557) (f64.const 0x1.852c01a5e7297p+430) (f64.const -0x1.05995704eda8ap+987)) (f64.const 0x1.855d905d338ep+987)) -(assert_return (invoke "f64.no_fma" (f64.const 0x1.e2fd6bf32010cp+749) (f64.const 0x1.01c2238d405e4p-130) (f64.const 0x1.2ecc0db4b9f94p+573)) (f64.const 0x1.e64eb07e063bcp+619)) -(assert_return (invoke "f64.no_fma" (f64.const 0x1.92b7c7439ede3p-721) (f64.const -0x1.6aa97586d3de6p+1011) (f64.const 0x1.8de4823f6358ap+237)) (f64.const -0x1.1d4139fd20ecdp+291)) -(assert_return (invoke "f64.no_fma" (f64.const -0x1.466d30bddb453p-386) (f64.const -0x1.185a4d739c7aap+443) (f64.const 0x1.5f9c436fbfc7bp+55)) (f64.const 0x1.bd61a350fcc1ap+57)) -(assert_return (invoke "f64.no_fma" (f64.const 0x1.7e2c44058a799p+52) (f64.const 0x1.c73b71765b8b2p+685) (f64.const -0x1.16c641df0b108p+690)) (f64.const 0x1.53ccb53de0bd1p+738)) - -;; Test that x+0.0 is not folded to x. -;; See IEEE 754-2008 10.4 "Literal meaning and value-changing optimizations". - -(module - (func (export "f32.no_fold_add_zero") (param $x f32) (result f32) - (f32.add (get_local $x) (f32.const 0.0))) - (func (export "f64.no_fold_add_zero") (param $x f64) (result f64) - (f64.add (get_local $x) (f64.const 0.0))) -) - -(assert_return (invoke "f32.no_fold_add_zero" (f32.const -0.0)) (f32.const 0.0)) -(assert_return (invoke "f64.no_fold_add_zero" (f64.const -0.0)) (f64.const 0.0)) -(assert_return_arithmetic_nan (invoke "f32.no_fold_add_zero" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_add_zero" (f64.const nan:0x4000000000000))) - -;; Test that 0.0 - x is not folded to -x. - -(module - (func (export "f32.no_fold_zero_sub") (param $x f32) (result f32) - (f32.sub (f32.const 0.0) (get_local $x))) - (func (export "f64.no_fold_zero_sub") (param $x f64) (result f64) - (f64.sub (f64.const 0.0) (get_local $x))) -) - -(assert_return (invoke "f32.no_fold_zero_sub" (f32.const 0.0)) (f32.const 0.0)) -(assert_return (invoke "f64.no_fold_zero_sub" (f64.const 0.0)) (f64.const 0.0)) -(assert_return_arithmetic_nan (invoke "f32.no_fold_zero_sub" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_zero_sub" (f64.const nan:0x4000000000000))) - -;; Test that x - 0.0 is not folded to x. - -(module - (func (export "f32.no_fold_sub_zero") (param $x f32) (result f32) - (f32.sub (get_local $x) (f32.const 0.0))) - (func (export "f64.no_fold_sub_zero") (param $x f64) (result f64) - (f64.sub (get_local $x) (f64.const 0.0))) -) - -(assert_return_arithmetic_nan (invoke "f32.no_fold_sub_zero" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_sub_zero" (f64.const nan:0x4000000000000))) - -;; Test that x*0.0 is not folded to 0.0. - -(module - (func (export "f32.no_fold_mul_zero") (param $x f32) (result f32) - (f32.mul (get_local $x) (f32.const 0.0))) - (func (export "f64.no_fold_mul_zero") (param $x f64) (result f64) - (f64.mul (get_local $x) (f64.const 0.0))) -) - -(assert_return (invoke "f32.no_fold_mul_zero" (f32.const -0.0)) (f32.const -0.0)) -(assert_return (invoke "f32.no_fold_mul_zero" (f32.const -1.0)) (f32.const -0.0)) -(assert_return (invoke "f32.no_fold_mul_zero" (f32.const -2.0)) (f32.const -0.0)) -(assert_return_arithmetic_nan (invoke "f32.no_fold_mul_zero" (f32.const nan:0x200000))) -(assert_return (invoke "f64.no_fold_mul_zero" (f64.const -0.0)) (f64.const -0.0)) -(assert_return (invoke "f64.no_fold_mul_zero" (f64.const -1.0)) (f64.const -0.0)) -(assert_return (invoke "f64.no_fold_mul_zero" (f64.const -2.0)) (f64.const -0.0)) -(assert_return_arithmetic_nan (invoke "f64.no_fold_mul_zero" (f64.const nan:0x4000000000000))) - -;; Test that x*1.0 is not folded to x. -;; See IEEE 754-2008 10.4 "Literal meaning and value-changing optimizations". - -(module - (func (export "f32.no_fold_mul_one") (param $x f32) (result f32) - (f32.mul (get_local $x) (f32.const 1.0))) - (func (export "f64.no_fold_mul_one") (param $x f64) (result f64) - (f64.mul (get_local $x) (f64.const 1.0))) -) - -(assert_return_arithmetic_nan (invoke "f32.no_fold_mul_one" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_mul_one" (f64.const nan:0x4000000000000))) - -;; Test that 0.0/x is not folded to 0.0. - -(module - (func (export "f32.no_fold_zero_div") (param $x f32) (result f32) - (f32.div (f32.const 0.0) (get_local $x))) - (func (export "f64.no_fold_zero_div") (param $x f64) (result f64) - (f64.div (f64.const 0.0) (get_local $x))) -) - -(assert_return_canonical_nan (invoke "f32.no_fold_zero_div" (f32.const 0.0))) -(assert_return_canonical_nan (invoke "f32.no_fold_zero_div" (f32.const -0.0))) -(assert_return_canonical_nan (invoke "f32.no_fold_zero_div" (f32.const nan))) -(assert_return_arithmetic_nan (invoke "f32.no_fold_zero_div" (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "f64.no_fold_zero_div" (f64.const 0.0))) -(assert_return_canonical_nan (invoke "f64.no_fold_zero_div" (f64.const -0.0))) -(assert_return_canonical_nan (invoke "f64.no_fold_zero_div" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_zero_div" (f64.const nan:0x4000000000000))) - -;; Test that x/1.0 is not folded to x. - -(module - (func (export "f32.no_fold_div_one") (param $x f32) (result f32) - (f32.div (get_local $x) (f32.const 1.0))) - (func (export "f64.no_fold_div_one") (param $x f64) (result f64) - (f64.div (get_local $x) (f64.const 1.0))) -) - -(assert_return_arithmetic_nan (invoke "f32.no_fold_div_one" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_div_one" (f64.const nan:0x4000000000000))) - -;; Test that x/-1.0 is not folded to -x. - -(module - (func (export "f32.no_fold_div_neg1") (param $x f32) (result f32) - (f32.div (get_local $x) (f32.const -1.0))) - (func (export "f64.no_fold_div_neg1") (param $x f64) (result f64) - (f64.div (get_local $x) (f64.const -1.0))) -) - -(assert_return_arithmetic_nan (invoke "f32.no_fold_div_neg1" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_div_neg1" (f64.const nan:0x4000000000000))) - -;; Test that -0.0 - x is not folded to -x. - -(module - (func (export "f32.no_fold_neg0_sub") (param $x f32) (result f32) - (f32.sub (f32.const -0.0) (get_local $x))) - (func (export "f64.no_fold_neg0_sub") (param $x f64) (result f64) - (f64.sub (f64.const -0.0) (get_local $x))) -) - -(assert_return_arithmetic_nan (invoke "f32.no_fold_neg0_sub" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_neg0_sub" (f64.const nan:0x4000000000000))) - -;; Test that -1.0 * x is not folded to -x. - -(module - (func (export "f32.no_fold_neg1_mul") (param $x f32) (result f32) - (f32.mul (f32.const -1.0) (get_local $x))) - (func (export "f64.no_fold_neg1_mul") (param $x f64) (result f64) - (f64.mul (f64.const -1.0) (get_local $x))) -) - -(assert_return_arithmetic_nan (invoke "f32.no_fold_neg1_mul" (f32.const nan:0x200000))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_neg1_mul" (f64.const nan:0x4000000000000))) - -;; Test that x == x is not folded to true. - -(module - (func (export "f32.no_fold_eq_self") (param $x f32) (result i32) - (f32.eq (get_local $x) (get_local $x))) - (func (export "f64.no_fold_eq_self") (param $x f64) (result i32) - (f64.eq (get_local $x) (get_local $x))) -) - -(assert_return (invoke "f32.no_fold_eq_self" (f32.const nan)) (i32.const 0)) -(assert_return (invoke "f64.no_fold_eq_self" (f64.const nan)) (i32.const 0)) - -;; Test that x != x is not folded to false. - -(module - (func (export "f32.no_fold_ne_self") (param $x f32) (result i32) - (f32.ne (get_local $x) (get_local $x))) - (func (export "f64.no_fold_ne_self") (param $x f64) (result i32) - (f64.ne (get_local $x) (get_local $x))) -) - -(assert_return (invoke "f32.no_fold_ne_self" (f32.const nan)) (i32.const 1)) -(assert_return (invoke "f64.no_fold_ne_self" (f64.const nan)) (i32.const 1)) - -;; Test that x - x is not folded to 0.0. - -(module - (func (export "f32.no_fold_sub_self") (param $x f32) (result f32) - (f32.sub (get_local $x) (get_local $x))) - (func (export "f64.no_fold_sub_self") (param $x f64) (result f64) - (f64.sub (get_local $x) (get_local $x))) -) - -(assert_return_canonical_nan (invoke "f32.no_fold_sub_self" (f32.const inf))) -(assert_return_canonical_nan (invoke "f32.no_fold_sub_self" (f32.const nan))) -(assert_return_canonical_nan (invoke "f64.no_fold_sub_self" (f64.const inf))) -(assert_return_canonical_nan (invoke "f64.no_fold_sub_self" (f64.const nan))) - -;; Test that x / x is not folded to 1.0. - -(module - (func (export "f32.no_fold_div_self") (param $x f32) (result f32) - (f32.div (get_local $x) (get_local $x))) - (func (export "f64.no_fold_div_self") (param $x f64) (result f64) - (f64.div (get_local $x) (get_local $x))) -) - -(assert_return_canonical_nan (invoke "f32.no_fold_div_self" (f32.const inf))) -(assert_return_canonical_nan (invoke "f32.no_fold_div_self" (f32.const nan))) -(assert_return_canonical_nan (invoke "f32.no_fold_div_self" (f32.const 0.0))) -(assert_return_canonical_nan (invoke "f32.no_fold_div_self" (f32.const -0.0))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_self" (f64.const inf))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_self" (f64.const nan))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_self" (f64.const 0.0))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_self" (f64.const -0.0))) - -;; Test that x/3 is not folded to x*(1/3). - -(module - (func (export "f32.no_fold_div_3") (param $x f32) (result f32) - (f32.div (get_local $x) (f32.const 3.0))) - (func (export "f64.no_fold_div_3") (param $x f64) (result f64) - (f64.div (get_local $x) (f64.const 3.0))) -) - -(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.359c26p+50)) (f32.const -0x1.9cd032p+48)) -(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.e45646p+93)) (f32.const -0x1.42e42ep+92)) -(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.2a3916p-83)) (f32.const -0x1.8da172p-85)) -(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.1f8b38p-124)) (f32.const -0x1.7f644ap-126)) -(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.d64f64p-56)) (f32.const -0x1.398a42p-57)) -(assert_return (invoke "f64.no_fold_div_3" (f64.const -0x1.a8a88d29e2cc3p+632)) (f64.const -0x1.1b1b08c69732dp+631)) -(assert_return (invoke "f64.no_fold_div_3" (f64.const -0x1.bcf52dc950972p-167)) (f64.const -0x1.28a373db8b0f7p-168)) -(assert_return (invoke "f64.no_fold_div_3" (f64.const 0x1.bd3c0d989f7a4p-874)) (f64.const 0x1.28d2b3bb14fc3p-875)) -(assert_return (invoke "f64.no_fold_div_3" (f64.const -0x1.0138bf530a53cp+1007)) (f64.const -0x1.56f6546eb86fbp+1005)) -(assert_return (invoke "f64.no_fold_div_3" (f64.const 0x1.052b87f9d794dp+415)) (f64.const 0x1.5c3a0aa274c67p+413)) - -;; Test that (x*z)+(y*z) is not folded to (x+y)*z. - -(module - (func (export "f32.no_factor") (param $x f32) (param $y f32) (param $z f32) (result f32) - (f32.add (f32.mul (get_local $x) (get_local $z)) (f32.mul (get_local $y) (get_local $z)))) - (func (export "f64.no_factor") (param $x f64) (param $y f64) (param $z f64) (result f64) - (f64.add (f64.mul (get_local $x) (get_local $z)) (f64.mul (get_local $y) (get_local $z)))) -) - -(assert_return (invoke "f32.no_factor" (f32.const -0x1.4e2352p+40) (f32.const -0x1.842e2cp+49) (f32.const 0x1.eea602p+59)) (f32.const -0x1.77a7dp+109)) -(assert_return (invoke "f32.no_factor" (f32.const -0x1.b4e7f6p-6) (f32.const 0x1.8c990cp-5) (f32.const -0x1.70cc02p-9)) (f32.const -0x1.00a342p-14)) -(assert_return (invoke "f32.no_factor" (f32.const -0x1.06722ep-41) (f32.const 0x1.eed3cep-64) (f32.const 0x1.5c5558p+123)) (f32.const -0x1.651aaep+82)) -(assert_return (invoke "f32.no_factor" (f32.const -0x1.f8c6a4p-64) (f32.const 0x1.08c806p-83) (f32.const 0x1.b5ceccp+118)) (f32.const -0x1.afa15p+55)) -(assert_return (invoke "f32.no_factor" (f32.const -0x1.3aaa1ep-84) (f32.const 0x1.c6d5eep-71) (f32.const 0x1.8d2924p+20)) (f32.const 0x1.60c9cep-50)) -(assert_return (invoke "f64.no_factor" (f64.const 0x1.3adeda9144977p-424) (f64.const 0x1.c15af887049e1p-462) (f64.const -0x1.905179c4c4778p-225)) (f64.const -0x1.ec606bcb87b1ap-649)) -(assert_return (invoke "f64.no_factor" (f64.const 0x1.3c84821c1d348p-662) (f64.const -0x1.4ffd4c77ad037p-1009) (f64.const -0x1.dd275335c6f4p-957)) (f64.const 0x0p+0)) -(assert_return (invoke "f64.no_factor" (f64.const -0x1.074f372347051p-334) (f64.const -0x1.aaeef661f4c96p-282) (f64.const -0x1.9bd34abe8696dp+479)) (f64.const 0x1.5767029593e2p+198)) -(assert_return (invoke "f64.no_factor" (f64.const -0x1.c4ded58a6f389p-289) (f64.const 0x1.ba6fdef5d59c9p-260) (f64.const -0x1.c1201c0470205p-253)) (f64.const -0x1.841ada2e0f184p-512)) -(assert_return (invoke "f64.no_factor" (f64.const 0x1.9d3688f8e375ap-608) (f64.const 0x1.bf91311588256p-579) (f64.const -0x1.1605a6b5d5ff8p+489)) (f64.const -0x1.e6118ca76af53p-90)) - -;; Test that (x+y)*z is not folded to (x*z)+(y*z). - -(module - (func (export "f32.no_distribute") (param $x f32) (param $y f32) (param $z f32) (result f32) - (f32.mul (f32.add (get_local $x) (get_local $y)) (get_local $z))) - (func (export "f64.no_distribute") (param $x f64) (param $y f64) (param $z f64) (result f64) - (f64.mul (f64.add (get_local $x) (get_local $y)) (get_local $z))) -) - -(assert_return (invoke "f32.no_distribute" (f32.const -0x1.4e2352p+40) (f32.const -0x1.842e2cp+49) (f32.const 0x1.eea602p+59)) (f32.const -0x1.77a7d2p+109)) -(assert_return (invoke "f32.no_distribute" (f32.const -0x1.b4e7f6p-6) (f32.const 0x1.8c990cp-5) (f32.const -0x1.70cc02p-9)) (f32.const -0x1.00a34p-14)) -(assert_return (invoke "f32.no_distribute" (f32.const -0x1.06722ep-41) (f32.const 0x1.eed3cep-64) (f32.const 0x1.5c5558p+123)) (f32.const -0x1.651abp+82)) -(assert_return (invoke "f32.no_distribute" (f32.const -0x1.f8c6a4p-64) (f32.const 0x1.08c806p-83) (f32.const 0x1.b5ceccp+118)) (f32.const -0x1.afa14ep+55)) -(assert_return (invoke "f32.no_distribute" (f32.const -0x1.3aaa1ep-84) (f32.const 0x1.c6d5eep-71) (f32.const 0x1.8d2924p+20)) (f32.const 0x1.60c9ccp-50)) -(assert_return (invoke "f64.no_distribute" (f64.const 0x1.3adeda9144977p-424) (f64.const 0x1.c15af887049e1p-462) (f64.const -0x1.905179c4c4778p-225)) (f64.const -0x1.ec606bcb87b1bp-649)) -(assert_return (invoke "f64.no_distribute" (f64.const 0x1.3c84821c1d348p-662) (f64.const -0x1.4ffd4c77ad037p-1009) (f64.const -0x1.dd275335c6f4p-957)) (f64.const -0x0p+0)) -(assert_return (invoke "f64.no_distribute" (f64.const -0x1.074f372347051p-334) (f64.const -0x1.aaeef661f4c96p-282) (f64.const -0x1.9bd34abe8696dp+479)) (f64.const 0x1.5767029593e1fp+198)) -(assert_return (invoke "f64.no_distribute" (f64.const -0x1.c4ded58a6f389p-289) (f64.const 0x1.ba6fdef5d59c9p-260) (f64.const -0x1.c1201c0470205p-253)) (f64.const -0x1.841ada2e0f183p-512)) -(assert_return (invoke "f64.no_distribute" (f64.const 0x1.9d3688f8e375ap-608) (f64.const 0x1.bf91311588256p-579) (f64.const -0x1.1605a6b5d5ff8p+489)) (f64.const -0x1.e6118ca76af52p-90)) - -;; Test that x*(y/z) is not folded to (x*y)/z. - -(module - (func (export "f32.no_regroup_div_mul") (param $x f32) (param $y f32) (param $z f32) (result f32) - (f32.mul (get_local $x) (f32.div (get_local $y) (get_local $z)))) - (func (export "f64.no_regroup_div_mul") (param $x f64) (param $y f64) (param $z f64) (result f64) - (f64.mul (get_local $x) (f64.div (get_local $y) (get_local $z)))) -) - -(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.2d14a6p-115) (f32.const -0x1.575a6cp-64) (f32.const 0x1.5cee0ep-116)) (f32.const 0x1.2844cap-63)) -(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.454738p+91) (f32.const -0x1.b28a66p-115) (f32.const -0x1.f53908p+72)) (f32.const -0x0p+0)) -(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.6be56ep+16) (f32.const -0x1.b46fc6p-21) (f32.const -0x1.a51df6p-123)) (f32.const -0x1.792258p+118)) -(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.c343f8p-94) (f32.const 0x1.e4d906p+73) (f32.const 0x1.be69f8p+68)) (f32.const -0x1.ea1df2p-89)) -(assert_return (invoke "f32.no_regroup_div_mul" (f32.const 0x1.c6ae76p+112) (f32.const 0x1.fc953cp+24) (f32.const -0x1.60b3e8p+71)) (f32.const -0x1.47d0eap+66)) -(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.3c04b815e30bp-423) (f64.const -0x1.379646fd98127p-119) (f64.const 0x1.bddb158506031p-642)) (f64.const -0x1.b9b3301f2dd2dp+99)) -(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.46b3a402f86d5p+337) (f64.const 0x1.6fbf1b9e1798dp-447) (f64.const -0x1.bd9704a5a6a06p+797)) (f64.const -0x0p+0)) -(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.6c9765bb4347fp-479) (f64.const 0x1.a4af42e34a141p+902) (f64.const 0x1.d2dde70eb68f9p-448)) (f64.const inf)) -(assert_return (invoke "f64.no_regroup_div_mul" (f64.const -0x1.706023645be72p+480) (f64.const -0x1.6c229f7d9101dp+611) (f64.const -0x1.4d50fa68d3d9ep+836)) (f64.const -0x1.926fa3cacc651p+255)) -(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.8cc63d8caf4c7p-599) (f64.const 0x1.8671ac4c35753p-878) (f64.const -0x1.ef35b1695e659p-838)) (f64.const -0x1.38d55f56406dp-639)) - -;; Test that (x*y)/z is not folded to x*(y/z). - -(module - (func (export "f32.no_regroup_mul_div") (param $x f32) (param $y f32) (param $z f32) (result f32) - (f32.div (f32.mul (get_local $x) (get_local $y)) (get_local $z))) - (func (export "f64.no_regroup_mul_div") (param $x f64) (param $y f64) (param $z f64) (result f64) - (f64.div (f64.mul (get_local $x) (get_local $y)) (get_local $z))) -) - -(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.2d14a6p-115) (f32.const -0x1.575a6cp-64) (f32.const 0x1.5cee0ep-116)) (f32.const 0x0p+0)) -(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.454738p+91) (f32.const -0x1.b28a66p-115) (f32.const -0x1.f53908p+72)) (f32.const -0x1.1a00e8p-96)) -(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.6be56ep+16) (f32.const -0x1.b46fc6p-21) (f32.const -0x1.a51df6p-123)) (f32.const -0x1.79225ap+118)) -(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.c343f8p-94) (f32.const 0x1.e4d906p+73) (f32.const 0x1.be69f8p+68)) (f32.const -0x1.ea1df4p-89)) -(assert_return (invoke "f32.no_regroup_mul_div" (f32.const 0x1.c6ae76p+112) (f32.const 0x1.fc953cp+24) (f32.const -0x1.60b3e8p+71)) (f32.const -inf)) -(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.3c04b815e30bp-423) (f64.const -0x1.379646fd98127p-119) (f64.const 0x1.bddb158506031p-642)) (f64.const -0x1.b9b3301f2dd2ep+99)) -(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.46b3a402f86d5p+337) (f64.const 0x1.6fbf1b9e1798dp-447) (f64.const -0x1.bd9704a5a6a06p+797)) (f64.const -0x1.0da0b6328e09p-907)) -(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.6c9765bb4347fp-479) (f64.const 0x1.a4af42e34a141p+902) (f64.const 0x1.d2dde70eb68f9p-448)) (f64.const 0x1.4886b6d9a9a79p+871)) -(assert_return (invoke "f64.no_regroup_mul_div" (f64.const -0x1.706023645be72p+480) (f64.const -0x1.6c229f7d9101dp+611) (f64.const -0x1.4d50fa68d3d9ep+836)) (f64.const -inf)) -(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.8cc63d8caf4c7p-599) (f64.const 0x1.8671ac4c35753p-878) (f64.const -0x1.ef35b1695e659p-838)) (f64.const -0x0p+0)) - -;; Test that x+y+z+w is not reassociated. - -(module - (func (export "f32.no_reassociate_add") (param $x f32) (param $y f32) (param $z f32) (param $w f32) (result f32) - (f32.add (f32.add (f32.add (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) - (func (export "f64.no_reassociate_add") (param $x f64) (param $y f64) (param $z f64) (param $w f64) (result f64) - (f64.add (f64.add (f64.add (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) -) - -(assert_return (invoke "f32.no_reassociate_add" (f32.const -0x1.5f7ddcp+44) (f32.const 0x1.854e1p+34) (f32.const -0x1.b2068cp+47) (f32.const -0x1.209692p+41)) (f32.const -0x1.e26c76p+47)) -(assert_return (invoke "f32.no_reassociate_add" (f32.const 0x1.da3b78p-9) (f32.const -0x1.4312fap-7) (f32.const 0x1.0395e6p-4) (f32.const -0x1.6d5ea6p-7)) (f32.const 0x1.78b31ap-5)) -(assert_return (invoke "f32.no_reassociate_add" (f32.const -0x1.fdb93ap+34) (f32.const -0x1.b6fce6p+41) (f32.const 0x1.c131d8p+44) (f32.const 0x1.8835b6p+38)) (f32.const 0x1.8ff3a2p+44)) -(assert_return (invoke "f32.no_reassociate_add" (f32.const 0x1.1739fcp+47) (f32.const 0x1.a4b186p+49) (f32.const -0x1.0c623cp+35) (f32.const 0x1.16a102p+51)) (f32.const 0x1.913ff6p+51)) -(assert_return (invoke "f32.no_reassociate_add" (f32.const 0x1.733cfap+108) (f32.const -0x1.38d30cp+108) (f32.const 0x1.2f5854p+105) (f32.const -0x1.ccb058p+94)) (f32.const 0x1.813716p+106)) -(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.697a4d9ff19a6p+841) (f64.const 0x1.b305466238397p+847) (f64.const 0x1.e0b2d9bfb4e72p+855) (f64.const -0x1.6e1f3ae2b06bbp+857)) (f64.const -0x1.eb0e5936f087ap+856)) -(assert_return (invoke "f64.no_reassociate_add" (f64.const 0x1.00ef6746b30e1p-543) (f64.const 0x1.cc1cfafdf3fe1p-544) (f64.const -0x1.f7726df3ecba6p-543) (f64.const -0x1.b26695f99d307p-594)) (f64.const -0x1.074892e3fad76p-547)) -(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.e807b3bd6d854p+440) (f64.const 0x1.cedae26c2c5fp+407) (f64.const -0x1.00ab6e1442541p+437) (f64.const 0x1.28538a55997bdp+397)) (f64.const -0x1.040e90bf871ebp+441)) -(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.ba2b6f35a2402p-317) (f64.const 0x1.ad1c3fea7cd9ep-307) (f64.const -0x1.93aace2bf1261p-262) (f64.const 0x1.9fddbe472847ep-260)) (f64.const 0x1.3af30abc2c01bp-260)) -(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.ccb9c6092fb1dp+641) (f64.const -0x1.4b7c28c108244p+614) (f64.const 0x1.8a7cefef4bde1p+646) (f64.const -0x1.901b28b08b482p+644)) (f64.const 0x1.1810579194126p+646)) - -;; Test that x*y*z*w is not reassociated. - -(module - (func (export "f32.no_reassociate_mul") (param $x f32) (param $y f32) (param $z f32) (param $w f32) (result f32) - (f32.mul (f32.mul (f32.mul (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) - (func (export "f64.no_reassociate_mul") (param $x f64) (param $y f64) (param $z f64) (param $w f64) (result f64) - (f64.mul (f64.mul (f64.mul (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) -) - -(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.950ba8p-116) (f32.const 0x1.efdacep-33) (f32.const -0x1.5f9bcp+102) (f32.const 0x1.f04508p-56)) (f32.const -0x1.ff356ep-101)) -(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.5990aep-56) (f32.const -0x1.7dfb04p+102) (f32.const -0x1.4f774ap-125) (f32.const -0x1.595fe6p+70)) (f32.const -0x1.c7c8fcp-8)) -(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.6ad9a4p-48) (f32.const -0x1.9138aap+55) (f32.const -0x1.4a774ep-40) (f32.const 0x1.1ff08p+76)) (f32.const 0x1.9cd8ecp+44)) -(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.e1caecp-105) (f32.const 0x1.af0dd2p+77) (f32.const -0x1.016eep+56) (f32.const -0x1.ab70d6p+59)) (f32.const 0x1.54870ep+89)) -(assert_return (invoke "f32.no_reassociate_mul" (f32.const -0x1.3b1dcp-99) (f32.const 0x1.4e5a34p-49) (f32.const -0x1.38ba5ap+3) (f32.const 0x1.7fb8eep+59)) (f32.const 0x1.5bbf98p-85)) -(assert_return (invoke "f64.no_reassociate_mul" (f64.const -0x1.e7842ab7181p-667) (f64.const -0x1.fabf40ceeceafp+990) (f64.const -0x1.1a38a825ab01ap-376) (f64.const -0x1.27e8ea469b14fp+664)) (f64.const 0x1.336eb428af4f3p+613)) -(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.4ca2292a6acbcp+454) (f64.const 0x1.6ffbab850089ap-516) (f64.const -0x1.547c32e1f5b93p-899) (f64.const -0x1.c7571d9388375p+540)) (f64.const 0x1.1ac796954fc1p-419)) -(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.73881a52e0401p-501) (f64.const -0x1.1b68dd9efb1a7p+788) (f64.const 0x1.d1c5e6a3eb27cp-762) (f64.const -0x1.56cb2fcc7546fp+88)) (f64.const 0x1.f508db92c34efp-386)) -(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.2efa87859987cp+692) (f64.const 0x1.68e4373e241p-423) (f64.const 0x1.4e2d0fb383a57p+223) (f64.const -0x1.301d3265c737bp-23)) (f64.const -0x1.4b2b6c393f30cp+470)) -(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.1013f7498b95fp-234) (f64.const 0x1.d2d1c36fff138p-792) (f64.const -0x1.cbf1824ea7bfdp+728) (f64.const -0x1.440da9c8b836dp-599)) (f64.const 0x1.1a16512881c91p-895)) - -;; Test that x/0 is not folded away. - -(module - (func (export "f32.no_fold_div_0") (param $x f32) (result f32) - (f32.div (get_local $x) (f32.const 0.0))) - (func (export "f64.no_fold_div_0") (param $x f64) (result f64) - (f64.div (get_local $x) (f64.const 0.0))) -) - -(assert_return (invoke "f32.no_fold_div_0" (f32.const 1.0)) (f32.const inf)) -(assert_return (invoke "f32.no_fold_div_0" (f32.const -1.0)) (f32.const -inf)) -(assert_return (invoke "f32.no_fold_div_0" (f32.const inf)) (f32.const inf)) -(assert_return (invoke "f32.no_fold_div_0" (f32.const -inf)) (f32.const -inf)) -(assert_return_canonical_nan (invoke "f32.no_fold_div_0" (f32.const 0))) -(assert_return_canonical_nan (invoke "f32.no_fold_div_0" (f32.const -0))) -(assert_return_arithmetic_nan (invoke "f32.no_fold_div_0" (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "f32.no_fold_div_0" (f32.const nan))) -(assert_return (invoke "f64.no_fold_div_0" (f64.const 1.0)) (f64.const inf)) -(assert_return (invoke "f64.no_fold_div_0" (f64.const -1.0)) (f64.const -inf)) -(assert_return (invoke "f64.no_fold_div_0" (f64.const inf)) (f64.const inf)) -(assert_return (invoke "f64.no_fold_div_0" (f64.const -inf)) (f64.const -inf)) -(assert_return_canonical_nan (invoke "f64.no_fold_div_0" (f64.const 0))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_0" (f64.const -0))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_0" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_div_0" (f64.const nan:0x4000000000000))) - -;; Test that x/-0 is not folded away. - -(module - (func (export "f32.no_fold_div_neg0") (param $x f32) (result f32) - (f32.div (get_local $x) (f32.const -0.0))) - (func (export "f64.no_fold_div_neg0") (param $x f64) (result f64) - (f64.div (get_local $x) (f64.const -0.0))) -) - -(assert_return (invoke "f32.no_fold_div_neg0" (f32.const 1.0)) (f32.const -inf)) -(assert_return (invoke "f32.no_fold_div_neg0" (f32.const -1.0)) (f32.const inf)) -(assert_return (invoke "f32.no_fold_div_neg0" (f32.const inf)) (f32.const -inf)) -(assert_return (invoke "f32.no_fold_div_neg0" (f32.const -inf)) (f32.const inf)) -(assert_return_canonical_nan (invoke "f32.no_fold_div_neg0" (f32.const 0))) -(assert_return_canonical_nan (invoke "f32.no_fold_div_neg0" (f32.const -0))) -(assert_return_arithmetic_nan (invoke "f32.no_fold_div_neg0" (f32.const nan:0x200000))) -(assert_return_canonical_nan (invoke "f32.no_fold_div_neg0" (f32.const nan))) -(assert_return (invoke "f64.no_fold_div_neg0" (f64.const 1.0)) (f64.const -inf)) -(assert_return (invoke "f64.no_fold_div_neg0" (f64.const -1.0)) (f64.const inf)) -(assert_return (invoke "f64.no_fold_div_neg0" (f64.const inf)) (f64.const -inf)) -(assert_return (invoke "f64.no_fold_div_neg0" (f64.const -inf)) (f64.const inf)) -(assert_return_canonical_nan (invoke "f64.no_fold_div_neg0" (f64.const 0))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_neg0" (f64.const -0))) -(assert_return_canonical_nan (invoke "f64.no_fold_div_neg0" (f64.const nan))) -(assert_return_arithmetic_nan (invoke "f64.no_fold_div_neg0" (f64.const nan:0x4000000000000))) - -;; Test that sqrt(x*x+y*y) is not folded to hypot. - -(module - (func (export "f32.no_fold_to_hypot") (param $x f32) (param $y f32) (result f32) - (f32.sqrt (f32.add (f32.mul (get_local $x) (get_local $x)) - (f32.mul (get_local $y) (get_local $y))))) - (func (export "f64.no_fold_to_hypot") (param $x f64) (param $y f64) (result f64) - (f64.sqrt (f64.add (f64.mul (get_local $x) (get_local $x)) - (f64.mul (get_local $y) (get_local $y))))) -) - -(assert_return (invoke "f32.no_fold_to_hypot" (f32.const 0x1.c2f338p-81) (f32.const 0x1.401b5ep-68)) (f32.const 0x1.401cccp-68)) -(assert_return (invoke "f32.no_fold_to_hypot" (f32.const -0x1.c38d1p-71) (f32.const -0x1.359ddp-107)) (f32.const 0x1.c36a62p-71)) -(assert_return (invoke "f32.no_fold_to_hypot" (f32.const -0x1.99e0cap-114) (f32.const -0x1.ed0c6cp-69)) (f32.const 0x1.ed0e48p-69)) -(assert_return (invoke "f32.no_fold_to_hypot" (f32.const -0x1.1b6ceap+5) (f32.const 0x1.5440bep+17)) (f32.const 0x1.5440cp+17)) -(assert_return (invoke "f32.no_fold_to_hypot" (f32.const 0x1.8f019ep-76) (f32.const -0x1.182308p-71)) (f32.const 0x1.17e2bcp-71)) -(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.1a0ac4f7c8711p-636) (f64.const 0x1.1372ebafff551p-534)) (f64.const 0x1.13463fa37014ep-534)) -(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.b793512167499p+395) (f64.const -0x1.11cbc52af4c36p+410)) (f64.const 0x1.11cbc530783a2p+410)) -(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.76777f44ff40bp-536) (f64.const -0x1.c3896e4dc1fbp-766)) (f64.const 0x1.8p-536)) -(assert_return (invoke "f64.no_fold_to_hypot" (f64.const -0x1.889ac72cc6b5dp-521) (f64.const 0x1.8d7084e659f3bp-733)) (f64.const 0x1.889ac72ca843ap-521)) -(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.5ee588c02cb08p-670) (f64.const -0x1.05ce25788d9ecp-514)) (f64.const 0x1.05ce25788d9dfp-514)) - -;; Test that 1.0/x isn't approximated. - -(module - (func (export "f32.no_approximate_reciprocal") (param $x f32) (result f32) - (f32.div (f32.const 1.0) (get_local $x))) -) - -(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const -0x1.2900b6p-10)) (f32.const -0x1.b950d4p+9)) -(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const 0x1.e7212p+127)) (f32.const 0x1.0d11f8p-128)) -(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const -0x1.42a466p-93)) (f32.const -0x1.963ee6p+92)) -(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const 0x1.5d0c32p+76)) (f32.const 0x1.778362p-77)) -(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const -0x1.601de2p-82)) (f32.const -0x1.743d7ep+81)) - -;; Test that 1.0/sqrt(x) isn't approximated or fused. - -(module - (func (export "f32.no_approximate_reciprocal_sqrt") (param $x f32) (result f32) - (f32.div (f32.const 1.0) (f32.sqrt (get_local $x)))) - (func (export "f64.no_fuse_reciprocal_sqrt") (param $x f64) (result f64) - (f64.div (f64.const 1.0) (f64.sqrt (get_local $x)))) -) - -(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.6af12ap-43)) (f32.const 0x1.300ed4p+21)) -(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.e82fc6p-8)) (f32.const 0x1.72c376p+3)) -(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.b9fa9cp-66)) (f32.const 0x1.85a9bap+32)) -(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.f4f546p-44)) (f32.const 0x1.6e01c2p+21)) -(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.5da7aap-86)) (f32.const 0x1.b618cap+42)) - -(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.1568a63b55fa3p+889)) (f64.const 0x1.5bc9c74c9952p-445)) -(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.239fcd0939cafp+311)) (f64.const 0x1.5334a922b4818p-156)) -(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.6e36a24e11054p+104)) (f64.const 0x1.ac13f20977f29p-53)) -(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.23ee173219f83p+668)) (f64.const 0x1.df753e055862dp-335)) -(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.b30f74caf9babp+146)) (f64.const 0x1.88bfc3d1764a9p-74)) - -;; Test that sqrt(1.0/x) isn't approximated. - -(module - (func (export "f32.no_approximate_sqrt_reciprocal") (param $x f32) (result f32) - (f32.sqrt (f32.div (f32.const 1.0) (get_local $x)))) -) - -(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.a4c986p+60)) (f32.const 0x1.8f5ac6p-31)) -(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.50511ep-9)) (f32.const 0x1.3bdd46p+4)) -(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.125ec2p+69)) (f32.const 0x1.5db572p-35)) -(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.ba4c5p+13)) (f32.const 0x1.136f16p-7)) -(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.4a5be2p+104)) (f32.const 0x1.c2b5bp-53)) - -;; Test that converting i32/i64 to f32/f64 and back isn't folded away. - -(module - (func (export "i32.no_fold_f32_s") (param i32) (result i32) - (i32.trunc_s/f32 (f32.convert_s/i32 (get_local 0)))) - (func (export "i32.no_fold_f32_u") (param i32) (result i32) - (i32.trunc_u/f32 (f32.convert_u/i32 (get_local 0)))) - (func (export "i64.no_fold_f64_s") (param i64) (result i64) - (i64.trunc_s/f64 (f64.convert_s/i64 (get_local 0)))) - (func (export "i64.no_fold_f64_u") (param i64) (result i64) - (i64.trunc_u/f64 (f64.convert_u/i64 (get_local 0)))) -) - -(assert_return (invoke "i32.no_fold_f32_s" (i32.const 0x1000000)) (i32.const 0x1000000)) -(assert_return (invoke "i32.no_fold_f32_s" (i32.const 0x1000001)) (i32.const 0x1000000)) -(assert_return (invoke "i32.no_fold_f32_s" (i32.const 0xf0000010)) (i32.const 0xf0000010)) - -(assert_return (invoke "i32.no_fold_f32_u" (i32.const 0x1000000)) (i32.const 0x1000000)) -(assert_return (invoke "i32.no_fold_f32_u" (i32.const 0x1000001)) (i32.const 0x1000000)) -(assert_return (invoke "i32.no_fold_f32_u" (i32.const 0xf0000010)) (i32.const 0xf0000000)) - -(assert_return (invoke "i64.no_fold_f64_s" (i64.const 0x20000000000000)) (i64.const 0x20000000000000)) -(assert_return (invoke "i64.no_fold_f64_s" (i64.const 0x20000000000001)) (i64.const 0x20000000000000)) -(assert_return (invoke "i64.no_fold_f64_s" (i64.const 0xf000000000000400)) (i64.const 0xf000000000000400)) - -(assert_return (invoke "i64.no_fold_f64_u" (i64.const 0x20000000000000)) (i64.const 0x20000000000000)) -(assert_return (invoke "i64.no_fold_f64_u" (i64.const 0x20000000000001)) (i64.const 0x20000000000000)) -(assert_return (invoke "i64.no_fold_f64_u" (i64.const 0xf000000000000400)) (i64.const 0xf000000000000000)) - -;; Test that x+y-y is not folded to x. - -(module - (func (export "f32.no_fold_add_sub") (param $x f32) (param $y f32) (result f32) - (f32.sub (f32.add (get_local $x) (get_local $y)) (get_local $y))) - (func (export "f64.no_fold_add_sub") (param $x f64) (param $y f64) (result f64) - (f64.sub (f64.add (get_local $x) (get_local $y)) (get_local $y))) -) - -(assert_return (invoke "f32.no_fold_add_sub" (f32.const 0x1.b553e4p-47) (f32.const -0x1.67db2cp-26)) (f32.const 0x1.cp-47)) -(assert_return (invoke "f32.no_fold_add_sub" (f32.const -0x1.a884dp-23) (f32.const 0x1.f2ae1ep-19)) (f32.const -0x1.a884ep-23)) -(assert_return (invoke "f32.no_fold_add_sub" (f32.const -0x1.fc04fp+82) (f32.const -0x1.65403ap+101)) (f32.const -0x1p+83)) -(assert_return (invoke "f32.no_fold_add_sub" (f32.const 0x1.870fa2p-78) (f32.const 0x1.c54916p-56)) (f32.const 0x1.8p-78)) -(assert_return (invoke "f32.no_fold_add_sub" (f32.const -0x1.17e966p-108) (f32.const -0x1.5fa61ap-84)) (f32.const -0x1p-107)) - -(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.1053ea172dba8p-874) (f64.const 0x1.113c413408ac8p-857)) (f64.const -0x1.1053ea172p-874)) -(assert_return (invoke "f64.no_fold_add_sub" (f64.const 0x1.e377d54807972p-546) (f64.const 0x1.040a0a4d1ff7p-526)) (f64.const 0x1.e377d548p-546)) -(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.75f53cd926b62p-30) (f64.const -0x1.66b176e602bb5p-3)) (f64.const -0x1.75f53dp-30)) -(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.c450ff28332ap-341) (f64.const 0x1.15a5855023baep-305)) (f64.const -0x1.c451p-341)) -(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.1ad4a596d3ea8p-619) (f64.const -0x1.17d81a41c0ea8p-588)) (f64.const -0x1.1ad4a8p-619)) - -;; Test that x-y+y is not folded to x. - -(module - (func (export "f32.no_fold_sub_add") (param $x f32) (param $y f32) (result f32) - (f32.add (f32.sub (get_local $x) (get_local $y)) (get_local $y))) - (func (export "f64.no_fold_sub_add") (param $x f64) (param $y f64) (result f64) - (f64.add (f64.sub (get_local $x) (get_local $y)) (get_local $y))) -) - -(assert_return (invoke "f32.no_fold_sub_add" (f32.const -0x1.523cb8p+9) (f32.const 0x1.93096cp+8)) (f32.const -0x1.523cbap+9)) -(assert_return (invoke "f32.no_fold_sub_add" (f32.const -0x1.a31a1p-111) (f32.const 0x1.745efp-95)) (f32.const -0x1.a4p-111)) -(assert_return (invoke "f32.no_fold_sub_add" (f32.const 0x1.3d5328p+26) (f32.const 0x1.58567p+35)) (f32.const 0x1.3d54p+26)) -(assert_return (invoke "f32.no_fold_sub_add" (f32.const 0x1.374e26p-39) (f32.const -0x1.66a5p-27)) (f32.const 0x1.374p-39)) -(assert_return (invoke "f32.no_fold_sub_add" (f32.const 0x1.320facp-3) (f32.const -0x1.ac069ap+14)) (f32.const 0x1.34p-3)) - -(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.8f92aad2c9b8dp+255) (f64.const -0x1.08cd4992266cbp+259)) (f64.const 0x1.8f92aad2c9b9p+255)) -(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.5aaff55742c8bp-666) (f64.const 0x1.8f5f47181f46dp-647)) (f64.const 0x1.5aaff5578p-666)) -(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.21bc52967a98dp+251) (f64.const -0x1.fcffaa32d0884p+300)) (f64.const 0x1.2p+251)) -(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.9c78361f47374p-26) (f64.const -0x1.69d69f4edc61cp-13)) (f64.const 0x1.9c78361f48p-26)) -(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.4dbe68e4afab2p-367) (f64.const -0x1.dc24e5b39cd02p-361)) (f64.const 0x1.4dbe68e4afacp-367)) - -;; Test that x*y/y is not folded to x. - -(module - (func (export "f32.no_fold_mul_div") (param $x f32) (param $y f32) (result f32) - (f32.div (f32.mul (get_local $x) (get_local $y)) (get_local $y))) - (func (export "f64.no_fold_mul_div") (param $x f64) (param $y f64) (result f64) - (f64.div (f64.mul (get_local $x) (get_local $y)) (get_local $y))) -) - -(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.cd859ap+54) (f32.const 0x1.6ca936p-47)) (f32.const -0x1.cd8598p+54)) -(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.0b56b8p-26) (f32.const 0x1.48264cp-106)) (f32.const -0x1.0b56a4p-26)) -(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.e7555cp-48) (f32.const -0x1.9161cp+48)) (f32.const -0x1.e7555ap-48)) -(assert_return (invoke "f32.no_fold_mul_div" (f32.const 0x1.aaa50ep+52) (f32.const -0x1.dfb39ep+60)) (f32.const 0x1.aaa50cp+52)) -(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.2b7dfap-92) (f32.const -0x1.7c4ca6p-37)) (f32.const -0x1.2b7dfep-92)) - -(assert_return (invoke "f64.no_fold_mul_div" (f64.const -0x1.3d79ff4118a1ap-837) (f64.const -0x1.b8b5dda31808cp-205)) (f64.const -0x1.3d79ff412263ep-837)) -(assert_return (invoke "f64.no_fold_mul_div" (f64.const 0x1.f894d1ee6b3a4p+384) (f64.const 0x1.8c2606d03d58ap+585)) (f64.const 0x1.f894d1ee6b3a5p+384)) -(assert_return (invoke "f64.no_fold_mul_div" (f64.const -0x1.a022260acc993p+238) (f64.const -0x1.5fbc128fc8e3cp-552)) (f64.const -0x1.a022260acc992p+238)) -(assert_return (invoke "f64.no_fold_mul_div" (f64.const 0x1.9d4b8ed174f54p-166) (f64.const 0x1.ee3d467aeeac6p-906)) (f64.const 0x1.8dcc95a053b2bp-166)) -(assert_return (invoke "f64.no_fold_mul_div" (f64.const -0x1.e95ea897cdcd4p+660) (f64.const -0x1.854d5df085f2ep-327)) (f64.const -0x1.e95ea897cdcd5p+660)) - -;; Test that x/y*y is not folded to x. - -(module - (func (export "f32.no_fold_div_mul") (param $x f32) (param $y f32) (result f32) - (f32.mul (f32.div (get_local $x) (get_local $y)) (get_local $y))) - (func (export "f64.no_fold_div_mul") (param $x f64) (param $y f64) (result f64) - (f64.mul (f64.div (get_local $x) (get_local $y)) (get_local $y))) -) - -(assert_return (invoke "f32.no_fold_div_mul" (f32.const -0x1.dc6364p+38) (f32.const 0x1.d630ecp+29)) (f32.const -0x1.dc6362p+38)) -(assert_return (invoke "f32.no_fold_div_mul" (f32.const -0x1.1f9836p-52) (f32.const -0x1.16c4e4p-18)) (f32.const -0x1.1f9838p-52)) -(assert_return (invoke "f32.no_fold_div_mul" (f32.const 0x1.c5972cp-126) (f32.const -0x1.d6659ep+7)) (f32.const 0x1.c5980ep-126)) -(assert_return (invoke "f32.no_fold_div_mul" (f32.const -0x1.2e3a9ep-74) (f32.const -0x1.353994p+59)) (f32.const -0x1.2e3a4p-74)) -(assert_return (invoke "f32.no_fold_div_mul" (f32.const 0x1.d96b82p-98) (f32.const 0x1.95d908p+27)) (f32.const 0x1.d96b84p-98)) - -(assert_return (invoke "f64.no_fold_div_mul" (f64.const 0x1.d01f913a52481p-876) (f64.const -0x1.2cd0668b28344p+184)) (f64.const 0x1.d020daf71cdcp-876)) -(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.81cb7d400918dp-714) (f64.const 0x1.7caa643586d6ep-53)) (f64.const -0x1.81cb7d400918ep-714)) -(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.66904c97b5c8ep-145) (f64.const 0x1.5c3481592ad4cp+428)) (f64.const -0x1.66904c97b5c8dp-145)) -(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.e75859d2f0765p-278) (f64.const -0x1.5f19b6ab497f9p+283)) (f64.const -0x1.e75859d2f0764p-278)) -(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.515fe9c3b5f5p+620) (f64.const 0x1.36be869c99f7ap+989)) (f64.const -0x1.515fe9c3b5f4fp+620)) - -;; Test that x/2*2 is not folded to x. - -(module - (func (export "f32.no_fold_div2_mul2") (param $x f32) (result f32) - (f32.mul (f32.div (get_local $x) (f32.const 2.0)) (f32.const 2.0))) - (func (export "f64.no_fold_div2_mul2") (param $x f64) (result f64) - (f64.mul (f64.div (get_local $x) (f64.const 2.0)) (f64.const 2.0))) -) - -(assert_return (invoke "f32.no_fold_div2_mul2" (f32.const 0x1.fffffep-126)) (f32.const 0x1p-125)) -(assert_return (invoke "f64.no_fold_div2_mul2" (f64.const 0x1.fffffffffffffp-1022)) (f64.const 0x1p-1021)) - -;; Test that promote(demote(x)) is not folded to x. - -(module - (func (export "no_fold_demote_promote") (param $x f64) (result f64) - (f64.promote/f32 (f32.demote/f64 (get_local $x)))) -) - -(assert_return (invoke "no_fold_demote_promote" (f64.const -0x1.dece272390f5dp-133)) (f64.const -0x1.decep-133)) -(assert_return (invoke "no_fold_demote_promote" (f64.const -0x1.19e6c79938a6fp-85)) (f64.const -0x1.19e6c8p-85)) -(assert_return (invoke "no_fold_demote_promote" (f64.const 0x1.49b297ec44dc1p+107)) (f64.const 0x1.49b298p+107)) -(assert_return (invoke "no_fold_demote_promote" (f64.const -0x1.74f5bd865163p-88)) (f64.const -0x1.74f5bep-88)) -(assert_return (invoke "no_fold_demote_promote" (f64.const 0x1.26d675662367ep+104)) (f64.const 0x1.26d676p+104)) - -;; Test that demote(promote(x)) is not folded to x, and aside from NaN is -;; bit-preserving. - -(module - (func (export "no_fold_promote_demote") (param $x f32) (result f32) - (f32.demote/f64 (f64.promote/f32 (get_local $x)))) -) - -;;(assert_return (invoke "no_fold_promote_demote" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "no_fold_promote_demote" (f32.const 0x0p+0)) (f32.const 0x0p+0)) -(assert_return (invoke "no_fold_promote_demote" (f32.const -0x0p+0)) (f32.const -0x0p+0)) -(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1p-149)) (f32.const 0x1p-149)) -(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1p-149)) (f32.const -0x1p-149)) -(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1.fffffcp-127)) (f32.const 0x1.fffffcp-127)) -(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1.fffffcp-127)) (f32.const -0x1.fffffcp-127)) -(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1p-126)) (f32.const 0x1p-126)) -(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1p-126)) (f32.const -0x1p-126)) -(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) -(assert_return (invoke "no_fold_promote_demote" (f32.const inf)) (f32.const inf)) -(assert_return (invoke "no_fold_promote_demote" (f32.const -inf)) (f32.const -inf)) - -;; Test that demote(x+promote(y)) is not folded to demote(x)+y. - -(module - (func (export "no_demote_mixed_add") (param $x f64) (param $y f32) (result f32) - (f32.demote/f64 (f64.add (get_local $x) (f64.promote/f32 (get_local $y))))) - (func (export "no_demote_mixed_add_commuted") (param $y f32) (param $x f64) (result f32) - (f32.demote/f64 (f64.add (f64.promote/f32 (get_local $y)) (get_local $x)))) -) - -(assert_return (invoke "no_demote_mixed_add" (f64.const 0x1.f51a9d04854f9p-95) (f32.const 0x1.3f4e9cp-119)) (f32.const 0x1.f51a9ep-95)) -(assert_return (invoke "no_demote_mixed_add" (f64.const 0x1.065b3d81ad8dp+37) (f32.const 0x1.758cd8p+38)) (f32.const 0x1.f8ba76p+38)) -(assert_return (invoke "no_demote_mixed_add" (f64.const 0x1.626c80963bd17p-119) (f32.const -0x1.9bbf86p-121)) (f32.const 0x1.f6f93ep-120)) -(assert_return (invoke "no_demote_mixed_add" (f64.const -0x1.0d5110e3385bbp-20) (f32.const 0x1.096f4ap-29)) (f32.const -0x1.0ccc5ap-20)) -(assert_return (invoke "no_demote_mixed_add" (f64.const -0x1.73852db4e5075p-20) (f32.const -0x1.24e474p-41)) (f32.const -0x1.738536p-20)) - -(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const 0x1.3f4e9cp-119) (f64.const 0x1.f51a9d04854f9p-95)) (f32.const 0x1.f51a9ep-95)) -(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const 0x1.758cd8p+38) (f64.const 0x1.065b3d81ad8dp+37)) (f32.const 0x1.f8ba76p+38)) -(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const -0x1.9bbf86p-121) (f64.const 0x1.626c80963bd17p-119)) (f32.const 0x1.f6f93ep-120)) -(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const 0x1.096f4ap-29) (f64.const -0x1.0d5110e3385bbp-20)) (f32.const -0x1.0ccc5ap-20)) -(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const -0x1.24e474p-41) (f64.const -0x1.73852db4e5075p-20)) (f32.const -0x1.738536p-20)) - -;; Test that demote(x-promote(y)) is not folded to demote(x)-y. - -(module - (func (export "no_demote_mixed_sub") (param $x f64) (param $y f32) (result f32) - (f32.demote/f64 (f64.sub (get_local $x) (f64.promote/f32 (get_local $y))))) -) - -(assert_return (invoke "no_demote_mixed_sub" (f64.const 0x1.a0a183220e9b1p+82) (f32.const 0x1.c5acf8p+61)) (f32.const 0x1.a0a174p+82)) -(assert_return (invoke "no_demote_mixed_sub" (f64.const -0x1.6e2c5ac39f63ep+30) (f32.const 0x1.d48ca4p+17)) (f32.const -0x1.6e3bp+30)) -(assert_return (invoke "no_demote_mixed_sub" (f64.const -0x1.98c74350dde6ap+6) (f32.const 0x1.9d69bcp-12)) (f32.const -0x1.98c7aap+6)) -(assert_return (invoke "no_demote_mixed_sub" (f64.const 0x1.0459f34091dbfp-54) (f32.const 0x1.61ad08p-71)) (f32.const 0x1.045942p-54)) -(assert_return (invoke "no_demote_mixed_sub" (f64.const 0x1.a7498dca3fdb7p+14) (f32.const 0x1.ed21c8p+15)) (f32.const -0x1.197d02p+15)) - -;; Test that converting between integer and float and back isn't folded away. - -(module - (func (export "f32.i32.no_fold_trunc_s_convert_s") (param $x f32) (result f32) - (f32.convert_s/i32 (i32.trunc_s/f32 (get_local $x)))) - (func (export "f32.i32.no_fold_trunc_u_convert_s") (param $x f32) (result f32) - (f32.convert_s/i32 (i32.trunc_u/f32 (get_local $x)))) - (func (export "f32.i32.no_fold_trunc_s_convert_u") (param $x f32) (result f32) - (f32.convert_u/i32 (i32.trunc_s/f32 (get_local $x)))) - (func (export "f32.i32.no_fold_trunc_u_convert_u") (param $x f32) (result f32) - (f32.convert_u/i32 (i32.trunc_u/f32 (get_local $x)))) - (func (export "f64.i32.no_fold_trunc_s_convert_s") (param $x f64) (result f64) - (f64.convert_s/i32 (i32.trunc_s/f64 (get_local $x)))) - (func (export "f64.i32.no_fold_trunc_u_convert_s") (param $x f64) (result f64) - (f64.convert_s/i32 (i32.trunc_u/f64 (get_local $x)))) - (func (export "f64.i32.no_fold_trunc_s_convert_u") (param $x f64) (result f64) - (f64.convert_u/i32 (i32.trunc_s/f64 (get_local $x)))) - (func (export "f64.i32.no_fold_trunc_u_convert_u") (param $x f64) (result f64) - (f64.convert_u/i32 (i32.trunc_u/f64 (get_local $x)))) - (func (export "f32.i64.no_fold_trunc_s_convert_s") (param $x f32) (result f32) - (f32.convert_s/i64 (i64.trunc_s/f32 (get_local $x)))) - (func (export "f32.i64.no_fold_trunc_u_convert_s") (param $x f32) (result f32) - (f32.convert_s/i64 (i64.trunc_u/f32 (get_local $x)))) - (func (export "f32.i64.no_fold_trunc_s_convert_u") (param $x f32) (result f32) - (f32.convert_u/i64 (i64.trunc_s/f32 (get_local $x)))) - (func (export "f32.i64.no_fold_trunc_u_convert_u") (param $x f32) (result f32) - (f32.convert_u/i64 (i64.trunc_u/f32 (get_local $x)))) - (func (export "f64.i64.no_fold_trunc_s_convert_s") (param $x f64) (result f64) - (f64.convert_s/i64 (i64.trunc_s/f64 (get_local $x)))) - (func (export "f64.i64.no_fold_trunc_u_convert_s") (param $x f64) (result f64) - (f64.convert_s/i64 (i64.trunc_u/f64 (get_local $x)))) - (func (export "f64.i64.no_fold_trunc_s_convert_u") (param $x f64) (result f64) - (f64.convert_u/i64 (i64.trunc_s/f64 (get_local $x)))) - (func (export "f64.i64.no_fold_trunc_u_convert_u") (param $x f64) (result f64) - (f64.convert_u/i64 (i64.trunc_u/f64 (get_local $x)))) -) - -(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_s" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_s" (f32.const -1.5)) (f32.const -1.0)) -(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_s" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_s" (f32.const -0.5)) (f32.const 0.0)) -(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_u" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_u" (f32.const -1.5)) (f32.const 0x1p+32)) -(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_u" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_u" (f32.const -0.5)) (f32.const 0.0)) - -(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_s" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_s" (f64.const -1.5)) (f64.const -1.0)) -(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_s" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_s" (f64.const -0.5)) (f64.const 0.0)) -(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_u" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_u" (f64.const -1.5)) (f64.const 0x1.fffffffep+31)) -(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_u" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_u" (f64.const -0.5)) (f64.const 0.0)) - -(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_s" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_s" (f32.const -1.5)) (f32.const -1.0)) -(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_s" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_s" (f32.const -0.5)) (f32.const 0.0)) -(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_u" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_u" (f32.const -1.5)) (f32.const 0x1p+64)) -(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_u" (f32.const 1.5)) (f32.const 1.0)) -(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_u" (f32.const -0.5)) (f32.const 0.0)) - -(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_s" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_s" (f64.const -1.5)) (f64.const -1.0)) -(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_s" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_s" (f64.const -0.5)) (f64.const 0.0)) -(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_u" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_u" (f64.const -1.5)) (f64.const 0x1p+64)) -(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_u" (f64.const 1.5)) (f64.const 1.0)) -(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_u" (f64.const -0.5)) (f64.const 0.0)) - -;; Test that dividing by a loop-invariant constant isn't optimized to be a -;; multiplication by a reciprocal, which would be particularly tempting since -;; the reciprocal computation could be hoisted. - -(module - (memory 1 1) - (func (export "init") (param $i i32) (param $x f32) (f32.store (get_local $i) (get_local $x))) - - (func (export "run") (param $n i32) (param $z f32) - (local $i i32) - (block $exit - (loop $cont - (f32.store - (get_local $i) - (f32.div (f32.load (get_local $i)) (get_local $z)) - ) - (set_local $i (i32.add (get_local $i) (i32.const 4))) - (br_if $cont (i32.lt_u (get_local $i) (get_local $n))) - ) - ) - ) - - (func (export "check") (param $i i32) (result f32) (f32.load (get_local $i))) -) - -(invoke "init" (i32.const 0) (f32.const 15.1)) -(invoke "init" (i32.const 4) (f32.const 15.2)) -(invoke "init" (i32.const 8) (f32.const 15.3)) -(invoke "init" (i32.const 12) (f32.const 15.4)) -(assert_return (invoke "check" (i32.const 0)) (f32.const 15.1)) -(assert_return (invoke "check" (i32.const 4)) (f32.const 15.2)) -(assert_return (invoke "check" (i32.const 8)) (f32.const 15.3)) -(assert_return (invoke "check" (i32.const 12)) (f32.const 15.4)) -(invoke "run" (i32.const 16) (f32.const 3.0)) -(assert_return (invoke "check" (i32.const 0)) (f32.const 0x1.422222p+2)) -(assert_return (invoke "check" (i32.const 4)) (f32.const 0x1.444444p+2)) -(assert_return (invoke "check" (i32.const 8)) (f32.const 0x1.466666p+2)) -(assert_return (invoke "check" (i32.const 12)) (f32.const 0x1.488888p+2)) - -(module - (memory 1 1) - (func (export "init") (param $i i32) (param $x f64) (f64.store (get_local $i) (get_local $x))) - - (func (export "run") (param $n i32) (param $z f64) - (local $i i32) - (block $exit - (loop $cont - (f64.store - (get_local $i) - (f64.div (f64.load (get_local $i)) (get_local $z)) - ) - (set_local $i (i32.add (get_local $i) (i32.const 8))) - (br_if $cont (i32.lt_u (get_local $i) (get_local $n))) - ) - ) - ) - - (func (export "check") (param $i i32) (result f64) (f64.load (get_local $i))) -) - -(invoke "init" (i32.const 0) (f64.const 15.1)) -(invoke "init" (i32.const 8) (f64.const 15.2)) -(invoke "init" (i32.const 16) (f64.const 15.3)) -(invoke "init" (i32.const 24) (f64.const 15.4)) -(assert_return (invoke "check" (i32.const 0)) (f64.const 15.1)) -(assert_return (invoke "check" (i32.const 8)) (f64.const 15.2)) -(assert_return (invoke "check" (i32.const 16)) (f64.const 15.3)) -(assert_return (invoke "check" (i32.const 24)) (f64.const 15.4)) -(invoke "run" (i32.const 32) (f64.const 3.0)) -(assert_return (invoke "check" (i32.const 0)) (f64.const 0x1.4222222222222p+2)) -(assert_return (invoke "check" (i32.const 8)) (f64.const 0x1.4444444444444p+2)) -(assert_return (invoke "check" (i32.const 16)) (f64.const 0x1.4666666666667p+2)) -(assert_return (invoke "check" (i32.const 24)) (f64.const 0x1.4888888888889p+2)) - -;; Test that ult/ugt/etc. aren't folded to olt/ogt/etc. - -(module - (func (export "f32.ult") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.ge (get_local $x) (get_local $y)))) - (func (export "f32.ule") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.gt (get_local $x) (get_local $y)))) - (func (export "f32.ugt") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.le (get_local $x) (get_local $y)))) - (func (export "f32.uge") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.lt (get_local $x) (get_local $y)))) - - (func (export "f64.ult") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.ge (get_local $x) (get_local $y)))) - (func (export "f64.ule") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.gt (get_local $x) (get_local $y)))) - (func (export "f64.ugt") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.le (get_local $x) (get_local $y)))) - (func (export "f64.uge") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.lt (get_local $x) (get_local $y)))) -) - -(assert_return (invoke "f32.ult" (f32.const 3.0) (f32.const 2.0)) (i32.const 0)) -(assert_return (invoke "f32.ult" (f32.const 2.0) (f32.const 2.0)) (i32.const 0)) -(assert_return (invoke "f32.ult" (f32.const 2.0) (f32.const 3.0)) (i32.const 1)) -(assert_return (invoke "f32.ult" (f32.const 2.0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "f32.ule" (f32.const 3.0) (f32.const 2.0)) (i32.const 0)) -(assert_return (invoke "f32.ule" (f32.const 2.0) (f32.const 2.0)) (i32.const 1)) -(assert_return (invoke "f32.ule" (f32.const 2.0) (f32.const 3.0)) (i32.const 1)) -(assert_return (invoke "f32.ule" (f32.const 2.0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "f32.ugt" (f32.const 3.0) (f32.const 2.0)) (i32.const 1)) -(assert_return (invoke "f32.ugt" (f32.const 2.0) (f32.const 2.0)) (i32.const 0)) -(assert_return (invoke "f32.ugt" (f32.const 2.0) (f32.const 3.0)) (i32.const 0)) -(assert_return (invoke "f32.ugt" (f32.const 2.0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "f32.uge" (f32.const 3.0) (f32.const 2.0)) (i32.const 1)) -(assert_return (invoke "f32.uge" (f32.const 2.0) (f32.const 2.0)) (i32.const 1)) -(assert_return (invoke "f32.uge" (f32.const 2.0) (f32.const 3.0)) (i32.const 0)) -(assert_return (invoke "f32.uge" (f32.const 2.0) (f32.const nan)) (i32.const 1)) -(assert_return (invoke "f64.ult" (f64.const 3.0) (f64.const 2.0)) (i32.const 0)) -(assert_return (invoke "f64.ult" (f64.const 2.0) (f64.const 2.0)) (i32.const 0)) -(assert_return (invoke "f64.ult" (f64.const 2.0) (f64.const 3.0)) (i32.const 1)) -(assert_return (invoke "f64.ult" (f64.const 2.0) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "f64.ule" (f64.const 3.0) (f64.const 2.0)) (i32.const 0)) -(assert_return (invoke "f64.ule" (f64.const 2.0) (f64.const 2.0)) (i32.const 1)) -(assert_return (invoke "f64.ule" (f64.const 2.0) (f64.const 3.0)) (i32.const 1)) -(assert_return (invoke "f64.ule" (f64.const 2.0) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "f64.ugt" (f64.const 3.0) (f64.const 2.0)) (i32.const 1)) -(assert_return (invoke "f64.ugt" (f64.const 2.0) (f64.const 2.0)) (i32.const 0)) -(assert_return (invoke "f64.ugt" (f64.const 2.0) (f64.const 3.0)) (i32.const 0)) -(assert_return (invoke "f64.ugt" (f64.const 2.0) (f64.const nan)) (i32.const 1)) -(assert_return (invoke "f64.uge" (f64.const 3.0) (f64.const 2.0)) (i32.const 1)) -(assert_return (invoke "f64.uge" (f64.const 2.0) (f64.const 2.0)) (i32.const 1)) -(assert_return (invoke "f64.uge" (f64.const 2.0) (f64.const 3.0)) (i32.const 0)) -(assert_return (invoke "f64.uge" (f64.const 2.0) (f64.const nan)) (i32.const 1)) - -;; Test that x= y+z is not optimized to x >= y (monotonicity). -;; http://cs.nyu.edu/courses/spring13/CSCI-UA.0201-003/lecture6.pdf - -(module - (func (export "f32.no_fold_add_le_monotonicity") (param $x f32) (param $y f32) (param $z f32) (result i32) - (f32.le (f32.add (get_local $x) (get_local $z)) (f32.add (get_local $y) (get_local $z)))) - - (func (export "f32.no_fold_add_ge_monotonicity") (param $x f32) (param $y f32) (param $z f32) (result i32) - (f32.ge (f32.add (get_local $x) (get_local $z)) (f32.add (get_local $y) (get_local $z)))) - - (func (export "f64.no_fold_add_le_monotonicity") (param $x f64) (param $y f64) (param $z f64) (result i32) - (f64.le (f64.add (get_local $x) (get_local $z)) (f64.add (get_local $y) (get_local $z)))) - - (func (export "f64.no_fold_add_ge_monotonicity") (param $x f64) (param $y f64) (param $z f64) (result i32) - (f64.ge (f64.add (get_local $x) (get_local $z)) (f64.add (get_local $y) (get_local $z)))) -) - -(assert_return (invoke "f32.no_fold_add_le_monotonicity" (f32.const 0.0) (f32.const 0.0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "f32.no_fold_add_le_monotonicity" (f32.const inf) (f32.const -inf) (f32.const inf)) (i32.const 0)) -(assert_return (invoke "f64.no_fold_add_le_monotonicity" (f64.const 0.0) (f64.const 0.0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "f64.no_fold_add_le_monotonicity" (f64.const inf) (f64.const -inf) (f64.const inf)) (i32.const 0)) - -;; Test that !(x < y) and friends are not optimized to x >= y and friends. - -(module - (func (export "f32.not_lt") (param $x f32) (param $y f32) (result i32) - (i32.eqz (f32.lt (get_local $x) (get_local $y)))) - - (func (export "f32.not_le") (param $x f32) (param $y f32) (result i32) - (i32.eqz (f32.le (get_local $x) (get_local $y)))) - - (func (export "f32.not_gt") (param $x f32) (param $y f32) (result i32) - (i32.eqz (f32.gt (get_local $x) (get_local $y)))) - - (func (export "f32.not_ge") (param $x f32) (param $y f32) (result i32) - (i32.eqz (f32.ge (get_local $x) (get_local $y)))) - - (func (export "f64.not_lt") (param $x f64) (param $y f64) (result i32) - (i32.eqz (f64.lt (get_local $x) (get_local $y)))) - - (func (export "f64.not_le") (param $x f64) (param $y f64) (result i32) - (i32.eqz (f64.le (get_local $x) (get_local $y)))) - - (func (export "f64.not_gt") (param $x f64) (param $y f64) (result i32) - (i32.eqz (f64.gt (get_local $x) (get_local $y)))) - - (func (export "f64.not_ge") (param $x f64) (param $y f64) (result i32) - (i32.eqz (f64.ge (get_local $x) (get_local $y)))) -) - -(assert_return (invoke "f32.not_lt" (f32.const nan) (f32.const 0.0)) (i32.const 1)) -(assert_return (invoke "f32.not_le" (f32.const nan) (f32.const 0.0)) (i32.const 1)) -(assert_return (invoke "f32.not_gt" (f32.const nan) (f32.const 0.0)) (i32.const 1)) -(assert_return (invoke "f32.not_ge" (f32.const nan) (f32.const 0.0)) (i32.const 1)) -(assert_return (invoke "f64.not_lt" (f64.const nan) (f64.const 0.0)) (i32.const 1)) -(assert_return (invoke "f64.not_le" (f64.const nan) (f64.const 0.0)) (i32.const 1)) -(assert_return (invoke "f64.not_gt" (f64.const nan) (f64.const 0.0)) (i32.const 1)) -(assert_return (invoke "f64.not_ge" (f64.const nan) (f64.const 0.0)) (i32.const 1)) - -;; Test that a method for approximating a "machine epsilon" produces the expected -;; approximation. -;; http://blogs.mathworks.com/cleve/2014/07/07/floating-point-numbers/#24cb4f4d-b8a9-4c19-b22b-9d2a9f7f3812 - -(module - (func (export "f32.epsilon") (result f32) - (f32.sub (f32.const 1.0) (f32.mul (f32.const 3.0) (f32.sub (f32.div (f32.const 4.0) (f32.const 3.0)) (f32.const 1.0))))) - - (func (export "f64.epsilon") (result f64) - (f64.sub (f64.const 1.0) (f64.mul (f64.const 3.0) (f64.sub (f64.div (f64.const 4.0) (f64.const 3.0)) (f64.const 1.0))))) -) - -(assert_return (invoke "f32.epsilon") (f32.const -0x1p-23)) -(assert_return (invoke "f64.epsilon") (f64.const 0x1p-52)) - -;; Test that a method for computing a "machine epsilon" produces the expected -;; result. -;; https://www.math.utah.edu/~beebe/software/ieee/ - -(module - (func (export "f32.epsilon") (result f32) - (local $x f32) - (local $result f32) - (set_local $x (f32.const 1)) - (loop $loop - (br_if $loop - (f32.gt - (f32.add - (tee_local $x - (f32.mul - (tee_local $result (get_local $x)) - (f32.const 0.5) - ) - ) - (f32.const 1) - ) - (f32.const 1) - ) - ) - ) - (get_local $result) - ) - - (func (export "f64.epsilon") (result f64) - (local $x f64) - (local $result f64) - (set_local $x (f64.const 1)) - (loop $loop - (br_if $loop - (f64.gt - (f64.add - (tee_local $x - (f64.mul - (tee_local $result (get_local $x)) - (f64.const 0.5) - ) - ) - (f64.const 1) - ) - (f64.const 1) - ) - ) - ) - (get_local $result) - ) -) - -(assert_return (invoke "f32.epsilon") (f32.const 0x1p-23)) -(assert_return (invoke "f64.epsilon") (f64.const 0x1p-52)) - -;; Test that floating-point numbers are not optimized as if they form a -;; trichotomy. - -(module - (func (export "f32.no_trichotomy_lt") (param $x f32) (param $y f32) (result i32) - (i32.or (f32.lt (get_local $x) (get_local $y)) (f32.ge (get_local $x) (get_local $y)))) - (func (export "f32.no_trichotomy_le") (param $x f32) (param $y f32) (result i32) - (i32.or (f32.le (get_local $x) (get_local $y)) (f32.gt (get_local $x) (get_local $y)))) - (func (export "f32.no_trichotomy_gt") (param $x f32) (param $y f32) (result i32) - (i32.or (f32.gt (get_local $x) (get_local $y)) (f32.le (get_local $x) (get_local $y)))) - (func (export "f32.no_trichotomy_ge") (param $x f32) (param $y f32) (result i32) - (i32.or (f32.ge (get_local $x) (get_local $y)) (f32.lt (get_local $x) (get_local $y)))) - - (func (export "f64.no_trichotomy_lt") (param $x f64) (param $y f64) (result i32) - (i32.or (f64.lt (get_local $x) (get_local $y)) (f64.ge (get_local $x) (get_local $y)))) - (func (export "f64.no_trichotomy_le") (param $x f64) (param $y f64) (result i32) - (i32.or (f64.le (get_local $x) (get_local $y)) (f64.gt (get_local $x) (get_local $y)))) - (func (export "f64.no_trichotomy_gt") (param $x f64) (param $y f64) (result i32) - (i32.or (f64.gt (get_local $x) (get_local $y)) (f64.le (get_local $x) (get_local $y)))) - (func (export "f64.no_trichotomy_ge") (param $x f64) (param $y f64) (result i32) - (i32.or (f64.ge (get_local $x) (get_local $y)) (f64.lt (get_local $x) (get_local $y)))) -) - -(assert_return (invoke "f32.no_trichotomy_lt" (f32.const 0.0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "f32.no_trichotomy_le" (f32.const 0.0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "f32.no_trichotomy_gt" (f32.const 0.0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "f32.no_trichotomy_ge" (f32.const 0.0) (f32.const nan)) (i32.const 0)) -(assert_return (invoke "f64.no_trichotomy_lt" (f64.const 0.0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "f64.no_trichotomy_le" (f64.const 0.0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "f64.no_trichotomy_gt" (f64.const 0.0) (f64.const nan)) (i32.const 0)) -(assert_return (invoke "f64.no_trichotomy_ge" (f64.const 0.0) (f64.const nan)) (i32.const 0)) - -;; Some test harnesses which can run this testsuite are unable to perform tests -;; of NaN bitpatterns. The following tests whether the underlying platform is -;; generally producing the kinds of NaNs expected. -(module - (func (export "f32.arithmetic_nan_bitpattern") - (param $x i32) (param $y i32) (result i32) - (i32.and (i32.reinterpret/f32 - (f32.div - (f32.reinterpret/i32 (get_local $x)) - (f32.reinterpret/i32 (get_local $y)))) - (i32.const 0x7fc00000))) - (func (export "f32.canonical_nan_bitpattern") - (param $x i32) (param $y i32) (result i32) - (i32.and (i32.reinterpret/f32 - (f32.div - (f32.reinterpret/i32 (get_local $x)) - (f32.reinterpret/i32 (get_local $y)))) - (i32.const 0x7fffffff))) - (func (export "f32.nonarithmetic_nan_bitpattern") - (param $x i32) (result i32) - (i32.reinterpret/f32 (f32.neg (f32.reinterpret/i32 (get_local $x))))) - - (func (export "f64.arithmetic_nan_bitpattern") - (param $x i64) (param $y i64) (result i64) - (i64.and (i64.reinterpret/f64 - (f64.div - (f64.reinterpret/i64 (get_local $x)) - (f64.reinterpret/i64 (get_local $y)))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.canonical_nan_bitpattern") - (param $x i64) (param $y i64) (result i64) - (i64.and (i64.reinterpret/f64 - (f64.div - (f64.reinterpret/i64 (get_local $x)) - (f64.reinterpret/i64 (get_local $y)))) - (i64.const 0x7fffffffffffffff))) - (func (export "f64.nonarithmetic_nan_bitpattern") - (param $x i64) (result i64) - (i64.reinterpret/f64 (f64.neg (f64.reinterpret/i64 (get_local $x))))) - - ;; Versions of no_fold testcases that only care about NaN bitpatterns. - (func (export "f32.no_fold_sub_zero") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.sub (f32.reinterpret/i32 (get_local $x)) (f32.const 0.0))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_neg0_sub") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.sub (f32.const -0.0) (f32.reinterpret/i32 (get_local $x)))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_mul_one") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.mul (f32.reinterpret/i32 (get_local $x)) (f32.const 1.0))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_neg1_mul") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.mul (f32.const -1.0) (f32.reinterpret/i32 (get_local $x)))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_div_one") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.div (f32.reinterpret/i32 (get_local $x)) (f32.const 1.0))) - (i32.const 0x7fc00000))) - (func (export "f32.no_fold_div_neg1") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.div (f32.reinterpret/i32 (get_local $x)) (f32.const -1.0))) - (i32.const 0x7fc00000))) - (func (export "f64.no_fold_sub_zero") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.sub (f64.reinterpret/i64 (get_local $x)) (f64.const 0.0))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_neg0_sub") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.sub (f64.const -0.0) (f64.reinterpret/i64 (get_local $x)))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_mul_one") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.mul (f64.reinterpret/i64 (get_local $x)) (f64.const 1.0))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_neg1_mul") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.mul (f64.const -1.0) (f64.reinterpret/i64 (get_local $x)))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_div_one") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.div (f64.reinterpret/i64 (get_local $x)) (f64.const 1.0))) - (i64.const 0x7ff8000000000000))) - (func (export "f64.no_fold_div_neg1") (param $x i64) (result i64) - (i64.and (i64.reinterpret/f64 (f64.div (f64.reinterpret/i64 (get_local $x)) (f64.const -1.0))) - (i64.const 0x7ff8000000000000))) - (func (export "no_fold_promote_demote") (param $x i32) (result i32) - (i32.and (i32.reinterpret/f32 (f32.demote/f64 (f64.promote/f32 (f32.reinterpret/i32 (get_local $x))))) - (i32.const 0x7fc00000))) -) - -(assert_return (invoke "f32.arithmetic_nan_bitpattern" (i32.const 0x7f803210) (i32.const 0x7f803210)) (i32.const 0x7fc00000)) -(assert_return (invoke "f32.canonical_nan_bitpattern" (i32.const 0) (i32.const 0)) (i32.const 0x7fc00000)) -(assert_return (invoke "f32.canonical_nan_bitpattern" (i32.const 0x7fc00000) (i32.const 0x7fc00000)) (i32.const 0x7fc00000)) -(assert_return (invoke "f32.canonical_nan_bitpattern" (i32.const 0xffc00000) (i32.const 0x7fc00000)) (i32.const 0x7fc00000)) -(assert_return (invoke "f32.canonical_nan_bitpattern" (i32.const 0x7fc00000) (i32.const 0xffc00000)) (i32.const 0x7fc00000)) -(assert_return (invoke "f32.canonical_nan_bitpattern" (i32.const 0xffc00000) (i32.const 0xffc00000)) (i32.const 0x7fc00000)) -(assert_return (invoke "f32.nonarithmetic_nan_bitpattern" (i32.const 0x7fc03210)) (i32.const 0xffc03210)) -(assert_return (invoke "f32.nonarithmetic_nan_bitpattern" (i32.const 0xffc03210)) (i32.const 0x7fc03210)) -(assert_return (invoke "f32.nonarithmetic_nan_bitpattern" (i32.const 0x7f803210)) (i32.const 0xff803210)) -(assert_return (invoke "f32.nonarithmetic_nan_bitpattern" (i32.const 0xff803210)) (i32.const 0x7f803210)) -(assert_return (invoke "f64.arithmetic_nan_bitpattern" (i64.const 0x7ff0000000003210) (i64.const 0x7ff0000000003210)) (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.canonical_nan_bitpattern" (i64.const 0) (i64.const 0)) (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.canonical_nan_bitpattern" (i64.const 0x7ff8000000000000) (i64.const 0x7ff8000000000000)) (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.canonical_nan_bitpattern" (i64.const 0xfff8000000000000) (i64.const 0x7ff8000000000000)) (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.canonical_nan_bitpattern" (i64.const 0x7ff8000000000000) (i64.const 0xfff8000000000000)) (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.canonical_nan_bitpattern" (i64.const 0xfff8000000000000) (i64.const 0xfff8000000000000)) (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.nonarithmetic_nan_bitpattern" (i64.const 0x7ff8000000003210)) (i64.const 0xfff8000000003210)) -(assert_return (invoke "f64.nonarithmetic_nan_bitpattern" (i64.const 0xfff8000000003210)) (i64.const 0x7ff8000000003210)) -(assert_return (invoke "f64.nonarithmetic_nan_bitpattern" (i64.const 0x7ff0000000003210)) (i64.const 0xfff0000000003210)) -(assert_return (invoke "f64.nonarithmetic_nan_bitpattern" (i64.const 0xfff0000000003210)) (i64.const 0x7ff0000000003210)) -;;(assert_return (invoke "f32.no_fold_sub_zero" (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) -;;(assert_return (invoke "f32.no_fold_neg0_sub" (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) -;;(assert_return (invoke "f32.no_fold_mul_one" (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) -;;(assert_return (invoke "f32.no_fold_neg1_mul" (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) -;;(assert_return (invoke "f32.no_fold_div_one" (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) -;;(assert_return (invoke "f32.no_fold_div_neg1" (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) -;;(assert_return (invoke "f64.no_fold_sub_zero" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) -;;(assert_return (invoke "f64.no_fold_neg0_sub" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) -;;(assert_return (invoke "f64.no_fold_mul_one" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) -;;(assert_return (invoke "f64.no_fold_neg1_mul" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) -;;(assert_return (invoke "f64.no_fold_div_one" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) -;;(assert_return (invoke "f64.no_fold_div_neg1" (i64.const 0x7ff4000000000000)) (i64.const 0x7ff8000000000000)) -;;(assert_return (invoke "no_fold_promote_demote" (i32.const 0x7fa00000)) (i32.const 0x7fc00000)) - -;; Test that IEEE 754 double precision does, in fact, compute a certain dot -;; product correctly. - -(module - (func (export "dot_product_example") - (param $x0 f64) (param $x1 f64) (param $x2 f64) (param $x3 f64) - (param $y0 f64) (param $y1 f64) (param $y2 f64) (param $y3 f64) - (result f64) - (f64.add (f64.add (f64.add - (f64.mul (get_local $x0) (get_local $y0)) - (f64.mul (get_local $x1) (get_local $y1))) - (f64.mul (get_local $x2) (get_local $y2))) - (f64.mul (get_local $x3) (get_local $y3))) - ) - - (func (export "with_binary_sum_collapse") - (param $x0 f64) (param $x1 f64) (param $x2 f64) (param $x3 f64) - (param $y0 f64) (param $y1 f64) (param $y2 f64) (param $y3 f64) - (result f64) - (f64.add (f64.add (f64.mul (get_local $x0) (get_local $y0)) - (f64.mul (get_local $x1) (get_local $y1))) - (f64.add (f64.mul (get_local $x2) (get_local $y2)) - (f64.mul (get_local $x3) (get_local $y3)))) - ) -) - -(assert_return (invoke "dot_product_example" - (f64.const 3.2e7) (f64.const 1.0) (f64.const -1.0) (f64.const 8.0e7) - (f64.const 4.0e7) (f64.const 1.0) (f64.const -1.0) (f64.const -1.6e7)) - (f64.const 2.0)) -(assert_return (invoke "with_binary_sum_collapse" - (f64.const 3.2e7) (f64.const 1.0) (f64.const -1.0) (f64.const 8.0e7) - (f64.const 4.0e7) (f64.const 1.0) (f64.const -1.0) (f64.const -1.6e7)) - (f64.const 2.0)) - -;; http://www.vinc17.org/research/fptest.en.html#contract2fma - -(module - (func (export "f32.contract2fma") - (param $x f32) (param $y f32) (result f32) - (f32.sqrt (f32.sub (f32.mul (get_local $x) (get_local $x)) - (f32.mul (get_local $y) (get_local $y))))) - (func (export "f64.contract2fma") - (param $x f64) (param $y f64) (result f64) - (f64.sqrt (f64.sub (f64.mul (get_local $x) (get_local $x)) - (f64.mul (get_local $y) (get_local $y))))) -) - -(assert_return (invoke "f32.contract2fma" (f32.const 1.0) (f32.const 1.0)) (f32.const 0.0)) -(assert_return (invoke "f32.contract2fma" (f32.const 0x1.19999ap+0) (f32.const 0x1.19999ap+0)) (f32.const 0.0)) -(assert_return (invoke "f32.contract2fma" (f32.const 0x1.333332p+0) (f32.const 0x1.333332p+0)) (f32.const 0.0)) -(assert_return (invoke "f64.contract2fma" (f64.const 1.0) (f64.const 1.0)) (f64.const 0.0)) -(assert_return (invoke "f64.contract2fma" (f64.const 0x1.199999999999ap+0) (f64.const 0x1.199999999999ap+0)) (f64.const 0.0)) -(assert_return (invoke "f64.contract2fma" (f64.const 0x1.3333333333333p+0) (f64.const 0x1.3333333333333p+0)) (f64.const 0.0)) - -;; Test that floating-point isn't implemented with QuickBasic for MS-DOS. -;; https://support.microsoft.com/en-us/help/42980/-complete-tutorial-to-understand-ieee-floating-point-errors - -(module - (func (export "f32.division_by_small_number") - (param $a f32) (param $b f32) (param $c f32) (result f32) - (f32.sub (get_local $a) (f32.div (get_local $b) (get_local $c)))) - (func (export "f64.division_by_small_number") - (param $a f64) (param $b f64) (param $c f64) (result f64) - (f64.sub (get_local $a) (f64.div (get_local $b) (get_local $c)))) -) - -(assert_return (invoke "f32.division_by_small_number" (f32.const 112000000) (f32.const 100000) (f32.const 0.0009)) (f32.const 888888)) -(assert_return (invoke "f64.division_by_small_number" (f64.const 112000000) (f64.const 100000) (f64.const 0.0009)) (f64.const 888888.8888888806)) - -;; Test a simple golden ratio computation. -;; http://mathworld.wolfram.com/GoldenRatio.html - -(module - (func (export "f32.golden_ratio") (param $a f32) (param $b f32) (param $c f32) (result f32) - (f32.mul (get_local 0) (f32.add (get_local 1) (f32.sqrt (get_local 2))))) - (func (export "f64.golden_ratio") (param $a f64) (param $b f64) (param $c f64) (result f64) - (f64.mul (get_local 0) (f64.add (get_local 1) (f64.sqrt (get_local 2))))) -) - -(assert_return (invoke "f32.golden_ratio" (f32.const 0.5) (f32.const 1.0) (f32.const 5.0)) (f32.const 1.618034)) -(assert_return (invoke "f64.golden_ratio" (f64.const 0.5) (f64.const 1.0) (f64.const 5.0)) (f64.const 1.618033988749895)) - -;; Test some silver means computations. -;; http://mathworld.wolfram.com/SilverRatio.html - -(module - (func (export "f32.silver_means") (param $n f32) (result f32) - (f32.mul (f32.const 0.5) - (f32.add (get_local $n) - (f32.sqrt (f32.add (f32.mul (get_local $n) (get_local $n)) - (f32.const 4.0)))))) - (func (export "f64.silver_means") (param $n f64) (result f64) - (f64.mul (f64.const 0.5) - (f64.add (get_local $n) - (f64.sqrt (f64.add (f64.mul (get_local $n) (get_local $n)) - (f64.const 4.0)))))) -) - -(assert_return (invoke "f32.silver_means" (f32.const 0.0)) (f32.const 1.0)) -(assert_return (invoke "f32.silver_means" (f32.const 1.0)) (f32.const 1.6180340)) -(assert_return (invoke "f32.silver_means" (f32.const 2.0)) (f32.const 2.4142136)) -(assert_return (invoke "f32.silver_means" (f32.const 3.0)) (f32.const 3.3027756)) -(assert_return (invoke "f32.silver_means" (f32.const 4.0)) (f32.const 4.2360680)) -(assert_return (invoke "f32.silver_means" (f32.const 5.0)) (f32.const 5.1925821)) -(assert_return (invoke "f64.silver_means" (f64.const 0.0)) (f64.const 1.0)) -(assert_return (invoke "f64.silver_means" (f64.const 1.0)) (f64.const 1.618033988749895)) -(assert_return (invoke "f64.silver_means" (f64.const 2.0)) (f64.const 2.414213562373095)) -(assert_return (invoke "f64.silver_means" (f64.const 3.0)) (f64.const 3.302775637731995)) -(assert_return (invoke "f64.silver_means" (f64.const 4.0)) (f64.const 4.236067977499790)) -(assert_return (invoke "f64.silver_means" (f64.const 5.0)) (f64.const 5.192582403567252)) - -;; Test that an f64 0.4 isn't double-rounded as via extended precision. -;; https://bugs.llvm.org/show_bug.cgi?id=11200 - -(module - (func (export "point_four") (param $four f64) (param $ten f64) (result i32) - (f64.lt (f64.div (get_local $four) (get_local $ten)) (f64.const 0.4))) -) - -(assert_return (invoke "point_four" (f64.const 4.0) (f64.const 10.0)) (i32.const 0)) - -;; Test an approximation function for tau; it should produces the correctly -;; rounded result after (and only after) the expected number of iterations. - -(module - (func (export "tau") (param i32) (result f64) - (local f64 f64 f64 f64) - f64.const 0x0p+0 - set_local 1 - block - get_local 0 - i32.const 1 - i32.lt_s - br_if 0 - f64.const 0x1p+0 - set_local 2 - f64.const 0x0p+0 - set_local 3 - loop - get_local 1 - get_local 2 - f64.const 0x1p+3 - get_local 3 - f64.const 0x1p+3 - f64.mul - tee_local 4 - f64.const 0x1p+0 - f64.add - f64.div - f64.const 0x1p+2 - get_local 4 - f64.const 0x1p+2 - f64.add - f64.div - f64.sub - f64.const 0x1p+1 - get_local 4 - f64.const 0x1.4p+2 - f64.add - f64.div - f64.sub - f64.const 0x1p+1 - get_local 4 - f64.const 0x1.8p+2 - f64.add - f64.div - f64.sub - f64.mul - f64.add - set_local 1 - get_local 3 - f64.const 0x1p+0 - f64.add - set_local 3 - get_local 2 - f64.const 0x1p-4 - f64.mul - set_local 2 - get_local 0 - i32.const -1 - i32.add - tee_local 0 - br_if 0 - end - end - get_local 1 - ) -) - -(assert_return (invoke "tau" (i32.const 10)) (f64.const 0x1.921fb54442d14p+2)) -(assert_return (invoke "tau" (i32.const 11)) (f64.const 0x1.921fb54442d18p+2)) - -;; Test that y < 0 ? x : (x + 1) is not folded to x + (y < 0). - -(module - (func (export "f32.no_fold_conditional_inc") (param $x f32) (param $y f32) (result f32) - (select (get_local $x) - (f32.add (get_local $x) (f32.const 1.0)) - (f32.lt (get_local $y) (f32.const 0.0)))) - (func (export "f64.no_fold_conditional_inc") (param $x f64) (param $y f64) (result f64) - (select (get_local $x) - (f64.add (get_local $x) (f64.const 1.0)) - (f64.lt (get_local $y) (f64.const 0.0)))) -) - -(assert_return (invoke "f32.no_fold_conditional_inc" (f32.const -0.0) (f32.const -1.0)) (f32.const -0.0)) -(assert_return (invoke "f64.no_fold_conditional_inc" (f64.const -0.0) (f64.const -1.0)) (f64.const -0.0)) diff --git a/libraries/wasm-jit/Test/spec/float_literals.wast b/libraries/wasm-jit/Test/spec/float_literals.wast deleted file mode 100644 index ed5969b8898..00000000000 --- a/libraries/wasm-jit/Test/spec/float_literals.wast +++ /dev/null @@ -1,499 +0,0 @@ -;; Test floating-point literal parsing. - -(module - ;; f32 special values - (func (export "f32.nan") (result i32) (i32.reinterpret/f32 (f32.const nan))) - (func (export "f32.positive_nan") (result i32) (i32.reinterpret/f32 (f32.const +nan))) - (func (export "f32.negative_nan") (result i32) (i32.reinterpret/f32 (f32.const -nan))) - (func (export "f32.plain_nan") (result i32) (i32.reinterpret/f32 (f32.const nan:0x400000))) - (func (export "f32.informally_known_as_plain_snan") (result i32) (i32.reinterpret/f32 (f32.const nan:0x200000))) - (func (export "f32.all_ones_nan") (result i32) (i32.reinterpret/f32 (f32.const -nan:0x7fffff))) - (func (export "f32.misc_nan") (result i32) (i32.reinterpret/f32 (f32.const nan:0x012345))) - (func (export "f32.misc_positive_nan") (result i32) (i32.reinterpret/f32 (f32.const +nan:0x304050))) - (func (export "f32.misc_negative_nan") (result i32) (i32.reinterpret/f32 (f32.const -nan:0x2abcde))) - (func (export "f32.infinity") (result i32) (i32.reinterpret/f32 (f32.const inf))) - (func (export "f32.positive_infinity") (result i32) (i32.reinterpret/f32 (f32.const +inf))) - (func (export "f32.negative_infinity") (result i32) (i32.reinterpret/f32 (f32.const -inf))) - - ;; f32 numbers - (func (export "f32.zero") (result i32) (i32.reinterpret/f32 (f32.const 0x0.0p0))) - (func (export "f32.positive_zero") (result i32) (i32.reinterpret/f32 (f32.const +0x0.0p0))) - (func (export "f32.negative_zero") (result i32) (i32.reinterpret/f32 (f32.const -0x0.0p0))) - (func (export "f32.misc") (result i32) (i32.reinterpret/f32 (f32.const 0x1.921fb6p+2))) - (func (export "f32.min_positive") (result i32) (i32.reinterpret/f32 (f32.const 0x1p-149))) - (func (export "f32.min_normal") (result i32) (i32.reinterpret/f32 (f32.const 0x1p-126))) - (func (export "f32.max_finite") (result i32) (i32.reinterpret/f32 (f32.const 0x1.fffffep+127))) - (func (export "f32.max_subnormal") (result i32) (i32.reinterpret/f32 (f32.const 0x1.fffffcp-127))) - (func (export "f32.trailing_dot") (result i32) (i32.reinterpret/f32 (f32.const 0x1.p10))) - - ;; f32 in decimal format - (func (export "f32_dec.zero") (result i32) (i32.reinterpret/f32 (f32.const 0.0e0))) - (func (export "f32_dec.positive_zero") (result i32) (i32.reinterpret/f32 (f32.const +0.0e0))) - (func (export "f32_dec.negative_zero") (result i32) (i32.reinterpret/f32 (f32.const -0.0e0))) - (func (export "f32_dec.misc") (result i32) (i32.reinterpret/f32 (f32.const 6.28318548202514648))) - (func (export "f32_dec.min_positive") (result i32) (i32.reinterpret/f32 (f32.const 1.4013e-45))) - (func (export "f32_dec.min_normal") (result i32) (i32.reinterpret/f32 (f32.const 1.1754944e-38))) - (func (export "f32_dec.max_subnormal") (result i32) (i32.reinterpret/f32 (f32.const 1.1754942e-38))) - (func (export "f32_dec.max_finite") (result i32) (i32.reinterpret/f32 (f32.const 3.4028234e+38))) - (func (export "f32_dec.trailing_dot") (result i32) (i32.reinterpret/f32 (f32.const 1.e10))) - - ;; f64 special values - (func (export "f64.nan") (result i64) (i64.reinterpret/f64 (f64.const nan))) - (func (export "f64.positive_nan") (result i64) (i64.reinterpret/f64 (f64.const +nan))) - (func (export "f64.negative_nan") (result i64) (i64.reinterpret/f64 (f64.const -nan))) - (func (export "f64.plain_nan") (result i64) (i64.reinterpret/f64 (f64.const nan:0x8000000000000))) - (func (export "f64.informally_known_as_plain_snan") (result i64) (i64.reinterpret/f64 (f64.const nan:0x4000000000000))) - (func (export "f64.all_ones_nan") (result i64) (i64.reinterpret/f64 (f64.const -nan:0xfffffffffffff))) - (func (export "f64.misc_nan") (result i64) (i64.reinterpret/f64 (f64.const nan:0x0123456789abc))) - (func (export "f64.misc_positive_nan") (result i64) (i64.reinterpret/f64 (f64.const +nan:0x3040506070809))) - (func (export "f64.misc_negative_nan") (result i64) (i64.reinterpret/f64 (f64.const -nan:0x2abcdef012345))) - (func (export "f64.infinity") (result i64) (i64.reinterpret/f64 (f64.const inf))) - (func (export "f64.positive_infinity") (result i64) (i64.reinterpret/f64 (f64.const +inf))) - (func (export "f64.negative_infinity") (result i64) (i64.reinterpret/f64 (f64.const -inf))) - - ;; f64 numbers - (func (export "f64.zero") (result i64) (i64.reinterpret/f64 (f64.const 0x0.0p0))) - (func (export "f64.positive_zero") (result i64) (i64.reinterpret/f64 (f64.const +0x0.0p0))) - (func (export "f64.negative_zero") (result i64) (i64.reinterpret/f64 (f64.const -0x0.0p0))) - (func (export "f64.misc") (result i64) (i64.reinterpret/f64 (f64.const 0x1.921fb54442d18p+2))) - (func (export "f64.min_positive") (result i64) (i64.reinterpret/f64 (f64.const 0x0.0000000000001p-1022))) - (func (export "f64.min_normal") (result i64) (i64.reinterpret/f64 (f64.const 0x1p-1022))) - (func (export "f64.max_subnormal") (result i64) (i64.reinterpret/f64 (f64.const 0x0.fffffffffffffp-1022))) - (func (export "f64.max_finite") (result i64) (i64.reinterpret/f64 (f64.const 0x1.fffffffffffffp+1023))) - (func (export "f64.trailing_dot") (result i64) (i64.reinterpret/f64 (f64.const 0x1.p100))) - - ;; f64 numbers in decimal format - (func (export "f64_dec.zero") (result i64) (i64.reinterpret/f64 (f64.const 0.0e0))) - (func (export "f64_dec.positive_zero") (result i64) (i64.reinterpret/f64 (f64.const +0.0e0))) - (func (export "f64_dec.negative_zero") (result i64) (i64.reinterpret/f64 (f64.const -0.0e0))) - (func (export "f64_dec.misc") (result i64) (i64.reinterpret/f64 (f64.const 6.28318530717958623))) - (func (export "f64_dec.min_positive") (result i64) (i64.reinterpret/f64 (f64.const 4.94066e-324))) - (func (export "f64_dec.min_normal") (result i64) (i64.reinterpret/f64 (f64.const 2.2250738585072012e-308))) - (func (export "f64_dec.max_subnormal") (result i64) (i64.reinterpret/f64 (f64.const 2.2250738585072011e-308))) - (func (export "f64_dec.max_finite") (result i64) (i64.reinterpret/f64 (f64.const 1.7976931348623157e+308))) - (func (export "f64_dec.trailing_dot") (result i64) (i64.reinterpret/f64 (f64.const 1.e100))) - - (func (export "f32-dec-sep1") (result f32) (f32.const 1_000_000)) - (func (export "f32-dec-sep2") (result f32) (f32.const 1_0_0_0)) - (func (export "f32-dec-sep3") (result f32) (f32.const 100_3.141_592)) - (func (export "f32-dec-sep4") (result f32) (f32.const 99e+1_3)) - (func (export "f32-dec-sep5") (result f32) (f32.const 122_000.11_3_54E0_2_3)) - (func (export "f32-hex-sep1") (result f32) (f32.const 0xa_0f_00_99)) - (func (export "f32-hex-sep2") (result f32) (f32.const 0x1_a_A_0_f)) - (func (export "f32-hex-sep3") (result f32) (f32.const 0xa0_ff.f141_a59a)) - (func (export "f32-hex-sep4") (result f32) (f32.const 0xf0P+1_3)) - (func (export "f32-hex-sep5") (result f32) (f32.const 0x2a_f00a.1f_3_eep2_3)) - - (func (export "f64-dec-sep1") (result f64) (f64.const 1_000_000)) - (func (export "f64-dec-sep2") (result f64) (f64.const 1_0_0_0)) - (func (export "f64-dec-sep3") (result f64) (f64.const 100_3.141_592)) - (func (export "f64-dec-sep4") (result f64) (f64.const 99e-1_23)) - (func (export "f64-dec-sep5") (result f64) (f64.const 122_000.11_3_54e0_2_3)) - (func (export "f64-hex-sep1") (result f64) (f64.const 0xa_f00f_0000_9999)) - (func (export "f64-hex-sep2") (result f64) (f64.const 0x1_a_A_0_f)) - (func (export "f64-hex-sep3") (result f64) (f64.const 0xa0_ff.f141_a59a)) - (func (export "f64-hex-sep4") (result f64) (f64.const 0xf0P+1_3)) - (func (export "f64-hex-sep5") (result f64) (f64.const 0x2a_f00a.1f_3_eep2_3)) -) - -(assert_return (invoke "f32.nan") (i32.const 0x7fc00000)) -(assert_return (invoke "f32.positive_nan") (i32.const 0x7fc00000)) -(assert_return (invoke "f32.negative_nan") (i32.const 0xffc00000)) -(assert_return (invoke "f32.plain_nan") (i32.const 0x7fc00000)) -(assert_return (invoke "f32.informally_known_as_plain_snan") (i32.const 0x7fa00000)) -(assert_return (invoke "f32.all_ones_nan") (i32.const 0xffffffff)) -(assert_return (invoke "f32.misc_nan") (i32.const 0x7f812345)) -(assert_return (invoke "f32.misc_positive_nan") (i32.const 0x7fb04050)) -(assert_return (invoke "f32.misc_negative_nan") (i32.const 0xffaabcde)) -(assert_return (invoke "f32.infinity") (i32.const 0x7f800000)) -(assert_return (invoke "f32.positive_infinity") (i32.const 0x7f800000)) -(assert_return (invoke "f32.negative_infinity") (i32.const 0xff800000)) -(assert_return (invoke "f32.zero") (i32.const 0)) -(assert_return (invoke "f32.positive_zero") (i32.const 0)) -(assert_return (invoke "f32.negative_zero") (i32.const 0x80000000)) -(assert_return (invoke "f32.misc") (i32.const 0x40c90fdb)) -(assert_return (invoke "f32.min_positive") (i32.const 1)) -(assert_return (invoke "f32.min_normal") (i32.const 0x800000)) -(assert_return (invoke "f32.max_subnormal") (i32.const 0x7fffff)) -(assert_return (invoke "f32.max_finite") (i32.const 0x7f7fffff)) -(assert_return (invoke "f32.trailing_dot") (i32.const 0x44800000)) -(assert_return (invoke "f32_dec.zero") (i32.const 0)) -(assert_return (invoke "f32_dec.positive_zero") (i32.const 0)) -(assert_return (invoke "f32_dec.negative_zero") (i32.const 0x80000000)) -(assert_return (invoke "f32_dec.misc") (i32.const 0x40c90fdb)) -(assert_return (invoke "f32_dec.min_positive") (i32.const 1)) -(assert_return (invoke "f32_dec.min_normal") (i32.const 0x800000)) -(assert_return (invoke "f32_dec.max_subnormal") (i32.const 0x7fffff)) -(assert_return (invoke "f32_dec.max_finite") (i32.const 0x7f7fffff)) -(assert_return (invoke "f32_dec.trailing_dot") (i32.const 0x501502f9)) - -(assert_return (invoke "f64.nan") (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.positive_nan") (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.negative_nan") (i64.const 0xfff8000000000000)) -(assert_return (invoke "f64.plain_nan") (i64.const 0x7ff8000000000000)) -(assert_return (invoke "f64.informally_known_as_plain_snan") (i64.const 0x7ff4000000000000)) -(assert_return (invoke "f64.all_ones_nan") (i64.const 0xffffffffffffffff)) -(assert_return (invoke "f64.misc_nan") (i64.const 0x7ff0123456789abc)) -(assert_return (invoke "f64.misc_positive_nan") (i64.const 0x7ff3040506070809)) -(assert_return (invoke "f64.misc_negative_nan") (i64.const 0xfff2abcdef012345)) -(assert_return (invoke "f64.infinity") (i64.const 0x7ff0000000000000)) -(assert_return (invoke "f64.positive_infinity") (i64.const 0x7ff0000000000000)) -(assert_return (invoke "f64.negative_infinity") (i64.const 0xfff0000000000000)) -(assert_return (invoke "f64.zero") (i64.const 0)) -(assert_return (invoke "f64.positive_zero") (i64.const 0)) -(assert_return (invoke "f64.negative_zero") (i64.const 0x8000000000000000)) -(assert_return (invoke "f64.misc") (i64.const 0x401921fb54442d18)) -(assert_return (invoke "f64.min_positive") (i64.const 1)) -(assert_return (invoke "f64.min_normal") (i64.const 0x10000000000000)) -(assert_return (invoke "f64.max_subnormal") (i64.const 0xfffffffffffff)) -(assert_return (invoke "f64.max_finite") (i64.const 0x7fefffffffffffff)) -(assert_return (invoke "f64.trailing_dot") (i64.const 0x4630000000000000)) -(assert_return (invoke "f64_dec.zero") (i64.const 0)) -(assert_return (invoke "f64_dec.positive_zero") (i64.const 0)) -(assert_return (invoke "f64_dec.negative_zero") (i64.const 0x8000000000000000)) -(assert_return (invoke "f64_dec.misc") (i64.const 0x401921fb54442d18)) -(assert_return (invoke "f64_dec.min_positive") (i64.const 1)) -(assert_return (invoke "f64_dec.min_normal") (i64.const 0x10000000000000)) -(assert_return (invoke "f64_dec.max_subnormal") (i64.const 0xfffffffffffff)) -(assert_return (invoke "f64_dec.max_finite") (i64.const 0x7fefffffffffffff)) -(assert_return (invoke "f64_dec.trailing_dot") (i64.const 0x54b249ad2594c37d)) - -(assert_return (invoke "f32-dec-sep1") (f32.const 1000000)) -(assert_return (invoke "f32-dec-sep2") (f32.const 1000)) -(assert_return (invoke "f32-dec-sep3") (f32.const 1003.141592)) -(assert_return (invoke "f32-dec-sep4") (f32.const 99e+13)) -(assert_return (invoke "f32-dec-sep5") (f32.const 122000.11354e23)) -(assert_return (invoke "f32-hex-sep1") (f32.const 0xa0f0099)) -(assert_return (invoke "f32-hex-sep2") (f32.const 0x1aa0f)) -(assert_return (invoke "f32-hex-sep3") (f32.const 0xa0ff.f141a59a)) -(assert_return (invoke "f32-hex-sep4") (f32.const 0xf0P+13)) -(assert_return (invoke "f32-hex-sep5") (f32.const 0x2af00a.1f3eep23)) - -(assert_return (invoke "f64-dec-sep1") (f64.const 1000000)) -(assert_return (invoke "f64-dec-sep2") (f64.const 1000)) -(assert_return (invoke "f64-dec-sep3") (f64.const 1003.141592)) -(assert_return (invoke "f64-dec-sep4") (f64.const 99e-123)) -(assert_return (invoke "f64-dec-sep5") (f64.const 122000.11354e23)) -(assert_return (invoke "f64-hex-sep1") (f64.const 0xaf00f00009999)) -(assert_return (invoke "f64-hex-sep2") (f64.const 0x1aa0f)) -(assert_return (invoke "f64-hex-sep3") (f64.const 0xa0ff.f141a59a)) -(assert_return (invoke "f64-hex-sep4") (f64.const 0xf0P+13)) -(assert_return (invoke "f64-hex-sep5") (f64.const 0x2af00a.1f3eep23)) - -;; Test parsing a float from binary -(module binary - ;; (func (export "4294967249") (result f64) (f64.const 4294967249)) - "\00\61\73\6d\01\00\00\00\01\85\80\80\80\00\01\60" - "\00\01\7c\03\82\80\80\80\00\01\00\07\8e\80\80\80" - "\00\01\0a\34\32\39\34\39\36\37\32\34\39\00\00\0a" - "\91\80\80\80\00\01\8b\80\80\80\00\00\44\00\00\20" - "\fa\ff\ff\ef\41\0b" -) - -(assert_return (invoke "4294967249") (f64.const 4294967249)) - -(assert_malformed - (module quote "(global f32 (f32.const _100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const +_100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const -_100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 99_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1__000))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const _1.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1.0_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1_.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1._0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const _1e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1e1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1_e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1e_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const _1.0e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1.0e1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1.0_e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1.0e_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1.0e+_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 1.0e_+1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const _0x100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0_x100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x_100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x00_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0xff__ffff))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x_1.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1.0_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1_.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1._0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x_1p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1p1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1_p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1p_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x_1.0p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1.0p1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1.0_p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1.0p_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1.0p+_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f32 (f32.const 0x1.0p_+1))") - "unknown operator" -) - -(assert_malformed - (module quote "(global f64 (f64.const _100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const +_100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const -_100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 99_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1__000))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const _1.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1.0_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1_.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1._0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const _1e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1e1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1_e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1e_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const _1.0e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1.0e1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1.0_e1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1.0e_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1.0e+_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 1.0e_+1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const _0x100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0_x100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x_100))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x00_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0xff__ffff))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x_1.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1.0_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1_.0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1._0))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x_1p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1p1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1_p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1p_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x_1.0p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1.0p1_))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1.0_p1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1.0p_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1.0p+_1))") - "unknown operator" -) -(assert_malformed - (module quote "(global f64 (f64.const 0x1.0p_+1))") - "unknown operator" -) diff --git a/libraries/wasm-jit/Test/spec/float_memory.wast b/libraries/wasm-jit/Test/spec/float_memory.wast deleted file mode 100644 index 3801158f92b..00000000000 --- a/libraries/wasm-jit/Test/spec/float_memory.wast +++ /dev/null @@ -1,157 +0,0 @@ -;; Test that floating-point load and store are bit-preserving. - -;; Test that load and store do not canonicalize NaNs as x87 does. - -(module - (memory (data "\00\00\a0\7f")) - - (func (export "f32.load") (result f32) (f32.load (i32.const 0))) - (func (export "i32.load") (result i32) (i32.load (i32.const 0))) - (func (export "f32.store") (f32.store (i32.const 0) (f32.const nan:0x200000))) - (func (export "i32.store") (i32.store (i32.const 0) (i32.const 0x7fa00000))) - (func (export "reset") (i32.store (i32.const 0) (i32.const 0))) -) - -(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) -(assert_return (invoke "f32.load") (f32.const nan:0x200000)) -(invoke "reset") -(assert_return (invoke "i32.load") (i32.const 0x0)) -(assert_return (invoke "f32.load") (f32.const 0.0)) -(invoke "f32.store") -(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) -(assert_return (invoke "f32.load") (f32.const nan:0x200000)) -(invoke "reset") -(assert_return (invoke "i32.load") (i32.const 0x0)) -(assert_return (invoke "f32.load") (f32.const 0.0)) -(invoke "i32.store") -(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) -(assert_return (invoke "f32.load") (f32.const nan:0x200000)) - -(module - (memory (data "\00\00\00\00\00\00\f4\7f")) - - (func (export "f64.load") (result f64) (f64.load (i32.const 0))) - (func (export "i64.load") (result i64) (i64.load (i32.const 0))) - (func (export "f64.store") (f64.store (i32.const 0) (f64.const nan:0x4000000000000))) - (func (export "i64.store") (i64.store (i32.const 0) (i64.const 0x7ff4000000000000))) - (func (export "reset") (i64.store (i32.const 0) (i64.const 0))) -) - -(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) -(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) -(invoke "reset") -(assert_return (invoke "i64.load") (i64.const 0x0)) -(assert_return (invoke "f64.load") (f64.const 0.0)) -(invoke "f64.store") -(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) -(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) -(invoke "reset") -(assert_return (invoke "i64.load") (i64.const 0x0)) -(assert_return (invoke "f64.load") (f64.const 0.0)) -(invoke "i64.store") -(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) -(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) - -;; Test that unaligned load and store do not canonicalize NaNs. - -(module - (memory (data "\00\00\00\a0\7f")) - - (func (export "f32.load") (result f32) (f32.load (i32.const 1))) - (func (export "i32.load") (result i32) (i32.load (i32.const 1))) - (func (export "f32.store") (f32.store (i32.const 1) (f32.const nan:0x200000))) - (func (export "i32.store") (i32.store (i32.const 1) (i32.const 0x7fa00000))) - (func (export "reset") (i32.store (i32.const 1) (i32.const 0))) -) - -(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) -(assert_return (invoke "f32.load") (f32.const nan:0x200000)) -(invoke "reset") -(assert_return (invoke "i32.load") (i32.const 0x0)) -(assert_return (invoke "f32.load") (f32.const 0.0)) -(invoke "f32.store") -(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) -(assert_return (invoke "f32.load") (f32.const nan:0x200000)) -(invoke "reset") -(assert_return (invoke "i32.load") (i32.const 0x0)) -(assert_return (invoke "f32.load") (f32.const 0.0)) -(invoke "i32.store") -(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) -(assert_return (invoke "f32.load") (f32.const nan:0x200000)) - -(module - (memory (data "\00\00\00\00\00\00\00\f4\7f")) - - (func (export "f64.load") (result f64) (f64.load (i32.const 1))) - (func (export "i64.load") (result i64) (i64.load (i32.const 1))) - (func (export "f64.store") (f64.store (i32.const 1) (f64.const nan:0x4000000000000))) - (func (export "i64.store") (i64.store (i32.const 1) (i64.const 0x7ff4000000000000))) - (func (export "reset") (i64.store (i32.const 1) (i64.const 0))) -) - -(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) -(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) -(invoke "reset") -(assert_return (invoke "i64.load") (i64.const 0x0)) -(assert_return (invoke "f64.load") (f64.const 0.0)) -(invoke "f64.store") -(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) -(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) -(invoke "reset") -(assert_return (invoke "i64.load") (i64.const 0x0)) -(assert_return (invoke "f64.load") (f64.const 0.0)) -(invoke "i64.store") -(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) -(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) - -;; Test that load and store do not canonicalize NaNs as some JS engines do. - -(module - (memory (data "\01\00\d0\7f")) - - (func (export "f32.load") (result f32) (f32.load (i32.const 0))) - (func (export "i32.load") (result i32) (i32.load (i32.const 0))) - (func (export "f32.store") (f32.store (i32.const 0) (f32.const nan:0x500001))) - (func (export "i32.store") (i32.store (i32.const 0) (i32.const 0x7fd00001))) - (func (export "reset") (i32.store (i32.const 0) (i32.const 0))) -) - -(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) -(assert_return (invoke "f32.load") (f32.const nan:0x500001)) -(invoke "reset") -(assert_return (invoke "i32.load") (i32.const 0x0)) -(assert_return (invoke "f32.load") (f32.const 0.0)) -(invoke "f32.store") -(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) -(assert_return (invoke "f32.load") (f32.const nan:0x500001)) -(invoke "reset") -(assert_return (invoke "i32.load") (i32.const 0x0)) -(assert_return (invoke "f32.load") (f32.const 0.0)) -(invoke "i32.store") -(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) -(assert_return (invoke "f32.load") (f32.const nan:0x500001)) - -(module - (memory (data "\01\00\00\00\00\00\fc\7f")) - - (func (export "f64.load") (result f64) (f64.load (i32.const 0))) - (func (export "i64.load") (result i64) (i64.load (i32.const 0))) - (func (export "f64.store") (f64.store (i32.const 0) (f64.const nan:0xc000000000001))) - (func (export "i64.store") (i64.store (i32.const 0) (i64.const 0x7ffc000000000001))) - (func (export "reset") (i64.store (i32.const 0) (i64.const 0))) -) - -(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) -(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) -(invoke "reset") -(assert_return (invoke "i64.load") (i64.const 0x0)) -(assert_return (invoke "f64.load") (f64.const 0.0)) -(invoke "f64.store") -(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) -(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) -(invoke "reset") -(assert_return (invoke "i64.load") (i64.const 0x0)) -(assert_return (invoke "f64.load") (f64.const 0.0)) -(invoke "i64.store") -(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) -(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) diff --git a/libraries/wasm-jit/Test/spec/float_misc.wast b/libraries/wasm-jit/Test/spec/float_misc.wast deleted file mode 100644 index 095b8d8271d..00000000000 --- a/libraries/wasm-jit/Test/spec/float_misc.wast +++ /dev/null @@ -1,678 +0,0 @@ -;; Platforms intended to run WebAssembly must support IEEE 754 arithmetic. -;; This testsuite is not currently sufficient for full IEEE 754 conformance -;; testing; platforms are currently expected to meet these requirements in -;; their own way (widely-used hardware platforms already do this). -;; -;; What this testsuite does test is that (a) the platform is basically IEEE 754 -;; rather than something else entirely, (b) it's configured correctly for -;; WebAssembly (rounding direction, exception masks, precision level, subnormal -;; mode, etc.), (c) the WebAssembly implementation doesn't perform any common -;; value-changing optimizations, and (d) that the WebAssembly implementation -;; doesn't exhibit any known implementation bugs. -;; -;; This file supplements f32.wast, f64.wast, f32_bitwise.wast, f64_bitwise.wast, -;; f32_cmp.wast, and f64_cmp.wast with additional single-instruction tests -;; covering additional miscellaneous interesting cases. - -(module - (func (export "f32.add") (param $x f32) (param $y f32) (result f32) (f32.add (get_local $x) (get_local $y))) - (func (export "f32.sub") (param $x f32) (param $y f32) (result f32) (f32.sub (get_local $x) (get_local $y))) - (func (export "f32.mul") (param $x f32) (param $y f32) (result f32) (f32.mul (get_local $x) (get_local $y))) - (func (export "f32.div") (param $x f32) (param $y f32) (result f32) (f32.div (get_local $x) (get_local $y))) - (func (export "f32.sqrt") (param $x f32) (result f32) (f32.sqrt (get_local $x))) - (func (export "f32.abs") (param $x f32) (result f32) (f32.abs (get_local $x))) - (func (export "f32.neg") (param $x f32) (result f32) (f32.neg (get_local $x))) - (func (export "f32.copysign") (param $x f32) (param $y f32) (result f32) (f32.copysign (get_local $x) (get_local $y))) - (func (export "f32.ceil") (param $x f32) (result f32) (f32.ceil (get_local $x))) - (func (export "f32.floor") (param $x f32) (result f32) (f32.floor (get_local $x))) - (func (export "f32.trunc") (param $x f32) (result f32) (f32.trunc (get_local $x))) - (func (export "f32.nearest") (param $x f32) (result f32) (f32.nearest (get_local $x))) - (func (export "f32.min") (param $x f32) (param $y f32) (result f32) (f32.min (get_local $x) (get_local $y))) - (func (export "f32.max") (param $x f32) (param $y f32) (result f32) (f32.max (get_local $x) (get_local $y))) - - (func (export "f64.add") (param $x f64) (param $y f64) (result f64) (f64.add (get_local $x) (get_local $y))) - (func (export "f64.sub") (param $x f64) (param $y f64) (result f64) (f64.sub (get_local $x) (get_local $y))) - (func (export "f64.mul") (param $x f64) (param $y f64) (result f64) (f64.mul (get_local $x) (get_local $y))) - (func (export "f64.div") (param $x f64) (param $y f64) (result f64) (f64.div (get_local $x) (get_local $y))) - (func (export "f64.sqrt") (param $x f64) (result f64) (f64.sqrt (get_local $x))) - (func (export "f64.abs") (param $x f64) (result f64) (f64.abs (get_local $x))) - (func (export "f64.neg") (param $x f64) (result f64) (f64.neg (get_local $x))) - (func (export "f64.copysign") (param $x f64) (param $y f64) (result f64) (f64.copysign (get_local $x) (get_local $y))) - (func (export "f64.ceil") (param $x f64) (result f64) (f64.ceil (get_local $x))) - (func (export "f64.floor") (param $x f64) (result f64) (f64.floor (get_local $x))) - (func (export "f64.trunc") (param $x f64) (result f64) (f64.trunc (get_local $x))) - (func (export "f64.nearest") (param $x f64) (result f64) (f64.nearest (get_local $x))) - (func (export "f64.min") (param $x f64) (param $y f64) (result f64) (f64.min (get_local $x) (get_local $y))) - (func (export "f64.max") (param $x f64) (param $y f64) (result f64) (f64.max (get_local $x) (get_local $y))) -) - -;; Miscellaneous values. -(assert_return (invoke "f32.add" (f32.const 1.1234567890) (f32.const 1.2345e-10)) (f32.const 1.123456789)) -(assert_return (invoke "f64.add" (f64.const 1.1234567890) (f64.const 1.2345e-10)) (f64.const 0x1.1f9add37c11f7p+0)) - -;; Test adding the greatest value to 1.0 that rounds back to 1.0, and the -;; least that rounds to something greater. -(assert_return (invoke "f32.add" (f32.const 1.0) (f32.const 0x1p-24)) (f32.const 0x1.0p+0)) -(assert_return (invoke "f32.add" (f32.const 1.0) (f32.const 0x1.000002p-24)) (f32.const 0x1.000002p+0)) -(assert_return (invoke "f64.add" (f64.const 1.0) (f64.const 0x1p-53)) (f64.const 0x1.0p+0)) -(assert_return (invoke "f64.add" (f64.const 1.0) (f64.const 0x1.0000000000001p-53)) (f64.const 0x1.0000000000001p+0)) - -;; Max subnormal + min subnormal = min normal. -(assert_return (invoke "f32.add" (f32.const 0x1p-149) (f32.const 0x1.fffffcp-127)) (f32.const 0x1p-126)) -(assert_return (invoke "f64.add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.fffffffffffffp-1022)) (f64.const 0x1p-1022)) - -;; Test for a case of double rounding, example from: -;; http://perso.ens-lyon.fr/jean-michel.muller/Handbook.html -;; section 3.3.1: A typical problem: "double rounding" -(assert_return (invoke "f32.add" (f32.const 0x1p+31) (f32.const 1024.25)) (f32.const 0x1.000008p+31)) -(assert_return (invoke "f64.add" (f64.const 0x1p+63) (f64.const 1024.25)) (f64.const 0x1.0000000000001p+63)) - -;; Test a case that was "tricky" on MMIX. -;; http://mmix.cs.hm.edu/bugs/bug_rounding.html -(assert_return (invoke "f64.add" (f64.const -0x1p-1008) (f64.const 0x0.0000000001716p-1022)) (f64.const -0x1.fffffffffffffp-1009)) - -;; http://www.vinc17.org/software/tst-ieee754.xsl -(assert_return (invoke "f64.add" (f64.const 9007199254740992) (f64.const 1.00001)) (f64.const 9007199254740994)) - -;; http://www.vinc17.org/software/test.java -(assert_return (invoke "f64.add" (f64.const 9007199254740994) (f64.const 0x1.fffep-1)) (f64.const 9007199254740994)) - -;; Computations that round differently in ties-to-odd mode. -(assert_return (invoke "f32.add" (f32.const 0x1p23) (f32.const 0x1p-1)) (f32.const 0x1p23)) -(assert_return (invoke "f32.add" (f32.const 0x1.000002p+23) (f32.const 0x1p-1)) (f32.const 0x1.000004p+23)) -(assert_return (invoke "f64.add" (f64.const 0x1p52) (f64.const 0x1p-1)) (f64.const 0x1p52)) -(assert_return (invoke "f64.add" (f64.const 0x1.0000000000001p+52) (f64.const 0x1p-1)) (f64.const 0x1.0000000000002p+52)) - -;; Computations that round differently in round-upward mode. -(assert_return (invoke "f32.add" (f32.const -0x1.39675ap+102) (f32.const 0x1.76c94cp-99)) (f32.const -0x1.39675ap+102)) -(assert_return (invoke "f32.add" (f32.const 0x1.6c0f24p+67) (f32.const -0x1.2b92dp+52)) (f32.const 0x1.6c0cccp+67)) -(assert_return (invoke "f32.add" (f32.const 0x1.e62318p-83) (f32.const 0x1.f74abep-125)) (f32.const 0x1.e62318p-83)) -(assert_return (invoke "f32.add" (f32.const 0x1.2a71d4p+39) (f32.const -0x1.c9f10cp+55)) (f32.const -0x1.c9efe2p+55)) -(assert_return (invoke "f32.add" (f32.const 0x1.f8f736p-15) (f32.const 0x1.7bd45ep+106)) (f32.const 0x1.7bd45ep+106)) -(assert_return (invoke "f64.add" (f64.const 0x1.f33e1fbca27aap-413) (f64.const -0x1.6b192891ed61p+249)) (f64.const -0x1.6b192891ed61p+249)) -(assert_return (invoke "f64.add" (f64.const -0x1.46f75d130eeb1p+76) (f64.const 0x1.25275d6f7a4acp-184)) (f64.const -0x1.46f75d130eeb1p+76)) -(assert_return (invoke "f64.add" (f64.const 0x1.04dec9265a731p-148) (f64.const -0x1.11eed4e8c127cp-12)) (f64.const -0x1.11eed4e8c127cp-12)) -(assert_return (invoke "f64.add" (f64.const 0x1.05773b7166b0ap+497) (f64.const 0x1.134022f2da37bp+66)) (f64.const 0x1.05773b7166b0ap+497)) -(assert_return (invoke "f64.add" (f64.const 0x1.ef4f794282a82p+321) (f64.const 0x1.14a82266badep+394)) (f64.const 0x1.14a82266badep+394)) - -;; Computations that round differently in round-downward mode. -(assert_return (invoke "f32.add" (f32.const 0x1.1bf976p+72) (f32.const -0x1.7f5868p+20)) (f32.const 0x1.1bf976p+72)) -(assert_return (invoke "f32.add" (f32.const 0x1.7f9c6cp-45) (f32.const -0x1.b9bb0ep-78)) (f32.const 0x1.7f9c6cp-45)) -(assert_return (invoke "f32.add" (f32.const -0x1.32d1bcp-42) (f32.const 0x1.f7d214p+125)) (f32.const 0x1.f7d214p+125)) -(assert_return (invoke "f32.add" (f32.const -0x1.8e5c0ep-44) (f32.const -0x1.3afa4cp-106)) (f32.const -0x1.8e5c0ep-44)) -(assert_return (invoke "f32.add" (f32.const 0x1.13cd78p-10) (f32.const -0x1.3af316p-107)) (f32.const 0x1.13cd78p-10)) -(assert_return (invoke "f64.add" (f64.const 0x1.f8dd15ca97d4ap+179) (f64.const -0x1.367317d1fe8bfp-527)) (f64.const 0x1.f8dd15ca97d4ap+179)) -(assert_return (invoke "f64.add" (f64.const 0x1.5db08d739228cp+155) (f64.const -0x1.fb316fa147dcbp-61)) (f64.const 0x1.5db08d739228cp+155)) -(assert_return (invoke "f64.add" (f64.const 0x1.bbb403cb85c07p-404) (f64.const -0x1.7e44046b8bbf3p-979)) (f64.const 0x1.bbb403cb85c07p-404)) -(assert_return (invoke "f64.add" (f64.const -0x1.34d38af291831p+147) (f64.const -0x1.9890b47439953p+139)) (f64.const -0x1.366c1ba705bcap+147)) -(assert_return (invoke "f64.add" (f64.const -0x1.b61dedf4e0306p+3) (f64.const 0x1.09e2f31773c4ap+290)) (f64.const 0x1.09e2f31773c4ap+290)) - -;; Computations that round differently in round-toward-zero mode. -(assert_return (invoke "f32.add" (f32.const -0x1.129bd8p-117) (f32.const 0x1.c75012p-43)) (f32.const 0x1.c75012p-43)) -(assert_return (invoke "f32.add" (f32.const -0x1.c204a2p-16) (f32.const 0x1.80b132p-27)) (f32.const -0x1.c1d48cp-16)) -(assert_return (invoke "f32.add" (f32.const -0x1.decc1cp+36) (f32.const 0x1.c688dap-109)) (f32.const -0x1.decc1cp+36)) -(assert_return (invoke "f32.add" (f32.const 0x1.61ce6ap-118) (f32.const -0x1.772892p+30)) (f32.const -0x1.772892p+30)) -(assert_return (invoke "f32.add" (f32.const -0x1.3dc826p-120) (f32.const 0x1.fc3f66p+95)) (f32.const 0x1.fc3f66p+95)) -(assert_return (invoke "f64.add" (f64.const 0x1.bf68acc263a0fp-777) (f64.const -0x1.5f9352965e5a6p+1004)) (f64.const -0x1.5f9352965e5a6p+1004)) -(assert_return (invoke "f64.add" (f64.const -0x1.76eaa70911f51p+516) (f64.const -0x1.2d746324ce47ap+493)) (f64.const -0x1.76eaa963fabb6p+516)) -(assert_return (invoke "f64.add" (f64.const -0x1.b637d82c15a7ap-967) (f64.const 0x1.cc654ccab4152p-283)) (f64.const 0x1.cc654ccab4152p-283)) -(assert_return (invoke "f64.add" (f64.const -0x1.a5b1fb66e846ep-509) (f64.const 0x1.4bdd36f0bb5ccp-860)) (f64.const -0x1.a5b1fb66e846ep-509)) -(assert_return (invoke "f64.add" (f64.const -0x1.14108da880f9ep+966) (f64.const 0x1.417f35701e89fp+800)) (f64.const -0x1.14108da880f9ep+966)) - -;; Computations that round differently on x87. -(assert_return (invoke "f64.add" (f64.const -0x1.fa0caf21ffebcp+804) (f64.const 0x1.4ca8fdcff89f9p+826)) (f64.const 0x1.4ca8f5e7c5e31p+826)) -(assert_return (invoke "f64.add" (f64.const 0x1.016f1fcbdfd38p+784) (f64.const 0x1.375dffcbc9a2cp+746)) (f64.const 0x1.016f1fcbe4b0fp+784)) -(assert_return (invoke "f64.add" (f64.const -0x1.dffda6d5bff3ap+624) (f64.const 0x1.f9e8cc2dff782p+674)) (f64.const 0x1.f9e8cc2dff77bp+674)) -(assert_return (invoke "f64.add" (f64.const 0x1.fff4b43687dfbp+463) (f64.const 0x1.0fd5617c4a809p+517)) (f64.const 0x1.0fd5617c4a809p+517)) -(assert_return (invoke "f64.add" (f64.const 0x1.535d380035da2p-995) (f64.const 0x1.cce37dddbb73bp-963)) (f64.const 0x1.cce37ddf0ed0fp-963)) - -;; Computations that round differently when computed via f32. -(assert_return (invoke "f64.add" (f64.const -0x1.d91cd3fc0c66fp+752) (f64.const -0x1.4e18c80229734p+952)) (f64.const -0x1.4e18c80229734p+952)) -(assert_return (invoke "f64.add" (f64.const 0x1.afc70fd36e372p+193) (f64.const -0x1.bd10a9b377b46p+273)) (f64.const -0x1.bd10a9b377b46p+273)) -(assert_return (invoke "f64.add" (f64.const -0x1.2abd570b078b2p+302) (f64.const 0x1.b3c1ad759cb5bp-423)) (f64.const -0x1.2abd570b078b2p+302)) -(assert_return (invoke "f64.add" (f64.const -0x1.5b2ae84c0686cp-317) (f64.const -0x1.dba7a1c022823p+466)) (f64.const -0x1.dba7a1c022823p+466)) -(assert_return (invoke "f64.add" (f64.const -0x1.ac627bd7cbf38p-198) (f64.const 0x1.2312e265b8d59p-990)) (f64.const -0x1.ac627bd7cbf38p-198)) - -;; Computations that utilize the maximum exponent value to avoid overflow. -(assert_return (invoke "f32.add" (f32.const 0x1.2b91ap+116) (f32.const 0x1.cbcd52p+127)) (f32.const 0x1.cbf2c4p+127)) -(assert_return (invoke "f32.add" (f32.const 0x1.96f392p+127) (f32.const -0x1.6b3fecp+107)) (f32.const 0x1.96f37cp+127)) -(assert_return (invoke "f32.add" (f32.const 0x1.132f1cp+118) (f32.const -0x1.63d632p+127)) (f32.const -0x1.634c9ap+127)) -(assert_return (invoke "f32.add" (f32.const -0x1.1dda64p+120) (f32.const -0x1.ef02ep+127)) (f32.const -0x1.f13e94p+127)) -(assert_return (invoke "f32.add" (f32.const -0x1.4ad8dap+127) (f32.const -0x1.eae082p+125)) (f32.const -0x1.c590fap+127)) -(assert_return (invoke "f64.add" (f64.const 0x1.017099f2a4b8bp+1023) (f64.const 0x1.1f63b28f05454p+981)) (f64.const 0x1.017099f2a5009p+1023)) -(assert_return (invoke "f64.add" (f64.const 0x1.d88b6c74984efp+1023) (f64.const 0x1.33b444775eabcp+990)) (f64.const 0x1.d88b6c7532291p+1023)) -(assert_return (invoke "f64.add" (f64.const -0x1.84576422fdf5p+1023) (f64.const 0x1.60ee6aa12fb9cp+1012)) (f64.const -0x1.842b4655a9cf1p+1023)) -(assert_return (invoke "f64.add" (f64.const -0x1.9aaace3e79f7dp+1001) (f64.const 0x1.e4068af295cb6p+1023)) (f64.const 0x1.e4068487ea926p+1023)) -(assert_return (invoke "f64.add" (f64.const 0x1.06cdae79f27b9p+1023) (f64.const -0x1.e05cb0c96f975p+991)) (f64.const 0x1.06cdae78121eep+1023)) - -;; Computations that utilize the minimum exponent value. -(assert_return (invoke "f32.add" (f32.const 0x1.6a1a2p-127) (f32.const 0x1.378p-140)) (f32.const 0x1.6a23dcp-127)) -(assert_return (invoke "f32.add" (f32.const 0x1.28p-144) (f32.const -0x1p-148)) (f32.const 0x1.18p-144)) -(assert_return (invoke "f32.add" (f32.const -0x1p-146) (f32.const 0x1.c3cap-128)) (f32.const 0x1.c3c9cp-128)) -(assert_return (invoke "f32.add" (f32.const -0x1.4p-145) (f32.const 0x1.424052p-122)) (f32.const 0x1.42405p-122)) -(assert_return (invoke "f32.add" (f32.const 0x1.c5p-141) (f32.const -0x1.72f8p-135)) (f32.const -0x1.6be4p-135)) -(assert_return (invoke "f64.add" (f64.const 0x1.4774c681d1e21p-1022) (f64.const -0x1.271e58e9f58cap-1021)) (f64.const -0x1.06c7eb5219373p-1022)) -(assert_return (invoke "f64.add" (f64.const 0x1.10b3a75e31916p-1021) (f64.const -0x1.ffb82b0e868a7p-1021)) (f64.const -0x1.de090760a9f22p-1022)) -(assert_return (invoke "f64.add" (f64.const -0x0.6b58448b8098ap-1022) (f64.const -0x1.579796ed04cbep-1022)) (f64.const -0x1.c2efdb7885648p-1022)) -(assert_return (invoke "f64.add" (f64.const 0x1.9eb9e7baae8d1p-1020) (f64.const -0x1.d58e136f8c6eep-1020)) (f64.const -0x0.db50aed377874p-1022)) -(assert_return (invoke "f64.add" (f64.const -0x1.f1115deeafa0bp-1022) (f64.const 0x1.221b1c87dca29p-1022)) (f64.const -0x0.cef64166d2fe2p-1022)) - -;; Test an add of the second-greatest finite value with the distance to greatest -;; finite value. -(assert_return (invoke "f32.add" (f32.const 0x1.fffffcp+127) (f32.const 0x1p+104)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "f64.add" (f64.const 0x1.ffffffffffffep+1023) (f64.const 0x1p+971)) (f64.const 0x1.fffffffffffffp+1023)) - -;; http://news.harvard.edu/gazette/story/2013/09/dawn-of-a-revolution/ -(assert_return (invoke "f32.add" (f32.const 2.0) (f32.const 2.0)) (f32.const 4.0)) -(assert_return (invoke "f64.add" (f64.const 2.0) (f64.const 2.0)) (f64.const 4.0)) - -;; Test rounding above the greatest finite value. -(assert_return (invoke "f32.add" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+102)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "f32.add" (f32.const 0x1.fffffep+127) (f32.const 0x1p+103)) (f32.const inf)) -(assert_return (invoke "f64.add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+969)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "f64.add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+970)) (f64.const inf)) - -;; Test for a historic spreadsheet bug. -;; https://blogs.office.com/2007/09/25/calculation-issue-update/ -(assert_return (invoke "f32.sub" (f32.const 65536.0) (f32.const 0x1p-37)) (f32.const 65536.0)) -(assert_return (invoke "f64.sub" (f64.const 65536.0) (f64.const 0x1p-37)) (f64.const 0x1.fffffffffffffp+15)) - -;; Test subtracting the greatest value from 1.0 that rounds back to 1.0, and the -;; least that rounds to something less. -(assert_return (invoke "f32.sub" (f32.const 1.0) (f32.const 0x1p-25)) (f32.const 0x1.0p+0)) -(assert_return (invoke "f32.sub" (f32.const 1.0) (f32.const 0x1.000002p-25)) (f32.const 0x1.fffffep-1)) -(assert_return (invoke "f64.sub" (f64.const 1.0) (f64.const 0x1p-54)) (f64.const 0x1.0p+0)) -(assert_return (invoke "f64.sub" (f64.const 1.0) (f64.const 0x1.0000000000001p-54)) (f64.const 0x1.fffffffffffffp-1)) - -;; Computations that round differently in round-upward mode. -(assert_return (invoke "f32.sub" (f32.const 0x1.ee2466p-106) (f32.const -0x1.16277ep+119)) (f32.const 0x1.16277ep+119)) -(assert_return (invoke "f32.sub" (f32.const -0x1.446f9ep+119) (f32.const -0x1.4396a4p+43)) (f32.const -0x1.446f9ep+119)) -(assert_return (invoke "f32.sub" (f32.const 0x1.74773cp+0) (f32.const -0x1.a25512p-82)) (f32.const 0x1.74773cp+0)) -(assert_return (invoke "f32.sub" (f32.const 0x1.9345c4p-117) (f32.const 0x1.6792c2p-76)) (f32.const -0x1.6792c2p-76)) -(assert_return (invoke "f32.sub" (f32.const 0x1.9ecfa4p-18) (f32.const -0x1.864b44p-107)) (f32.const 0x1.9ecfa4p-18)) -(assert_return (invoke "f64.sub" (f64.const -0x1.5b798875e7845p-333) (f64.const -0x1.b5147117452fep-903)) (f64.const -0x1.5b798875e7845p-333)) -(assert_return (invoke "f64.sub" (f64.const -0x1.6c87baeb6d72dp+552) (f64.const -0x1.64fb35d4b5571p-158)) (f64.const -0x1.6c87baeb6d72dp+552)) -(assert_return (invoke "f64.sub" (f64.const 0x1.b3d369fcf74bp-461) (f64.const -0x1.ea1668c0dec93p-837)) (f64.const 0x1.b3d369fcf74bp-461)) -(assert_return (invoke "f64.sub" (f64.const 0x1.0abd449353eadp-1005) (f64.const -0x1.0422ea3e82ee9p+154)) (f64.const 0x1.0422ea3e82ee9p+154)) -(assert_return (invoke "f64.sub" (f64.const -0x1.aadbc6b43cc3dp-143) (f64.const -0x1.e7f922ef1ee58p-539)) (f64.const -0x1.aadbc6b43cc3dp-143)) - -;; Computations that round differently in round-downward mode. -(assert_return (invoke "f32.sub" (f32.const -0x1.61e262p+108) (f32.const -0x1.baf3e4p+112)) (f32.const 0x1.a4d5bep+112)) -(assert_return (invoke "f32.sub" (f32.const -0x1.62c2f6p+109) (f32.const 0x1.6e514ap+6)) (f32.const -0x1.62c2f6p+109)) -(assert_return (invoke "f32.sub" (f32.const -0x1.287c94p-83) (f32.const 0x1.0f2f9cp-24)) (f32.const -0x1.0f2f9cp-24)) -(assert_return (invoke "f32.sub" (f32.const -0x1.c8825cp-77) (f32.const -0x1.4aead6p-12)) (f32.const 0x1.4aead6p-12)) -(assert_return (invoke "f32.sub" (f32.const -0x1.2976a4p+99) (f32.const 0x1.c6e3b8p-59)) (f32.const -0x1.2976a4p+99)) -(assert_return (invoke "f64.sub" (f64.const -0x1.76cb28ae6c045p+202) (f64.const -0x1.0611f2af4e9b9p+901)) (f64.const 0x1.0611f2af4e9b9p+901)) -(assert_return (invoke "f64.sub" (f64.const 0x1.baf35eff22e9ep-368) (f64.const 0x1.5c3e08ecf73ecp-451)) (f64.const 0x1.baf35eff22e9ep-368)) -(assert_return (invoke "f64.sub" (f64.const -0x1.8fd354b376f1fp-200) (f64.const 0x1.513c860f386ffp-508)) (f64.const -0x1.8fd354b376f1fp-200)) -(assert_return (invoke "f64.sub" (f64.const -0x1.760d447230ae6p-992) (f64.const -0x1.16f788438ae3ep-328)) (f64.const 0x1.16f788438ae3ep-328)) -(assert_return (invoke "f64.sub" (f64.const -0x1.73aab4fcfc7ap+112) (f64.const 0x1.7c589f990b884p+171)) (f64.const -0x1.7c589f990b884p+171)) - -;; Computations that round differently in round-toward-zero mode. -(assert_return (invoke "f32.sub" (f32.const 0x1.ea264cp+95) (f32.const 0x1.852988p-15)) (f32.const 0x1.ea264cp+95)) -(assert_return (invoke "f32.sub" (f32.const -0x1.14ec7cp+19) (f32.const -0x1.0ad3fep-35)) (f32.const -0x1.14ec7cp+19)) -(assert_return (invoke "f32.sub" (f32.const -0x1.3251dap-36) (f32.const -0x1.49c97ep-56)) (f32.const -0x1.3251c6p-36)) -(assert_return (invoke "f32.sub" (f32.const -0x1.13565ep-14) (f32.const 0x1.2f89a8p-13)) (f32.const -0x1.b934d8p-13)) -(assert_return (invoke "f32.sub" (f32.const -0x1.6032b6p-33) (f32.const -0x1.bb5196p-104)) (f32.const -0x1.6032b6p-33)) -(assert_return (invoke "f64.sub" (f64.const -0x1.b5b0797af491p-157) (f64.const -0x1.694b8348189e8p+722)) (f64.const 0x1.694b8348189e8p+722)) -(assert_return (invoke "f64.sub" (f64.const -0x1.72b142826ed73p+759) (f64.const -0x1.010477bc9afbdp+903)) (f64.const 0x1.010477bc9afbdp+903)) -(assert_return (invoke "f64.sub" (f64.const 0x1.83273b6bb94cfp-796) (f64.const 0x1.1a93f948a2abbp+181)) (f64.const -0x1.1a93f948a2abbp+181)) -(assert_return (invoke "f64.sub" (f64.const -0x1.207e7156cbf2p-573) (f64.const 0x1.cf3f12fd3814dp-544)) (f64.const -0x1.cf3f13063c086p-544)) -(assert_return (invoke "f64.sub" (f64.const -0x1.837e6844f1718p-559) (f64.const -0x1.1c29b757f98abp-14)) (f64.const 0x1.1c29b757f98abp-14)) - -;; Computations that round differently on x87. -(assert_return (invoke "f64.sub" (f64.const 0x1.c21151a709b6cp-78) (f64.const 0x1.0a12fff8910f6p-115)) (f64.const 0x1.c21151a701663p-78)) -(assert_return (invoke "f64.sub" (f64.const 0x1.c57912aae2f64p-982) (f64.const 0x1.dbfbd4800b7cfp-1010)) (f64.const 0x1.c579128d2338fp-982)) -(assert_return (invoke "f64.sub" (f64.const 0x1.ffef4399af9c6p-254) (f64.const 0x1.edb96dfaea8b1p-200)) (f64.const -0x1.edb96dfaea8b1p-200)) -(assert_return (invoke "f64.sub" (f64.const -0x1.363eee391cde2p-39) (f64.const -0x1.a65462000265fp-69)) (f64.const -0x1.363eee32838c9p-39)) -(assert_return (invoke "f64.sub" (f64.const 0x1.59016dba002a1p-25) (f64.const 0x1.5d4374f124cccp-3)) (f64.const -0x1.5d436f8d1f15dp-3)) - -;; Computations that round differently when computed via f32. -(assert_return (invoke "f64.sub" (f64.const -0x1.18196bca005cfp-814) (f64.const -0x1.db7b01ce3f52fp-766)) (f64.const 0x1.db7b01ce3f51dp-766)) -(assert_return (invoke "f64.sub" (f64.const -0x1.d17b3528d219p+33) (f64.const 0x1.fd739d4ea220ap+367)) (f64.const -0x1.fd739d4ea220ap+367)) -(assert_return (invoke "f64.sub" (f64.const 0x1.dea46994de319p+114) (f64.const 0x1.b5b19cd55c7d3p-590)) (f64.const 0x1.dea46994de319p+114)) -(assert_return (invoke "f64.sub" (f64.const 0x1.b60f9b2fbd9ecp-489) (f64.const -0x1.6f81c59ec5b8ep-694)) (f64.const 0x1.b60f9b2fbd9ecp-489)) -(assert_return (invoke "f64.sub" (f64.const 0x1.5e423fe8571f4p-57) (f64.const 0x1.9624ed7c162dfp-618)) (f64.const 0x1.5e423fe8571f4p-57)) - -;; pow(e, π) - π -;; https://xkcd.com/217 -(assert_return (invoke "f32.sub" (f32.const 0x1.724046p+4) (f32.const 0x1.921fb6p+1)) (f32.const 0x1.3ffc5p+4)) -(assert_return (invoke "f64.sub" (f64.const 0x1.724046eb0933ap+4) (f64.const 0x1.921fb54442d18p+1)) (f64.const 0x1.3ffc504280d97p+4)) - -;; https://www.cnet.com/news/googles-calculator-muffs-some-math-problems/ -(assert_return (invoke "f32.sub" (f32.const 2999999) (f32.const 2999998)) (f32.const 1.0)) -(assert_return (invoke "f32.sub" (f32.const 1999999) (f32.const 1999995)) (f32.const 4.0)) -(assert_return (invoke "f32.sub" (f32.const 1999999) (f32.const 1999993)) (f32.const 6.0)) -(assert_return (invoke "f32.sub" (f32.const 400002) (f32.const 400001)) (f32.const 1.0)) -(assert_return (invoke "f32.sub" (f32.const 400002) (f32.const 400000)) (f32.const 2.0)) -(assert_return (invoke "f64.sub" (f64.const 2999999999999999) (f64.const 2999999999999998)) (f64.const 1.0)) -(assert_return (invoke "f64.sub" (f64.const 1999999999999999) (f64.const 1999999999999995)) (f64.const 4.0)) -(assert_return (invoke "f64.sub" (f64.const 1999999999999999) (f64.const 1999999999999993)) (f64.const 6.0)) -(assert_return (invoke "f64.sub" (f64.const 400000000000002) (f64.const 400000000000001)) (f64.const 1.0)) -(assert_return (invoke "f64.sub" (f64.const 400000000000002) (f64.const 400000000000000)) (f64.const 2.0)) - -;; Min normal - max subnormal = min subnormal. -(assert_return (invoke "f32.sub" (f32.const 0x1p-126) (f32.const 0x1.fffffcp-127)) (f32.const 0x1p-149)) -(assert_return (invoke "f64.sub" (f64.const 0x1p-1022) (f64.const 0x0.fffffffffffffp-1022)) (f64.const 0x0.0000000000001p-1022)) - -;; Test subtraction of numbers very close to 1. -(assert_return (invoke "f32.sub" (f32.const 0x1.000002p+0) (f32.const 0x1.fffffep-1)) (f32.const 0x1.8p-23)) -(assert_return (invoke "f32.sub" (f32.const 0x1.000002p+0) (f32.const 0x1.0p+0)) (f32.const 0x1p-23)) -(assert_return (invoke "f32.sub" (f32.const 0x1p+0) (f32.const 0x1.fffffep-1)) (f32.const 0x1p-24)) -(assert_return (invoke "f64.sub" (f64.const 0x1.0000000000001p+0) (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1.8p-52)) -(assert_return (invoke "f64.sub" (f64.const 0x1.0000000000001p+0) (f64.const 0x1.0p+0)) (f64.const 0x1p-52)) -(assert_return (invoke "f64.sub" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1p-53)) - -;; Test the least value that can be subtracted from the max value to produce a -;; different value. -(assert_return (invoke "f32.sub" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+102)) (f32.const 0x1.fffffep+127)) -(assert_return (invoke "f32.sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p+103)) (f32.const 0x1.fffffcp+127)) -(assert_return (invoke "f64.sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+969)) (f64.const 0x1.fffffffffffffp+1023)) -(assert_return (invoke "f64.sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+970)) (f64.const 0x1.ffffffffffffep+1023)) - -;; Miscellaneous values. -(assert_return (invoke "f32.mul" (f32.const 1e15) (f32.const 1e15)) (f32.const 0x1.93e592p+99)) -(assert_return (invoke "f32.mul" (f32.const 1e20) (f32.const 1e20)) (f32.const inf)) -(assert_return (invoke "f32.mul" (f32.const 1e25) (f32.const 1e25)) (f32.const inf)) -(assert_return (invoke "f64.mul" (f64.const 1e15) (f64.const 1e15)) (f64.const 0x1.93e5939a08ceap+99)) -(assert_return (invoke "f64.mul" (f64.const 1e20) (f64.const 1e20)) (f64.const 0x1.d6329f1c35ca5p+132)) -(assert_return (invoke "f64.mul" (f64.const 1e25) (f64.const 1e25)) (f64.const 0x1.11b0ec57e649bp+166)) - -;; Test for a case of double rounding, example from: -;; http://perso.ens-lyon.fr/jean-michel.muller/Handbook.html -;; section 3.3.1: A typical problem: "double rounding" -(assert_return (invoke "f32.mul" (f32.const 1848874880.0) (f32.const 19954563072.0)) (f32.const 0x1.000002p+65)) -(assert_return (invoke "f64.mul" (f64.const 1848874847.0) (f64.const 19954562207.0)) (f64.const 3.6893488147419111424e+19)) - -;; Test for a historic spreadsheet bug. -;; http://www.joelonsoftware.com/items/2007/09/26b.html -(assert_return (invoke "f32.mul" (f32.const 77.1) (f32.const 850)) (f32.const 65535)) -(assert_return (invoke "f64.mul" (f64.const 77.1) (f64.const 850)) (f64.const 65534.99999999999272404)) - -;; Computations that round differently in round-upward mode. -(assert_return (invoke "f32.mul" (f32.const -0x1.14df2ep+61) (f32.const 0x1.748878p-36)) (f32.const -0x1.92e7e8p+25)) -(assert_return (invoke "f32.mul" (f32.const -0x1.5629e2p+102) (f32.const -0x1.c33012p-102)) (f32.const 0x1.2d8604p+1)) -(assert_return (invoke "f32.mul" (f32.const -0x1.b17694p+92) (f32.const -0x1.e4b56ap-97)) (f32.const 0x1.9a5baep-4)) -(assert_return (invoke "f32.mul" (f32.const -0x1.1626a6p+79) (f32.const -0x1.c57d7p-75)) (f32.const 0x1.ecbaaep+4)) -(assert_return (invoke "f32.mul" (f32.const 0x1.7acf72p+53) (f32.const 0x1.6c89acp+5)) (f32.const 0x1.0db556p+59)) -(assert_return (invoke "f64.mul" (f64.const -0x1.25c293f6f37e4p+425) (f64.const 0x1.f5fd4fa41c6d8p+945)) (f64.const -inf)) -(assert_return (invoke "f64.mul" (f64.const -0x1.cc1ae79fffc5bp-986) (f64.const -0x1.c36ccc2861ca6p-219)) (f64.const 0x0p+0)) -(assert_return (invoke "f64.mul" (f64.const 0x1.c0232b3e64b56p+606) (f64.const -0x1.f6939cf3affaap+106)) (f64.const -0x1.b7e3aedf190d3p+713)) -(assert_return (invoke "f64.mul" (f64.const -0x1.60f289966b271p-313) (f64.const 0x1.28a5497f0c259p+583)) (f64.const -0x1.98fc50bcec259p+270)) -(assert_return (invoke "f64.mul" (f64.const 0x1.37dab12d3afa2p+795) (f64.const 0x1.81e156bd393f1p-858)) (f64.const 0x1.d6126554b8298p-63)) - -;; Computations that round differently in round-downward mode. -(assert_return (invoke "f32.mul" (f32.const -0x1.3f57a2p-89) (f32.const -0x1.041d68p+92)) (f32.const 0x1.4479bp+3)) -(assert_return (invoke "f32.mul" (f32.const 0x1.4d0582p+73) (f32.const 0x1.6e043ap+19)) (f32.const 0x1.dc236p+92)) -(assert_return (invoke "f32.mul" (f32.const -0x1.2fdap-32) (f32.const -0x1.e1731cp+74)) (f32.const 0x1.1db89ep+43)) -(assert_return (invoke "f32.mul" (f32.const 0x1.7bc8fep+67) (f32.const -0x1.3ad592p+15)) (f32.const -0x1.d3115ep+82)) -(assert_return (invoke "f32.mul" (f32.const 0x1.936742p+30) (f32.const -0x1.a7a19p+66)) (f32.const -0x1.4dc71ap+97)) -(assert_return (invoke "f64.mul" (f64.const -0x1.ba737b4ca3b13p-639) (f64.const 0x1.8923309857438p-314)) (f64.const -0x1.53bc0d07baa37p-952)) -(assert_return (invoke "f64.mul" (f64.const 0x1.7c1932e610219p-276) (f64.const -0x1.2605db646489fp-635)) (f64.const -0x1.b48da2b0d2ae3p-911)) -(assert_return (invoke "f64.mul" (f64.const -0x1.e43cdf3b2108p+329) (f64.const -0x1.99d96abbd61d1p+835)) (f64.const inf)) -(assert_return (invoke "f64.mul" (f64.const 0x1.4c19466551da3p+947) (f64.const 0x1.0bdcd6c7646e9p-439)) (f64.const 0x1.5b7cd8c3f638ap+508)) -(assert_return (invoke "f64.mul" (f64.const 0x1.ff1da1726e3dfp+339) (f64.const -0x1.043c44f52b158p+169)) (f64.const -0x1.03c9364bb585cp+509)) - -;; Computations that round differently in round-toward-zero mode. -(assert_return (invoke "f32.mul" (f32.const -0x1.907e8ap+46) (f32.const -0x1.5d3668p+95)) (f32.const inf)) -(assert_return (invoke "f32.mul" (f32.const -0x1.8c9f74p-3) (f32.const 0x1.e2b452p-99)) (f32.const -0x1.75edccp-101)) -(assert_return (invoke "f32.mul" (f32.const -0x1.cc605ap-19) (f32.const 0x1.ec321ap+105)) (f32.const -0x1.ba91a4p+87)) -(assert_return (invoke "f32.mul" (f32.const -0x1.5fbb7ap+56) (f32.const 0x1.a8965ep-96)) (f32.const -0x1.23ae8ep-39)) -(assert_return (invoke "f32.mul" (f32.const -0x1.fb7f12p+16) (f32.const 0x1.3a701ap-119)) (f32.const -0x1.37ac0cp-102)) -(assert_return (invoke "f64.mul" (f64.const -0x1.5b0266454c26bp-496) (f64.const -0x1.af5787e3e0399p+433)) (f64.const 0x1.2457d81949e0bp-62)) -(assert_return (invoke "f64.mul" (f64.const 0x1.0d54a82393d45p+478) (f64.const -0x1.425760807ceaep-764)) (f64.const -0x1.532068c8d0d5dp-286)) -(assert_return (invoke "f64.mul" (f64.const -0x1.b532af981786p+172) (f64.const 0x1.ada95085ba36fp+359)) (f64.const -0x1.6ee38c1e01864p+532)) -(assert_return (invoke "f64.mul" (f64.const 0x1.e132f4d49d1cep+768) (f64.const -0x1.a75afe9a7d864p+374)) (f64.const -inf)) -(assert_return (invoke "f64.mul" (f64.const 0x1.68bbf1cfff90ap+81) (f64.const 0x1.09cd17d652c5p+70)) (f64.const 0x1.768b8d67d794p+151)) - -;; Computations that round differently on x87. -(assert_return (invoke "f64.mul" (f64.const 0x1.f99fb602c89b7p-341) (f64.const 0x1.6caab46a31a2ep-575)) (f64.const 0x1.68201f986e9d7p-915)) -(assert_return (invoke "f64.mul" (f64.const -0x1.86999c5eee379p-9) (f64.const 0x1.6e3b9e0d53e0dp+723)) (f64.const -0x1.17654a0ef35f5p+715)) -(assert_return (invoke "f64.mul" (f64.const -0x1.069571b176f9p+367) (f64.const -0x1.e248b6ab0a0e3p-652)) (f64.const 0x1.eeaff575cae1dp-285)) -(assert_return (invoke "f64.mul" (f64.const 0x1.c217645777dd2p+775) (f64.const 0x1.d93f5715dd646p+60)) (f64.const 0x1.a0064aa1d920dp+836)) -(assert_return (invoke "f64.mul" (f64.const -0x1.848981b6e694ap-276) (f64.const 0x1.f5aacb64a0d19p+896)) (f64.const -0x1.7cb2296e6c2e5p+621)) - -;; Computations that round differently on x87 in double-precision mode. -(assert_return (invoke "f64.mul" (f64.const 0x1.db3bd2a286944p-599) (f64.const 0x1.ce910af1d55cap-425)) (f64.const 0x0.d6accdd538a39p-1022)) -(assert_return (invoke "f64.mul" (f64.const -0x1.aca223916012p-57) (f64.const -0x1.2b2b4958dd228p-966)) (f64.const 0x0.fa74eccae5615p-1022)) -(assert_return (invoke "f64.mul" (f64.const -0x1.bd062def16cffp-488) (f64.const -0x1.7ddd91a0c4c0ep-536)) (f64.const 0x0.a5f4d7769d90dp-1022)) -(assert_return (invoke "f64.mul" (f64.const -0x1.c6a56169e9cep-772) (f64.const 0x1.517d55a474122p-255)) (f64.const -0x0.12baf260afb77p-1022)) -(assert_return (invoke "f64.mul" (f64.const -0x1.08951b0b41705p-516) (f64.const -0x1.102dc27168d09p-507)) (f64.const 0x0.8ca6dbf3f592bp-1022)) - -;; Computations that round differently when computed via f32. -(assert_return (invoke "f64.mul" (f64.const 0x1.8d0dea50c8c9bp+852) (f64.const 0x1.21cac31d87a24p-881)) (f64.const 0x1.c177311f7cd73p-29)) -(assert_return (invoke "f64.mul" (f64.const 0x1.98049118e3063p-7) (f64.const 0x1.6362525151b58p-149)) (f64.const 0x1.1b358514103f9p-155)) -(assert_return (invoke "f64.mul" (f64.const -0x1.ea65cb0631323p+1) (f64.const 0x1.fce683201a19bp-41)) (f64.const -0x1.e76dc8c223667p-39)) -(assert_return (invoke "f64.mul" (f64.const 0x1.e4d235961d543p-373) (f64.const 0x1.bc56f20ef9a48p-205)) (f64.const 0x1.a4c09efcb71d6p-577)) -(assert_return (invoke "f64.mul" (f64.const -0x1.b9612e66faba8p+77) (f64.const 0x1.e2bc6aa782273p-348)) (f64.const -0x1.a026ea4f81db1p-270)) - -;; Test the least positive value with a positive square. -(assert_return (invoke "f32.mul" (f32.const 0x1p-75) (f32.const 0x1p-75)) (f32.const 0x0p+0)) -(assert_return (invoke "f32.mul" (f32.const 0x1.000002p-75) (f32.const 0x1.000002p-75)) (f32.const 0x1p-149)) -(assert_return (invoke "f64.mul" (f64.const 0x1.6a09e667f3bccp-538) (f64.const 0x1.6a09e667f3bccp-538)) (f64.const 0x0p+0)) -(assert_return (invoke "f64.mul" (f64.const 0x1.6a09e667f3bcdp-538) (f64.const 0x1.6a09e667f3bcdp-538)) (f64.const 0x0.0000000000001p-1022)) - -;; Test the greatest positive value with a finite square. -(assert_return (invoke "f32.mul" (f32.const 0x1.fffffep+63) (f32.const 0x1.fffffep+63)) (f32.const 0x1.fffffcp+127)) -(assert_return (invoke "f32.mul" (f32.const 0x1p+64) (f32.const 0x1p+64)) (f32.const inf)) -(assert_return (invoke "f64.mul" (f64.const 0x1.fffffffffffffp+511) (f64.const 0x1.fffffffffffffp+511)) (f64.const 0x1.ffffffffffffep+1023)) -(assert_return (invoke "f64.mul" (f64.const 0x1p+512) (f64.const 0x1p+512)) (f64.const inf)) - -;; Test the squares of values very close to 1. -(assert_return (invoke "f32.mul" (f32.const 0x1.000002p+0) (f32.const 0x1.000002p+0)) (f32.const 0x1.000004p+0)) -(assert_return (invoke "f32.mul" (f32.const 0x1.fffffep-1) (f32.const 0x1.fffffep-1)) (f32.const 0x1.fffffcp-1)) -(assert_return (invoke "f64.mul" (f64.const 0x1.0000000000001p+0) (f64.const 0x1.0000000000001p+0)) (f64.const 0x1.0000000000002p+0)) -(assert_return (invoke "f64.mul" (f64.const 0x1.fffffffffffffp-1) (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1.ffffffffffffep-1)) - -;; Test multiplication of numbers very close to 1. -(assert_return (invoke "f32.mul" (f32.const 0x1.000002p+0) (f32.const 0x1.fffffep-1)) (f32.const 0x1p+0)) -(assert_return (invoke "f32.mul" (f32.const 0x1.000004p+0) (f32.const 0x1.fffffcp-1)) (f32.const 0x1.000002p+0)) -(assert_return (invoke "f64.mul" (f64.const 0x1.0000000000001p+0) (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1p+0)) -(assert_return (invoke "f64.mul" (f64.const 0x1.0000000000002p+0) (f64.const 0x1.ffffffffffffep-1)) (f64.const 0x1.0000000000001p+0)) - -;; Test MIN * EPSILON. -;; http://www.mpfr.org/mpfr-2.0.1/patch2 -(assert_return (invoke "f32.mul" (f32.const 0x1p-126) (f32.const 0x1p-23)) (f32.const 0x1p-149)) -(assert_return (invoke "f64.mul" (f64.const 0x1p-1022) (f64.const 0x1p-52)) (f64.const 0x0.0000000000001p-1022)) - -;; http://opencores.org/bug,view,2454 -(assert_return (invoke "f32.mul" (f32.const -0x1.0006p+4) (f32.const 0x1.ap-132)) (f32.const -0x1.a009cp-128)) - -;; Miscellaneous values. -(assert_return (invoke "f32.div" (f32.const 1.123456789) (f32.const 100)) (f32.const 0x1.702264p-7)) -(assert_return (invoke "f32.div" (f32.const 8391667.0) (f32.const 12582905.0)) (f32.const 0x1.55754p-1)) -(assert_return (invoke "f32.div" (f32.const 65536.0) (f32.const 0x1p-37)) (f32.const 0x1p+53)) -(assert_return (invoke "f32.div" (f32.const 0x1.dcbf6ap+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.dcbf68p-128)) -(assert_return (invoke "f32.div" (f32.const 4) (f32.const 3)) (f32.const 0x1.555556p+0)) -(assert_return (invoke "f64.div" (f64.const 1.123456789) (f64.const 100)) (f64.const 0.01123456789)) -(assert_return (invoke "f64.div" (f64.const 8391667.0) (f64.const 12582905.0)) (f64.const 0x1.55753f1d9ba27p-1)) -(assert_return (invoke "f64.div" (f64.const 65536.0) (f64.const 0x1p-37)) (f64.const 0x1p+53)) -(assert_return (invoke "f64.div" (f64.const 0x1.dcbf6ap+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.772fda8p-1022)) -(assert_return (invoke "f64.div" (f64.const 4) (f64.const 3)) (f64.const 0x1.5555555555555p+0)) - -;; Test for a historic hardware bug. -;; https://en.wikipedia.org/wiki/Pentium_FDIV_bug -(assert_return (invoke "f32.div" (f32.const 4195835) (f32.const 3145727)) (f32.const 0x1.557542p+0)) -(assert_return (invoke "f64.div" (f64.const 4195835) (f64.const 3145727)) (f64.const 0x1.557541c7c6b43p+0)) - -;; Computations that round differently in round-upward mode. -(assert_return (invoke "f32.div" (f32.const 0x1.6a6c5ap-48) (f32.const 0x1.fa0b7p+127)) (f32.const 0x0p+0)) -(assert_return (invoke "f32.div" (f32.const 0x1.616fb2p-87) (f32.const 0x1.332172p+68)) (f32.const 0x0p+0)) -(assert_return (invoke "f32.div" (f32.const -0x1.96e778p+16) (f32.const 0x1.eb0c56p-80)) (f32.const -0x1.a8440ap+95)) -(assert_return (invoke "f32.div" (f32.const -0x1.e2624p-76) (f32.const -0x1.ed236ep-122)) (f32.const 0x1.f4d584p+45)) -(assert_return (invoke "f32.div" (f32.const -0x1.e2374ep+41) (f32.const 0x1.71fcdcp-80)) (f32.const -0x1.4da706p+121)) -(assert_return (invoke "f64.div" (f64.const 0x1.163c09d0c38c1p+147) (f64.const 0x1.e04cc737348e6p+223)) (f64.const 0x1.289921caeed23p-77)) -(assert_return (invoke "f64.div" (f64.const 0x1.d6867e741e0a9p-626) (f64.const 0x1.335eb19a9aae4p-972)) (f64.const 0x1.87e342d11f519p+346)) -(assert_return (invoke "f64.div" (f64.const -0x1.d5edf648aeb98p+298) (f64.const 0x1.0dda15b079355p+640)) (f64.const -0x1.bdceaf9734b5cp-342)) -(assert_return (invoke "f64.div" (f64.const -0x1.b683e3934aedap+691) (f64.const 0x1.c364e1df00dffp+246)) (f64.const -0x1.f16456e7afe3bp+444)) -(assert_return (invoke "f64.div" (f64.const -0x1.44ca7539cc851p+540) (f64.const 0x1.58501bccc58fep+453)) (f64.const -0x1.e2f8657e0924ep+86)) - -;; Computations that round differently in round-downward mode. -(assert_return (invoke "f32.div" (f32.const -0x1.c2c54ap+69) (f32.const -0x1.00d142p-86)) (f32.const inf)) -(assert_return (invoke "f32.div" (f32.const 0x1.e35abep-46) (f32.const 0x1.c69dfp+44)) (f32.const 0x1.102eb4p-90)) -(assert_return (invoke "f32.div" (f32.const 0x1.45ff2ap+0) (f32.const -0x1.1e8754p+89)) (f32.const -0x1.23434ep-89)) -(assert_return (invoke "f32.div" (f32.const 0x1.8db18ap-51) (f32.const 0x1.47c678p-128)) (f32.const 0x1.369b96p+77)) -(assert_return (invoke "f32.div" (f32.const 0x1.78599p+90) (f32.const 0x1.534144p+87)) (f32.const 0x1.1bfddcp+3)) -(assert_return (invoke "f64.div" (f64.const 0x0.f331c4f47eb51p-1022) (f64.const -0x1.c7ff45bf6f03ap+362)) (f64.const -0x0p+0)) -(assert_return (invoke "f64.div" (f64.const -0x1.0fc8707b9d19cp-987) (f64.const 0x1.77524d5f4a563p-536)) (f64.const -0x1.72c1a937d231p-452)) -(assert_return (invoke "f64.div" (f64.const -0x1.edb3aa64bb338p-403) (f64.const -0x1.1c7c164320e4p+45)) (f64.const 0x1.bc44cc1c5ae63p-448)) -(assert_return (invoke "f64.div" (f64.const -0x1.6534b34e8686bp+80) (f64.const 0x1.c34a7fc59e3c3p-791)) (f64.const -0x1.95421bf291b66p+870)) -(assert_return (invoke "f64.div" (f64.const -0x1.91f58d7ed1237p+236) (f64.const -0x1.f190d808383c8p+55)) (f64.const 0x1.9d9eb0836f906p+180)) - -;; Computations that round differently in round-toward-zero mode. -(assert_return (invoke "f32.div" (f32.const 0x1.64b2a4p+26) (f32.const 0x1.e95752p-119)) (f32.const inf)) -(assert_return (invoke "f32.div" (f32.const -0x1.53c9b6p+77) (f32.const 0x1.d689ap+27)) (f32.const -0x1.71baa4p+49)) -(assert_return (invoke "f32.div" (f32.const 0x1.664a8ap+38) (f32.const -0x1.59dba2p+96)) (f32.const -0x1.0933f4p-58)) -(assert_return (invoke "f32.div" (f32.const -0x1.99e0fap+111) (f32.const -0x1.c2b5a8p+9)) (f32.const 0x1.d19de6p+101)) -(assert_return (invoke "f32.div" (f32.const -0x1.5a815ap+92) (f32.const -0x1.b5820ap+13)) (f32.const 0x1.9580b8p+78)) -(assert_return (invoke "f64.div" (f64.const -0x1.81fd1e2af7bebp-655) (f64.const 0x1.edefc4eae536cp-691)) (f64.const -0x1.901abdd91b661p+35)) -(assert_return (invoke "f64.div" (f64.const -0x1.47cf932953c43p+782) (f64.const -0x1.bc40496b1f2a1p-553)) (f64.const inf)) -(assert_return (invoke "f64.div" (f64.const -0x1.2bd2e8fbdcad7p-746) (f64.const 0x1.b115674cc476ep-65)) (f64.const -0x1.62752bf19fa81p-682)) -(assert_return (invoke "f64.div" (f64.const -0x1.f923e3fea9efep+317) (f64.const -0x1.8044c74d27a39p-588)) (f64.const 0x1.5086518cc7186p+905)) -(assert_return (invoke "f64.div" (f64.const 0x1.516ed2051d6bbp+181) (f64.const -0x1.c9f455eb9c2eep+214)) (f64.const -0x1.79414d67f2889p-34)) - -;; Computations that round differently on x87. -(assert_return (invoke "f64.div" (f64.const -0x1.9c52726aed366p+585) (f64.const -0x1.7d0568c75660fp+195)) (f64.const 0x1.1507ca2a65f23p+390)) -(assert_return (invoke "f64.div" (f64.const -0x1.522672f461667p+546) (f64.const -0x1.36d36572c9f71p+330)) (f64.const 0x1.1681369370619p+216)) -(assert_return (invoke "f64.div" (f64.const 0x1.01051b4e8cd61p+185) (f64.const -0x1.2cbb5ca3d33ebp+965)) (f64.const -0x1.b59471598a2f3p-781)) -(assert_return (invoke "f64.div" (f64.const 0x1.5f93bb80fc2cbp+217) (f64.const 0x1.7e051aae9f0edp+427)) (f64.const 0x1.d732fa926ba4fp-211)) -(assert_return (invoke "f64.div" (f64.const -0x1.e251d762163ccp+825) (f64.const 0x1.3ee63581e1796p+349)) (f64.const -0x1.8330077d90a07p+476)) - -;; Computations that round differently on x87 in double-precision mode. -(assert_return (invoke "f64.div" (f64.const 0x1.dcbf69f10006dp+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.772fda7c4001bp-1022)) -(assert_return (invoke "f64.div" (f64.const 0x1.e14169442fbcap-1011) (f64.const 0x1.505451d62ff7dp+12)) (f64.const 0x0.b727e85f38b39p-1022)) -(assert_return (invoke "f64.div" (f64.const -0x1.d3ebe726ec964p-144) (f64.const -0x1.4a7bfc0b83608p+880)) (f64.const 0x0.5a9d8c50cbf87p-1022)) -(assert_return (invoke "f64.div" (f64.const -0x1.6c3def770aee1p-393) (f64.const -0x1.8b84724347598p+631)) (f64.const 0x0.3af0707fcd0c7p-1022)) -(assert_return (invoke "f64.div" (f64.const 0x1.16abda1bb3cb3p-856) (f64.const 0x1.6c9c7198eb1e6p+166)) (f64.const 0x0.c3a8fd6741649p-1022)) -(assert_return (invoke "f64.div" (f64.const 0x1.7057d6ab553cap-1005) (f64.const -0x1.2abf1e98660ebp+23)) (f64.const -0x0.04ee8d8ec01cdp-1022)) - -;; Computations that round differently when div is mul by reciprocal. -(assert_return (invoke "f32.div" (f32.const 0x1.ada9aap+89) (f32.const 0x1.69884cp+42)) (f32.const 0x1.303e2ep+47)) -(assert_return (invoke "f32.div" (f32.const 0x1.8281c8p+90) (f32.const -0x1.62883cp+106)) (f32.const -0x1.17169cp-16)) -(assert_return (invoke "f32.div" (f32.const 0x1.5c6be2p+81) (f32.const 0x1.d01dfep-1)) (f32.const 0x1.805e32p+81)) -(assert_return (invoke "f32.div" (f32.const -0x1.bbd252p+19) (f32.const -0x1.fba95p+33)) (f32.const 0x1.bf9d56p-15)) -(assert_return (invoke "f32.div" (f32.const -0x1.0f41d6p-42) (f32.const -0x1.3f2dbep+56)) (f32.const 0x1.b320d8p-99)) -(assert_return (invoke "f64.div" (f64.const 0x1.b2348a1c81899p+61) (f64.const -0x1.4a58aad903dd3p-861)) (f64.const -0x1.507c1e2a41b35p+922)) -(assert_return (invoke "f64.div" (f64.const 0x1.23fa5137a918ap-130) (f64.const -0x1.7268db1951263p-521)) (f64.const -0x1.93965e0d896bep+390)) -(assert_return (invoke "f64.div" (f64.const 0x1.dcb3915d82deep+669) (f64.const 0x1.50caaa1dc6b19p+638)) (f64.const 0x1.6a58ec814b09dp+31)) -(assert_return (invoke "f64.div" (f64.const -0x1.046e378c0cc46p+182) (f64.const 0x1.ac925009a922bp+773)) (f64.const -0x1.3720aa94dab18p-592)) -(assert_return (invoke "f64.div" (f64.const -0x1.8945fd69d8e11p-871) (f64.const -0x1.0a37870af809ap-646)) (f64.const 0x1.7a2e286c62382p-225)) - -;; Computations that round differently when computed via f32. -(assert_return (invoke "f64.div" (f64.const 0x1.82002af0ea1f3p-57) (f64.const 0x1.d0a9b0c2fa339p+0)) (f64.const 0x1.a952fbd1fc17cp-58)) -(assert_return (invoke "f64.div" (f64.const 0x1.1e12b515db471p-102) (f64.const -0x1.41fc3c94fba5p-42)) (f64.const -0x1.c6e50cccb7cb6p-61)) -(assert_return (invoke "f64.div" (f64.const 0x1.aba5adcd6f583p-41) (f64.const 0x1.17dfac639ce0fp-112)) (f64.const 0x1.872b0a008c326p+71)) -(assert_return (invoke "f64.div" (f64.const 0x1.cf82510d0ae6bp+89) (f64.const 0x1.0207d86498053p+97)) (f64.const 0x1.cbdc804e2cf14p-8)) -(assert_return (invoke "f64.div" (f64.const 0x1.4c82cbb508e21p-11) (f64.const -0x1.6b57208c2d5d5p+52)) (f64.const -0x1.d48e8b369129ap-64)) - -;; Division involving the maximum subnormal value and the minimum normal value. -(assert_return (invoke "f32.div" (f32.const 0x1p-126) (f32.const 0x1.fffffcp-127)) (f32.const 0x1.000002p+0)) -(assert_return (invoke "f32.div" (f32.const 0x1.fffffcp-127) (f32.const 0x1p-126)) (f32.const 0x1.fffffcp-1)) -(assert_return (invoke "f64.div" (f64.const 0x1p-1022) (f64.const 0x0.fffffffffffffp-1022)) (f64.const 0x1.0000000000001p+0)) -(assert_return (invoke "f64.div" (f64.const 0x0.fffffffffffffp-1022) (f64.const 0x1p-1022)) (f64.const 0x1.ffffffffffffep-1)) - -;; Test the least positive value with a positive quotient with the maximum value. -(assert_return (invoke "f32.div" (f32.const 0x1.fffffep-23) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) -(assert_return (invoke "f32.div" (f32.const 0x1p-22) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) -(assert_return (invoke "f64.div" (f64.const 0x1.fffffffffffffp-52) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) -(assert_return (invoke "f64.div" (f64.const 0x1p-51) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) - -;; Test the least positive value with a finite reciprocal. -(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1p-128)) (f32.const inf)) -(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1.000008p-128)) (f32.const 0x1.fffffp+127)) -(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x0.4p-1022)) (f64.const inf)) -(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x0.4000000000001p-1022)) (f64.const 0x1.ffffffffffff8p+1023)) - -;; Test the least positive value that has a subnormal reciprocal. -(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1.000002p+126)) (f32.const 0x1.fffffcp-127)) -(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1p+126)) (f32.const 0x1p-126)) -(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x1.0000000000001p+1022)) (f64.const 0x0.fffffffffffffp-1022)) -(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x1p+1022)) (f64.const 0x1p-1022)) - -;; Test that the last binary digit of 1.0/3.0 is even in f32, -;; https://en.wikipedia.org/wiki/Single-precision_floating-point_format#Single-precision_examples -;; -;; and odd in f64, -;; https://en.wikipedia.org/wiki/Double-precision_floating-point_format#Double-precision_examples -;; -;; and that 1.0/3.0, 3.0/9.0, and 9.0/27.0 all agree. -;; http://www.netlib.org/paranoia -(assert_return (invoke "f32.div" (f32.const 0x1p+0) (f32.const 0x1.8p+1)) (f32.const 0x1.555556p-2)) -(assert_return (invoke "f32.div" (f32.const 0x3p+0) (f32.const 0x1.2p+3)) (f32.const 0x1.555556p-2)) -(assert_return (invoke "f32.div" (f32.const 0x1.2p+3) (f32.const 0x1.bp+4)) (f32.const 0x1.555556p-2)) -(assert_return (invoke "f64.div" (f64.const 0x1p+0) (f64.const 0x1.8p+1)) (f64.const 0x1.5555555555555p-2)) -(assert_return (invoke "f64.div" (f64.const 0x3p+0) (f64.const 0x1.2p+3)) (f64.const 0x1.5555555555555p-2)) -(assert_return (invoke "f64.div" (f64.const 0x1.2p+3) (f64.const 0x1.bp+4)) (f64.const 0x1.5555555555555p-2)) - -;; Test division of numbers very close to 1. -(assert_return (invoke "f32.div" (f32.const 0x1.000002p+0) (f32.const 0x1.fffffep-1)) (f32.const 0x1.000004p+0)) -(assert_return (invoke "f32.div" (f32.const 0x1.fffffep-1) (f32.const 0x1.000002p+0)) (f32.const 0x1.fffffap-1)) -(assert_return (invoke "f32.div" (f32.const 0x1.0p+0) (f32.const 0x1.fffffep-1)) (f32.const 0x1.000002p+0)) -(assert_return (invoke "f32.div" (f32.const 0x1.0p+0) (f32.const 0x1.000002p+0)) (f32.const 0x1.fffffcp-1)) -(assert_return (invoke "f64.div" (f64.const 0x1.0000000000001p+0) (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1.0000000000002p+0)) -(assert_return (invoke "f64.div" (f64.const 0x1.fffffffffffffp-1) (f64.const 0x1.0000000000001p+0)) (f64.const 0x1.ffffffffffffdp-1)) -(assert_return (invoke "f64.div" (f64.const 0x1.0p+0) (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1.0000000000001p+0)) -(assert_return (invoke "f64.div" (f64.const 0x1.0p+0) (f64.const 0x1.0000000000001p+0)) (f64.const 0x1.ffffffffffffep-1)) - -;; Test for bugs found in an early RISC-V implementation. -;; https://github.com/riscv/riscv-tests/pull/8 -(assert_return (invoke "f32.sqrt" (f32.const 0x1.56p+7)) (f32.const 0x1.a2744cp+3)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.594dfcp-23)) (f32.const 0x1.a4789cp-12)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.56p+7)) (f64.const 0x1.a2744ce9674f5p+3)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.594dfc70aa105p-23)) (f64.const 0x1.a4789c0e37f99p-12)) - -;; Computations that round differently on x87. -(assert_return (invoke "f64.sqrt" (f64.const 0x1.0263fcc94f259p-164)) (f64.const 0x1.0131485de579fp-82)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.352dfa278c43dp+338)) (f64.const 0x1.195607dac5417p+169)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.b15daa23924fap+402)) (f64.const 0x1.4d143db561493p+201)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.518c8e68cb753p-37)) (f64.const 0x1.9fb8ef1ad5bfdp-19)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.86d8b6518078ep-370)) (f64.const 0x1.3c5142a48fcadp-185)) - -;; Test another sqrt case on x87. -;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52593 -(assert_return (invoke "f64.sqrt" (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1.fffffffffffffp-1)) - -;; Computations that round differently in round-upward mode. -(assert_return (invoke "f32.sqrt" (f32.const 0x1.098064p-3)) (f32.const 0x1.70b23p-2)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.d9befp+100)) (f32.const 0x1.5c4052p+50)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.42b5b6p-4)) (f32.const 0x1.1f6d0ep-2)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.3684dp-71)) (f32.const 0x1.8ebae2p-36)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.d8bc4ep-11)) (f32.const 0x1.ebf9eap-6)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.5c39f220d5704p-924)) (f64.const 0x1.2a92bc24ceae9p-462)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.53521a635745cp+727)) (f64.const 0x1.a0cfdc4ef8ff1p+363)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.dfd5bbc9f4678p+385)) (f64.const 0x1.efa817117c94cp+192)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.33f9640811cd4p+105)) (f64.const 0x1.8d17c9243baa3p+52)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.6c0ef0267ff45p+999)) (f64.const 0x1.afbcfae3f2b4p+499)) - -;; Computations that round differently in round-downward mode. -(assert_return (invoke "f32.sqrt" (f32.const 0x1.26a62ep+27)) (f32.const 0x1.84685p+13)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.166002p-113)) (f32.const 0x1.798762p-57)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.3dfb5p-15)) (f32.const 0x1.937e38p-8)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.30eb2cp-120)) (f32.const 0x1.176406p-60)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.cb705cp-123)) (f32.const 0x1.e5020ap-62)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.edae8aea0543p+695)) (f64.const 0x1.f6c1ea4fc8dd2p+347)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.f7ee4bda5c9c3p-763)) (f64.const 0x1.fbf30bdaf11c5p-382)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.a48f348266ad1p-30)) (f64.const 0x1.481ee7540baf7p-15)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.feb5a1ce3ed9cp-242)) (f64.const 0x1.6995060c20d46p-121)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.957d9796e3834p+930)) (f64.const 0x1.42305213157bap+465)) - -;; Computations that round differently in round-toward-zero mode. -(assert_return (invoke "f32.sqrt" (f32.const 0x1.65787cp+118)) (f32.const 0x1.2e82a4p+59)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.736044p+15)) (f32.const 0x1.b40e4p+7)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.a00edp-1)) (f32.const 0x1.cd8aecp-1)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.7a4c8p-87)) (f32.const 0x1.b819e4p-44)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.5d24d4p-94)) (f32.const 0x1.2af75ep-47)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.a008948ead274p+738)) (f64.const 0x1.4659b37c39b19p+369)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.70f6199ed21f5p-381)) (f64.const 0x1.b2a2bddf3300dp-191)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.35c1d49f2a352p+965)) (f64.const 0x1.8e3d9f01a9716p+482)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.3fbdcfb2b2a15p-45)) (f64.const 0x1.949ba4feca42ap-23)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.c201b94757145p-492)) (f64.const 0x1.5369ee6bf2967p-246)) - -;; Computations that round differently when computed via f32. -(assert_return_canonical_nan (invoke "f64.sqrt" (f64.const -0x1.360e8d0032adp-963))) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.d9a6f5eef0503p+103)) (f64.const 0x1.ec73f56c166f6p+51)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.aa051a5c4ec27p-760)) (f64.const 0x1.4a3e771ff5149p-380)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.e5522a741babep-276)) (f64.const 0x1.607ae2b6feb7dp-138)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.4832badc0c061p+567)) (f64.const 0x1.99ec7934139b2p+283)) - -;; Test the least value with a sqrt that rounds to one. -(assert_return (invoke "f32.sqrt" (f32.const 0x1.000002p+0)) (f32.const 0x1p+0)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.000004p+0)) (f32.const 0x1.000002p+0)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.0000000000001p+0)) (f64.const 0x1p+0)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.0000000000002p+0)) (f64.const 0x1.0000000000001p+0)) - -;; Test the greatest value less than one for which sqrt is not an identity. -(assert_return (invoke "f32.sqrt" (f32.const 0x1.fffffcp-1)) (f32.const 0x1.fffffep-1)) -(assert_return (invoke "f32.sqrt" (f32.const 0x1.fffffap-1)) (f32.const 0x1.fffffcp-1)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.ffffffffffffep-1)) (f64.const 0x1.fffffffffffffp-1)) -(assert_return (invoke "f64.sqrt" (f64.const 0x1.ffffffffffffdp-1)) (f64.const 0x1.ffffffffffffep-1)) - -;; Test that the bitwise floating point operators are bitwise on NaN. - -(assert_return (invoke "f32.abs" (f32.const nan:0x0f1e2)) (f32.const nan:0x0f1e2)) -(assert_return (invoke "f32.abs" (f32.const -nan:0x0f1e2)) (f32.const nan:0x0f1e2)) -(assert_return (invoke "f64.abs" (f64.const nan:0x0f1e27a6b)) (f64.const nan:0x0f1e27a6b)) -(assert_return (invoke "f64.abs" (f64.const -nan:0x0f1e27a6b)) (f64.const nan:0x0f1e27a6b)) - -(assert_return (invoke "f32.neg" (f32.const nan:0x0f1e2)) (f32.const -nan:0x0f1e2)) -(assert_return (invoke "f32.neg" (f32.const -nan:0x0f1e2)) (f32.const nan:0x0f1e2)) -(assert_return (invoke "f64.neg" (f64.const nan:0x0f1e27a6b)) (f64.const -nan:0x0f1e27a6b)) -(assert_return (invoke "f64.neg" (f64.const -nan:0x0f1e27a6b)) (f64.const nan:0x0f1e27a6b)) - -(assert_return (invoke "f32.copysign" (f32.const nan:0x0f1e2) (f32.const nan)) (f32.const nan:0x0f1e2)) -(assert_return (invoke "f32.copysign" (f32.const nan:0x0f1e2) (f32.const -nan)) (f32.const -nan:0x0f1e2)) -(assert_return (invoke "f32.copysign" (f32.const -nan:0x0f1e2) (f32.const nan)) (f32.const nan:0x0f1e2)) -(assert_return (invoke "f32.copysign" (f32.const -nan:0x0f1e2) (f32.const -nan)) (f32.const -nan:0x0f1e2)) -(assert_return (invoke "f64.copysign" (f64.const nan:0x0f1e27a6b) (f64.const nan)) (f64.const nan:0x0f1e27a6b)) -(assert_return (invoke "f64.copysign" (f64.const nan:0x0f1e27a6b) (f64.const -nan)) (f64.const -nan:0x0f1e27a6b)) -(assert_return (invoke "f64.copysign" (f64.const -nan:0x0f1e27a6b) (f64.const nan)) (f64.const nan:0x0f1e27a6b)) -(assert_return (invoke "f64.copysign" (f64.const -nan:0x0f1e27a6b) (f64.const -nan)) (f64.const -nan:0x0f1e27a6b)) - -;; Test values close to 1.0. -(assert_return (invoke "f32.ceil" (f32.const 0x1.fffffep-1)) (f32.const 1.0)) -(assert_return (invoke "f32.ceil" (f32.const 0x1.000002p+0)) (f32.const 2.0)) -(assert_return (invoke "f64.ceil" (f64.const 0x1.fffffffffffffp-1)) (f64.const 1.0)) -(assert_return (invoke "f64.ceil" (f64.const 0x1.0000000000001p+0)) (f64.const 2.0)) - -;; Test the maximum and minimum value for which ceil is not an identity operator. -(assert_return (invoke "f32.ceil" (f32.const 0x1.fffffep+22)) (f32.const 0x1p+23)) -(assert_return (invoke "f32.ceil" (f32.const -0x1.fffffep+22)) (f32.const -0x1.fffffcp+22)) -(assert_return (invoke "f64.ceil" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1p+52)) -(assert_return (invoke "f64.ceil" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1.ffffffffffffep+51)) - -;; Test that implementations don't do the x+0x1p52-0x1p52 trick outside the -;; range where it's safe. -(assert_return (invoke "f32.ceil" (f32.const 0x1.fffffep+23)) (f32.const 0x1.fffffep+23)) -(assert_return (invoke "f32.ceil" (f32.const -0x1.fffffep+23)) (f32.const -0x1.fffffep+23)) -(assert_return (invoke "f64.ceil" (f64.const 0x1.fffffffffffffp+52)) (f64.const 0x1.fffffffffffffp+52)) -(assert_return (invoke "f64.ceil" (f64.const -0x1.fffffffffffffp+52)) (f64.const -0x1.fffffffffffffp+52)) - -;; Test values close to -1.0. -(assert_return (invoke "f32.floor" (f32.const -0x1.fffffep-1)) (f32.const -1.0)) -(assert_return (invoke "f32.floor" (f32.const -0x1.000002p+0)) (f32.const -2.0)) -(assert_return (invoke "f64.floor" (f64.const -0x1.fffffffffffffp-1)) (f64.const -1.0)) -(assert_return (invoke "f64.floor" (f64.const -0x1.0000000000001p+0)) (f64.const -2.0)) - -;; Test the maximum and minimum value for which floor is not an identity operator. -(assert_return (invoke "f32.floor" (f32.const -0x1.fffffep+22)) (f32.const -0x1p+23)) -(assert_return (invoke "f32.floor" (f32.const 0x1.fffffep+22)) (f32.const 0x1.fffffcp+22)) -(assert_return (invoke "f64.floor" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1p+52)) -(assert_return (invoke "f64.floor" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1.ffffffffffffep+51)) - -;; Test that floor isn't implemented as XMVectorFloor. -;; http://dss.stephanierct.com/DevBlog/?p=8#comment-4 -(assert_return (invoke "f32.floor" (f32.const 88607.0)) (f32.const 88607.0)) -(assert_return (invoke "f64.floor" (f64.const 88607.0)) (f64.const 88607.0)) - -;; Test the maximum and minimum value for which trunc is not an identity operator. -(assert_return (invoke "f32.trunc" (f32.const -0x1.fffffep+22)) (f32.const -0x1.fffffcp+22)) -(assert_return (invoke "f32.trunc" (f32.const 0x1.fffffep+22)) (f32.const 0x1.fffffcp+22)) -(assert_return (invoke "f64.trunc" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1.ffffffffffffep+51)) -(assert_return (invoke "f64.trunc" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1.ffffffffffffep+51)) - -;; Test that nearest isn't implemented naively. -;; http://blog.frama-c.com/index.php?post/2013/05/02/nearbyintf1 -;; http://blog.frama-c.com/index.php?post/2013/05/04/nearbyintf3 -(assert_return (invoke "f32.nearest" (f32.const 0x1.000002p+23)) (f32.const 0x1.000002p+23)) -(assert_return (invoke "f32.nearest" (f32.const 0x1.000004p+23)) (f32.const 0x1.000004p+23)) -(assert_return (invoke "f32.nearest" (f32.const 0x1.fffffep-2)) (f32.const 0.0)) -(assert_return (invoke "f32.nearest" (f32.const 0x1.fffffep+47)) (f32.const 0x1.fffffep+47)) -(assert_return (invoke "f64.nearest" (f64.const 0x1.0000000000001p+52)) (f64.const 0x1.0000000000001p+52)) -(assert_return (invoke "f64.nearest" (f64.const 0x1.0000000000002p+52)) (f64.const 0x1.0000000000002p+52)) -(assert_return (invoke "f64.nearest" (f64.const 0x1.fffffffffffffp-2)) (f64.const 0.0)) -(assert_return (invoke "f64.nearest" (f64.const 0x1.fffffffffffffp+105)) (f64.const 0x1.fffffffffffffp+105)) - -;; Nearest should not round halfway cases away from zero (as C's round(3) does) -;; or up (as JS's Math.round does). -(assert_return (invoke "f32.nearest" (f32.const 4.5)) (f32.const 4.0)) -(assert_return (invoke "f32.nearest" (f32.const -4.5)) (f32.const -4.0)) -(assert_return (invoke "f32.nearest" (f32.const -3.5)) (f32.const -4.0)) -(assert_return (invoke "f64.nearest" (f64.const 4.5)) (f64.const 4.0)) -(assert_return (invoke "f64.nearest" (f64.const -4.5)) (f64.const -4.0)) -(assert_return (invoke "f64.nearest" (f64.const -3.5)) (f64.const -4.0)) - -;; Test the maximum and minimum value for which nearest is not an identity operator. -(assert_return (invoke "f32.nearest" (f32.const -0x1.fffffep+22)) (f32.const -0x1p+23)) -(assert_return (invoke "f32.nearest" (f32.const 0x1.fffffep+22)) (f32.const 0x1p+23)) -(assert_return (invoke "f64.nearest" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1p+52)) -(assert_return (invoke "f64.nearest" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1p+52)) diff --git a/libraries/wasm-jit/Test/spec/forward.wast b/libraries/wasm-jit/Test/spec/forward.wast deleted file mode 100644 index 7074ed74392..00000000000 --- a/libraries/wasm-jit/Test/spec/forward.wast +++ /dev/null @@ -1,20 +0,0 @@ -(module - (func $even (export "even") (param $n i32) (result i32) - (if (result i32) (i32.eq (get_local $n) (i32.const 0)) - (then (i32.const 1)) - (else (call $odd (i32.sub (get_local $n) (i32.const 1)))) - ) - ) - - (func $odd (export "odd") (param $n i32) (result i32) - (if (result i32) (i32.eq (get_local $n) (i32.const 0)) - (then (i32.const 0)) - (else (call $even (i32.sub (get_local $n) (i32.const 1)))) - ) - ) -) - -(assert_return (invoke "even" (i32.const 13)) (i32.const 0)) -(assert_return (invoke "even" (i32.const 20)) (i32.const 1)) -(assert_return (invoke "odd" (i32.const 13)) (i32.const 1)) -(assert_return (invoke "odd" (i32.const 20)) (i32.const 0)) diff --git a/libraries/wasm-jit/Test/spec/func.wast b/libraries/wasm-jit/Test/spec/func.wast deleted file mode 100644 index c60782f0e10..00000000000 --- a/libraries/wasm-jit/Test/spec/func.wast +++ /dev/null @@ -1,661 +0,0 @@ -;; Test `func` declarations, i.e. functions - -(module - ;; Auxiliary definition - (type $sig (func)) - (func $dummy) - - ;; Syntax - - (func) - (func (export "f")) - (func $f) - (func $h (export "g")) - - (func (local)) - (func (local) (local)) - (func (local i32)) - (func (local $x i32)) - (func (local i32 f64 i64)) - (func (local i32) (local f64)) - (func (local i32 f32) (local $x i64) (local) (local i32 f64)) - - (func (param)) - (func (param) (param)) - (func (param i32)) - (func (param $x i32)) - (func (param i32 f64 i64)) - (func (param i32) (param f64)) - (func (param i32 f32) (param $x i64) (param) (param i32 f64)) - - (func (result i32) (unreachable)) - - (type $sig-1 (func)) - (type $sig-2 (func (result i32))) - (type $sig-3 (func (param $x i32))) - (type $sig-4 (func (param i32 f64 i32) (result i32))) - - (func (export "type-use-1") (type $sig-1)) - (func (export "type-use-2") (type $sig-2) (i32.const 0)) - (func (export "type-use-3") (type $sig-3)) - (func (export "type-use-4") (type $sig-4) (i32.const 0)) - (func (export "type-use-5") (type $sig-2) (result i32) (i32.const 0)) - (func (export "type-use-6") (type $sig-3) (param i32)) - (func (export "type-use-7") - (type $sig-4) (param i32) (param f64 i32) (result i32) (i32.const 0) - ) - - (func (type $sig)) - (func (type $forward)) ;; forward reference - - (func $complex - (param i32 f32) (param $x i64) (param) (param i32) - (result) (result i32) (result) - (local f32) (local $y i32) (local i64 i32) (local) (local f64 i32) - (unreachable) (unreachable) - ) - (func $complex-sig - (type $sig) - (local f32) (local $y i32) (local i64 i32) (local) (local f64 i32) - (unreachable) (unreachable) - ) - - (type $forward (func)) - - ;; Typing of locals - - (func (export "local-first-i32") (result i32) (local i32 i32) (get_local 0)) - (func (export "local-first-i64") (result i64) (local i64 i64) (get_local 0)) - (func (export "local-first-f32") (result f32) (local f32 f32) (get_local 0)) - (func (export "local-first-f64") (result f64) (local f64 f64) (get_local 0)) - (func (export "local-second-i32") (result i32) (local i32 i32) (get_local 1)) - (func (export "local-second-i64") (result i64) (local i64 i64) (get_local 1)) - (func (export "local-second-f32") (result f32) (local f32 f32) (get_local 1)) - (func (export "local-second-f64") (result f64) (local f64 f64) (get_local 1)) - (func (export "local-mixed") (result f64) - (local f32) (local $x i32) (local i64 i32) (local) (local f64 i32) - (drop (f32.neg (get_local 0))) - (drop (i32.eqz (get_local 1))) - (drop (i64.eqz (get_local 2))) - (drop (i32.eqz (get_local 3))) - (drop (f64.neg (get_local 4))) - (drop (i32.eqz (get_local 5))) - (get_local 4) - ) - - ;; Typing of parameters - - (func (export "param-first-i32") (param i32 i32) (result i32) (get_local 0)) - (func (export "param-first-i64") (param i64 i64) (result i64) (get_local 0)) - (func (export "param-first-f32") (param f32 f32) (result f32) (get_local 0)) - (func (export "param-first-f64") (param f64 f64) (result f64) (get_local 0)) - (func (export "param-second-i32") (param i32 i32) (result i32) (get_local 1)) - (func (export "param-second-i64") (param i64 i64) (result i64) (get_local 1)) - (func (export "param-second-f32") (param f32 f32) (result f32) (get_local 1)) - (func (export "param-second-f64") (param f64 f64) (result f64) (get_local 1)) - (func (export "param-mixed") (param f32 i32) (param) (param $x i64) (param i32 f64 i32) - (result f64) - (drop (f32.neg (get_local 0))) - (drop (i32.eqz (get_local 1))) - (drop (i64.eqz (get_local 2))) - (drop (i32.eqz (get_local 3))) - (drop (f64.neg (get_local 4))) - (drop (i32.eqz (get_local 5))) - (get_local 4) - ) - - ;; Typing of result - - (func (export "empty")) - (func (export "value-void") (call $dummy)) - (func (export "value-i32") (result i32) (i32.const 77)) - (func (export "value-i64") (result i64) (i64.const 7777)) - (func (export "value-f32") (result f32) (f32.const 77.7)) - (func (export "value-f64") (result f64) (f64.const 77.77)) - (func (export "value-block-void") (block (call $dummy) (call $dummy))) - (func (export "value-block-i32") (result i32) - (block (result i32) (call $dummy) (i32.const 77)) - ) - - (func (export "return-empty") (return)) - (func (export "return-i32") (result i32) (return (i32.const 78))) - (func (export "return-i64") (result i64) (return (i64.const 7878))) - (func (export "return-f32") (result f32) (return (f32.const 78.7))) - (func (export "return-f64") (result f64) (return (f64.const 78.78))) - (func (export "return-block-i32") (result i32) - (return (block (result i32) (call $dummy) (i32.const 77))) - ) - - (func (export "break-empty") (br 0)) - (func (export "break-i32") (result i32) (br 0 (i32.const 79))) - (func (export "break-i64") (result i64) (br 0 (i64.const 7979))) - (func (export "break-f32") (result f32) (br 0 (f32.const 79.9))) - (func (export "break-f64") (result f64) (br 0 (f64.const 79.79))) - (func (export "break-block-i32") (result i32) - (br 0 (block (result i32) (call $dummy) (i32.const 77))) - ) - - (func (export "break-br_if-empty") (param i32) - (br_if 0 (get_local 0)) - ) - (func (export "break-br_if-num") (param i32) (result i32) - (drop (br_if 0 (i32.const 50) (get_local 0))) (i32.const 51) - ) - - (func (export "break-br_table-empty") (param i32) - (br_table 0 0 0 (get_local 0)) - ) - (func (export "break-br_table-num") (param i32) (result i32) - (br_table 0 0 (i32.const 50) (get_local 0)) (i32.const 51) - ) - (func (export "break-br_table-nested-empty") (param i32) - (block (br_table 0 1 0 (get_local 0))) - ) - (func (export "break-br_table-nested-num") (param i32) (result i32) - (i32.add - (block (result i32) - (br_table 0 1 0 (i32.const 50) (get_local 0)) (i32.const 51) - ) - (i32.const 2) - ) - ) - - ;; Default initialization of locals - - (func (export "init-local-i32") (result i32) (local i32) (get_local 0)) - (func (export "init-local-i64") (result i64) (local i64) (get_local 0)) - (func (export "init-local-f32") (result f32) (local f32) (get_local 0)) - (func (export "init-local-f64") (result f64) (local f64) (get_local 0)) -) - -(assert_return (invoke "type-use-1")) -(assert_return (invoke "type-use-2") (i32.const 0)) -(assert_return (invoke "type-use-3" (i32.const 1))) -(assert_return - (invoke "type-use-4" (i32.const 1) (f64.const 1) (i32.const 1)) - (i32.const 0) -) -(assert_return (invoke "type-use-5") (i32.const 0)) -(assert_return (invoke "type-use-6" (i32.const 1))) -(assert_return - (invoke "type-use-7" (i32.const 1) (f64.const 1) (i32.const 1)) - (i32.const 0) -) - -(assert_return (invoke "local-first-i32") (i32.const 0)) -(assert_return (invoke "local-first-i64") (i64.const 0)) -(assert_return (invoke "local-first-f32") (f32.const 0)) -(assert_return (invoke "local-first-f64") (f64.const 0)) -(assert_return (invoke "local-second-i32") (i32.const 0)) -(assert_return (invoke "local-second-i64") (i64.const 0)) -(assert_return (invoke "local-second-f32") (f32.const 0)) -(assert_return (invoke "local-second-f64") (f64.const 0)) -(assert_return (invoke "local-mixed") (f64.const 0)) - -(assert_return - (invoke "param-first-i32" (i32.const 2) (i32.const 3)) (i32.const 2) -) -(assert_return - (invoke "param-first-i64" (i64.const 2) (i64.const 3)) (i64.const 2) -) -(assert_return - (invoke "param-first-f32" (f32.const 2) (f32.const 3)) (f32.const 2) -) -(assert_return - (invoke "param-first-f64" (f64.const 2) (f64.const 3)) (f64.const 2) -) -(assert_return - (invoke "param-second-i32" (i32.const 2) (i32.const 3)) (i32.const 3) -) -(assert_return - (invoke "param-second-i64" (i64.const 2) (i64.const 3)) (i64.const 3) -) -(assert_return - (invoke "param-second-f32" (f32.const 2) (f32.const 3)) (f32.const 3) -) -(assert_return - (invoke "param-second-f64" (f64.const 2) (f64.const 3)) (f64.const 3) -) - -(assert_return - (invoke "param-mixed" - (f32.const 1) (i32.const 2) (i64.const 3) - (i32.const 4) (f64.const 5.5) (i32.const 6) - ) - (f64.const 5.5) -) - -(assert_return (invoke "empty")) -(assert_return (invoke "value-void")) -(assert_return (invoke "value-i32") (i32.const 77)) -(assert_return (invoke "value-i64") (i64.const 7777)) -(assert_return (invoke "value-f32") (f32.const 77.7)) -(assert_return (invoke "value-f64") (f64.const 77.77)) -(assert_return (invoke "value-block-void")) -(assert_return (invoke "value-block-i32") (i32.const 77)) - -(assert_return (invoke "return-empty")) -(assert_return (invoke "return-i32") (i32.const 78)) -(assert_return (invoke "return-i64") (i64.const 7878)) -(assert_return (invoke "return-f32") (f32.const 78.7)) -(assert_return (invoke "return-f64") (f64.const 78.78)) -(assert_return (invoke "return-block-i32") (i32.const 77)) - -(assert_return (invoke "break-empty")) -(assert_return (invoke "break-i32") (i32.const 79)) -(assert_return (invoke "break-i64") (i64.const 7979)) -(assert_return (invoke "break-f32") (f32.const 79.9)) -(assert_return (invoke "break-f64") (f64.const 79.79)) -(assert_return (invoke "break-block-i32") (i32.const 77)) - -(assert_return (invoke "break-br_if-empty" (i32.const 0))) -(assert_return (invoke "break-br_if-empty" (i32.const 2))) -(assert_return (invoke "break-br_if-num" (i32.const 0)) (i32.const 51)) -(assert_return (invoke "break-br_if-num" (i32.const 1)) (i32.const 50)) - -(assert_return (invoke "break-br_table-empty" (i32.const 0))) -(assert_return (invoke "break-br_table-empty" (i32.const 1))) -(assert_return (invoke "break-br_table-empty" (i32.const 5))) -(assert_return (invoke "break-br_table-empty" (i32.const -1))) -(assert_return (invoke "break-br_table-num" (i32.const 0)) (i32.const 50)) -(assert_return (invoke "break-br_table-num" (i32.const 1)) (i32.const 50)) -(assert_return (invoke "break-br_table-num" (i32.const 10)) (i32.const 50)) -(assert_return (invoke "break-br_table-num" (i32.const -100)) (i32.const 50)) -(assert_return (invoke "break-br_table-nested-empty" (i32.const 0))) -(assert_return (invoke "break-br_table-nested-empty" (i32.const 1))) -(assert_return (invoke "break-br_table-nested-empty" (i32.const 3))) -(assert_return (invoke "break-br_table-nested-empty" (i32.const -2))) -(assert_return - (invoke "break-br_table-nested-num" (i32.const 0)) (i32.const 52) -) -(assert_return - (invoke "break-br_table-nested-num" (i32.const 1)) (i32.const 50) -) -(assert_return - (invoke "break-br_table-nested-num" (i32.const 2)) (i32.const 52) -) -(assert_return - (invoke "break-br_table-nested-num" (i32.const -3)) (i32.const 52) -) - -(assert_return (invoke "init-local-i32") (i32.const 0)) -(assert_return (invoke "init-local-i64") (i64.const 0)) -(assert_return (invoke "init-local-f32") (f32.const 0)) -(assert_return (invoke "init-local-f64") (f64.const 0)) - - -;; Expansion of inline function types - -(module - (func $f (result f64) (f64.const 0)) ;; adds implicit type definition - (func $g (param i32)) ;; reuses explicit type definition - (type $t (func (param i32))) - - (func $i32->void (type 0)) ;; (param i32) - (func $void->f64 (type 1) (f64.const 0)) ;; (result f64) - (func $check - (call $i32->void (i32.const 0)) - (drop (call $void->f64)) - ) -) - -(assert_invalid - (module - (func $f (result f64) (f64.const 0)) ;; adds implicit type definition - (func $g (param i32)) ;; reuses explicit type definition - (func $h (result f64) (f64.const 1)) ;; reuses implicit type definition - (type $t (func (param i32))) - - (func (type 2)) ;; does not exist - ) - "unknown type" -) - - -(module - (type $sig (func)) - - (func $empty-sig-1) ;; should be assigned type $sig - (func $complex-sig-1 (param f64 i64 f64 i64 f64 i64 f32 i32)) - (func $empty-sig-2) ;; should be assigned type $sig - (func $complex-sig-2 (param f64 i64 f64 i64 f64 i64 f32 i32)) - (func $complex-sig-3 (param f64 i64 f64 i64 f64 i64 f32 i32)) - (func $complex-sig-4 (param i64 i64 f64 i64 f64 i64 f32 i32)) - (func $complex-sig-5 (param i64 i64 f64 i64 f64 i64 f32 i32)) - - (type $empty-sig-duplicate (func)) - (type $complex-sig-duplicate (func (param i64 i64 f64 i64 f64 i64 f32 i32))) - (table anyfunc - (elem - $complex-sig-3 $empty-sig-2 $complex-sig-1 $complex-sig-3 $empty-sig-1 - $complex-sig-4 $complex-sig-5 - ) - ) - - (func (export "signature-explicit-reused") - (call_indirect $sig (i32.const 1)) - (call_indirect $sig (i32.const 4)) - ) - - (func (export "signature-implicit-reused") - ;; The implicit index 3 in this test depends on the function and - ;; type definitions, and may need adapting if they change. - (call_indirect 3 - (f64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) - (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) - (i32.const 0) - ) - (call_indirect 3 - (f64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) - (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) - (i32.const 2) - ) - (call_indirect 3 - (f64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) - (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) - (i32.const 3) - ) - ) - - (func (export "signature-explicit-duplicate") - (call_indirect $empty-sig-duplicate (i32.const 1)) - ) - - (func (export "signature-implicit-duplicate") - (call_indirect $complex-sig-duplicate - (i64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) - (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) - (i32.const 5) - ) - (call_indirect $complex-sig-duplicate - (i64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) - (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) - (i32.const 6) - ) - ) -) - -(assert_return (invoke "signature-explicit-reused")) -(assert_return (invoke "signature-implicit-reused")) -(assert_return (invoke "signature-explicit-duplicate")) -(assert_return (invoke "signature-implicit-duplicate")) - - -;; Malformed type use - -(assert_malformed - (module quote - "(type $sig (func (param i32) (result i32)))" - "(func (type $sig) (result i32) (param i32) (i32.const 0))" - ) - "unexpected token" -) -(assert_malformed - (module quote - "(type $sig (func (param i32) (result i32)))" - "(func (param i32) (type $sig) (result i32) (i32.const 0))" - ) - "unexpected token" -) -(assert_malformed - (module quote - "(type $sig (func (param i32) (result i32)))" - "(func (param i32) (result i32) (type $sig) (i32.const 0))" - ) - "unexpected token" -) -(assert_malformed - (module quote - "(type $sig (func (param i32) (result i32)))" - "(func (result i32) (type $sig) (param i32) (i32.const 0))" - ) - "unexpected token" -) -(assert_malformed - (module quote - "(type $sig (func (param i32) (result i32)))" - "(func (result i32) (param i32) (type $sig) (i32.const 0))" - ) - "unexpected token" -) -(assert_malformed - (module quote - "(func (result i32) (param i32) (i32.const 0))" - ) - "unexpected token" -) - -(assert_malformed - (module quote - "(type $sig (func))" - "(func (type $sig) (result i32) (i32.const 0))" - ) - "inline function type" -) -(assert_malformed - (module quote - "(type $sig (func (param i32) (result i32)))" - "(func (type $sig) (result i32) (i32.const 0))" - ) - "inline function type" -) -(assert_malformed - (module quote - "(type $sig (func (param i32) (result i32)))" - "(func (type $sig) (param i32) (i32.const 0))" - ) - "inline function type" -) -(assert_malformed - (module quote - "(type $sig (func (param i32 i32) (result i32)))" - "(func (type $sig) (param i32) (result i32) (unreachable))" - ) - "inline function type" -) - - -;; Invalid typing of locals - -(assert_invalid - (module (func $type-local-num-vs-num (result i64) (local i32) (get_local 0))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f32) (i32.eqz (get_local 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f64 i64) (f64.neg (get_local 1)))) - "type mismatch" -) - - -;; Invalid typing of parameters - -(assert_invalid - (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) - "type mismatch" -) - - -;; Invalid typing of result - -(assert_invalid - (module (func $type-multiple-result (result i32 i32) (unreachable))) - "invalid result arity" -) -(assert_invalid - (module - (type (func (result i32 i32))) - (func $type-multiple-result (type 0) (unreachable)) - ) - "invalid result arity" -) - - -(assert_invalid - (module (func $type-empty-i32 (result i32))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-i64 (result i64))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f32 (result f32))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f64 (result f64))) - "type mismatch" -) - -(assert_invalid - (module (func $type-value-void-vs-num (result i32) - (nop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-value-num-vs-void - (i32.const 0) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-value-num-vs-num (result i32) - (f32.const 0) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-return-last-empty-vs-num (result i32) - (return) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-last-void-vs-num (result i32) - (return (nop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-last-num-vs-num (result i32) - (return (i64.const 0)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-return-empty-vs-num (result i32) - (return) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-void-vs-num (result i32) - (return (nop)) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-num-vs-num (result i32) - (return (i64.const 1)) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-first-num-vs-num (result i32) - (return (i64.const 1)) (return (i32.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-break-last-void-vs-num (result i32) - (br 0) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-last-num-vs-num (result i32) - (br 0 (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-void-vs-num (result i32) - (br 0) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-num-vs-num (result i32) - (br 0 (i64.const 1)) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-first-num-vs-num (result i32) - (br 0 (i64.const 1)) (br 0 (i32.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-break-nested-empty-vs-num (result i32) - (block (br 1)) (br 0 (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-nested-void-vs-num (result i32) - (block (br 1 (nop))) (br 0 (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-break-nested-num-vs-num (result i32) - (block (br 1 (i64.const 1))) (br 0 (i32.const 1)) - )) - "type mismatch" -) - - -;; Syntax errors - -(assert_malformed - (module quote "(func (nop) (local i32))") - "unexpected token" -) -(assert_malformed - (module quote "(func (nop) (param i32))") - "unexpected token" -) -(assert_malformed - (module quote "(func (nop) (result i32))") - "unexpected token" -) -(assert_malformed - (module quote "(func (local i32) (param i32))") - "unexpected token" -) -(assert_malformed - (module quote "(func (local i32) (result i32) (get_local 0))") - "unexpected token" -) -(assert_malformed - (module quote "(func (result i32) (param i32) (get_local 0))") - "unexpected token" -) diff --git a/libraries/wasm-jit/Test/spec/func_ptrs.wast b/libraries/wasm-jit/Test/spec/func_ptrs.wast deleted file mode 100644 index ef54c5da0b4..00000000000 --- a/libraries/wasm-jit/Test/spec/func_ptrs.wast +++ /dev/null @@ -1,106 +0,0 @@ -(module - (type (func)) ;; 0: void -> void - (type $S (func)) ;; 1: void -> void - (type (func (param))) ;; 2: void -> void - (type (func (result i32))) ;; 3: void -> i32 - (type (func (param) (result i32))) ;; 4: void -> i32 - (type $T (func (param i32) (result i32))) ;; 5: i32 -> i32 - (type $U (func (param i32))) ;; 6: i32 -> void - - (func $print (import "spectest" "print") (type 6)) - - (func (type 0)) - (func (type $S)) - - (func (export "one") (type 4) (i32.const 13)) - (func (export "two") (type $T) (i32.add (get_local 0) (i32.const 1))) - - ;; Both signature and parameters are allowed (and required to match) - ;; since this allows the naming of parameters. - (func (export "three") (type $T) (param $a i32) (result i32) - (i32.sub (get_local 0) (i32.const 2)) - ) - - (func (export "four") (type $U) (call $print (get_local 0))) -) - -(assert_return (invoke "one") (i32.const 13)) -(assert_return (invoke "two" (i32.const 13)) (i32.const 14)) -(assert_return (invoke "three" (i32.const 13)) (i32.const 11)) -(invoke "four" (i32.const 83)) - -(assert_invalid (module (elem (i32.const 0))) "unknown table") -(assert_invalid (module (elem (i32.const 0) 0) (func)) "unknown table") - -(assert_invalid - (module (table 1 anyfunc) (elem (i64.const 0))) - "type mismatch" -) -(assert_invalid - (module (table 1 anyfunc) (elem (i32.ctz (i32.const 0)))) - "constant expression required" -) -(assert_invalid - (module (table 1 anyfunc) (elem (nop))) - "constant expression required" -) - -(assert_invalid (module (func (type 42))) "unknown type") -(assert_invalid (module (import "spectest" "print" (func (type 43)))) "unknown type") - -(module - (type $T (func (param) (result i32))) - (type $U (func (param) (result i32))) - (table anyfunc (elem $t1 $t2 $t3 $u1 $u2 $t1 $t3)) - - (func $t1 (type $T) (i32.const 1)) - (func $t2 (type $T) (i32.const 2)) - (func $t3 (type $T) (i32.const 3)) - (func $u1 (type $U) (i32.const 4)) - (func $u2 (type $U) (i32.const 5)) - - (func (export "callt") (param $i i32) (result i32) - (call_indirect $T (get_local $i)) - ) - - (func (export "callu") (param $i i32) (result i32) - (call_indirect $U (get_local $i)) - ) -) - -(assert_return (invoke "callt" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "callt" (i32.const 1)) (i32.const 2)) -(assert_return (invoke "callt" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "callt" (i32.const 3)) (i32.const 4)) -(assert_return (invoke "callt" (i32.const 4)) (i32.const 5)) -(assert_return (invoke "callt" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "callt" (i32.const 6)) (i32.const 3)) -(assert_trap (invoke "callt" (i32.const 7)) "undefined element") -(assert_trap (invoke "callt" (i32.const 100)) "undefined element") -(assert_trap (invoke "callt" (i32.const -1)) "undefined element") - -(assert_return (invoke "callu" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "callu" (i32.const 1)) (i32.const 2)) -(assert_return (invoke "callu" (i32.const 2)) (i32.const 3)) -(assert_return (invoke "callu" (i32.const 3)) (i32.const 4)) -(assert_return (invoke "callu" (i32.const 4)) (i32.const 5)) -(assert_return (invoke "callu" (i32.const 5)) (i32.const 1)) -(assert_return (invoke "callu" (i32.const 6)) (i32.const 3)) -(assert_trap (invoke "callu" (i32.const 7)) "undefined element") -(assert_trap (invoke "callu" (i32.const 100)) "undefined element") -(assert_trap (invoke "callu" (i32.const -1)) "undefined element") - -(module - (type $T (func (result i32))) - (table anyfunc (elem 0 1)) - - (func $t1 (type $T) (i32.const 1)) - (func $t2 (type $T) (i32.const 2)) - - (func (export "callt") (param $i i32) (result i32) - (call_indirect $T (get_local $i)) - ) -) - -(assert_return (invoke "callt" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "callt" (i32.const 1)) (i32.const 2)) diff --git a/libraries/wasm-jit/Test/spec/get_local.wast b/libraries/wasm-jit/Test/spec/get_local.wast deleted file mode 100644 index e1f9625b96d..00000000000 --- a/libraries/wasm-jit/Test/spec/get_local.wast +++ /dev/null @@ -1,148 +0,0 @@ -;; Test `get_local` operator - -(module - ;; Typing - - (func (export "type-local-i32") (result i32) (local i32) (get_local 0)) - (func (export "type-local-i64") (result i64) (local i64) (get_local 0)) - (func (export "type-local-f32") (result f32) (local f32) (get_local 0)) - (func (export "type-local-f64") (result f64) (local f64) (get_local 0)) - - (func (export "type-param-i32") (param i32) (result i32) (get_local 0)) - (func (export "type-param-i64") (param i64) (result i64) (get_local 0)) - (func (export "type-param-f32") (param f32) (result f32) (get_local 0)) - (func (export "type-param-f64") (param f64) (result f64) (get_local 0)) - - (func (export "type-mixed") (param i64 f32 f64 i32 i32) - (local f32 i64 i64 f64) - (drop (i64.eqz (get_local 0))) - (drop (f32.neg (get_local 1))) - (drop (f64.neg (get_local 2))) - (drop (i32.eqz (get_local 3))) - (drop (i32.eqz (get_local 4))) - (drop (f32.neg (get_local 5))) - (drop (i64.eqz (get_local 6))) - (drop (i64.eqz (get_local 7))) - (drop (f64.neg (get_local 8))) - ) - - ;; Reading - - (func (export "read") (param i64 f32 f64 i32 i32) (result f64) - (local f32 i64 i64 f64) - (set_local 5 (f32.const 5.5)) - (set_local 6 (i64.const 6)) - (set_local 8 (f64.const 8)) - (f64.add - (f64.convert_u/i64 (get_local 0)) - (f64.add - (f64.promote/f32 (get_local 1)) - (f64.add - (get_local 2) - (f64.add - (f64.convert_u/i32 (get_local 3)) - (f64.add - (f64.convert_s/i32 (get_local 4)) - (f64.add - (f64.promote/f32 (get_local 5)) - (f64.add - (f64.convert_u/i64 (get_local 6)) - (f64.add - (f64.convert_u/i64 (get_local 7)) - (get_local 8) - ) - ) - ) - ) - ) - ) - ) - ) - ) -) - -(assert_return (invoke "type-local-i32") (i32.const 0)) -(assert_return (invoke "type-local-i64") (i64.const 0)) -(assert_return (invoke "type-local-f32") (f32.const 0)) -(assert_return (invoke "type-local-f64") (f64.const 0)) - -(assert_return (invoke "type-param-i32" (i32.const 2)) (i32.const 2)) -(assert_return (invoke "type-param-i64" (i64.const 3)) (i64.const 3)) -(assert_return (invoke "type-param-f32" (f32.const 4.4)) (f32.const 4.4)) -(assert_return (invoke "type-param-f64" (f64.const 5.5)) (f64.const 5.5)) - -(assert_return - (invoke "type-mixed" - (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) - ) -) - -(assert_return - (invoke "read" - (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) - ) - (f64.const 34.8) -) - - -;; Invalid typing of access to locals - -(assert_invalid - (module (func $type-local-num-vs-num (result i64) (local i32) (get_local 0))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f32) (i32.eqz (get_local 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f64 i64) (f64.neg (get_local 1)))) - "type mismatch" -) - - -;; Invalid typing of access to parameters - -(assert_invalid - (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) - "type mismatch" -) - - -;; Invalid local index - -(assert_invalid - (module (func $unbound-local (local i32 i64) (get_local 3))) - "unknown local" -) -(assert_invalid - (module (func $large-local (local i32 i64) (get_local 14324343))) - "unknown local" -) - -(assert_invalid - (module (func $unbound-param (param i32 i64) (get_local 2))) - "unknown local" -) -(assert_invalid - (module (func $large-param (local i32 i64) (get_local 714324343))) - "unknown local" -) - -(assert_invalid - (module (func $unbound-mixed (param i32) (local i32 i64) (get_local 3))) - "unknown local" -) -(assert_invalid - (module (func $large-mixed (param i64) (local i32 i64) (get_local 214324343))) - "unknown local" -) - diff --git a/libraries/wasm-jit/Test/spec/globals.wast b/libraries/wasm-jit/Test/spec/globals.wast deleted file mode 100644 index b8f9c8f5493..00000000000 --- a/libraries/wasm-jit/Test/spec/globals.wast +++ /dev/null @@ -1,180 +0,0 @@ -;; Test globals - -(module - (global $a i32 (i32.const -2)) - (global (;1;) f32 (f32.const -3)) - (global (;2;) f64 (f64.const -4)) - (global $b i64 (i64.const -5)) - - (global $x (mut i32) (i32.const -12)) - (global (;5;) (mut f32) (f32.const -13)) - (global (;6;) (mut f64) (f64.const -14)) - (global $y (mut i64) (i64.const -15)) - - (func (export "get-a") (result i32) (get_global $a)) - (func (export "get-b") (result i64) (get_global $b)) - (func (export "get-x") (result i32) (get_global $x)) - (func (export "get-y") (result i64) (get_global $y)) - (func (export "set-x") (param i32) (set_global $x (get_local 0))) - (func (export "set-y") (param i64) (set_global $y (get_local 0))) - - (func (export "get-1") (result f32) (get_global 1)) - (func (export "get-2") (result f64) (get_global 2)) - (func (export "get-5") (result f32) (get_global 5)) - (func (export "get-6") (result f64) (get_global 6)) - (func (export "set-5") (param f32) (set_global 5 (get_local 0))) - (func (export "set-6") (param f64) (set_global 6 (get_local 0))) -) - -(assert_return (invoke "get-a") (i32.const -2)) -(assert_return (invoke "get-b") (i64.const -5)) -(assert_return (invoke "get-x") (i32.const -12)) -(assert_return (invoke "get-y") (i64.const -15)) - -(assert_return (invoke "get-1") (f32.const -3)) -(assert_return (invoke "get-2") (f64.const -4)) -(assert_return (invoke "get-5") (f32.const -13)) -(assert_return (invoke "get-6") (f64.const -14)) - -(assert_return (invoke "set-x" (i32.const 6))) -(assert_return (invoke "set-y" (i64.const 7))) -(assert_return (invoke "set-5" (f32.const 8))) -(assert_return (invoke "set-6" (f64.const 9))) - -(assert_return (invoke "get-x") (i32.const 6)) -(assert_return (invoke "get-y") (i64.const 7)) -(assert_return (invoke "get-5") (f32.const 8)) -(assert_return (invoke "get-6") (f64.const 9)) - -(assert_invalid - (module (global f32 (f32.const 0)) (func (set_global 0 (i32.const 1)))) - "global is immutable" -) - -(assert_invalid - (module (import "m" "a" (global (mut i32)))) - "mutable globals cannot be imported" -) - -(assert_invalid - (module (global (import "m" "a") (mut i32))) - "mutable globals cannot be imported" -) - -(assert_invalid - (module (global (mut f32) (f32.const 0)) (export "a" (global 0))) - "mutable globals cannot be exported" -) - -(assert_invalid - (module (global (export "a") (mut f32) (f32.const 0))) - "mutable globals cannot be exported" -) - -(assert_invalid - (module (global f32 (f32.neg (f32.const 0)))) - "constant expression required" -) - -(assert_invalid - (module (global f32 (get_local 0))) - "constant expression required" -) - -(assert_invalid - (module (global f32 (f32.neg (f32.const 1)))) - "constant expression required" -) - -(assert_invalid - (module (global i32 (i32.const 0) (nop))) - "constant expression required" -) - -(assert_invalid - (module (global i32 (nop))) - "constant expression required" -) - -(assert_invalid - (module (global i32 (f32.const 0))) - "type mismatch" -) - -(assert_invalid - (module (global i32 (i32.const 0) (i32.const 0))) - "type mismatch" -) - -(assert_invalid - (module (global i32 (;empty instruction sequence;))) - "type mismatch" -) - -(assert_invalid - (module (global i32 (get_global 0))) - "unknown global" -) - -(assert_invalid - (module (global i32 (get_global 1)) (global i32 (i32.const 0))) - "unknown global" -) - -(module - (import "spectest" "global" (global i32)) -) -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\94\80\80\80\00" ;; import section - "\01" ;; length 1 - "\08\73\70\65\63\74\65\73\74" ;; "spectest" - "\06\67\6c\6f\62\61\6c" ;; "global" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\02" ;; invalid mutability - ) - "invalid mutability" -) -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\94\80\80\80\00" ;; import section - "\01" ;; length 1 - "\08\73\70\65\63\74\65\73\74" ;; "spectest" - "\06\67\6c\6f\62\61\6c" ;; "global" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\ff" ;; invalid mutability - ) - "invalid mutability" -) - -(module - (global i32 (i32.const 0)) -) -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\06\86\80\80\80\00" ;; global section - "\01" ;; length 1 - "\7f" ;; i32 - "\02" ;; invalid mutability - "\41\00" ;; i32.const 0 - "\0b" ;; end - ) - "invalid mutability" -) -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\06\86\80\80\80\00" ;; global section - "\01" ;; length 1 - "\7f" ;; i32 - "\ff" ;; invalid mutability - "\41\00" ;; i32.const 0 - "\0b" ;; end - ) - "invalid mutability" -) diff --git a/libraries/wasm-jit/Test/spec/i32.wast b/libraries/wasm-jit/Test/spec/i32.wast deleted file mode 100644 index bd8722e6144..00000000000 --- a/libraries/wasm-jit/Test/spec/i32.wast +++ /dev/null @@ -1,421 +0,0 @@ -;; i32 operations - -(module - (func (export "add") (param $x i32) (param $y i32) (result i32) (i32.add (get_local $x) (get_local $y))) - (func (export "sub") (param $x i32) (param $y i32) (result i32) (i32.sub (get_local $x) (get_local $y))) - (func (export "mul") (param $x i32) (param $y i32) (result i32) (i32.mul (get_local $x) (get_local $y))) - (func (export "div_s") (param $x i32) (param $y i32) (result i32) (i32.div_s (get_local $x) (get_local $y))) - (func (export "div_u") (param $x i32) (param $y i32) (result i32) (i32.div_u (get_local $x) (get_local $y))) - (func (export "rem_s") (param $x i32) (param $y i32) (result i32) (i32.rem_s (get_local $x) (get_local $y))) - (func (export "rem_u") (param $x i32) (param $y i32) (result i32) (i32.rem_u (get_local $x) (get_local $y))) - (func (export "and") (param $x i32) (param $y i32) (result i32) (i32.and (get_local $x) (get_local $y))) - (func (export "or") (param $x i32) (param $y i32) (result i32) (i32.or (get_local $x) (get_local $y))) - (func (export "xor") (param $x i32) (param $y i32) (result i32) (i32.xor (get_local $x) (get_local $y))) - (func (export "shl") (param $x i32) (param $y i32) (result i32) (i32.shl (get_local $x) (get_local $y))) - (func (export "shr_s") (param $x i32) (param $y i32) (result i32) (i32.shr_s (get_local $x) (get_local $y))) - (func (export "shr_u") (param $x i32) (param $y i32) (result i32) (i32.shr_u (get_local $x) (get_local $y))) - (func (export "rotl") (param $x i32) (param $y i32) (result i32) (i32.rotl (get_local $x) (get_local $y))) - (func (export "rotr") (param $x i32) (param $y i32) (result i32) (i32.rotr (get_local $x) (get_local $y))) - (func (export "clz") (param $x i32) (result i32) (i32.clz (get_local $x))) - (func (export "ctz") (param $x i32) (result i32) (i32.ctz (get_local $x))) - (func (export "popcnt") (param $x i32) (result i32) (i32.popcnt (get_local $x))) - (func (export "eqz") (param $x i32) (result i32) (i32.eqz (get_local $x))) - (func (export "eq") (param $x i32) (param $y i32) (result i32) (i32.eq (get_local $x) (get_local $y))) - (func (export "ne") (param $x i32) (param $y i32) (result i32) (i32.ne (get_local $x) (get_local $y))) - (func (export "lt_s") (param $x i32) (param $y i32) (result i32) (i32.lt_s (get_local $x) (get_local $y))) - (func (export "lt_u") (param $x i32) (param $y i32) (result i32) (i32.lt_u (get_local $x) (get_local $y))) - (func (export "le_s") (param $x i32) (param $y i32) (result i32) (i32.le_s (get_local $x) (get_local $y))) - (func (export "le_u") (param $x i32) (param $y i32) (result i32) (i32.le_u (get_local $x) (get_local $y))) - (func (export "gt_s") (param $x i32) (param $y i32) (result i32) (i32.gt_s (get_local $x) (get_local $y))) - (func (export "gt_u") (param $x i32) (param $y i32) (result i32) (i32.gt_u (get_local $x) (get_local $y))) - (func (export "ge_s") (param $x i32) (param $y i32) (result i32) (i32.ge_s (get_local $x) (get_local $y))) - (func (export "ge_u") (param $x i32) (param $y i32) (result i32) (i32.ge_u (get_local $x) (get_local $y))) -) - -(assert_return (invoke "add" (i32.const 1) (i32.const 1)) (i32.const 2)) -(assert_return (invoke "add" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "add" (i32.const -1) (i32.const -1)) (i32.const -2)) -(assert_return (invoke "add" (i32.const -1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "add" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x80000000)) -(assert_return (invoke "add" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x7fffffff)) -(assert_return (invoke "add" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "add" (i32.const 0x3fffffff) (i32.const 1)) (i32.const 0x40000000)) - -(assert_return (invoke "sub" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "sub" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "sub" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "sub" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000000)) -(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x7fffffff)) -(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "sub" (i32.const 0x3fffffff) (i32.const -1)) (i32.const 0x40000000)) - -(assert_return (invoke "mul" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "mul" (i32.const 1) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "mul" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "mul" (i32.const 0x10000000) (i32.const 4096)) (i32.const 0)) -(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000)) -(assert_return (invoke "mul" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000001)) -(assert_return (invoke "mul" (i32.const 0x01234567) (i32.const 0x76543210)) (i32.const 0x358e7470)) -(assert_return (invoke "mul" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) - -(assert_trap (invoke "div_s" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "div_s" (i32.const 0) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "div_s" (i32.const 0x80000000) (i32.const -1)) "integer overflow") -(assert_return (invoke "div_s" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "div_s" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "div_s" (i32.const 0) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "div_s" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "div_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0xc0000000)) -(assert_return (invoke "div_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0xffdf3b65)) -(assert_return (invoke "div_s" (i32.const 5) (i32.const 2)) (i32.const 2)) -(assert_return (invoke "div_s" (i32.const -5) (i32.const 2)) (i32.const -2)) -(assert_return (invoke "div_s" (i32.const 5) (i32.const -2)) (i32.const -2)) -(assert_return (invoke "div_s" (i32.const -5) (i32.const -2)) (i32.const 2)) -(assert_return (invoke "div_s" (i32.const 7) (i32.const 3)) (i32.const 2)) -(assert_return (invoke "div_s" (i32.const -7) (i32.const 3)) (i32.const -2)) -(assert_return (invoke "div_s" (i32.const 7) (i32.const -3)) (i32.const -2)) -(assert_return (invoke "div_s" (i32.const -7) (i32.const -3)) (i32.const 2)) -(assert_return (invoke "div_s" (i32.const 11) (i32.const 5)) (i32.const 2)) -(assert_return (invoke "div_s" (i32.const 17) (i32.const 7)) (i32.const 2)) - -(assert_trap (invoke "div_u" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "div_u" (i32.const 0) (i32.const 0)) "integer divide by zero") -(assert_return (invoke "div_u" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "div_u" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "div_u" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0x40000000)) -(assert_return (invoke "div_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8fef)) -(assert_return (invoke "div_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0x20c49b)) -(assert_return (invoke "div_u" (i32.const 5) (i32.const 2)) (i32.const 2)) -(assert_return (invoke "div_u" (i32.const -5) (i32.const 2)) (i32.const 0x7ffffffd)) -(assert_return (invoke "div_u" (i32.const 5) (i32.const -2)) (i32.const 0)) -(assert_return (invoke "div_u" (i32.const -5) (i32.const -2)) (i32.const 0)) -(assert_return (invoke "div_u" (i32.const 7) (i32.const 3)) (i32.const 2)) -(assert_return (invoke "div_u" (i32.const 11) (i32.const 5)) (i32.const 2)) -(assert_return (invoke "div_u" (i32.const 17) (i32.const 7)) (i32.const 2)) - -(assert_trap (invoke "rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "rem_s" (i32.const 0) (i32.const 0)) "integer divide by zero") -(assert_return (invoke "rem_s" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "rem_s" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "rem_s" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "rem_s" (i32.const 0) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "rem_s" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0)) -(assert_return (invoke "rem_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const -647)) -(assert_return (invoke "rem_s" (i32.const 5) (i32.const 2)) (i32.const 1)) -(assert_return (invoke "rem_s" (i32.const -5) (i32.const 2)) (i32.const -1)) -(assert_return (invoke "rem_s" (i32.const 5) (i32.const -2)) (i32.const 1)) -(assert_return (invoke "rem_s" (i32.const -5) (i32.const -2)) (i32.const -1)) -(assert_return (invoke "rem_s" (i32.const 7) (i32.const 3)) (i32.const 1)) -(assert_return (invoke "rem_s" (i32.const -7) (i32.const 3)) (i32.const -1)) -(assert_return (invoke "rem_s" (i32.const 7) (i32.const -3)) (i32.const 1)) -(assert_return (invoke "rem_s" (i32.const -7) (i32.const -3)) (i32.const -1)) -(assert_return (invoke "rem_s" (i32.const 11) (i32.const 5)) (i32.const 1)) -(assert_return (invoke "rem_s" (i32.const 17) (i32.const 7)) (i32.const 3)) - -(assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero") -(assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000)) -(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0)) -(assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001)) -(assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649)) -(assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1)) -(assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1)) -(assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5)) -(assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5)) -(assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1)) -(assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1)) -(assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3)) - -(assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff)) -(assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0)) -(assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) - -(assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) -(assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) -(assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff)) -(assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) - -(assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) -(assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) -(assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff)) -(assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) -(assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f)) -(assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0)) - -(assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2)) -(assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe)) -(assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe)) -(assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000)) -(assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000)) -(assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1)) -(assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2)) -(assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000)) -(assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) - -(assert_return (invoke "shr_s" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "shr_s" (i32.const -1) (i32.const 1)) (i32.const -1)) -(assert_return (invoke "shr_s" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff)) -(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 1)) (i32.const 0xc0000000)) -(assert_return (invoke "shr_s" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000)) -(assert_return (invoke "shr_s" (i32.const 1) (i32.const 32)) (i32.const 1)) -(assert_return (invoke "shr_s" (i32.const 1) (i32.const 33)) (i32.const 0)) -(assert_return (invoke "shr_s" (i32.const 1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 31)) (i32.const -1)) -(assert_return (invoke "shr_s" (i32.const -1) (i32.const 32)) (i32.const -1)) -(assert_return (invoke "shr_s" (i32.const -1) (i32.const 33)) (i32.const -1)) -(assert_return (invoke "shr_s" (i32.const -1) (i32.const -1)) (i32.const -1)) -(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x7fffffff)) (i32.const -1)) -(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x80000000)) (i32.const -1)) - -(assert_return (invoke "shr_u" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "shr_u" (i32.const -1) (i32.const 1)) (i32.const 0x7fffffff)) -(assert_return (invoke "shr_u" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff)) -(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x40000000)) -(assert_return (invoke "shr_u" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000)) -(assert_return (invoke "shr_u" (i32.const 1) (i32.const 32)) (i32.const 1)) -(assert_return (invoke "shr_u" (i32.const 1) (i32.const 33)) (i32.const 0)) -(assert_return (invoke "shr_u" (i32.const 1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 31)) (i32.const 1)) -(assert_return (invoke "shr_u" (i32.const -1) (i32.const 32)) (i32.const -1)) -(assert_return (invoke "shr_u" (i32.const -1) (i32.const 33)) (i32.const 0x7fffffff)) -(assert_return (invoke "shr_u" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x80000000)) (i32.const -1)) - -(assert_return (invoke "rotl" (i32.const 1) (i32.const 1)) (i32.const 2)) -(assert_return (invoke "rotl" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "rotl" (i32.const -1) (i32.const 1)) (i32.const -1)) -(assert_return (invoke "rotl" (i32.const 1) (i32.const 32)) (i32.const 1)) -(assert_return (invoke "rotl" (i32.const 0xabcd9876) (i32.const 1)) (i32.const 0x579b30ed)) -(assert_return (invoke "rotl" (i32.const 0xfe00dc00) (i32.const 4)) (i32.const 0xe00dc00f)) -(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x183a5c76)) -(assert_return (invoke "rotl" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00100000)) -(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x183a5c76)) -(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0x579beed3)) -(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0x579beed3)) -(assert_return (invoke "rotl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000)) -(assert_return (invoke "rotl" (i32.const 0x80000000) (i32.const 1)) (i32.const 1)) - -(assert_return (invoke "rotr" (i32.const 1) (i32.const 1)) (i32.const 0x80000000)) -(assert_return (invoke "rotr" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "rotr" (i32.const -1) (i32.const 1)) (i32.const -1)) -(assert_return (invoke "rotr" (i32.const 1) (i32.const 32)) (i32.const 1)) -(assert_return (invoke "rotr" (i32.const 0xff00cc00) (i32.const 1)) (i32.const 0x7f806600)) -(assert_return (invoke "rotr" (i32.const 0x00080000) (i32.const 4)) (i32.const 0x00008000)) -(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x1d860e97)) -(assert_return (invoke "rotr" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00000400)) -(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x1d860e97)) -(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0xe6fbb4d5)) -(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0xe6fbb4d5)) -(assert_return (invoke "rotr" (i32.const 1) (i32.const 31)) (i32.const 2)) -(assert_return (invoke "rotr" (i32.const 0x80000000) (i32.const 31)) (i32.const 1)) - -(assert_return (invoke "clz" (i32.const 0xffffffff)) (i32.const 0)) -(assert_return (invoke "clz" (i32.const 0)) (i32.const 32)) -(assert_return (invoke "clz" (i32.const 0x00008000)) (i32.const 16)) -(assert_return (invoke "clz" (i32.const 0xff)) (i32.const 24)) -(assert_return (invoke "clz" (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "clz" (i32.const 1)) (i32.const 31)) -(assert_return (invoke "clz" (i32.const 2)) (i32.const 30)) -(assert_return (invoke "clz" (i32.const 0x7fffffff)) (i32.const 1)) - -(assert_return (invoke "ctz" (i32.const -1)) (i32.const 0)) -(assert_return (invoke "ctz" (i32.const 0)) (i32.const 32)) -(assert_return (invoke "ctz" (i32.const 0x00008000)) (i32.const 15)) -(assert_return (invoke "ctz" (i32.const 0x00010000)) (i32.const 16)) -(assert_return (invoke "ctz" (i32.const 0x80000000)) (i32.const 31)) -(assert_return (invoke "ctz" (i32.const 0x7fffffff)) (i32.const 0)) - -(assert_return (invoke "popcnt" (i32.const -1)) (i32.const 32)) -(assert_return (invoke "popcnt" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "popcnt" (i32.const 0x00008000)) (i32.const 1)) -(assert_return (invoke "popcnt" (i32.const 0x80008000)) (i32.const 2)) -(assert_return (invoke "popcnt" (i32.const 0x7fffffff)) (i32.const 31)) -(assert_return (invoke "popcnt" (i32.const 0xAAAAAAAA)) (i32.const 16)) -(assert_return (invoke "popcnt" (i32.const 0x55555555)) (i32.const 16)) -(assert_return (invoke "popcnt" (i32.const 0xDEADBEEF)) (i32.const 24)) - -(assert_return (invoke "eqz" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "eqz" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "eqz" (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "eqz" (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "eqz" (i32.const 0xffffffff)) (i32.const 0)) - -(assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) - -(assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) - -(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) - -(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) - -(assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) - -(assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) - -(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) - -(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) - -(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) - -(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -(assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) diff --git a/libraries/wasm-jit/Test/spec/i64.wast b/libraries/wasm-jit/Test/spec/i64.wast deleted file mode 100644 index 6bb8a31e9f1..00000000000 --- a/libraries/wasm-jit/Test/spec/i64.wast +++ /dev/null @@ -1,421 +0,0 @@ -;; i64 operations - -(module - (func (export "add") (param $x i64) (param $y i64) (result i64) (i64.add (get_local $x) (get_local $y))) - (func (export "sub") (param $x i64) (param $y i64) (result i64) (i64.sub (get_local $x) (get_local $y))) - (func (export "mul") (param $x i64) (param $y i64) (result i64) (i64.mul (get_local $x) (get_local $y))) - (func (export "div_s") (param $x i64) (param $y i64) (result i64) (i64.div_s (get_local $x) (get_local $y))) - (func (export "div_u") (param $x i64) (param $y i64) (result i64) (i64.div_u (get_local $x) (get_local $y))) - (func (export "rem_s") (param $x i64) (param $y i64) (result i64) (i64.rem_s (get_local $x) (get_local $y))) - (func (export "rem_u") (param $x i64) (param $y i64) (result i64) (i64.rem_u (get_local $x) (get_local $y))) - (func (export "and") (param $x i64) (param $y i64) (result i64) (i64.and (get_local $x) (get_local $y))) - (func (export "or") (param $x i64) (param $y i64) (result i64) (i64.or (get_local $x) (get_local $y))) - (func (export "xor") (param $x i64) (param $y i64) (result i64) (i64.xor (get_local $x) (get_local $y))) - (func (export "shl") (param $x i64) (param $y i64) (result i64) (i64.shl (get_local $x) (get_local $y))) - (func (export "shr_s") (param $x i64) (param $y i64) (result i64) (i64.shr_s (get_local $x) (get_local $y))) - (func (export "shr_u") (param $x i64) (param $y i64) (result i64) (i64.shr_u (get_local $x) (get_local $y))) - (func (export "rotl") (param $x i64) (param $y i64) (result i64) (i64.rotl (get_local $x) (get_local $y))) - (func (export "rotr") (param $x i64) (param $y i64) (result i64) (i64.rotr (get_local $x) (get_local $y))) - (func (export "clz") (param $x i64) (result i64) (i64.clz (get_local $x))) - (func (export "ctz") (param $x i64) (result i64) (i64.ctz (get_local $x))) - (func (export "popcnt") (param $x i64) (result i64) (i64.popcnt (get_local $x))) - (func (export "eqz") (param $x i64) (result i32) (i64.eqz (get_local $x))) - (func (export "eq") (param $x i64) (param $y i64) (result i32) (i64.eq (get_local $x) (get_local $y))) - (func (export "ne") (param $x i64) (param $y i64) (result i32) (i64.ne (get_local $x) (get_local $y))) - (func (export "lt_s") (param $x i64) (param $y i64) (result i32) (i64.lt_s (get_local $x) (get_local $y))) - (func (export "lt_u") (param $x i64) (param $y i64) (result i32) (i64.lt_u (get_local $x) (get_local $y))) - (func (export "le_s") (param $x i64) (param $y i64) (result i32) (i64.le_s (get_local $x) (get_local $y))) - (func (export "le_u") (param $x i64) (param $y i64) (result i32) (i64.le_u (get_local $x) (get_local $y))) - (func (export "gt_s") (param $x i64) (param $y i64) (result i32) (i64.gt_s (get_local $x) (get_local $y))) - (func (export "gt_u") (param $x i64) (param $y i64) (result i32) (i64.gt_u (get_local $x) (get_local $y))) - (func (export "ge_s") (param $x i64) (param $y i64) (result i32) (i64.ge_s (get_local $x) (get_local $y))) - (func (export "ge_u") (param $x i64) (param $y i64) (result i32) (i64.ge_u (get_local $x) (get_local $y))) -) - -(assert_return (invoke "add" (i64.const 1) (i64.const 1)) (i64.const 2)) -(assert_return (invoke "add" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "add" (i64.const -1) (i64.const -1)) (i64.const -2)) -(assert_return (invoke "add" (i64.const -1) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "add" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0x8000000000000000)) -(assert_return (invoke "add" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0x7fffffffffffffff)) -(assert_return (invoke "add" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i64.const 0)) -(assert_return (invoke "add" (i64.const 0x3fffffff) (i64.const 1)) (i64.const 0x40000000)) - -(assert_return (invoke "sub" (i64.const 1) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "sub" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "sub" (i64.const -1) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "sub" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0x8000000000000000)) -(assert_return (invoke "sub" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0x7fffffffffffffff)) -(assert_return (invoke "sub" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i64.const 0)) -(assert_return (invoke "sub" (i64.const 0x3fffffff) (i64.const -1)) (i64.const 0x40000000)) - -(assert_return (invoke "mul" (i64.const 1) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "mul" (i64.const 1) (i64.const 0)) (i64.const 0)) -(assert_return (invoke "mul" (i64.const -1) (i64.const -1)) (i64.const 1)) -(assert_return (invoke "mul" (i64.const 0x1000000000000000) (i64.const 4096)) (i64.const 0)) -(assert_return (invoke "mul" (i64.const 0x8000000000000000) (i64.const 0)) (i64.const 0)) -(assert_return (invoke "mul" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0x8000000000000000)) -(assert_return (invoke "mul" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0x8000000000000001)) -(assert_return (invoke "mul" (i64.const 0x0123456789abcdef) (i64.const 0xfedcba9876543210)) (i64.const 0x2236d88fe5618cf0)) -(assert_return (invoke "mul" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i64.const 1)) - -(assert_trap (invoke "div_s" (i64.const 1) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "div_s" (i64.const 0) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "div_s" (i64.const 0x8000000000000000) (i64.const -1)) "integer overflow") -(assert_return (invoke "div_s" (i64.const 1) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "div_s" (i64.const 0) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "div_s" (i64.const 0) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "div_s" (i64.const -1) (i64.const -1)) (i64.const 1)) -(assert_return (invoke "div_s" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0xc000000000000000)) -(assert_return (invoke "div_s" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const 0xffdf3b645a1cac09)) -(assert_return (invoke "div_s" (i64.const 5) (i64.const 2)) (i64.const 2)) -(assert_return (invoke "div_s" (i64.const -5) (i64.const 2)) (i64.const -2)) -(assert_return (invoke "div_s" (i64.const 5) (i64.const -2)) (i64.const -2)) -(assert_return (invoke "div_s" (i64.const -5) (i64.const -2)) (i64.const 2)) -(assert_return (invoke "div_s" (i64.const 7) (i64.const 3)) (i64.const 2)) -(assert_return (invoke "div_s" (i64.const -7) (i64.const 3)) (i64.const -2)) -(assert_return (invoke "div_s" (i64.const 7) (i64.const -3)) (i64.const -2)) -(assert_return (invoke "div_s" (i64.const -7) (i64.const -3)) (i64.const 2)) -(assert_return (invoke "div_s" (i64.const 11) (i64.const 5)) (i64.const 2)) -(assert_return (invoke "div_s" (i64.const 17) (i64.const 7)) (i64.const 2)) - -(assert_trap (invoke "div_u" (i64.const 1) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "div_u" (i64.const 0) (i64.const 0)) "integer divide by zero") -(assert_return (invoke "div_u" (i64.const 1) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "div_u" (i64.const 0) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "div_u" (i64.const -1) (i64.const -1)) (i64.const 1)) -(assert_return (invoke "div_u" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "div_u" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0x4000000000000000)) -(assert_return (invoke "div_u" (i64.const 0x8ff00ff00ff00ff0) (i64.const 0x100000001)) (i64.const 0x8ff00fef)) -(assert_return (invoke "div_u" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const 0x20c49ba5e353f7)) -(assert_return (invoke "div_u" (i64.const 5) (i64.const 2)) (i64.const 2)) -(assert_return (invoke "div_u" (i64.const -5) (i64.const 2)) (i64.const 0x7ffffffffffffffd)) -(assert_return (invoke "div_u" (i64.const 5) (i64.const -2)) (i64.const 0)) -(assert_return (invoke "div_u" (i64.const -5) (i64.const -2)) (i64.const 0)) -(assert_return (invoke "div_u" (i64.const 7) (i64.const 3)) (i64.const 2)) -(assert_return (invoke "div_u" (i64.const 11) (i64.const 5)) (i64.const 2)) -(assert_return (invoke "div_u" (i64.const 17) (i64.const 7)) (i64.const 2)) - -(assert_trap (invoke "rem_s" (i64.const 1) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "rem_s" (i64.const 0) (i64.const 0)) "integer divide by zero") -(assert_return (invoke "rem_s" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "rem_s" (i64.const 1) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "rem_s" (i64.const 0) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "rem_s" (i64.const 0) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "rem_s" (i64.const -1) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "rem_s" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "rem_s" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0)) -(assert_return (invoke "rem_s" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const -807)) -(assert_return (invoke "rem_s" (i64.const 5) (i64.const 2)) (i64.const 1)) -(assert_return (invoke "rem_s" (i64.const -5) (i64.const 2)) (i64.const -1)) -(assert_return (invoke "rem_s" (i64.const 5) (i64.const -2)) (i64.const 1)) -(assert_return (invoke "rem_s" (i64.const -5) (i64.const -2)) (i64.const -1)) -(assert_return (invoke "rem_s" (i64.const 7) (i64.const 3)) (i64.const 1)) -(assert_return (invoke "rem_s" (i64.const -7) (i64.const 3)) (i64.const -1)) -(assert_return (invoke "rem_s" (i64.const 7) (i64.const -3)) (i64.const 1)) -(assert_return (invoke "rem_s" (i64.const -7) (i64.const -3)) (i64.const -1)) -(assert_return (invoke "rem_s" (i64.const 11) (i64.const 5)) (i64.const 1)) -(assert_return (invoke "rem_s" (i64.const 17) (i64.const 7)) (i64.const 3)) - -(assert_trap (invoke "rem_u" (i64.const 1) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "rem_u" (i64.const 0) (i64.const 0)) "integer divide by zero") -(assert_return (invoke "rem_u" (i64.const 1) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "rem_u" (i64.const 0) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "rem_u" (i64.const -1) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "rem_u" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0x8000000000000000)) -(assert_return (invoke "rem_u" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0)) -(assert_return (invoke "rem_u" (i64.const 0x8ff00ff00ff00ff0) (i64.const 0x100000001)) (i64.const 0x80000001)) -(assert_return (invoke "rem_u" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const 809)) -(assert_return (invoke "rem_u" (i64.const 5) (i64.const 2)) (i64.const 1)) -(assert_return (invoke "rem_u" (i64.const -5) (i64.const 2)) (i64.const 1)) -(assert_return (invoke "rem_u" (i64.const 5) (i64.const -2)) (i64.const 5)) -(assert_return (invoke "rem_u" (i64.const -5) (i64.const -2)) (i64.const -5)) -(assert_return (invoke "rem_u" (i64.const 7) (i64.const 3)) (i64.const 1)) -(assert_return (invoke "rem_u" (i64.const 11) (i64.const 5)) (i64.const 1)) -(assert_return (invoke "rem_u" (i64.const 17) (i64.const 7)) (i64.const 3)) - -(assert_return (invoke "and" (i64.const 1) (i64.const 0)) (i64.const 0)) -(assert_return (invoke "and" (i64.const 0) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "and" (i64.const 1) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "and" (i64.const 0) (i64.const 0)) (i64.const 0)) -(assert_return (invoke "and" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i64.const 0)) -(assert_return (invoke "and" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0x7fffffffffffffff)) -(assert_return (invoke "and" (i64.const 0xf0f0ffff) (i64.const 0xfffff0f0)) (i64.const 0xf0f0f0f0)) -(assert_return (invoke "and" (i64.const 0xffffffffffffffff) (i64.const 0xffffffffffffffff)) (i64.const 0xffffffffffffffff)) - -(assert_return (invoke "or" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "or" (i64.const 0) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "or" (i64.const 1) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "or" (i64.const 0) (i64.const 0)) (i64.const 0)) -(assert_return (invoke "or" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i64.const -1)) -(assert_return (invoke "or" (i64.const 0x8000000000000000) (i64.const 0)) (i64.const 0x8000000000000000)) -(assert_return (invoke "or" (i64.const 0xf0f0ffff) (i64.const 0xfffff0f0)) (i64.const 0xffffffff)) -(assert_return (invoke "or" (i64.const 0xffffffffffffffff) (i64.const 0xffffffffffffffff)) (i64.const 0xffffffffffffffff)) - -(assert_return (invoke "xor" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "xor" (i64.const 0) (i64.const 1)) (i64.const 1)) -(assert_return (invoke "xor" (i64.const 1) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "xor" (i64.const 0) (i64.const 0)) (i64.const 0)) -(assert_return (invoke "xor" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i64.const -1)) -(assert_return (invoke "xor" (i64.const 0x8000000000000000) (i64.const 0)) (i64.const 0x8000000000000000)) -(assert_return (invoke "xor" (i64.const -1) (i64.const 0x8000000000000000)) (i64.const 0x7fffffffffffffff)) -(assert_return (invoke "xor" (i64.const -1) (i64.const 0x7fffffffffffffff)) (i64.const 0x8000000000000000)) -(assert_return (invoke "xor" (i64.const 0xf0f0ffff) (i64.const 0xfffff0f0)) (i64.const 0x0f0f0f0f)) -(assert_return (invoke "xor" (i64.const 0xffffffffffffffff) (i64.const 0xffffffffffffffff)) (i64.const 0)) - -(assert_return (invoke "shl" (i64.const 1) (i64.const 1)) (i64.const 2)) -(assert_return (invoke "shl" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "shl" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0xfffffffffffffffe)) -(assert_return (invoke "shl" (i64.const 0xffffffffffffffff) (i64.const 1)) (i64.const 0xfffffffffffffffe)) -(assert_return (invoke "shl" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "shl" (i64.const 0x4000000000000000) (i64.const 1)) (i64.const 0x8000000000000000)) -(assert_return (invoke "shl" (i64.const 1) (i64.const 63)) (i64.const 0x8000000000000000)) -(assert_return (invoke "shl" (i64.const 1) (i64.const 64)) (i64.const 1)) -(assert_return (invoke "shl" (i64.const 1) (i64.const 65)) (i64.const 2)) -(assert_return (invoke "shl" (i64.const 1) (i64.const -1)) (i64.const 0x8000000000000000)) -(assert_return (invoke "shl" (i64.const 1) (i64.const 0x7fffffffffffffff)) (i64.const 0x8000000000000000)) - -(assert_return (invoke "shr_s" (i64.const 1) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "shr_s" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "shr_s" (i64.const -1) (i64.const 1)) (i64.const -1)) -(assert_return (invoke "shr_s" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0x3fffffffffffffff)) -(assert_return (invoke "shr_s" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0xc000000000000000)) -(assert_return (invoke "shr_s" (i64.const 0x4000000000000000) (i64.const 1)) (i64.const 0x2000000000000000)) -(assert_return (invoke "shr_s" (i64.const 1) (i64.const 64)) (i64.const 1)) -(assert_return (invoke "shr_s" (i64.const 1) (i64.const 65)) (i64.const 0)) -(assert_return (invoke "shr_s" (i64.const 1) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "shr_s" (i64.const 1) (i64.const 0x7fffffffffffffff)) (i64.const 0)) -(assert_return (invoke "shr_s" (i64.const 1) (i64.const 0x8000000000000000)) (i64.const 1)) -(assert_return (invoke "shr_s" (i64.const 0x8000000000000000) (i64.const 63)) (i64.const -1)) -(assert_return (invoke "shr_s" (i64.const -1) (i64.const 64)) (i64.const -1)) -(assert_return (invoke "shr_s" (i64.const -1) (i64.const 65)) (i64.const -1)) -(assert_return (invoke "shr_s" (i64.const -1) (i64.const -1)) (i64.const -1)) -(assert_return (invoke "shr_s" (i64.const -1) (i64.const 0x7fffffffffffffff)) (i64.const -1)) -(assert_return (invoke "shr_s" (i64.const -1) (i64.const 0x8000000000000000)) (i64.const -1)) - -(assert_return (invoke "shr_u" (i64.const 1) (i64.const 1)) (i64.const 0)) -(assert_return (invoke "shr_u" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "shr_u" (i64.const -1) (i64.const 1)) (i64.const 0x7fffffffffffffff)) -(assert_return (invoke "shr_u" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0x3fffffffffffffff)) -(assert_return (invoke "shr_u" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0x4000000000000000)) -(assert_return (invoke "shr_u" (i64.const 0x4000000000000000) (i64.const 1)) (i64.const 0x2000000000000000)) -(assert_return (invoke "shr_u" (i64.const 1) (i64.const 64)) (i64.const 1)) -(assert_return (invoke "shr_u" (i64.const 1) (i64.const 65)) (i64.const 0)) -(assert_return (invoke "shr_u" (i64.const 1) (i64.const -1)) (i64.const 0)) -(assert_return (invoke "shr_u" (i64.const 1) (i64.const 0x7fffffffffffffff)) (i64.const 0)) -(assert_return (invoke "shr_u" (i64.const 1) (i64.const 0x8000000000000000)) (i64.const 1)) -(assert_return (invoke "shr_u" (i64.const 0x8000000000000000) (i64.const 63)) (i64.const 1)) -(assert_return (invoke "shr_u" (i64.const -1) (i64.const 64)) (i64.const -1)) -(assert_return (invoke "shr_u" (i64.const -1) (i64.const 65)) (i64.const 0x7fffffffffffffff)) -(assert_return (invoke "shr_u" (i64.const -1) (i64.const -1)) (i64.const 1)) -(assert_return (invoke "shr_u" (i64.const -1) (i64.const 0x7fffffffffffffff)) (i64.const 1)) -(assert_return (invoke "shr_u" (i64.const -1) (i64.const 0x8000000000000000)) (i64.const -1)) - -(assert_return (invoke "rotl" (i64.const 1) (i64.const 1)) (i64.const 2)) -(assert_return (invoke "rotl" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "rotl" (i64.const -1) (i64.const 1)) (i64.const -1)) -(assert_return (invoke "rotl" (i64.const 1) (i64.const 64)) (i64.const 1)) -(assert_return (invoke "rotl" (i64.const 0xabcd987602468ace) (i64.const 1)) (i64.const 0x579b30ec048d159d)) -(assert_return (invoke "rotl" (i64.const 0xfe000000dc000000) (i64.const 4)) (i64.const 0xe000000dc000000f)) -(assert_return (invoke "rotl" (i64.const 0xabcd1234ef567809) (i64.const 53)) (i64.const 0x013579a2469deacf)) -(assert_return (invoke "rotl" (i64.const 0xabd1234ef567809c) (i64.const 63)) (i64.const 0x55e891a77ab3c04e)) -(assert_return (invoke "rotl" (i64.const 0xabcd1234ef567809) (i64.const 0xf5)) (i64.const 0x013579a2469deacf)) -(assert_return (invoke "rotl" (i64.const 0xabcd7294ef567809) (i64.const 0xffffffffffffffed)) (i64.const 0xcf013579ae529dea)) -(assert_return (invoke "rotl" (i64.const 0xabd1234ef567809c) (i64.const 0x800000000000003f)) (i64.const 0x55e891a77ab3c04e)) -(assert_return (invoke "rotl" (i64.const 1) (i64.const 63)) (i64.const 0x8000000000000000)) -(assert_return (invoke "rotl" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 1)) - -(assert_return (invoke "rotr" (i64.const 1) (i64.const 1)) (i64.const 0x8000000000000000)) -(assert_return (invoke "rotr" (i64.const 1) (i64.const 0)) (i64.const 1)) -(assert_return (invoke "rotr" (i64.const -1) (i64.const 1)) (i64.const -1)) -(assert_return (invoke "rotr" (i64.const 1) (i64.const 64)) (i64.const 1)) -(assert_return (invoke "rotr" (i64.const 0xabcd987602468ace) (i64.const 1)) (i64.const 0x55e6cc3b01234567)) -(assert_return (invoke "rotr" (i64.const 0xfe000000dc000000) (i64.const 4)) (i64.const 0x0fe000000dc00000)) -(assert_return (invoke "rotr" (i64.const 0xabcd1234ef567809) (i64.const 53)) (i64.const 0x6891a77ab3c04d5e)) -(assert_return (invoke "rotr" (i64.const 0xabd1234ef567809c) (i64.const 63)) (i64.const 0x57a2469deacf0139)) -(assert_return (invoke "rotr" (i64.const 0xabcd1234ef567809) (i64.const 0xf5)) (i64.const 0x6891a77ab3c04d5e)) -(assert_return (invoke "rotr" (i64.const 0xabcd7294ef567809) (i64.const 0xffffffffffffffed)) (i64.const 0x94a77ab3c04d5e6b)) -(assert_return (invoke "rotr" (i64.const 0xabd1234ef567809c) (i64.const 0x800000000000003f)) (i64.const 0x57a2469deacf0139)) -(assert_return (invoke "rotr" (i64.const 1) (i64.const 63)) (i64.const 2)) -(assert_return (invoke "rotr" (i64.const 0x8000000000000000) (i64.const 63)) (i64.const 1)) - -(assert_return (invoke "clz" (i64.const 0xffffffffffffffff)) (i64.const 0)) -(assert_return (invoke "clz" (i64.const 0)) (i64.const 64)) -(assert_return (invoke "clz" (i64.const 0x00008000)) (i64.const 48)) -(assert_return (invoke "clz" (i64.const 0xff)) (i64.const 56)) -(assert_return (invoke "clz" (i64.const 0x8000000000000000)) (i64.const 0)) -(assert_return (invoke "clz" (i64.const 1)) (i64.const 63)) -(assert_return (invoke "clz" (i64.const 2)) (i64.const 62)) -(assert_return (invoke "clz" (i64.const 0x7fffffffffffffff)) (i64.const 1)) - -(assert_return (invoke "ctz" (i64.const -1)) (i64.const 0)) -(assert_return (invoke "ctz" (i64.const 0)) (i64.const 64)) -(assert_return (invoke "ctz" (i64.const 0x00008000)) (i64.const 15)) -(assert_return (invoke "ctz" (i64.const 0x00010000)) (i64.const 16)) -(assert_return (invoke "ctz" (i64.const 0x8000000000000000)) (i64.const 63)) -(assert_return (invoke "ctz" (i64.const 0x7fffffffffffffff)) (i64.const 0)) - -(assert_return (invoke "popcnt" (i64.const -1)) (i64.const 64)) -(assert_return (invoke "popcnt" (i64.const 0)) (i64.const 0)) -(assert_return (invoke "popcnt" (i64.const 0x00008000)) (i64.const 1)) -(assert_return (invoke "popcnt" (i64.const 0x8000800080008000)) (i64.const 4)) -(assert_return (invoke "popcnt" (i64.const 0x7fffffffffffffff)) (i64.const 63)) -(assert_return (invoke "popcnt" (i64.const 0xAAAAAAAA55555555)) (i64.const 32)) -(assert_return (invoke "popcnt" (i64.const 0x99999999AAAAAAAA)) (i64.const 32)) -(assert_return (invoke "popcnt" (i64.const 0xDEADBEEFDEADBEEF)) (i64.const 48)) - -(assert_return (invoke "eqz" (i64.const 0)) (i32.const 1)) -(assert_return (invoke "eqz" (i64.const 1)) (i32.const 0)) -(assert_return (invoke "eqz" (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "eqz" (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "eqz" (i64.const 0xffffffffffffffff)) (i32.const 0)) - -(assert_return (invoke "eq" (i64.const 0) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "eq" (i64.const 1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "eq" (i64.const -1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "eq" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "eq" (i64.const -1) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "eq" (i64.const 1) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const 0) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "eq" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) - -(assert_return (invoke "ne" (i64.const 0) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "ne" (i64.const 1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "ne" (i64.const -1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "ne" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "ne" (i64.const -1) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "ne" (i64.const 1) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const 0) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "ne" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) - -(assert_return (invoke "lt_s" (i64.const 0) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const 1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const -1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const -1) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const 1) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const 0) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "lt_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "lt_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "lt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) - -(assert_return (invoke "lt_u" (i64.const 0) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const -1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const -1) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 1) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 0) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "lt_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "lt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) - -(assert_return (invoke "le_s" (i64.const 0) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const 1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const -1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const -1) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const 1) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "le_s" (i64.const 0) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "le_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) - -(assert_return (invoke "le_u" (i64.const 0) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const 1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const -1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const -1) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const 1) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "le_u" (i64.const 0) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "le_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "le_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "le_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) - -(assert_return (invoke "gt_s" (i64.const 0) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const 1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const -1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const -1) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const 1) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "gt_s" (i64.const 0) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "gt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) - -(assert_return (invoke "gt_u" (i64.const 0) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const 1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const -1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const -1) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const 1) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "gt_u" (i64.const 0) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "gt_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "gt_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "gt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) - -(assert_return (invoke "ge_s" (i64.const 0) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const 1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const -1) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const -1) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const 1) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const 0) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) -(assert_return (invoke "ge_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "ge_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) -(assert_return (invoke "ge_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) - -(assert_return (invoke "ge_u" (i64.const 0) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const -1) (i64.const 1)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const -1) (i64.const -1)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 1) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 0) (i64.const 1)) (i32.const 0)) -(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) -(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) -(assert_return (invoke "ge_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) -(assert_return (invoke "ge_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) diff --git a/libraries/wasm-jit/Test/spec/if.wast b/libraries/wasm-jit/Test/spec/if.wast deleted file mode 100644 index 07a9ee24828..00000000000 --- a/libraries/wasm-jit/Test/spec/if.wast +++ /dev/null @@ -1,449 +0,0 @@ -;; Test `if` operator - -(module - ;; Auxiliary definition - (func $dummy) - - (func (export "empty") (param i32) - (if (get_local 0) (then)) - (if (get_local 0) (then) (else)) - (if $l (get_local 0) (then)) - (if $l (get_local 0) (then) (else)) - ) - - (func (export "singular") (param i32) (result i32) - (if (get_local 0) (then (nop))) - (if (get_local 0) (then (nop)) (else (nop))) - (if (result i32) (get_local 0) (then (i32.const 7)) (else (i32.const 8))) - ) - - (func (export "multi") (param i32) (result i32) - (if (get_local 0) (then (call $dummy) (call $dummy) (call $dummy))) - (if (get_local 0) (then) (else (call $dummy) (call $dummy) (call $dummy))) - (if (result i32) (get_local 0) - (then (call $dummy) (call $dummy) (i32.const 8)) - (else (call $dummy) (call $dummy) (i32.const 9)) - ) - ) - - (func (export "nested") (param i32 i32) (result i32) - (if (result i32) (get_local 0) - (then - (if (get_local 1) (then (call $dummy) (block) (nop))) - (if (get_local 1) (then) (else (call $dummy) (block) (nop))) - (if (result i32) (get_local 1) - (then (call $dummy) (i32.const 9)) - (else (call $dummy) (i32.const 10)) - ) - ) - (else - (if (get_local 1) (then (call $dummy) (block) (nop))) - (if (get_local 1) (then) (else (call $dummy) (block) (nop))) - (if (result i32) (get_local 1) - (then (call $dummy) (i32.const 10)) - (else (call $dummy) (i32.const 11)) - ) - ) - ) - ) - - (func (export "as-unary-operand") (param i32) (result i32) - (i32.ctz - (if (result i32) (get_local 0) - (then (call $dummy) (i32.const 13)) - (else (call $dummy) (i32.const -13)) - ) - ) - ) - (func (export "as-binary-operand") (param i32 i32) (result i32) - (i32.mul - (if (result i32) (get_local 0) - (then (call $dummy) (i32.const 3)) - (else (call $dummy) (i32.const -3)) - ) - (if (result i32) (get_local 1) - (then (call $dummy) (i32.const 4)) - (else (call $dummy) (i32.const -5)) - ) - ) - ) - (func (export "as-test-operand") (param i32) (result i32) - (i32.eqz - (if (result i32) (get_local 0) - (then (call $dummy) (i32.const 13)) - (else (call $dummy) (i32.const 0)) - ) - ) - ) - (func (export "as-compare-operand") (param i32 i32) (result i32) - (f32.gt - (if (result f32) (get_local 0) - (then (call $dummy) (f32.const 3)) - (else (call $dummy) (f32.const -3)) - ) - (if (result f32) (get_local 1) - (then (call $dummy) (f32.const 4)) - (else (call $dummy) (f32.const -4)) - ) - ) - ) - - (func (export "break-bare") (result i32) - (if (i32.const 1) (then (br 0) (unreachable))) - (if (i32.const 1) (then (br 0) (unreachable)) (else (unreachable))) - (if (i32.const 0) (then (unreachable)) (else (br 0) (unreachable))) - (if (i32.const 1) (then (br_if 0 (i32.const 1)) (unreachable))) - (if (i32.const 1) (then (br_if 0 (i32.const 1)) (unreachable)) (else (unreachable))) - (if (i32.const 0) (then (unreachable)) (else (br_if 0 (i32.const 1)) (unreachable))) - (if (i32.const 1) (then (br_table 0 (i32.const 0)) (unreachable))) - (if (i32.const 1) (then (br_table 0 (i32.const 0)) (unreachable)) (else (unreachable))) - (if (i32.const 0) (then (unreachable)) (else (br_table 0 (i32.const 0)) (unreachable))) - (i32.const 19) - ) - - (func (export "break-value") (param i32) (result i32) - (if (result i32) (get_local 0) - (then (br 0 (i32.const 18)) (i32.const 19)) - (else (br 0 (i32.const 21)) (i32.const 20)) - ) - ) - - (func (export "effects") (param i32) (result i32) - (local i32) - (if - (block (result i32) (set_local 1 (i32.const 1)) (get_local 0)) - (then - (set_local 1 (i32.mul (get_local 1) (i32.const 3))) - (set_local 1 (i32.sub (get_local 1) (i32.const 5))) - (set_local 1 (i32.mul (get_local 1) (i32.const 7))) - (br 0) - (set_local 1 (i32.mul (get_local 1) (i32.const 100))) - ) - (else - (set_local 1 (i32.mul (get_local 1) (i32.const 5))) - (set_local 1 (i32.sub (get_local 1) (i32.const 7))) - (set_local 1 (i32.mul (get_local 1) (i32.const 3))) - (br 0) - (set_local 1 (i32.mul (get_local 1) (i32.const 1000))) - ) - ) - (get_local 1) - ) -) - -(assert_return (invoke "empty" (i32.const 0))) -(assert_return (invoke "empty" (i32.const 1))) -(assert_return (invoke "empty" (i32.const 100))) -(assert_return (invoke "empty" (i32.const -2))) - -(assert_return (invoke "singular" (i32.const 0)) (i32.const 8)) -(assert_return (invoke "singular" (i32.const 1)) (i32.const 7)) -(assert_return (invoke "singular" (i32.const 10)) (i32.const 7)) -(assert_return (invoke "singular" (i32.const -10)) (i32.const 7)) - -(assert_return (invoke "multi" (i32.const 0)) (i32.const 9)) -(assert_return (invoke "multi" (i32.const 1)) (i32.const 8)) -(assert_return (invoke "multi" (i32.const 13)) (i32.const 8)) -(assert_return (invoke "multi" (i32.const -5)) (i32.const 8)) - -(assert_return (invoke "nested" (i32.const 0) (i32.const 0)) (i32.const 11)) -(assert_return (invoke "nested" (i32.const 1) (i32.const 0)) (i32.const 10)) -(assert_return (invoke "nested" (i32.const 0) (i32.const 1)) (i32.const 10)) -(assert_return (invoke "nested" (i32.const 3) (i32.const 2)) (i32.const 9)) -(assert_return (invoke "nested" (i32.const 0) (i32.const -100)) (i32.const 10)) -(assert_return (invoke "nested" (i32.const 10) (i32.const 10)) (i32.const 9)) -(assert_return (invoke "nested" (i32.const 0) (i32.const -1)) (i32.const 10)) -(assert_return (invoke "nested" (i32.const -111) (i32.const -2)) (i32.const 9)) - -(assert_return (invoke "as-unary-operand" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "as-unary-operand" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "as-unary-operand" (i32.const -1)) (i32.const 0)) - -(assert_return (invoke "as-binary-operand" (i32.const 0) (i32.const 0)) (i32.const 15)) -(assert_return (invoke "as-binary-operand" (i32.const 0) (i32.const 1)) (i32.const -12)) -(assert_return (invoke "as-binary-operand" (i32.const 1) (i32.const 0)) (i32.const -15)) -(assert_return (invoke "as-binary-operand" (i32.const 1) (i32.const 1)) (i32.const 12)) - -(assert_return (invoke "as-test-operand" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "as-test-operand" (i32.const 1)) (i32.const 0)) - -(assert_return (invoke "as-compare-operand" (i32.const 0) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "as-compare-operand" (i32.const 0) (i32.const 1)) (i32.const 0)) -(assert_return (invoke "as-compare-operand" (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "as-compare-operand" (i32.const 1) (i32.const 1)) (i32.const 0)) - -(assert_return (invoke "break-bare") (i32.const 19)) -(assert_return (invoke "break-value" (i32.const 1)) (i32.const 18)) -(assert_return (invoke "break-value" (i32.const 0)) (i32.const 21)) - -(assert_return (invoke "effects" (i32.const 1)) (i32.const -14)) -(assert_return (invoke "effects" (i32.const 0)) (i32.const -6)) - -(assert_invalid - (module (func $type-empty-i32 (result i32) (if (i32.const 0) (then)))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-i64 (result i64) (if (i32.const 0) (then)))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f32 (result f32) (if (i32.const 0) (then)))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f64 (result f64) (if (i32.const 0) (then)))) - "type mismatch" -) - -(assert_invalid - (module (func $type-empty-i32 (result i32) (if (i32.const 0) (then) (else)))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-i64 (result i64) (if (i32.const 0) (then) (else)))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f32 (result f32) (if (i32.const 0) (then) (else)))) - "type mismatch" -) -(assert_invalid - (module (func $type-empty-f64 (result f64) (if (i32.const 0) (then) (else)))) - "type mismatch" -) - -(assert_invalid - (module (func $type-then-value-num-vs-void - (if (i32.const 1) (then (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-then-value-num-vs-void - (if (i32.const 1) (then (i32.const 1)) (else)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-else-value-num-vs-void - (if (i32.const 1) (then) (else (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-both-value-num-vs-void - (if (i32.const 1) (then (i32.const 1)) (else (i32.const 1))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-then-value-empty-vs-num (result i32) - (if (result i32) (i32.const 1) (then) (else (i32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-then-value-empty-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i32.const 0)) (else)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-both-value-empty-vs-num (result i32) - (if (result i32) (i32.const 1) (then) (else)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-no-else-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i32.const 1))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-then-value-void-vs-num (result i32) - (if (result i32) (i32.const 1) (then (nop)) (else (i32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-then-value-void-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i32.const 0)) (else (nop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-both-value-void-vs-num (result i32) - (if (result i32) (i32.const 1) (then (nop)) (else (nop))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-then-value-num-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i64.const 1)) (else (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-then-value-num-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i32.const 1)) (else (i64.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-both-value-num-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i64.const 1)) (else (i64.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-both-different-value-num-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i64.const 1)) (else (f64.const 1))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-then-value-unreached-select (result i32) - (if (result i64) - (i32.const 0) - (then (select (unreachable) (unreachable) (unreachable))) - (else (i64.const 0)) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-else-value-unreached-select (result i32) - (if (result i64) - (i32.const 1) - (then (i64.const 0)) - (else (select (unreachable) (unreachable) (unreachable))) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-else-value-unreached-select (result i32) - (if (result i64) - (i32.const 1) - (then (select (unreachable) (unreachable) (unreachable))) - (else (select (unreachable) (unreachable) (unreachable))) - ) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-then-break-last-void-vs-num (result i32) - (if (result i32) (i32.const 1) (then (br 0)) (else (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-else-break-last-void-vs-num (result i32) - (if (result i32) (i32.const 1) (then (i32.const 1)) (else (br 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-then-break-empty-vs-num (result i32) - (if (result i32) (i32.const 1) - (then (br 0) (i32.const 1)) - (else (i32.const 1)) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-else-break-empty-vs-num (result i32) - (if (result i32) (i32.const 1) - (then (i32.const 1)) - (else (br 0) (i32.const 1)) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-then-break-void-vs-num (result i32) - (if (result i32) (i32.const 1) - (then (br 0 (nop)) (i32.const 1)) - (else (i32.const 1)) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-else-break-void-vs-num (result i32) - (if (result i32) (i32.const 1) - (then (i32.const 1)) - (else (br 0 (nop)) (i32.const 1)) - ) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-then-break-num-vs-num (result i32) - (if (result i32) (i32.const 1) - (then (br 0 (i64.const 1)) (i32.const 1)) - (else (i32.const 1)) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-else-break-num-vs-num (result i32) - (if (result i32) (i32.const 1) - (then (i32.const 1)) - (else (br 0 (i64.const 1)) (i32.const 1)) - ) - )) - "type mismatch" -) - - -(assert_malformed - (module quote "(func if end $l)") - "mismatching label" -) -(assert_malformed - (module quote "(func if $a end $l)") - "mismatching label" -) -(assert_malformed - (module quote "(func if else $l end)") - "mismatching label" -) -(assert_malformed - (module quote "(func if $a else $l end)") - "mismatching label" -) -(assert_malformed - (module quote "(func if else end $l)") - "mismatching label" -) -(assert_malformed - (module quote "(func if else $l end $l)") - "mismatching label" -) -(assert_malformed - (module quote "(func if else $l1 end $l2)") - "mismatching label" -) -(assert_malformed - (module quote "(func if $a else end $l)") - "mismatching label" -) -(assert_malformed - (module quote "(func if $a else $a end $l)") - "mismatching label" -) -(assert_malformed - (module quote "(func if $a else $l end $l)") - "mismatching label" -) diff --git a/libraries/wasm-jit/Test/spec/imports.wast b/libraries/wasm-jit/Test/spec/imports.wast deleted file mode 100644 index e9a28dcdcc2..00000000000 --- a/libraries/wasm-jit/Test/spec/imports.wast +++ /dev/null @@ -1,554 +0,0 @@ -;; Auxiliary module to import from - -(module - (func (export "func")) - (func (export "func-i32") (param i32)) - (func (export "func-f32") (param f32)) - (func (export "func->i32") (result i32) (i32.const 22)) - (func (export "func->f32") (result f32) (f32.const 11)) - (func (export "func-i32->i32") (param i32) (result i32) (get_local 0)) - (func (export "func-i64->i64") (param i64) (result i64) (get_local 0)) - (global (export "global-i32") i32 (i32.const 55)) - (global (export "global-f32") f32 (f32.const 44)) - (table (export "table-10-inf") 10 anyfunc) - ;; (table (export "table-10-20") 10 20 anyfunc) - (memory (export "memory-2-inf") 2) - ;; (memory (export "memory-2-4") 2 4) -) - -(register "test") - - -;; Functions - -(module - (type $func_i32 (func (param i32))) - (type $func_i64 (func (param i64))) - (type $func_f32 (func (param f32))) - (type $func_f64 (func (param f64))) - - (import "spectest" "print" (func (param i32))) - ;; JavaScript can't handle i64 yet. - ;; (func (import "spectest" "print") (param i64)) - (import "spectest" "print" (func $print_i32 (param i32))) - ;; JavaScript can't handle i64 yet. - ;; (import "spectest" "print" (func $print_i64 (param i64))) - (import "spectest" "print" (func $print_f32 (param f32))) - (import "spectest" "print" (func $print_f64 (param f64))) - (import "spectest" "print" (func $print_i32_f32 (param i32 f32))) - (import "spectest" "print" (func $print_f64_f64 (param f64 f64))) - (func $print_i32-2 (import "spectest" "print") (param i32)) - (func $print_f64-2 (import "spectest" "print") (param f64)) - (import "test" "func-i64->i64" (func $i64->i64 (param i64) (result i64))) - - (func (export "p1") (import "spectest" "print") (param i32)) - (func $p (export "p2") (import "spectest" "print") (param i32)) - (func (export "p3") (export "p4") (import "spectest" "print") (param i32)) - (func (export "p5") (import "spectest" "print") (type 0)) - (func (export "p6") (import "spectest" "print") (type 0) (param i32) (result)) - - (import "spectest" "print" (func (type $forward))) - (func (import "spectest" "print") (type $forward)) - (type $forward (func (param i32))) - - (table anyfunc (elem $print_i32 $print_f64)) - - (func (export "print32") (param $i i32) - (local $x f32) - (set_local $x (f32.convert_s/i32 (get_local $i))) - (call 0 (get_local $i)) - (call $print_i32_f32 - (i32.add (get_local $i) (i32.const 1)) - (f32.const 42) - ) - (call $print_i32 (get_local $i)) - (call $print_i32-2 (get_local $i)) - (call $print_f32 (get_local $x)) - (call_indirect $func_i32 (get_local $i) (i32.const 0)) - ) - - (func (export "print64") (param $i i64) - (local $x f64) - (set_local $x (f64.convert_s/i64 (call $i64->i64 (get_local $i)))) - ;; JavaScript can't handle i64 yet. - ;; (call 1 (get_local $i)) - (call $print_f64_f64 - (f64.add (get_local $x) (f64.const 1)) - (f64.const 53) - ) - ;; JavaScript can't handle i64 yet. - ;; (call $print_i64 (get_local $i)) - (call $print_f64 (get_local $x)) - (call $print_f64-2 (get_local $x)) - (call_indirect $func_f64 (get_local $x) (i32.const 1)) - ) -) - -(assert_return (invoke "print32" (i32.const 13))) -(assert_return (invoke "print64" (i64.const 24))) - -(module (import "test" "func" (func))) -(module (import "test" "func-i32" (func (param i32)))) -(module (import "test" "func-f32" (func (param f32)))) -(module (import "test" "func->i32" (func (result i32)))) -(module (import "test" "func->f32" (func (result f32)))) -(module (import "test" "func-i32->i32" (func (param i32) (result i32)))) -(module (import "test" "func-i64->i64" (func (param i64) (result i64)))) - -(assert_unlinkable - (module (import "test" "unknown" (func))) - "unknown import" -) -(assert_unlinkable - (module (import "spectest" "unknown" (func))) - "unknown import" -) - -(assert_unlinkable - (module (import "test" "func" (func (param i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func" (func (result i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func" (func (param i32) (result i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32" (func))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32" (func (result i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32" (func (param f32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32" (func (param i64)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32" (func (param i32) (result i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func->i32" (func))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func->i32" (func (param i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func->i32" (func (result f32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func->i32" (func (result i64)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func->i32" (func (param i32) (result i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32->i32" (func))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32->i32" (func (param i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "func-i32->i32" (func (result i32)))) - "incompatible import type" -) - -(assert_unlinkable - (module (import "test" "global-i32" (func (result i32)))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table-10-inf" (func))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory-2-inf" (func))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "global" (func))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "table" (func))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "memory" (func))) - "incompatible import type" -) - - -;; Globals - -(module - (import "spectest" "global" (global i32)) - (global (import "spectest" "global") i32) - - (import "spectest" "global" (global $x i32)) - (global $y (import "spectest" "global") i32) - - ;; JavaScript can't handle i64 yet. - ;; (import "spectest" "global" (global i64)) - (import "spectest" "global" (global f32)) - (import "spectest" "global" (global f64)) - - (func (export "get-0") (result i32) (get_global 0)) - (func (export "get-1") (result i32) (get_global 1)) - (func (export "get-x") (result i32) (get_global $x)) - (func (export "get-y") (result i32) (get_global $y)) -) - -(assert_return (invoke "get-0") (i32.const 666)) -(assert_return (invoke "get-1") (i32.const 666)) -(assert_return (invoke "get-x") (i32.const 666)) -(assert_return (invoke "get-y") (i32.const 666)) - -(module (import "test" "global-i32" (global i32))) -(module (import "test" "global-f32" (global f32))) - -(assert_unlinkable - (module (import "test" "unknown" (global i32))) - "unknown import" -) -(assert_unlinkable - (module (import "spectest" "unknown" (global i32))) - "unknown import" -) - -(assert_unlinkable - (module (import "test" "func" (global i32))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table-10-inf" (global i32))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory-2-inf" (global i32))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "print" (global i32))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "table" (global i32))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "memory" (global i32))) - "incompatible import type" -) - - -;; Tables - -(module - (type (func (result i32))) - (import "spectest" "table" (table 10 20 anyfunc)) - (elem 0 (i32.const 1) $f $g) - - (func (export "call") (param i32) (result i32) (call_indirect 0 (get_local 0))) - (func $f (result i32) (i32.const 11)) - (func $g (result i32) (i32.const 22)) -) - -(assert_trap (invoke "call" (i32.const 0)) "uninitialized element") -(assert_return (invoke "call" (i32.const 1)) (i32.const 11)) -(assert_return (invoke "call" (i32.const 2)) (i32.const 22)) -(assert_trap (invoke "call" (i32.const 3)) "uninitialized element") -(assert_trap (invoke "call" (i32.const 100)) "undefined element") - - -(module - (type (func (result i32))) - (table (import "spectest" "table") 10 20 anyfunc) - (elem 0 (i32.const 1) $f $g) - - (func (export "call") (param i32) (result i32) (call_indirect 0 (get_local 0))) - (func $f (result i32) (i32.const 11)) - (func $g (result i32) (i32.const 22)) -) - -(assert_trap (invoke "call" (i32.const 0)) "uninitialized element") -(assert_return (invoke "call" (i32.const 1)) (i32.const 11)) -(assert_return (invoke "call" (i32.const 2)) (i32.const 22)) -(assert_trap (invoke "call" (i32.const 3)) "uninitialized element") -(assert_trap (invoke "call" (i32.const 100)) "undefined element") - - -(assert_invalid - (module (import "" "" (table 10 anyfunc)) (import "" "" (table 10 anyfunc))) - "multiple tables" -) -(assert_invalid - (module (import "" "" (table 10 anyfunc)) (table 10 anyfunc)) - "multiple tables" -) -(assert_invalid - (module (table 10 anyfunc) (table 10 anyfunc)) - "multiple tables" -) - -(module (import "test" "table-10-inf" (table 10 anyfunc))) -(module (import "test" "table-10-inf" (table 5 anyfunc))) -(module (import "test" "table-10-inf" (table 0 anyfunc))) -(module (import "spectest" "table" (table 10 anyfunc))) -(module (import "spectest" "table" (table 5 anyfunc))) -(module (import "spectest" "table" (table 0 anyfunc))) -(module (import "spectest" "table" (table 10 20 anyfunc))) -(module (import "spectest" "table" (table 5 20 anyfunc))) -(module (import "spectest" "table" (table 0 20 anyfunc))) -(module (import "spectest" "table" (table 10 25 anyfunc))) -(module (import "spectest" "table" (table 5 25 anyfunc))) - -(assert_unlinkable - (module (import "test" "unknown" (table 10 anyfunc))) - "unknown import" -) -(assert_unlinkable - (module (import "spectest" "unknown" (table 10 anyfunc))) - "unknown import" -) - -(assert_unlinkable - (module (import "test" "table-10-inf" (table 12 anyfunc))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table-10-inf" (table 10 20 anyfunc))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "table" (table 12 anyfunc))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "table" (table 10 15 anyfunc))) - "incompatible import type" -) - -(assert_unlinkable - (module (import "test" "func" (table 10 anyfunc))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "global-i32" (table 10 anyfunc))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory-2-inf" (table 10 anyfunc))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "print" (table 10 anyfunc))) - "incompatible import type" -) - - - -;; Memories - -(module - (import "spectest" "memory" (memory 1 2)) - (data 0 (i32.const 10) "\10") - - (func (export "load") (param i32) (result i32) (i32.load (get_local 0))) -) - -(assert_return (invoke "load" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load" (i32.const 10)) (i32.const 16)) -(assert_return (invoke "load" (i32.const 8)) (i32.const 0x100000)) -(assert_trap (invoke "load" (i32.const 1000000)) "out of bounds memory access") - -(module - (memory (import "spectest" "memory") 1 2) - (data 0 (i32.const 10) "\10") - - (func (export "load") (param i32) (result i32) (i32.load (get_local 0))) -) -(assert_return (invoke "load" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "load" (i32.const 10)) (i32.const 16)) -(assert_return (invoke "load" (i32.const 8)) (i32.const 0x100000)) -(assert_trap (invoke "load" (i32.const 1000000)) "out of bounds memory access") - -(assert_invalid - (module (import "" "" (memory 1)) (import "" "" (memory 1))) - "multiple memories" -) -(assert_invalid - (module (import "" "" (memory 1)) (memory 0)) - "multiple memories" -) -(assert_invalid - (module (memory 0) (memory 0)) - "multiple memories" -) - -(module (import "test" "memory-2-inf" (memory 2))) -(module (import "test" "memory-2-inf" (memory 1))) -(module (import "test" "memory-2-inf" (memory 0))) -(module (import "spectest" "memory" (memory 1))) -(module (import "spectest" "memory" (memory 0))) -(module (import "spectest" "memory" (memory 1 2))) -(module (import "spectest" "memory" (memory 0 2))) -(module (import "spectest" "memory" (memory 1 3))) -(module (import "spectest" "memory" (memory 0 3))) - -(assert_unlinkable - (module (import "test" "unknown" (memory 1))) - "unknown import" -) -(assert_unlinkable - (module (import "spectest" "unknown" (memory 1))) - "unknown import" -) - -(assert_unlinkable - (module (import "test" "memory-2-inf" (memory 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "memory-2-inf" (memory 2 3))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "memory" (memory 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "memory" (memory 1 1))) - "incompatible import type" -) - -(assert_unlinkable - (module (import "test" "func-i32" (memory 1))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "global-i32" (memory 1))) - "incompatible import type" -) -(assert_unlinkable - (module (import "test" "table-10-inf" (memory 1))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "print" (memory 1))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "global" (memory 1))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "table" (memory 1))) - "incompatible import type" -) - -(assert_unlinkable - (module (import "spectest" "memory" (memory 2))) - "incompatible import type" -) -(assert_unlinkable - (module (import "spectest" "memory" (memory 1 1))) - "incompatible import type" -) - -(module - (import "spectest" "memory" (memory 0 3)) ;; actual has max size 2 - (func (export "grow") (param i32) (result i32) (grow_memory (get_local 0))) -) -(assert_return (invoke "grow" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "grow" (i32.const 1)) (i32.const 1)) -(assert_return (invoke "grow" (i32.const 0)) (i32.const 2)) -(assert_return (invoke "grow" (i32.const 1)) (i32.const -1)) -(assert_return (invoke "grow" (i32.const 0)) (i32.const 2)) - - -;; Syntax errors - -(assert_malformed - (module quote "(func) (import \"\" \"\" (func))") - "import after function" -) -(assert_malformed - (module quote "(func) (import \"\" \"\" (global i64))") - "import after function" -) -(assert_malformed - (module quote "(func) (import \"\" \"\" (table 0 anyfunc))") - "import after function" -) -(assert_malformed - (module quote "(func) (import \"\" \"\" (memory 0))") - "import after function" -) - -(assert_malformed - (module quote "(global i64 (i64.const 0)) (import \"\" \"\" (func))") - "import after global" -) -(assert_malformed - (module quote "(global i64 (i64.const 0)) (import \"\" \"\" (global f32))") - "import after global" -) -(assert_malformed - (module quote "(global i64 (i64.const 0)) (import \"\" \"\" (table 0 anyfunc))") - "import after global" -) -(assert_malformed - (module quote "(global i64 (i64.const 0)) (import \"\" \"\" (memory 0))") - "import after global" -) - -(assert_malformed - (module quote "(table 0 anyfunc) (import \"\" \"\" (func))") - "import after table" -) -(assert_malformed - (module quote "(table 0 anyfunc) (import \"\" \"\" (global i32))") - "import after table" -) -(assert_malformed - (module quote "(table 0 anyfunc) (import \"\" \"\" (table 0 anyfunc))") - "import after table" -) -(assert_malformed - (module quote "(table 0 anyfunc) (import \"\" \"\" (memory 0))") - "import after table" -) - -(assert_malformed - (module quote "(memory 0) (import \"\" \"\" (func))") - "import after memory" -) -(assert_malformed - (module quote "(memory 0) (import \"\" \"\" (global i32))") - "import after memory" -) -(assert_malformed - (module quote "(memory 0) (import \"\" \"\" (table 1 3 anyfunc))") - "import after memory" -) -(assert_malformed - (module quote "(memory 0) (import \"\" \"\" (memory 1 2))") - "import after memory" -) diff --git a/libraries/wasm-jit/Test/spec/int_exprs.wast b/libraries/wasm-jit/Test/spec/int_exprs.wast deleted file mode 100644 index 99396a8b032..00000000000 --- a/libraries/wasm-jit/Test/spec/int_exprs.wast +++ /dev/null @@ -1,350 +0,0 @@ -;; Test interesting integer "expressions". These tests contain code -;; patterns which tempt common value-changing optimizations. - -;; Test that x+1>n is not folded to x. - -(module - (func (export "i32.no_fold_shl_shr_s") (param $x i32) (result i32) - (i32.shr_s (i32.shl (get_local $x) (i32.const 1)) (i32.const 1))) - (func (export "i32.no_fold_shl_shr_u") (param $x i32) (result i32) - (i32.shr_u (i32.shl (get_local $x) (i32.const 1)) (i32.const 1))) - - (func (export "i64.no_fold_shl_shr_s") (param $x i64) (result i64) - (i64.shr_s (i64.shl (get_local $x) (i64.const 1)) (i64.const 1))) - (func (export "i64.no_fold_shl_shr_u") (param $x i64) (result i64) - (i64.shr_u (i64.shl (get_local $x) (i64.const 1)) (i64.const 1))) -) - -(assert_return (invoke "i32.no_fold_shl_shr_s" (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "i32.no_fold_shl_shr_u" (i32.const 0x80000000)) (i32.const 0)) -(assert_return (invoke "i64.no_fold_shl_shr_s" (i64.const 0x8000000000000000)) (i64.const 0)) -(assert_return (invoke "i64.no_fold_shl_shr_u" (i64.const 0x8000000000000000)) (i64.const 0)) - -;; Test that x>>n<?,./ ") (result i32) (i32.const 6)) - - ;; Test that we can use names that have special meaning in JS. - (func (export "NaN") (result i32) (i32.const 7)) - (func (export "Infinity") (result i32) (i32.const 8)) - (func (export "if") (result i32) (i32.const 9)) - - ;; Test that we can use common libc names without conflict. - (func (export "malloc") (result i32) (i32.const 10)) - - ;; Test that we can use some libc hidden names without conflict. - (func (export "_malloc") (result i32) (i32.const 11)) - (func (export "__malloc") (result i32) (i32.const 12)) - - ;; Test that names are case-sensitive. - (func (export "a") (result i32) (i32.const 13)) - (func (export "A") (result i32) (i32.const 14)) - - ;; Test that UTF-8 BOM code points can appear in identifiers. - (func (export "") (result i32) (i32.const 15)) - - ;; Test that Unicode normalization is not applied. These function names - ;; contain different codepoints which normalize to the same thing under - ;; NFC or NFD. - (func (export "Å") (result i32) (i32.const 16)) - (func (export "Å") (result i32) (i32.const 17)) - (func (export "Å") (result i32) (i32.const 18)) - - ;; Test that Unicode compatibility normalization is not applied. These - ;; function names contain different codepoints which normalize to the - ;; same thing under NFKC or NFKD. - (func (export "ffi") (result i32) (i32.const 19)) - (func (export "ffi") (result i32) (i32.const 20)) - (func (export "ffi") (result i32) (i32.const 21)) - - ;; Test the C0 control codes. - (func (export "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f") (result i32) (i32.const 22)) - (func (export "\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f") (result i32) (i32.const 23)) - ;; Test miscellaneous control codes. - (func (export " \7f") (result i32) (i32.const 24)) - ;; Test the C1 control codes. - (func (export "\c2\80\c2\81\c2\82\c2\83\c2\84\c2\85\c2\86\c2\87\c2\88\c2\89\c2\8a\c2\8b\c2\8c\c2\8d\c2\8e\c2\8f") (result i32) (i32.const 25)) - (func (export "\c2\90\c2\91\c2\92\c2\93\c2\94\c2\95\c2\96\c2\97\c2\98\c2\99\c2\9a\c2\9b\c2\9c\c2\9d\c2\9e\c2\9f") (result i32) (i32.const 26)) - ;; Test the Unicode Specials. - (func (export "\ef\bf\b0\ef\bf\b1\ef\bf\b2\ef\bf\b3\ef\bf\b4\ef\bf\b5\ef\bf\b6\ef\bf\b7") (result i32) (i32.const 27)) - (func (export "\ef\bf\b8\ef\bf\b9\ef\bf\ba\ef\bf\bb\ef\bf\bc\ef\bf\bd\ef\bf\be\ef\bf\bf") (result i32) (i32.const 28)) - - ;; Test that the control pictures are distinct from the control codes they - ;; depict. These correspond to the C0 and miscellaneous control code tests - ;; above. - (func (export "␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏") (result i32) (i32.const 29)) - (func (export "␐␑␒␓␔␕␖␗␘␙␚␛␜␝␞␟") (result i32) (i32.const 30)) - (func (export "␠␡") (result i32) (i32.const 31)) - - ;; Test the Unicode Specials in non-escaped form (excluding U+FFFE and - ;; U+FFFF, so that generic tools don't detect this file as non-UTF-8). - (func (export "￰￱￲￳￴￵￶￷￸�") (result i32) (i32.const 32)) - - ;; Test a bare ZWJ code point. - (func (export "‍") (result i32) (i32.const 33)) - ;; Test a bare ZWNJ code point. - (func (export "‌") (result i32) (i32.const 34)) - - ;; Test various bare joiner code points. - (func (export "͏") (result i32) (i32.const 35)) - (func (export "⁠") (result i32) (i32.const 36)) - (func (export "⵿") (result i32) (i32.const 37)) - (func (export "𑁿") (result i32) (i32.const 38)) - (func (export "᠎") (result i32) (i32.const 39)) - - ;; Test various interesting code points: reverse BOM, zero-width space, - ;; no-break space, soft hyphen, word joiner, ogham space mark, - ;; right-to-left override, left-to-right override. - (func (export "￯​ ­⁠ ‮‭") (result i32) (i32.const 40)) - - ;; Test more interesting code points: left-to-right mark, right-to-left mark, - ;; non-breaking hyphen, line separator, paragraph separator, - ;; left-to-right embedding, right-to-left embedding, - ;; pop directional formatting, narrow no-break space, left-to-right isolate, - ;; right-to-left isolate, first strong isolate, pop directional isolate. - (func (export "‎‏‑

‪‫‬ ⁦⁧⁨⁩") (result i32) (i32.const 41)) - - ;; Test some deprecated code points: inhibit symmetric swapping, - ;; activate symmetric swapping, inhibit arabic form shaping, - ;; activate arabic form shaping, national digit shapes, nominal digit shapes. - (func (export "") (result i32) (i32.const 42)) - - ;; Test "invisible" operator code points. - (func (export "⁡⁢⁣⁤") (result i32) (i32.const 43)) - - ;; Test that code points outside the BMP are supported. - (func (export "𐀀󟿿􏿿") (result i32) (i32.const 44)) - - ;; Test that WebAssembly implementations cope in the presence of Zalgo. - (func (export "Z̴͇̫̥̪͓͈͔͎̗̞̺̯̱̞̙̱̜̖̠̏͆̆͛͌͘͞ḁ̶̰̳̭͙̲̱̹̝͎̼͗ͨ̎̄̆͗̿̀́͟͡l̶̷͉̩̹̫̝͖̙̲̼͇͚͍̮͎̥̞̈́͊͗ͦ̈́ͫ̇́̚ͅͅg̶͕͔͚̩̓̐̅ͮ̔̐̎̂̏̾͊̍͋͊ͧ́̆ͦ͞o̡͋̔͐ͪͩ͏̢̧̫̙̤̮͖͙͓̺̜̩̼̘̠́") (result i32) (i32.const 45)) - - ;; Test Hangul filler code points. - (func (export "ᅟᅠㅤᅠ") (result i32) (i32.const 46)) - - ;; Test variation selectors (which are also ID_Continue code points). - (func (export "︀") (result i32) (i32.const 47)) - (func (export "︄") (result i32) (i32.const 48)) - (func (export "󠄀") (result i32) (i32.const 49)) - (func (export "󠇯") (result i32) (i32.const 50)) - - ;; Test an uncombined combining code point. - (func (export "̈") (result i32) (i32.const 51)) - - ;; Test that numerous different present and historical representations of the - ;; "newline" concept are distinct. Tests largely inspired by: - ;; https://en.wikipedia.org/wiki/Newline#Representations - ;; https://en.wikipedia.org/wiki/Newline#Unicode and - ;; https://en.wikipedia.org/wiki/Newline#Reverse_and_partial_line_feeds - (func (export "\0a") (result i32) (i32.const 52)) - (func (export "␤") (result i32) (i32.const 53)) - (func (export "
") (result i32) (i32.const 54)) - (func (export "\0d") (result i32) (i32.const 55)) - (func (export "\0d\0a") (result i32) (i32.const 56)) - (func (export "\0a\0d") (result i32) (i32.const 57)) - (func (export "\1e") (result i32) (i32.const 58)) - (func (export "\0b") (result i32) (i32.const 59)) - (func (export "\0c") (result i32) (i32.const 60)) - (func (export "\c2\85") (result i32) (i32.const 61)) - (func (export "
") (result i32) (i32.const 62)) - (func (export "…") (result i32) (i32.const 63)) - (func (export "⏎") (result i32) (i32.const 64)) - (func (export "\c2\8b") (result i32) (i32.const 65)) - (func (export "\c2\8c") (result i32) (i32.const 66)) - (func (export "\c2\8d") (result i32) (i32.const 67)) - (func (export "↵") (result i32) (i32.const 68)) - (func (export "↩") (result i32) (i32.const 69)) - (func (export "⌤") (result i32) (i32.const 70)) - (func (export "⤶") (result i32) (i32.const 71)) - (func (export "↲") (result i32) (i32.const 72)) - (func (export "⮨") (result i32) (i32.const 73)) - (func (export "⮰") (result i32) (i32.const 74)) - - ;; Test that non-characters are not replaced by the replacement character. - (func (export "�") (result i32) (i32.const 75)) - (func (export "\ef\b7\90") (result i32) (i32.const 76)) - (func (export "\ef\b7\91") (result i32) (i32.const 77)) - (func (export "\ef\b7\92") (result i32) (i32.const 78)) - (func (export "\ef\b7\93") (result i32) (i32.const 79)) - (func (export "\ef\b7\94") (result i32) (i32.const 80)) - (func (export "\ef\b7\95") (result i32) (i32.const 81)) - (func (export "\ef\b7\96") (result i32) (i32.const 82)) - (func (export "\ef\b7\97") (result i32) (i32.const 83)) - (func (export "\ef\b7\98") (result i32) (i32.const 84)) - (func (export "\ef\b7\99") (result i32) (i32.const 85)) - (func (export "\ef\b7\9a") (result i32) (i32.const 86)) - (func (export "\ef\b7\9b") (result i32) (i32.const 87)) - (func (export "\ef\b7\9c") (result i32) (i32.const 88)) - (func (export "\ef\b7\9d") (result i32) (i32.const 89)) - (func (export "\ef\b7\9e") (result i32) (i32.const 90)) - (func (export "\ef\b7\9f") (result i32) (i32.const 91)) - (func (export "\ef\b7\a0") (result i32) (i32.const 92)) - (func (export "\ef\b7\a1") (result i32) (i32.const 93)) - (func (export "\ef\b7\a2") (result i32) (i32.const 94)) - (func (export "\ef\b7\a3") (result i32) (i32.const 95)) - (func (export "\ef\b7\a4") (result i32) (i32.const 96)) - (func (export "\ef\b7\a5") (result i32) (i32.const 97)) - (func (export "\ef\b7\a6") (result i32) (i32.const 98)) - (func (export "\ef\b7\a7") (result i32) (i32.const 99)) - (func (export "\ef\b7\a8") (result i32) (i32.const 100)) - (func (export "\ef\b7\a9") (result i32) (i32.const 101)) - (func (export "\ef\b7\aa") (result i32) (i32.const 102)) - (func (export "\ef\b7\ab") (result i32) (i32.const 103)) - (func (export "\ef\b7\ac") (result i32) (i32.const 104)) - (func (export "\ef\b7\ad") (result i32) (i32.const 105)) - (func (export "\ef\b7\ae") (result i32) (i32.const 106)) - (func (export "\ef\b7\af") (result i32) (i32.const 107)) - (func (export "\ef\bf\be") (result i32) (i32.const 108)) - (func (export "\ef\bf\bf") (result i32) (i32.const 109)) - (func (export "\f0\9f\bf\be") (result i32) (i32.const 110)) - (func (export "\f0\9f\bf\bf") (result i32) (i32.const 111)) - (func (export "\f0\af\bf\be") (result i32) (i32.const 112)) - (func (export "\f0\af\bf\bf") (result i32) (i32.const 113)) - (func (export "\f0\bf\bf\be") (result i32) (i32.const 114)) - (func (export "\f0\bf\bf\bf") (result i32) (i32.const 115)) - (func (export "\f1\8f\bf\be") (result i32) (i32.const 116)) - (func (export "\f1\8f\bf\bf") (result i32) (i32.const 117)) - (func (export "\f1\9f\bf\be") (result i32) (i32.const 118)) - (func (export "\f1\9f\bf\bf") (result i32) (i32.const 119)) - (func (export "\f1\af\bf\be") (result i32) (i32.const 120)) - (func (export "\f1\af\bf\bf") (result i32) (i32.const 121)) - (func (export "\f1\bf\bf\be") (result i32) (i32.const 122)) - (func (export "\f1\bf\bf\bf") (result i32) (i32.const 123)) - (func (export "\f2\8f\bf\be") (result i32) (i32.const 124)) - (func (export "\f2\8f\bf\bf") (result i32) (i32.const 125)) - (func (export "\f2\9f\bf\be") (result i32) (i32.const 126)) - (func (export "\f2\9f\bf\bf") (result i32) (i32.const 127)) - (func (export "\f2\af\bf\be") (result i32) (i32.const 128)) - (func (export "\f2\af\bf\bf") (result i32) (i32.const 129)) - (func (export "\f2\bf\bf\be") (result i32) (i32.const 130)) - (func (export "\f2\bf\bf\bf") (result i32) (i32.const 131)) - (func (export "\f3\8f\bf\be") (result i32) (i32.const 132)) - (func (export "\f3\8f\bf\bf") (result i32) (i32.const 133)) - (func (export "\f3\9f\bf\be") (result i32) (i32.const 134)) - (func (export "\f3\9f\bf\bf") (result i32) (i32.const 135)) - (func (export "\f3\af\bf\be") (result i32) (i32.const 136)) - (func (export "\f3\af\bf\bf") (result i32) (i32.const 137)) - (func (export "\f3\bf\bf\be") (result i32) (i32.const 138)) - (func (export "\f3\bf\bf\bf") (result i32) (i32.const 139)) - (func (export "\f4\8f\bf\be") (result i32) (i32.const 140)) - (func (export "\f4\8f\bf\bf") (result i32) (i32.const 141)) - - ;; Test an interrobang with combining diacritical marks above. - ;; https://xkcd.com/1209/ - (func (export "̈‽̈̉") (result i32) (i32.const 142)) - - ;; Test that RLM/LRM don't change the logical byte order. - (func (export "abc") (result i32) (i32.const 143)) - (func (export "‭abc") (result i32) (i32.const 144)) - (func (export "‮cba") (result i32) (i32.const 145)) - (func (export "‭abc‮") (result i32) (i32.const 146)) - (func (export "‮cba‭") (result i32) (i32.const 147)) - - ;; Test that Unicode font variations are preserved. - (func (export "𝑨") (result i32) (i32.const 148)) - (func (export "𝐴") (result i32) (i32.const 149)) - (func (export "𝘈") (result i32) (i32.const 150)) - (func (export "𝘼") (result i32) (i32.const 151)) - (func (export "𝐀") (result i32) (i32.const 152)) - (func (export "𝓐") (result i32) (i32.const 153)) - (func (export "𝕬") (result i32) (i32.const 154)) - (func (export "𝗔") (result i32) (i32.const 155)) - (func (export "𝒜") (result i32) (i32.const 156)) - (func (export "𝔄") (result i32) (i32.const 157)) - (func (export "𝔸") (result i32) (i32.const 158)) - (func (export "𝖠") (result i32) (i32.const 159)) - (func (export "𝙰") (result i32) (i32.const 160)) - (func (export "ᴀ") (result i32) (i32.const 161)) - - ;; Test that various additional letter variations are preserved. - ;; (U+0040, U+0061, U+0041, U+00C5, U+0041 U+030A, U+212B, and the font - ;; variations are covered above.) - (func (export "ᴬ") (result i32) (i32.const 162)) - (func (export "Ⓐ") (result i32) (i32.const 163)) - (func (export "A") (result i32) (i32.const 164)) - (func (export "🄐") (result i32) (i32.const 165)) - (func (export "🄰") (result i32) (i32.const 166)) - (func (export "󠁁") (result i32) (i32.const 167)) - (func (export "U+0041") (result i32) (i32.const 168)) - (func (export "A​") (result i32) (i32.const 169)) - (func (export "А") (result i32) (i32.const 170)) - (func (export "Ꙗ") (result i32) (i32.const 171)) - (func (export "ⷼ") (result i32) (i32.const 172)) - (func (export "ⷶ") (result i32) (i32.const 173)) - (func (export "Ɐ") (result i32) (i32.const 174)) - (func (export "🅐") (result i32) (i32.const 175)) - (func (export "🅰") (result i32) (i32.const 176)) - (func (export "Ⱝ") (result i32) (i32.const 177)) - (func (export "𐐂") (result i32) (i32.const 178)) - (func (export "𐐈") (result i32) (i32.const 179)) - (func (export "𐒰") (result i32) (i32.const 180)) - (func (export "À") (result i32) (i32.const 181)) - (func (export "Á") (result i32) (i32.const 182)) - (func (export "Â") (result i32) (i32.const 183)) - (func (export "Ã") (result i32) (i32.const 184)) - (func (export "Ä") (result i32) (i32.const 185)) - (func (export "Ā") (result i32) (i32.const 186)) - (func (export "Ă") (result i32) (i32.const 187)) - (func (export "Ą") (result i32) (i32.const 188)) - (func (export "Ǎ") (result i32) (i32.const 189)) - (func (export "Ǟ") (result i32) (i32.const 190)) - (func (export "Ǡ") (result i32) (i32.const 191)) - (func (export "Ǻ") (result i32) (i32.const 192)) - (func (export "Ȁ") (result i32) (i32.const 193)) - (func (export "Ȃ") (result i32) (i32.const 194)) - (func (export "Ȧ") (result i32) (i32.const 195)) - (func (export "Ⱥ") (result i32) (i32.const 196)) - (func (export "Ӑ") (result i32) (i32.const 197)) - (func (export "Ӓ") (result i32) (i32.const 198)) - (func (export "ߊ") (result i32) (i32.const 199)) - (func (export "ࠡ") (result i32) (i32.const 200)) - (func (export "ࠢ") (result i32) (i32.const 201)) - (func (export "ࠣ") (result i32) (i32.const 202)) - (func (export "ࠤ") (result i32) (i32.const 203)) - (func (export "ࠥ") (result i32) (i32.const 204)) - (func (export "ऄ") (result i32) (i32.const 205)) - (func (export "अ") (result i32) (i32.const 206)) - (func (export "ॲ") (result i32) (i32.const 207)) - (func (export "অ") (result i32) (i32.const 208)) - (func (export "ਅ") (result i32) (i32.const 209)) - (func (export "અ") (result i32) (i32.const 210)) - (func (export "ଅ") (result i32) (i32.const 211)) - (func (export "அ") (result i32) (i32.const 212)) - (func (export "అ") (result i32) (i32.const 213)) - (func (export "ಅ") (result i32) (i32.const 214)) - (func (export "അ") (result i32) (i32.const 215)) - (func (export "ะ") (result i32) (i32.const 216)) - (func (export "ະ") (result i32) (i32.const 217)) - (func (export "༁") (result i32) (i32.const 218)) - (func (export "ཨ") (result i32) (i32.const 219)) - (func (export "ྸ") (result i32) (i32.const 220)) - (func (export "အ") (result i32) (i32.const 221)) - (func (export "ဢ") (result i32) (i32.const 222)) - (func (export "ႜ") (result i32) (i32.const 223)) - (func (export "ᅡ") (result i32) (i32.const 224)) - (func (export "አ") (result i32) (i32.const 225)) - (func (export "ዐ") (result i32) (i32.const 226)) - (func (export "Ꭰ") (result i32) (i32.const 227)) - (func (export "ᐊ") (result i32) (i32.const 228)) - (func (export "ᖳ") (result i32) (i32.const 229)) - (func (export "ᚨ") (result i32) (i32.const 230)) - (func (export "ᚪ") (result i32) (i32.const 231)) - (func (export "ᛆ") (result i32) (i32.const 232)) - (func (export "ᜀ") (result i32) (i32.const 233)) - (func (export "ᜠ") (result i32) (i32.const 234)) - (func (export "ᝀ") (result i32) (i32.const 235)) - (func (export "ᝠ") (result i32) (i32.const 236)) - (func (export "ᠠ") (result i32) (i32.const 237)) - (func (export "ᢇ") (result i32) (i32.const 238)) - (func (export "ᤠ") (result i32) (i32.const 239)) - (func (export "ᥣ") (result i32) (i32.const 240)) - (func (export "ᨕ") (result i32) (i32.const 241)) - (func (export "ᩋ") (result i32) (i32.const 242)) - (func (export "ᩡ") (result i32) (i32.const 243)) - (func (export "ᮃ") (result i32) (i32.const 244)) - (func (export "ᯀ") (result i32) (i32.const 245)) - (func (export "ᯁ") (result i32) (i32.const 246)) - (func (export "ᰣ") (result i32) (i32.const 247)) - (func (export "Ḁ") (result i32) (i32.const 248)) - (func (export "Ạ") (result i32) (i32.const 249)) - (func (export "Ả") (result i32) (i32.const 250)) - (func (export "Ấ") (result i32) (i32.const 251)) - (func (export "Ầ") (result i32) (i32.const 252)) - (func (export "Ẩ") (result i32) (i32.const 253)) - (func (export "Ẫ") (result i32) (i32.const 254)) - (func (export "Ậ") (result i32) (i32.const 255)) - (func (export "Ắ") (result i32) (i32.const 256)) - (func (export "Ằ") (result i32) (i32.const 257)) - (func (export "Ẳ") (result i32) (i32.const 258)) - (func (export "Ẵ") (result i32) (i32.const 259)) - (func (export "Ặ") (result i32) (i32.const 260)) - (func (export "あ") (result i32) (i32.const 261)) - (func (export "ア") (result i32) (i32.const 262)) - (func (export "ㄚ") (result i32) (i32.const 263)) - (func (export "ㅏ") (result i32) (i32.const 264)) - (func (export "㈎") (result i32) (i32.const 265)) - (func (export "㈏") (result i32) (i32.const 266)) - (func (export "㈐") (result i32) (i32.const 267)) - (func (export "㈑") (result i32) (i32.const 268)) - (func (export "㈒") (result i32) (i32.const 269)) - (func (export "㈓") (result i32) (i32.const 270)) - (func (export "㈔") (result i32) (i32.const 271)) - (func (export "㈕") (result i32) (i32.const 272)) - (func (export "㈖") (result i32) (i32.const 273)) - (func (export "㈗") (result i32) (i32.const 274)) - (func (export "㈘") (result i32) (i32.const 275)) - (func (export "㈙") (result i32) (i32.const 276)) - (func (export "㈚") (result i32) (i32.const 277)) - (func (export "㈛") (result i32) (i32.const 278)) - (func (export "㉮") (result i32) (i32.const 279)) - (func (export "㉯") (result i32) (i32.const 280)) - (func (export "㉰") (result i32) (i32.const 281)) - (func (export "㉱") (result i32) (i32.const 282)) - (func (export "㉲") (result i32) (i32.const 283)) - (func (export "㉳") (result i32) (i32.const 284)) - (func (export "㉴") (result i32) (i32.const 285)) - (func (export "㉵") (result i32) (i32.const 286)) - (func (export "㉶") (result i32) (i32.const 287)) - (func (export "㉷") (result i32) (i32.const 288)) - (func (export "㉸") (result i32) (i32.const 289)) - (func (export "㉹") (result i32) (i32.const 290)) - (func (export "㉺") (result i32) (i32.const 291)) - (func (export "㉻") (result i32) (i32.const 292)) - (func (export "㋐") (result i32) (i32.const 293)) - (func (export "ꀊ") (result i32) (i32.const 294)) - (func (export "ꓮ") (result i32) (i32.const 295)) - (func (export "ꕉ") (result i32) (i32.const 296)) - (func (export "ꚠ") (result i32) (i32.const 297)) - (func (export "ꠀ") (result i32) (i32.const 298)) - (func (export "ꠣ") (result i32) (i32.const 299)) - (func (export "ꡝ") (result i32) (i32.const 300)) - (func (export "ꢂ") (result i32) (i32.const 301)) - (func (export "꣪") (result i32) (i32.const 302)) - (func (export "ꤢ") (result i32) (i32.const 303)) - (func (export "ꥆ") (result i32) (i32.const 304)) - (func (export "ꦄ") (result i32) (i32.const 305)) - (func (export "ꨀ") (result i32) (i32.const 306)) - (func (export "ア") (result i32) (i32.const 307)) - (func (export "ᅡ") (result i32) (i32.const 308)) - (func (export "𐀀") (result i32) (i32.const 309)) - (func (export "𐊀") (result i32) (i32.const 310)) - (func (export "𐊠") (result i32) (i32.const 311)) - (func (export "𐌀") (result i32) (i32.const 312)) - (func (export "𐎠") (result i32) (i32.const 313)) - (func (export "𐒖") (result i32) (i32.const 314)) - (func (export "𐔀") (result i32) (i32.const 315)) - (func (export "𐝀") (result i32) (i32.const 316)) - (func (export "𐠀") (result i32) (i32.const 317)) - (func (export "𐤠") (result i32) (i32.const 318)) - (func (export "𐦀") (result i32) (i32.const 319)) - (func (export "𐦠") (result i32) (i32.const 320)) - (func (export "𐨀") (result i32) (i32.const 321)) - (func (export "𐬀") (result i32) (i32.const 322)) - (func (export "𐰀") (result i32) (i32.const 323)) - (func (export "𐰁") (result i32) (i32.const 324)) - (func (export "𐲀") (result i32) (i32.const 325)) - (func (export "𑀅") (result i32) (i32.const 326)) - (func (export "𑂃") (result i32) (i32.const 327)) - (func (export "𑄧") (result i32) (i32.const 328)) - (func (export "𑅐") (result i32) (i32.const 329)) - (func (export "𑆃") (result i32) (i32.const 330)) - (func (export "𑈀") (result i32) (i32.const 331)) - (func (export "𑊀") (result i32) (i32.const 332)) - (func (export "𑊰") (result i32) (i32.const 333)) - (func (export "𑌅") (result i32) (i32.const 334)) - (func (export "𑍰") (result i32) (i32.const 335)) - (func (export "𑐀") (result i32) (i32.const 336)) - (func (export "𑒁") (result i32) (i32.const 337)) - (func (export "𑖀") (result i32) (i32.const 338)) - (func (export "𑘀") (result i32) (i32.const 339)) - (func (export "𑚀") (result i32) (i32.const 340)) - (func (export "𑜒") (result i32) (i32.const 341)) - (func (export "𑜠") (result i32) (i32.const 342)) - (func (export "𑢡") (result i32) (i32.const 343)) - (func (export "𑫕") (result i32) (i32.const 344)) - (func (export "𑰀") (result i32) (i32.const 345)) - (func (export "𑲏") (result i32) (i32.const 346)) - (func (export "𑲯") (result i32) (i32.const 347)) - (func (export "𒀀") (result i32) (i32.const 348)) - (func (export "𖧕") (result i32) (i32.const 349)) - (func (export "𖩆") (result i32) (i32.const 350)) - (func (export "𖫧") (result i32) (i32.const 351)) - (func (export "𖽔") (result i32) (i32.const 352)) - (func (export "𛱁") (result i32) (i32.const 353)) - (func (export "𛱤") (result i32) (i32.const 354)) - (func (export "𞠣") (result i32) (i32.const 355)) - (func (export "🇦") (result i32) (i32.const 356)) - (func (export "Ɑ") (result i32) (i32.const 357)) - (func (export "Λ") (result i32) (i32.const 358)) - (func (export "Ɒ") (result i32) (i32.const 359)) - (func (export "ª") (result i32) (i32.const 360)) - (func (export "∀") (result i32) (i32.const 361)) - (func (export "₳") (result i32) (i32.const 362)) - (func (export "𐤀") (result i32) (i32.const 363)) - (func (export "Ⲁ") (result i32) (i32.const 364)) - (func (export "𐌰") (result i32) (i32.const 365)) - (func (export "Ά") (result i32) (i32.const 366)) - (func (export "Α") (result i32) (i32.const 367)) - (func (export "Ἀ") (result i32) (i32.const 368)) - (func (export "Ἁ") (result i32) (i32.const 369)) - (func (export "Ἂ") (result i32) (i32.const 370)) - (func (export "Ἃ") (result i32) (i32.const 371)) - (func (export "Ἄ") (result i32) (i32.const 372)) - (func (export "Ἅ") (result i32) (i32.const 373)) - (func (export "Ἆ") (result i32) (i32.const 374)) - (func (export "Ἇ") (result i32) (i32.const 375)) - (func (export "ᾈ") (result i32) (i32.const 376)) - (func (export "ᾉ") (result i32) (i32.const 377)) - (func (export "ᾊ") (result i32) (i32.const 378)) - (func (export "ᾋ") (result i32) (i32.const 379)) - (func (export "ᾌ") (result i32) (i32.const 380)) - (func (export "ᾍ") (result i32) (i32.const 381)) - (func (export "ᾎ") (result i32) (i32.const 382)) - (func (export "ᾏ") (result i32) (i32.const 383)) - (func (export "Ᾰ") (result i32) (i32.const 384)) - (func (export "Ᾱ") (result i32) (i32.const 385)) - (func (export "Ὰ") (result i32) (i32.const 386)) - (func (export "Ά") (result i32) (i32.const 387)) - (func (export "ᾼ") (result i32) (i32.const 388)) - (func (export "𝚨") (result i32) (i32.const 389)) - (func (export "𝛢") (result i32) (i32.const 390)) - (func (export "𝜜") (result i32) (i32.const 391)) - (func (export "𝝖") (result i32) (i32.const 392)) - (func (export "𝞐") (result i32) (i32.const 393)) - (func (export "⍶") (result i32) (i32.const 394)) - (func (export "⍺") (result i32) (i32.const 395)) - (func (export "⩜") (result i32) (i32.const 396)) - (func (export "ᗅ") (result i32) (i32.const 397)) - (func (export "Ꭺ") (result i32) (i32.const 398)) - - ;; Test unmatched "closing" and "opening" code points. - (func (export ")˺˼𔗏𝅴𝅶𝅸𝅺⁾₎❩❫⟯﴿︶﹚)⦆󠀩❳❵⟧⟩⟫⟭⦈⦊⦖⸣⸥︘︸︺︼︾﹀﹂﹄﹈﹜﹞]}」󠁝󠁽»’”›❯") (result i32) (i32.const 399)) - (func (export "(˹˻𔗎𝅳𝅵𝅷𝅹⁽₍❨❪⟮﴾︵﹙(⦅󠀨❲❴⟦⟨⟪⟬⦇⦉⦕⸢⸤︗︷︹︻︽︿﹁﹃﹇﹛﹝[{「󠁛󠁻«‘“‹❮") (result i32) (i32.const 400)) - (func (export "𝪋𝪤") (result i32) (i32.const 401)) - (func (export "𝪋") (result i32) (i32.const 402)) - - ;; Test that Unicode fraction normalization is not applied. - (func (export "½") (result i32) (i32.const 403)) - (func (export "1⁄2") (result i32) (i32.const 404)) - (func (export "1/2") (result i32) (i32.const 405)) - (func (export "୳") (result i32) (i32.const 406)) - (func (export "൴") (result i32) (i32.const 407)) - (func (export "⳽") (result i32) (i32.const 408)) - (func (export "꠱") (result i32) (i32.const 409)) - (func (export "𐅁") (result i32) (i32.const 410)) - (func (export "𐅵") (result i32) (i32.const 411)) - (func (export "𐅶") (result i32) (i32.const 412)) - (func (export "𐦽") (result i32) (i32.const 413)) - (func (export "𐹻") (result i32) (i32.const 414)) - - ;; Test a full-width quote. - (func (export """) (result i32) (i32.const 415)) - - ;; Test that different present and historical representations of the "delete" - ;; concept are distinct. - (func (export "\7f") (result i32) (i32.const 416)) - (func (export "\08") (result i32) (i32.const 417)) - (func (export "⌫") (result i32) (i32.const 418)) - (func (export "⌦") (result i32) (i32.const 419)) - (func (export "␈") (result i32) (i32.const 420)) - (func (export "␡") (result i32) (i32.const 421)) - (func (export "᷻") (result i32) (i32.const 422)) - (func (export "\0f") (result i32) (i32.const 423)) - (func (export "←") (result i32) (i32.const 424)) - (func (export "⌧") (result i32) (i32.const 425)) - (func (export "⍒") (result i32) (i32.const 426)) - (func (export "⍔") (result i32) (i32.const 427)) - (func (export "⍢") (result i32) (i32.const 428)) - (func (export "⍫") (result i32) (i32.const 429)) - - ;; Test that different representations of the "substitute" concept are - ;; distinct. (U+FFFD is covered above.) - (func (export "\1a") (result i32) (i32.const 430)) - (func (export "␦") (result i32) (i32.const 431)) - (func (export "␚") (result i32) (i32.const 432)) - (func (export "") (result i32) (i32.const 433)) - (func (export "?") (result i32) (i32.const 434)) - (func (export "¿") (result i32) (i32.const 435)) - (func (export "᥅") (result i32) (i32.const 436)) - (func (export ";") (result i32) (i32.const 437)) - (func (export "՞") (result i32) (i32.const 438)) - (func (export "؟") (result i32) (i32.const 439)) - (func (export "፧") (result i32) (i32.const 440)) - (func (export "⁇") (result i32) (i32.const 441)) - (func (export "⍰") (result i32) (i32.const 442)) - (func (export "❓") (result i32) (i32.const 443)) - (func (export "❔") (result i32) (i32.const 444)) - (func (export "⳺") (result i32) (i32.const 445)) - (func (export "⳻") (result i32) (i32.const 446)) - (func (export "⸮") (result i32) (i32.const 447)) - (func (export "㉄") (result i32) (i32.const 448)) - (func (export "꘏") (result i32) (i32.const 449)) - (func (export "꛷") (result i32) (i32.const 450)) - (func (export "︖") (result i32) (i32.const 451)) - (func (export "﹖") (result i32) (i32.const 452)) - (func (export "?") (result i32) (i32.const 453)) - (func (export "𑅃") (result i32) (i32.const 454)) - (func (export "𞥟") (result i32) (i32.const 455)) - (func (export "󠀿") (result i32) (i32.const 456)) - (func (export "𖡄") (result i32) (i32.const 457)) - (func (export "⯑") (result i32) (i32.const 458)) - - ;; Test that different present and historical representations of the - ;; "paragraph" concept are distinct. (U+2029 is covered above). - (func (export "¶") (result i32) (i32.const 459)) - (func (export "⁋") (result i32) (i32.const 460)) - (func (export "܀") (result i32) (i32.const 461)) - (func (export "჻") (result i32) (i32.const 462)) - (func (export "፨") (result i32) (i32.const 463)) - (func (export "〷") (result i32) (i32.const 464)) - (func (export "❡") (result i32) (i32.const 465)) - (func (export "⸏") (result i32) (i32.const 466)) - (func (export "⸐") (result i32) (i32.const 467)) - (func (export "⸑") (result i32) (i32.const 468)) - (func (export "⸎") (result i32) (i32.const 469)) - (func (export "\14") (result i32) (i32.const 470)) ;; ¶ in CP437 - (func (export "☙") (result i32) (i32.const 471)) -) - -(assert_return (invoke "") (i32.const 0)) -(assert_return (invoke "0") (i32.const 1)) -(assert_return (invoke "-0") (i32.const 2)) -(assert_return (invoke "_") (i32.const 3)) -(assert_return (invoke "$") (i32.const 4)) -(assert_return (invoke "@") (i32.const 5)) -(assert_return (invoke "~!@#$%^&*()_+`-={}|[]\\:\";'<>?,./ ") (i32.const 6)) -(assert_return (invoke "NaN") (i32.const 7)) -(assert_return (invoke "Infinity") (i32.const 8)) -(assert_return (invoke "if") (i32.const 9)) -(assert_return (invoke "malloc") (i32.const 10)) -(assert_return (invoke "_malloc") (i32.const 11)) -(assert_return (invoke "__malloc") (i32.const 12)) -(assert_return (invoke "a") (i32.const 13)) -(assert_return (invoke "A") (i32.const 14)) -(assert_return (invoke "") (i32.const 15)) -(assert_return (invoke "Å") (i32.const 16)) -(assert_return (invoke "Å") (i32.const 17)) -(assert_return (invoke "Å") (i32.const 18)) -(assert_return (invoke "ffi") (i32.const 19)) -(assert_return (invoke "ffi") (i32.const 20)) -(assert_return (invoke "ffi") (i32.const 21)) -(assert_return (invoke "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f") (i32.const 22)) -(assert_return (invoke "\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f") (i32.const 23)) -(assert_return (invoke " \7f") (i32.const 24)) -(assert_return (invoke "\c2\80\c2\81\c2\82\c2\83\c2\84\c2\85\c2\86\c2\87\c2\88\c2\89\c2\8a\c2\8b\c2\8c\c2\8d\c2\8e\c2\8f") (i32.const 25)) -(assert_return (invoke "\c2\90\c2\91\c2\92\c2\93\c2\94\c2\95\c2\96\c2\97\c2\98\c2\99\c2\9a\c2\9b\c2\9c\c2\9d\c2\9e\c2\9f") (i32.const 26)) -(assert_return (invoke "\ef\bf\b0\ef\bf\b1\ef\bf\b2\ef\bf\b3\ef\bf\b4\ef\bf\b5\ef\bf\b6\ef\bf\b7") (i32.const 27)) -(assert_return (invoke "\ef\bf\b8\ef\bf\b9\ef\bf\ba\ef\bf\bb\ef\bf\bc\ef\bf\bd\ef\bf\be\ef\bf\bf") (i32.const 28)) -(assert_return (invoke "␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏") (i32.const 29)) -(assert_return (invoke "␐␑␒␓␔␕␖␗␘␙␚␛␜␝␞␟") (i32.const 30)) -(assert_return (invoke "␠␡") (i32.const 31)) -(assert_return (invoke "￰￱￲￳￴￵￶￷￸�") (i32.const 32)) -(assert_return (invoke "‍") (i32.const 33)) -(assert_return (invoke "‌") (i32.const 34)) -(assert_return (invoke "͏") (i32.const 35)) -(assert_return (invoke "⁠") (i32.const 36)) -(assert_return (invoke "⵿") (i32.const 37)) -(assert_return (invoke "𑁿") (i32.const 38)) -(assert_return (invoke "᠎") (i32.const 39)) -(assert_return (invoke "￯​ ­⁠ ‮‭") (i32.const 40)) -(assert_return (invoke "‎‏‑

‪‫‬ ⁦⁧⁨⁩") (i32.const 41)) -(assert_return (invoke "") (i32.const 42)) -(assert_return (invoke "⁡⁢⁣⁤") (i32.const 43)) -(assert_return (invoke "𐀀󟿿􏿿") (i32.const 44)) -(assert_return (invoke "Z̴͇̫̥̪͓͈͔͎̗̞̺̯̱̞̙̱̜̖̠̏͆̆͛͌͘͞ḁ̶̰̳̭͙̲̱̹̝͎̼͗ͨ̎̄̆͗̿̀́͟͡l̶̷͉̩̹̫̝͖̙̲̼͇͚͍̮͎̥̞̈́͊͗ͦ̈́ͫ̇́̚ͅͅg̶͕͔͚̩̓̐̅ͮ̔̐̎̂̏̾͊̍͋͊ͧ́̆ͦ͞o̡͋̔͐ͪͩ͏̢̧̫̙̤̮͖͙͓̺̜̩̼̘̠́") (i32.const 45)) -(assert_return (invoke "ᅟᅠㅤᅠ") (i32.const 46)) -(assert_return (invoke "︀") (i32.const 47)) -(assert_return (invoke "︄") (i32.const 48)) -(assert_return (invoke "󠄀") (i32.const 49)) -(assert_return (invoke "󠇯") (i32.const 50)) -(assert_return (invoke "̈") (i32.const 51)) -(assert_return (invoke "\0a") (i32.const 52)) -(assert_return (invoke "␤") (i32.const 53)) -(assert_return (invoke "
") (i32.const 54)) -(assert_return (invoke "\0d") (i32.const 55)) -(assert_return (invoke "\0d\0a") (i32.const 56)) -(assert_return (invoke "\0a\0d") (i32.const 57)) -(assert_return (invoke "\1e") (i32.const 58)) -(assert_return (invoke "\0b") (i32.const 59)) -(assert_return (invoke "\0c") (i32.const 60)) -(assert_return (invoke "\c2\85") (i32.const 61)) -(assert_return (invoke "
") (i32.const 62)) -(assert_return (invoke "…") (i32.const 63)) -(assert_return (invoke "⏎") (i32.const 64)) -(assert_return (invoke "\c2\8b") (i32.const 65)) -(assert_return (invoke "\c2\8c") (i32.const 66)) -(assert_return (invoke "\c2\8d") (i32.const 67)) -(assert_return (invoke "↵") (i32.const 68)) -(assert_return (invoke "↩") (i32.const 69)) -(assert_return (invoke "⌤") (i32.const 70)) -(assert_return (invoke "⤶") (i32.const 71)) -(assert_return (invoke "↲") (i32.const 72)) -(assert_return (invoke "⮨") (i32.const 73)) -(assert_return (invoke "⮰") (i32.const 74)) -(assert_return (invoke "�") (i32.const 75)) -(assert_return (invoke "\ef\b7\90") (i32.const 76)) -(assert_return (invoke "\ef\b7\91") (i32.const 77)) -(assert_return (invoke "\ef\b7\92") (i32.const 78)) -(assert_return (invoke "\ef\b7\93") (i32.const 79)) -(assert_return (invoke "\ef\b7\94") (i32.const 80)) -(assert_return (invoke "\ef\b7\95") (i32.const 81)) -(assert_return (invoke "\ef\b7\96") (i32.const 82)) -(assert_return (invoke "\ef\b7\97") (i32.const 83)) -(assert_return (invoke "\ef\b7\98") (i32.const 84)) -(assert_return (invoke "\ef\b7\99") (i32.const 85)) -(assert_return (invoke "\ef\b7\9a") (i32.const 86)) -(assert_return (invoke "\ef\b7\9b") (i32.const 87)) -(assert_return (invoke "\ef\b7\9c") (i32.const 88)) -(assert_return (invoke "\ef\b7\9d") (i32.const 89)) -(assert_return (invoke "\ef\b7\9e") (i32.const 90)) -(assert_return (invoke "\ef\b7\9f") (i32.const 91)) -(assert_return (invoke "\ef\b7\a0") (i32.const 92)) -(assert_return (invoke "\ef\b7\a1") (i32.const 93)) -(assert_return (invoke "\ef\b7\a2") (i32.const 94)) -(assert_return (invoke "\ef\b7\a3") (i32.const 95)) -(assert_return (invoke "\ef\b7\a4") (i32.const 96)) -(assert_return (invoke "\ef\b7\a5") (i32.const 97)) -(assert_return (invoke "\ef\b7\a6") (i32.const 98)) -(assert_return (invoke "\ef\b7\a7") (i32.const 99)) -(assert_return (invoke "\ef\b7\a8") (i32.const 100)) -(assert_return (invoke "\ef\b7\a9") (i32.const 101)) -(assert_return (invoke "\ef\b7\aa") (i32.const 102)) -(assert_return (invoke "\ef\b7\ab") (i32.const 103)) -(assert_return (invoke "\ef\b7\ac") (i32.const 104)) -(assert_return (invoke "\ef\b7\ad") (i32.const 105)) -(assert_return (invoke "\ef\b7\ae") (i32.const 106)) -(assert_return (invoke "\ef\b7\af") (i32.const 107)) -(assert_return (invoke "\ef\bf\be") (i32.const 108)) -(assert_return (invoke "\ef\bf\bf") (i32.const 109)) -(assert_return (invoke "\f0\9f\bf\be") (i32.const 110)) -(assert_return (invoke "\f0\9f\bf\bf") (i32.const 111)) -(assert_return (invoke "\f0\af\bf\be") (i32.const 112)) -(assert_return (invoke "\f0\af\bf\bf") (i32.const 113)) -(assert_return (invoke "\f0\bf\bf\be") (i32.const 114)) -(assert_return (invoke "\f0\bf\bf\bf") (i32.const 115)) -(assert_return (invoke "\f1\8f\bf\be") (i32.const 116)) -(assert_return (invoke "\f1\8f\bf\bf") (i32.const 117)) -(assert_return (invoke "\f1\9f\bf\be") (i32.const 118)) -(assert_return (invoke "\f1\9f\bf\bf") (i32.const 119)) -(assert_return (invoke "\f1\af\bf\be") (i32.const 120)) -(assert_return (invoke "\f1\af\bf\bf") (i32.const 121)) -(assert_return (invoke "\f1\bf\bf\be") (i32.const 122)) -(assert_return (invoke "\f1\bf\bf\bf") (i32.const 123)) -(assert_return (invoke "\f2\8f\bf\be") (i32.const 124)) -(assert_return (invoke "\f2\8f\bf\bf") (i32.const 125)) -(assert_return (invoke "\f2\9f\bf\be") (i32.const 126)) -(assert_return (invoke "\f2\9f\bf\bf") (i32.const 127)) -(assert_return (invoke "\f2\af\bf\be") (i32.const 128)) -(assert_return (invoke "\f2\af\bf\bf") (i32.const 129)) -(assert_return (invoke "\f2\bf\bf\be") (i32.const 130)) -(assert_return (invoke "\f2\bf\bf\bf") (i32.const 131)) -(assert_return (invoke "\f3\8f\bf\be") (i32.const 132)) -(assert_return (invoke "\f3\8f\bf\bf") (i32.const 133)) -(assert_return (invoke "\f3\9f\bf\be") (i32.const 134)) -(assert_return (invoke "\f3\9f\bf\bf") (i32.const 135)) -(assert_return (invoke "\f3\af\bf\be") (i32.const 136)) -(assert_return (invoke "\f3\af\bf\bf") (i32.const 137)) -(assert_return (invoke "\f3\bf\bf\be") (i32.const 138)) -(assert_return (invoke "\f3\bf\bf\bf") (i32.const 139)) -(assert_return (invoke "\f4\8f\bf\be") (i32.const 140)) -(assert_return (invoke "\f4\8f\bf\bf") (i32.const 141)) -(assert_return (invoke "̈‽̈̉") (i32.const 142)) -(assert_return (invoke "abc") (i32.const 143)) -(assert_return (invoke "‭abc") (i32.const 144)) -(assert_return (invoke "‮cba") (i32.const 145)) -(assert_return (invoke "‭abc‮") (i32.const 146)) -(assert_return (invoke "‮cba‭") (i32.const 147)) -(assert_return (invoke "𝑨") (i32.const 148)) -(assert_return (invoke "𝐴") (i32.const 149)) -(assert_return (invoke "𝘈") (i32.const 150)) -(assert_return (invoke "𝘼") (i32.const 151)) -(assert_return (invoke "𝐀") (i32.const 152)) -(assert_return (invoke "𝓐") (i32.const 153)) -(assert_return (invoke "𝕬") (i32.const 154)) -(assert_return (invoke "𝗔") (i32.const 155)) -(assert_return (invoke "𝒜") (i32.const 156)) -(assert_return (invoke "𝔄") (i32.const 157)) -(assert_return (invoke "𝔸") (i32.const 158)) -(assert_return (invoke "𝖠") (i32.const 159)) -(assert_return (invoke "𝙰") (i32.const 160)) -(assert_return (invoke "ᴀ") (i32.const 161)) -(assert_return (invoke "ᴬ") (i32.const 162)) -(assert_return (invoke "Ⓐ") (i32.const 163)) -(assert_return (invoke "A") (i32.const 164)) -(assert_return (invoke "🄐") (i32.const 165)) -(assert_return (invoke "🄰") (i32.const 166)) -(assert_return (invoke "󠁁") (i32.const 167)) -(assert_return (invoke "U+0041") (i32.const 168)) -(assert_return (invoke "A​") (i32.const 169)) -(assert_return (invoke "А") (i32.const 170)) -(assert_return (invoke "Ꙗ") (i32.const 171)) -(assert_return (invoke "ⷼ") (i32.const 172)) -(assert_return (invoke "ⷶ") (i32.const 173)) -(assert_return (invoke "Ɐ") (i32.const 174)) -(assert_return (invoke "🅐") (i32.const 175)) -(assert_return (invoke "🅰") (i32.const 176)) -(assert_return (invoke "Ⱝ") (i32.const 177)) -(assert_return (invoke "𐐂") (i32.const 178)) -(assert_return (invoke "𐐈") (i32.const 179)) -(assert_return (invoke "𐒰") (i32.const 180)) -(assert_return (invoke "À") (i32.const 181)) -(assert_return (invoke "Á") (i32.const 182)) -(assert_return (invoke "Â") (i32.const 183)) -(assert_return (invoke "Ã") (i32.const 184)) -(assert_return (invoke "Ä") (i32.const 185)) -(assert_return (invoke "Ā") (i32.const 186)) -(assert_return (invoke "Ă") (i32.const 187)) -(assert_return (invoke "Ą") (i32.const 188)) -(assert_return (invoke "Ǎ") (i32.const 189)) -(assert_return (invoke "Ǟ") (i32.const 190)) -(assert_return (invoke "Ǡ") (i32.const 191)) -(assert_return (invoke "Ǻ") (i32.const 192)) -(assert_return (invoke "Ȁ") (i32.const 193)) -(assert_return (invoke "Ȃ") (i32.const 194)) -(assert_return (invoke "Ȧ") (i32.const 195)) -(assert_return (invoke "Ⱥ") (i32.const 196)) -(assert_return (invoke "Ӑ") (i32.const 197)) -(assert_return (invoke "Ӓ") (i32.const 198)) -(assert_return (invoke "ߊ") (i32.const 199)) -(assert_return (invoke "ࠡ") (i32.const 200)) -(assert_return (invoke "ࠢ") (i32.const 201)) -(assert_return (invoke "ࠣ") (i32.const 202)) -(assert_return (invoke "ࠤ") (i32.const 203)) -(assert_return (invoke "ࠥ") (i32.const 204)) -(assert_return (invoke "ऄ") (i32.const 205)) -(assert_return (invoke "अ") (i32.const 206)) -(assert_return (invoke "ॲ") (i32.const 207)) -(assert_return (invoke "অ") (i32.const 208)) -(assert_return (invoke "ਅ") (i32.const 209)) -(assert_return (invoke "અ") (i32.const 210)) -(assert_return (invoke "ଅ") (i32.const 211)) -(assert_return (invoke "அ") (i32.const 212)) -(assert_return (invoke "అ") (i32.const 213)) -(assert_return (invoke "ಅ") (i32.const 214)) -(assert_return (invoke "അ") (i32.const 215)) -(assert_return (invoke "ะ") (i32.const 216)) -(assert_return (invoke "ະ") (i32.const 217)) -(assert_return (invoke "༁") (i32.const 218)) -(assert_return (invoke "ཨ") (i32.const 219)) -(assert_return (invoke "ྸ") (i32.const 220)) -(assert_return (invoke "အ") (i32.const 221)) -(assert_return (invoke "ဢ") (i32.const 222)) -(assert_return (invoke "ႜ") (i32.const 223)) -(assert_return (invoke "ᅡ") (i32.const 224)) -(assert_return (invoke "አ") (i32.const 225)) -(assert_return (invoke "ዐ") (i32.const 226)) -(assert_return (invoke "Ꭰ") (i32.const 227)) -(assert_return (invoke "ᐊ") (i32.const 228)) -(assert_return (invoke "ᖳ") (i32.const 229)) -(assert_return (invoke "ᚨ") (i32.const 230)) -(assert_return (invoke "ᚪ") (i32.const 231)) -(assert_return (invoke "ᛆ") (i32.const 232)) -(assert_return (invoke "ᜀ") (i32.const 233)) -(assert_return (invoke "ᜠ") (i32.const 234)) -(assert_return (invoke "ᝀ") (i32.const 235)) -(assert_return (invoke "ᝠ") (i32.const 236)) -(assert_return (invoke "ᠠ") (i32.const 237)) -(assert_return (invoke "ᢇ") (i32.const 238)) -(assert_return (invoke "ᤠ") (i32.const 239)) -(assert_return (invoke "ᥣ") (i32.const 240)) -(assert_return (invoke "ᨕ") (i32.const 241)) -(assert_return (invoke "ᩋ") (i32.const 242)) -(assert_return (invoke "ᩡ") (i32.const 243)) -(assert_return (invoke "ᮃ") (i32.const 244)) -(assert_return (invoke "ᯀ") (i32.const 245)) -(assert_return (invoke "ᯁ") (i32.const 246)) -(assert_return (invoke "ᰣ") (i32.const 247)) -(assert_return (invoke "Ḁ") (i32.const 248)) -(assert_return (invoke "Ạ") (i32.const 249)) -(assert_return (invoke "Ả") (i32.const 250)) -(assert_return (invoke "Ấ") (i32.const 251)) -(assert_return (invoke "Ầ") (i32.const 252)) -(assert_return (invoke "Ẩ") (i32.const 253)) -(assert_return (invoke "Ẫ") (i32.const 254)) -(assert_return (invoke "Ậ") (i32.const 255)) -(assert_return (invoke "Ắ") (i32.const 256)) -(assert_return (invoke "Ằ") (i32.const 257)) -(assert_return (invoke "Ẳ") (i32.const 258)) -(assert_return (invoke "Ẵ") (i32.const 259)) -(assert_return (invoke "Ặ") (i32.const 260)) -(assert_return (invoke "あ") (i32.const 261)) -(assert_return (invoke "ア") (i32.const 262)) -(assert_return (invoke "ㄚ") (i32.const 263)) -(assert_return (invoke "ㅏ") (i32.const 264)) -(assert_return (invoke "㈎") (i32.const 265)) -(assert_return (invoke "㈏") (i32.const 266)) -(assert_return (invoke "㈐") (i32.const 267)) -(assert_return (invoke "㈑") (i32.const 268)) -(assert_return (invoke "㈒") (i32.const 269)) -(assert_return (invoke "㈓") (i32.const 270)) -(assert_return (invoke "㈔") (i32.const 271)) -(assert_return (invoke "㈕") (i32.const 272)) -(assert_return (invoke "㈖") (i32.const 273)) -(assert_return (invoke "㈗") (i32.const 274)) -(assert_return (invoke "㈘") (i32.const 275)) -(assert_return (invoke "㈙") (i32.const 276)) -(assert_return (invoke "㈚") (i32.const 277)) -(assert_return (invoke "㈛") (i32.const 278)) -(assert_return (invoke "㉮") (i32.const 279)) -(assert_return (invoke "㉯") (i32.const 280)) -(assert_return (invoke "㉰") (i32.const 281)) -(assert_return (invoke "㉱") (i32.const 282)) -(assert_return (invoke "㉲") (i32.const 283)) -(assert_return (invoke "㉳") (i32.const 284)) -(assert_return (invoke "㉴") (i32.const 285)) -(assert_return (invoke "㉵") (i32.const 286)) -(assert_return (invoke "㉶") (i32.const 287)) -(assert_return (invoke "㉷") (i32.const 288)) -(assert_return (invoke "㉸") (i32.const 289)) -(assert_return (invoke "㉹") (i32.const 290)) -(assert_return (invoke "㉺") (i32.const 291)) -(assert_return (invoke "㉻") (i32.const 292)) -(assert_return (invoke "㋐") (i32.const 293)) -(assert_return (invoke "ꀊ") (i32.const 294)) -(assert_return (invoke "ꓮ") (i32.const 295)) -(assert_return (invoke "ꕉ") (i32.const 296)) -(assert_return (invoke "ꚠ") (i32.const 297)) -(assert_return (invoke "ꠀ") (i32.const 298)) -(assert_return (invoke "ꠣ") (i32.const 299)) -(assert_return (invoke "ꡝ") (i32.const 300)) -(assert_return (invoke "ꢂ") (i32.const 301)) -(assert_return (invoke "꣪") (i32.const 302)) -(assert_return (invoke "ꤢ") (i32.const 303)) -(assert_return (invoke "ꥆ") (i32.const 304)) -(assert_return (invoke "ꦄ") (i32.const 305)) -(assert_return (invoke "ꨀ") (i32.const 306)) -(assert_return (invoke "ア") (i32.const 307)) -(assert_return (invoke "ᅡ") (i32.const 308)) -(assert_return (invoke "𐀀") (i32.const 309)) -(assert_return (invoke "𐊀") (i32.const 310)) -(assert_return (invoke "𐊠") (i32.const 311)) -(assert_return (invoke "𐌀") (i32.const 312)) -(assert_return (invoke "𐎠") (i32.const 313)) -(assert_return (invoke "𐒖") (i32.const 314)) -(assert_return (invoke "𐔀") (i32.const 315)) -(assert_return (invoke "𐝀") (i32.const 316)) -(assert_return (invoke "𐠀") (i32.const 317)) -(assert_return (invoke "𐤠") (i32.const 318)) -(assert_return (invoke "𐦀") (i32.const 319)) -(assert_return (invoke "𐦠") (i32.const 320)) -(assert_return (invoke "𐨀") (i32.const 321)) -(assert_return (invoke "𐬀") (i32.const 322)) -(assert_return (invoke "𐰀") (i32.const 323)) -(assert_return (invoke "𐰁") (i32.const 324)) -(assert_return (invoke "𐲀") (i32.const 325)) -(assert_return (invoke "𑀅") (i32.const 326)) -(assert_return (invoke "𑂃") (i32.const 327)) -(assert_return (invoke "𑄧") (i32.const 328)) -(assert_return (invoke "𑅐") (i32.const 329)) -(assert_return (invoke "𑆃") (i32.const 330)) -(assert_return (invoke "𑈀") (i32.const 331)) -(assert_return (invoke "𑊀") (i32.const 332)) -(assert_return (invoke "𑊰") (i32.const 333)) -(assert_return (invoke "𑌅") (i32.const 334)) -(assert_return (invoke "𑍰") (i32.const 335)) -(assert_return (invoke "𑐀") (i32.const 336)) -(assert_return (invoke "𑒁") (i32.const 337)) -(assert_return (invoke "𑖀") (i32.const 338)) -(assert_return (invoke "𑘀") (i32.const 339)) -(assert_return (invoke "𑚀") (i32.const 340)) -(assert_return (invoke "𑜒") (i32.const 341)) -(assert_return (invoke "𑜠") (i32.const 342)) -(assert_return (invoke "𑢡") (i32.const 343)) -(assert_return (invoke "𑫕") (i32.const 344)) -(assert_return (invoke "𑰀") (i32.const 345)) -(assert_return (invoke "𑲏") (i32.const 346)) -(assert_return (invoke "𑲯") (i32.const 347)) -(assert_return (invoke "𒀀") (i32.const 348)) -(assert_return (invoke "𖧕") (i32.const 349)) -(assert_return (invoke "𖩆") (i32.const 350)) -(assert_return (invoke "𖫧") (i32.const 351)) -(assert_return (invoke "𖽔") (i32.const 352)) -(assert_return (invoke "𛱁") (i32.const 353)) -(assert_return (invoke "𛱤") (i32.const 354)) -(assert_return (invoke "𞠣") (i32.const 355)) -(assert_return (invoke "🇦") (i32.const 356)) -(assert_return (invoke "Ɑ") (i32.const 357)) -(assert_return (invoke "Λ") (i32.const 358)) -(assert_return (invoke "Ɒ") (i32.const 359)) -(assert_return (invoke "ª") (i32.const 360)) -(assert_return (invoke "∀") (i32.const 361)) -(assert_return (invoke "₳") (i32.const 362)) -(assert_return (invoke "𐤀") (i32.const 363)) -(assert_return (invoke "Ⲁ") (i32.const 364)) -(assert_return (invoke "𐌰") (i32.const 365)) -(assert_return (invoke "Ά") (i32.const 366)) -(assert_return (invoke "Α") (i32.const 367)) -(assert_return (invoke "Ἀ") (i32.const 368)) -(assert_return (invoke "Ἁ") (i32.const 369)) -(assert_return (invoke "Ἂ") (i32.const 370)) -(assert_return (invoke "Ἃ") (i32.const 371)) -(assert_return (invoke "Ἄ") (i32.const 372)) -(assert_return (invoke "Ἅ") (i32.const 373)) -(assert_return (invoke "Ἆ") (i32.const 374)) -(assert_return (invoke "Ἇ") (i32.const 375)) -(assert_return (invoke "ᾈ") (i32.const 376)) -(assert_return (invoke "ᾉ") (i32.const 377)) -(assert_return (invoke "ᾊ") (i32.const 378)) -(assert_return (invoke "ᾋ") (i32.const 379)) -(assert_return (invoke "ᾌ") (i32.const 380)) -(assert_return (invoke "ᾍ") (i32.const 381)) -(assert_return (invoke "ᾎ") (i32.const 382)) -(assert_return (invoke "ᾏ") (i32.const 383)) -(assert_return (invoke "Ᾰ") (i32.const 384)) -(assert_return (invoke "Ᾱ") (i32.const 385)) -(assert_return (invoke "Ὰ") (i32.const 386)) -(assert_return (invoke "Ά") (i32.const 387)) -(assert_return (invoke "ᾼ") (i32.const 388)) -(assert_return (invoke "𝚨") (i32.const 389)) -(assert_return (invoke "𝛢") (i32.const 390)) -(assert_return (invoke "𝜜") (i32.const 391)) -(assert_return (invoke "𝝖") (i32.const 392)) -(assert_return (invoke "𝞐") (i32.const 393)) -(assert_return (invoke "⍶") (i32.const 394)) -(assert_return (invoke "⍺") (i32.const 395)) -(assert_return (invoke "⩜") (i32.const 396)) -(assert_return (invoke "ᗅ") (i32.const 397)) -(assert_return (invoke "Ꭺ") (i32.const 398)) -(assert_return (invoke ")˺˼𔗏𝅴𝅶𝅸𝅺⁾₎❩❫⟯﴿︶﹚)⦆󠀩❳❵⟧⟩⟫⟭⦈⦊⦖⸣⸥︘︸︺︼︾﹀﹂﹄﹈﹜﹞]}」󠁝󠁽»’”›❯") (i32.const 399)) -(assert_return (invoke "(˹˻𔗎𝅳𝅵𝅷𝅹⁽₍❨❪⟮﴾︵﹙(⦅󠀨❲❴⟦⟨⟪⟬⦇⦉⦕⸢⸤︗︷︹︻︽︿﹁﹃﹇﹛﹝[{「󠁛󠁻«‘“‹❮") (i32.const 400)) -(assert_return (invoke "𝪋𝪤") (i32.const 401)) -(assert_return (invoke "𝪋") (i32.const 402)) -(assert_return (invoke "½") (i32.const 403)) -(assert_return (invoke "1⁄2") (i32.const 404)) -(assert_return (invoke "1/2") (i32.const 405)) -(assert_return (invoke "୳") (i32.const 406)) -(assert_return (invoke "൴") (i32.const 407)) -(assert_return (invoke "⳽") (i32.const 408)) -(assert_return (invoke "꠱") (i32.const 409)) -(assert_return (invoke "𐅁") (i32.const 410)) -(assert_return (invoke "𐅵") (i32.const 411)) -(assert_return (invoke "𐅶") (i32.const 412)) -(assert_return (invoke "𐦽") (i32.const 413)) -(assert_return (invoke "𐹻") (i32.const 414)) -(assert_return (invoke """) (i32.const 415)) -(assert_return (invoke "\7f") (i32.const 416)) -(assert_return (invoke "\08") (i32.const 417)) -(assert_return (invoke "⌫") (i32.const 418)) -(assert_return (invoke "⌦") (i32.const 419)) -(assert_return (invoke "␈") (i32.const 420)) -(assert_return (invoke "␡") (i32.const 421)) -(assert_return (invoke "᷻") (i32.const 422)) -(assert_return (invoke "\0f") (i32.const 423)) -(assert_return (invoke "←") (i32.const 424)) -(assert_return (invoke "⌧") (i32.const 425)) -(assert_return (invoke "⍒") (i32.const 426)) -(assert_return (invoke "⍔") (i32.const 427)) -(assert_return (invoke "⍢") (i32.const 428)) -(assert_return (invoke "⍫") (i32.const 429)) -(assert_return (invoke "\1a") (i32.const 430)) -(assert_return (invoke "␦") (i32.const 431)) -(assert_return (invoke "␚") (i32.const 432)) -(assert_return (invoke "") (i32.const 433)) -(assert_return (invoke "?") (i32.const 434)) -(assert_return (invoke "¿") (i32.const 435)) -(assert_return (invoke "᥅") (i32.const 436)) -(assert_return (invoke ";") (i32.const 437)) -(assert_return (invoke "՞") (i32.const 438)) -(assert_return (invoke "؟") (i32.const 439)) -(assert_return (invoke "፧") (i32.const 440)) -(assert_return (invoke "⁇") (i32.const 441)) -(assert_return (invoke "⍰") (i32.const 442)) -(assert_return (invoke "❓") (i32.const 443)) -(assert_return (invoke "❔") (i32.const 444)) -(assert_return (invoke "⳺") (i32.const 445)) -(assert_return (invoke "⳻") (i32.const 446)) -(assert_return (invoke "⸮") (i32.const 447)) -(assert_return (invoke "㉄") (i32.const 448)) -(assert_return (invoke "꘏") (i32.const 449)) -(assert_return (invoke "꛷") (i32.const 450)) -(assert_return (invoke "︖") (i32.const 451)) -(assert_return (invoke "﹖") (i32.const 452)) -(assert_return (invoke "?") (i32.const 453)) -(assert_return (invoke "𑅃") (i32.const 454)) -(assert_return (invoke "𞥟") (i32.const 455)) -(assert_return (invoke "󠀿") (i32.const 456)) -(assert_return (invoke "𖡄") (i32.const 457)) -(assert_return (invoke "⯑") (i32.const 458)) -(assert_return (invoke "¶") (i32.const 459)) -(assert_return (invoke "⁋") (i32.const 460)) -(assert_return (invoke "܀") (i32.const 461)) -(assert_return (invoke "჻") (i32.const 462)) -(assert_return (invoke "፨") (i32.const 463)) -(assert_return (invoke "〷") (i32.const 464)) -(assert_return (invoke "❡") (i32.const 465)) -(assert_return (invoke "⸏") (i32.const 466)) -(assert_return (invoke "⸐") (i32.const 467)) -(assert_return (invoke "⸑") (i32.const 468)) -(assert_return (invoke "⸎") (i32.const 469)) -(assert_return (invoke "\14") (i32.const 470)) -(assert_return (invoke "☙") (i32.const 471)) - -(module - ;; Test that we can use indices instead of names to reference imports, - ;; exports, functions and parameters. - (import "spectest" "print" (func (param i32))) - (func (import "spectest" "print") (param i32)) - (func (param i32) (param i32) - (call 0 (get_local 0)) - (call 1 (get_local 1)) - ) - (export "print32" (func 2)) -) - -(assert_return (invoke "print32" (i32.const 42) (i32.const 123))) diff --git a/libraries/wasm-jit/Test/spec/nop.wast b/libraries/wasm-jit/Test/spec/nop.wast deleted file mode 100644 index 2862315587f..00000000000 --- a/libraries/wasm-jit/Test/spec/nop.wast +++ /dev/null @@ -1,264 +0,0 @@ -;; Test `nop` operator. - -(module - ;; Auxiliary definitions - (func $dummy) - (func $3-ary (param i32 i32 i32) (result i32) - get_local 0 get_local 1 get_local 2 i32.sub i32.add - ) - (memory 1) - - (func (export "as-func-first") (result i32) - (nop) (i32.const 1) - ) - (func (export "as-func-mid") (result i32) - (call $dummy) (nop) (i32.const 2) - ) - (func (export "as-func-last") (result i32) - (call $dummy) (i32.const 3) (nop) - ) - (func (export "as-func-everywhere") (result i32) - (nop) (nop) (call $dummy) (nop) (i32.const 4) (nop) (nop) - ) - - (func (export "as-drop-last") (param i32) - (get_local 0) (nop) (drop) - ) - (func (export "as-drop-everywhere") (param i32) - (nop) (nop) (get_local 0) (nop) (nop) (drop) - ) - - (func (export "as-select-mid1") (param i32) (result i32) - (get_local 0) (nop) (get_local 0) (get_local 0) (select) - ) - (func (export "as-select-mid2") (param i32) (result i32) - (get_local 0) (get_local 0) (nop) (get_local 0) (select) - ) - (func (export "as-select-last") (param i32) (result i32) - (get_local 0) (get_local 0) (get_local 0) (nop) (select) - ) - (func (export "as-select-everywhere") (param i32) (result i32) - (nop) (get_local 0) (nop) (nop) (get_local 0) - (nop) (nop) (get_local 0) (nop) (nop) (select) - ) - - (func (export "as-block-first") (result i32) - (block (result i32) (nop) (i32.const 2)) - ) - (func (export "as-block-mid") (result i32) - (block (result i32) (call $dummy) (nop) (i32.const 2)) - ) - (func (export "as-block-last") (result i32) - (block (result i32) (nop) (call $dummy) (i32.const 3) (nop)) - ) - (func (export "as-block-everywhere") (result i32) - (block (result i32) - (nop) (nop) (call $dummy) (nop) (i32.const 4) (nop) (nop) - ) - ) - - (func (export "as-loop-first") (result i32) - (loop (result i32) (nop) (i32.const 2)) - ) - (func (export "as-loop-mid") (result i32) - (loop (result i32) (call $dummy) (nop) (i32.const 2)) - ) - (func (export "as-loop-last") (result i32) - (loop (result i32) (call $dummy) (i32.const 3) (nop)) - ) - (func (export "as-loop-everywhere") (result i32) - (loop (result i32) - (nop) (nop) (call $dummy) (nop) (i32.const 4) (nop) (nop) - ) - ) - - (func (export "as-if-condition") (param i32) - (get_local 0) (nop) (if (then (call $dummy))) - ) - (func (export "as-if-then") (param i32) - (if (get_local 0) (then (nop)) (else (call $dummy))) - ) - (func (export "as-if-else") (param i32) - (if (get_local 0) (then (call $dummy)) (else (nop))) - ) - - (func (export "as-br-last") (param i32) (result i32) - (block (result i32) (get_local 0) (nop) (br 0)) - ) - (func (export "as-br-everywhere") (param i32) (result i32) - (block (result i32) (nop) (nop) (get_local 0) (nop) (nop) (br 0)) - ) - - (func (export "as-br_if-mid") (param i32) (result i32) - (block (result i32) (get_local 0) (nop) (get_local 0) (br_if 0)) - ) - (func (export "as-br_if-last") (param i32) (result i32) - (block (result i32) (get_local 0) (get_local 0) (nop) (br_if 0)) - ) - (func (export "as-br_if-everywhere") (param i32) (result i32) - (block (result i32) - (nop) (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) - (br_if 0) - ) - ) - - (func (export "as-br_table-mid") (param i32) (result i32) - (block (result i32) (get_local 0) (nop) (get_local 0) (br_table 0 0)) - ) - (func (export "as-br_table-last") (param i32) (result i32) - (block (result i32) (get_local 0) (get_local 0) (nop) (br_table 0 0)) - ) - (func (export "as-br_table-everywhere") (param i32) (result i32) - (block (result i32) - (nop) (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) - (br_table 0 0) - ) - ) - - (func (export "as-return-last") (param i32) (result i32) - (get_local 0) (nop) (return) - ) - (func (export "as-return-everywhere") (param i32) (result i32) - (nop) (nop) (get_local 0) (nop) (nop) (return) - ) - - (func (export "as-call-mid1") (param i32 i32 i32) (result i32) - (get_local 0) (nop) (get_local 1) (get_local 2) (call $3-ary) - ) - (func (export "as-call-mid2") (param i32 i32 i32) (result i32) - (get_local 0) (get_local 1) (nop) (get_local 2) (call $3-ary) - ) - (func (export "as-call-last") (param i32 i32 i32) (result i32) - (get_local 0) (get_local 1) (get_local 2) (nop) (call $3-ary) - ) - (func (export "as-call-everywhere") (param i32 i32 i32) (result i32) - (nop) (nop) (get_local 0) (nop) (nop) (get_local 1) - (nop) (nop) (get_local 2) (nop) (nop) (call $3-ary) - ) - - ;; TODO(stack): call_indirect, *_local, load*, store* - - (func (export "as-unary-last") (param i32) (result i32) - (get_local 0) (nop) (i32.ctz) - ) - (func (export "as-unary-everywhere") (param i32) (result i32) - (nop) (nop) (get_local 0) (nop) (nop) (i32.ctz) - ) - - (func (export "as-binary-mid") (param i32) (result i32) - (get_local 0) (nop) (get_local 0) (i32.add) - ) - (func (export "as-binary-last") (param i32) (result i32) - (get_local 0) (get_local 0) (nop) (i32.add) - ) - (func (export "as-binary-everywhere") (param i32) (result i32) - (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) (i32.add) - ) - - (func (export "as-test-last") (param i32) (result i32) - (get_local 0) (nop) (i32.eqz) - ) - (func (export "as-test-everywhere") (param i32) (result i32) - (nop) (nop) (get_local 0) (nop) (nop) i32.eqz - ) - - (func (export "as-compare-mid") (param i32) (result i32) - (get_local 0) (nop) (get_local 0) (i32.ne) - ) - (func (export "as-compare-last") (param i32) (result i32) - (get_local 0) (get_local 0) (nop) (i32.lt_u) - ) - (func (export "as-compare-everywhere") (param i32) (result i32) - (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) (i32.le_s) - ) - - (func (export "as-grow_memory-last") (param i32) (result i32) - (get_local 0) (nop) (grow_memory) - ) - (func (export "as-grow_memory-everywhere") (param i32) (result i32) - (nop) (nop) (get_local 0) (nop) (nop) (grow_memory) - ) -) - -(assert_return (invoke "as-func-first") (i32.const 1)) -(assert_return (invoke "as-func-mid") (i32.const 2)) -(assert_return (invoke "as-func-last") (i32.const 3)) -(assert_return (invoke "as-func-everywhere") (i32.const 4)) - -(assert_return (invoke "as-drop-last" (i32.const 0))) -(assert_return (invoke "as-drop-everywhere" (i32.const 0))) - -(assert_return (invoke "as-select-mid1" (i32.const 3)) (i32.const 3)) -(assert_return (invoke "as-select-mid2" (i32.const 3)) (i32.const 3)) -(assert_return (invoke "as-select-last" (i32.const 3)) (i32.const 3)) -(assert_return (invoke "as-select-everywhere" (i32.const 3)) (i32.const 3)) - -(assert_return (invoke "as-block-first") (i32.const 2)) -(assert_return (invoke "as-block-mid") (i32.const 2)) -(assert_return (invoke "as-block-last") (i32.const 3)) -(assert_return (invoke "as-block-everywhere") (i32.const 4)) - -(assert_return (invoke "as-loop-first") (i32.const 2)) -(assert_return (invoke "as-loop-mid") (i32.const 2)) -(assert_return (invoke "as-loop-last") (i32.const 3)) -(assert_return (invoke "as-loop-everywhere") (i32.const 4)) - -(assert_return (invoke "as-if-condition" (i32.const 0))) -(assert_return (invoke "as-if-condition" (i32.const -1))) -(assert_return (invoke "as-if-then" (i32.const 0))) -(assert_return (invoke "as-if-then" (i32.const 4))) -(assert_return (invoke "as-if-else" (i32.const 0))) -(assert_return (invoke "as-if-else" (i32.const 3))) - -(assert_return (invoke "as-br-last" (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-br-everywhere" (i32.const 7)) (i32.const 7)) - -(assert_return (invoke "as-br_if-mid" (i32.const 5)) (i32.const 5)) -(assert_return (invoke "as-br_if-last" (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-br_if-everywhere" (i32.const 7)) (i32.const 7)) - -(assert_return (invoke "as-br_table-mid" (i32.const 5)) (i32.const 5)) -(assert_return (invoke "as-br_table-last" (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-br_table-everywhere" (i32.const 7)) (i32.const 7)) - -(assert_return (invoke "as-return-last" (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-return-everywhere" (i32.const 7)) (i32.const 7)) - -(assert_return (invoke "as-call-mid1" (i32.const 3) (i32.const 1) (i32.const 2)) (i32.const 2)) -(assert_return (invoke "as-call-mid2" (i32.const 0) (i32.const 3) (i32.const 1)) (i32.const 2)) -(assert_return (invoke "as-call-last" (i32.const 10) (i32.const 9) (i32.const -1)) (i32.const 20)) -(assert_return (invoke "as-call-everywhere" (i32.const 2) (i32.const 1) (i32.const 5)) (i32.const -2)) - -(assert_return (invoke "as-unary-last" (i32.const 30)) (i32.const 1)) -(assert_return (invoke "as-unary-everywhere" (i32.const 12)) (i32.const 2)) - -(assert_return (invoke "as-binary-mid" (i32.const 3)) (i32.const 6)) -(assert_return (invoke "as-binary-last" (i32.const 3)) (i32.const 6)) -(assert_return (invoke "as-binary-everywhere" (i32.const 3)) (i32.const 6)) - -(assert_return (invoke "as-test-last" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "as-test-everywhere" (i32.const 0)) (i32.const 1)) - -(assert_return (invoke "as-compare-mid" (i32.const 3)) (i32.const 0)) -(assert_return (invoke "as-compare-last" (i32.const 3)) (i32.const 0)) -(assert_return (invoke "as-compare-everywhere" (i32.const 3)) (i32.const 1)) - -(assert_return (invoke "as-grow_memory-last" (i32.const 2)) (i32.const 1)) -(assert_return (invoke "as-grow_memory-everywhere" (i32.const 12)) (i32.const 3)) - -(assert_invalid - (module (func $type-i32 (result i32) (nop))) - "type mismatch" -) -(assert_invalid - (module (func $type-i64 (result i64) (nop))) - "type mismatch" -) -(assert_invalid - (module (func $type-f32 (result f32) (nop))) - "type mismatch" -) -(assert_invalid - (module (func $type-f64 (result f64) (nop))) - "type mismatch" -) diff --git a/libraries/wasm-jit/Test/spec/resizing.wast b/libraries/wasm-jit/Test/spec/resizing.wast deleted file mode 100644 index 80d20b56a2a..00000000000 --- a/libraries/wasm-jit/Test/spec/resizing.wast +++ /dev/null @@ -1,60 +0,0 @@ -(module - (memory 0) - - (func (export "load_at_zero") (result i32) (i32.load (i32.const 0))) - (func (export "store_at_zero") (i32.store (i32.const 0) (i32.const 2))) - - (func (export "load_at_page_size") (result i32) (i32.load (i32.const 0x10000))) - (func (export "store_at_page_size") (i32.store (i32.const 0x10000) (i32.const 3))) - - (func (export "grow") (param $sz i32) (result i32) (grow_memory (get_local $sz))) - (func (export "size") (result i32) (current_memory)) -) - -(assert_return (invoke "size") (i32.const 0)) -(assert_trap (invoke "store_at_zero") "out of bounds memory access") -(assert_trap (invoke "load_at_zero") "out of bounds memory access") -(assert_trap (invoke "store_at_page_size") "out of bounds memory access") -(assert_trap (invoke "load_at_page_size") "out of bounds memory access") -(assert_return (invoke "grow" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "size") (i32.const 1)) -(assert_return (invoke "load_at_zero") (i32.const 0)) -(assert_return (invoke "store_at_zero")) -(assert_return (invoke "load_at_zero") (i32.const 2)) -(assert_trap (invoke "store_at_page_size") "out of bounds memory access") -(assert_trap (invoke "load_at_page_size") "out of bounds memory access") -(assert_return (invoke "grow" (i32.const 4)) (i32.const 1)) -(assert_return (invoke "size") (i32.const 5)) -(assert_return (invoke "load_at_zero") (i32.const 2)) -(assert_return (invoke "store_at_zero")) -(assert_return (invoke "load_at_zero") (i32.const 2)) -(assert_return (invoke "load_at_page_size") (i32.const 0)) -(assert_return (invoke "store_at_page_size")) -(assert_return (invoke "load_at_page_size") (i32.const 3)) - - -(module - (memory 0) - (func (export "grow") (param i32) (result i32) (grow_memory (get_local 0))) -) - -(assert_return (invoke "grow" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "grow" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "grow" (i32.const 0)) (i32.const 1)) -(assert_return (invoke "grow" (i32.const 2)) (i32.const 1)) -(assert_return (invoke "grow" (i32.const 800)) (i32.const 3)) -(assert_return (invoke "grow" (i32.const 0x10000)) (i32.const -1)) - -(module - (memory 0 10) - (func (export "grow") (param i32) (result i32) (grow_memory (get_local 0))) -) - -(assert_return (invoke "grow" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "grow" (i32.const 1)) (i32.const 0)) -(assert_return (invoke "grow" (i32.const 1)) (i32.const 1)) -(assert_return (invoke "grow" (i32.const 2)) (i32.const 2)) -(assert_return (invoke "grow" (i32.const 6)) (i32.const 4)) -(assert_return (invoke "grow" (i32.const 0)) (i32.const 10)) -(assert_return (invoke "grow" (i32.const 1)) (i32.const -1)) -(assert_return (invoke "grow" (i32.const 0x10000)) (i32.const -1)) diff --git a/libraries/wasm-jit/Test/spec/return.wast b/libraries/wasm-jit/Test/spec/return.wast deleted file mode 100644 index 48964cffc2d..00000000000 --- a/libraries/wasm-jit/Test/spec/return.wast +++ /dev/null @@ -1,287 +0,0 @@ -;; Test `return` operator - -(module - ;; Auxiliary definition - (func $dummy) - - (func (export "type-i32") (drop (i32.ctz (return)))) - (func (export "type-i64") (drop (i64.ctz (return)))) - (func (export "type-f32") (drop (f32.neg (return)))) - (func (export "type-f64") (drop (f64.neg (return)))) - - (func (export "nullary") (return)) - (func (export "unary") (result f64) (return (f64.const 3))) - - (func (export "as-func-first") (result i32) - (return (i32.const 1)) (i32.const 2) - ) - (func (export "as-func-mid") (result i32) - (call $dummy) (return (i32.const 2)) (i32.const 3) - ) - (func (export "as-func-last") - (nop) (call $dummy) (return) - ) - (func (export "as-func-value") (result i32) - (nop) (call $dummy) (return (i32.const 3)) - ) - - (func (export "as-block-first") - (block (return) (call $dummy)) - ) - (func (export "as-block-mid") - (block (call $dummy) (return) (call $dummy)) - ) - (func (export "as-block-last") - (block (nop) (call $dummy) (return)) - ) - (func (export "as-block-value") (result i32) - (block (result i32) (nop) (call $dummy) (return (i32.const 2))) - ) - - (func (export "as-loop-first") (result i32) - (loop (result i32) (return (i32.const 3)) (i32.const 2)) - ) - (func (export "as-loop-mid") (result i32) - (loop (result i32) (call $dummy) (return (i32.const 4)) (i32.const 2)) - ) - (func (export "as-loop-last") (result i32) - (loop (result i32) (nop) (call $dummy) (return (i32.const 5))) - ) - - (func (export "as-br-value") (result i32) - (block (result i32) (br 0 (return (i32.const 9)))) - ) - - (func (export "as-br_if-cond") - (block (br_if 0 (return))) - ) - (func (export "as-br_if-value") (result i32) - (block (result i32) - (drop (br_if 0 (return (i32.const 8)) (i32.const 1))) (i32.const 7) - ) - ) - (func (export "as-br_if-value-cond") (result i32) - (block (result i32) - (drop (br_if 0 (i32.const 6) (return (i32.const 9)))) (i32.const 7) - ) - ) - - (func (export "as-br_table-index") (result i64) - (block (br_table 0 0 0 (return (i64.const 9)))) (i64.const -1) - ) - (func (export "as-br_table-value") (result i32) - (block (result i32) - (br_table 0 0 0 (return (i32.const 10)) (i32.const 1)) (i32.const 7) - ) - ) - (func (export "as-br_table-value-index") (result i32) - (block (result i32) - (br_table 0 0 (i32.const 6) (return (i32.const 11))) (i32.const 7) - ) - ) - - (func (export "as-return-value") (result i64) - (return (return (i64.const 7))) - ) - - (func (export "as-if-cond") (result i32) - (if (result i32) - (return (i32.const 2)) (then (i32.const 0)) (else (i32.const 1)) - ) - ) - (func (export "as-if-then") (param i32 i32) (result i32) - (if (result i32) - (get_local 0) (then (return (i32.const 3))) (else (get_local 1)) - ) - ) - (func (export "as-if-else") (param i32 i32) (result i32) - (if (result i32) - (get_local 0) (then (get_local 1)) (else (return (i32.const 4))) - ) - ) - - (func (export "as-select-first") (param i32 i32) (result i32) - (select (return (i32.const 5)) (get_local 0) (get_local 1)) - ) - (func (export "as-select-second") (param i32 i32) (result i32) - (select (get_local 0) (return (i32.const 6)) (get_local 1)) - ) - (func (export "as-select-cond") (result i32) - (select (i32.const 0) (i32.const 1) (return (i32.const 7))) - ) - - (func $f (param i32 i32 i32) (result i32) (i32.const -1)) - (func (export "as-call-first") (result i32) - (call $f (return (i32.const 12)) (i32.const 2) (i32.const 3)) - ) - (func (export "as-call-mid") (result i32) - (call $f (i32.const 1) (return (i32.const 13)) (i32.const 3)) - ) - (func (export "as-call-last") (result i32) - (call $f (i32.const 1) (i32.const 2) (return (i32.const 14))) - ) - - (type $sig (func (param i32 i32 i32) (result i32))) - (table anyfunc (elem $f)) - (func (export "as-call_indirect-func") (result i32) - (call_indirect $sig (return (i32.const 20)) (i32.const 1) (i32.const 2) (i32.const 3)) - ) - (func (export "as-call_indirect-first") (result i32) - (call_indirect $sig (i32.const 0) (return (i32.const 21)) (i32.const 2) (i32.const 3)) - ) - (func (export "as-call_indirect-mid") (result i32) - (call_indirect $sig (i32.const 0) (i32.const 1) (return (i32.const 22)) (i32.const 3)) - ) - (func (export "as-call_indirect-last") (result i32) - (call_indirect $sig (i32.const 0) (i32.const 1) (i32.const 2) (return (i32.const 23))) - ) - - (func (export "as-set_local-value") (result i32) (local f32) - (set_local 0 (return (i32.const 17))) (i32.const -1) - ) - - (memory 1) - (func (export "as-load-address") (result f32) - (f32.load (return (f32.const 1.7))) - ) - (func (export "as-loadN-address") (result i64) - (i64.load8_s (return (i64.const 30))) - ) - - (func (export "as-store-address") (result i32) - (f64.store (return (i32.const 30)) (f64.const 7)) (i32.const -1) - ) - (func (export "as-store-value") (result i32) - (i64.store (i32.const 2) (return (i32.const 31))) (i32.const -1) - ) - - (func (export "as-storeN-address") (result i32) - (i32.store8 (return (i32.const 32)) (i32.const 7)) (i32.const -1) - ) - (func (export "as-storeN-value") (result i32) - (i64.store16 (i32.const 2) (return (i32.const 33))) (i32.const -1) - ) - - (func (export "as-unary-operand") (result f32) - (f32.neg (return (f32.const 3.4))) - ) - - (func (export "as-binary-left") (result i32) - (i32.add (return (i32.const 3)) (i32.const 10)) - ) - (func (export "as-binary-right") (result i64) - (i64.sub (i64.const 10) (return (i64.const 45))) - ) - - (func (export "as-test-operand") (result i32) - (i32.eqz (return (i32.const 44))) - ) - - (func (export "as-compare-left") (result i32) - (f64.le (return (i32.const 43)) (f64.const 10)) - ) - (func (export "as-compare-right") (result i32) - (f32.ne (f32.const 10) (return (i32.const 42))) - ) - - (func (export "as-convert-operand") (result i32) - (i32.wrap/i64 (return (i32.const 41))) - ) - - (func (export "as-grow_memory-size") (result i32) - (grow_memory (return (i32.const 40))) - ) -) - -(assert_return (invoke "type-i32")) -(assert_return (invoke "type-i64")) -(assert_return (invoke "type-f32")) -(assert_return (invoke "type-f64")) - -(assert_return (invoke "nullary")) -(assert_return (invoke "unary") (f64.const 3)) - -(assert_return (invoke "as-func-first") (i32.const 1)) -(assert_return (invoke "as-func-mid") (i32.const 2)) -(assert_return (invoke "as-func-last")) -(assert_return (invoke "as-func-value") (i32.const 3)) - -(assert_return (invoke "as-block-first")) -(assert_return (invoke "as-block-mid")) -(assert_return (invoke "as-block-last")) -(assert_return (invoke "as-block-value") (i32.const 2)) - -(assert_return (invoke "as-loop-first") (i32.const 3)) -(assert_return (invoke "as-loop-mid") (i32.const 4)) -(assert_return (invoke "as-loop-last") (i32.const 5)) - -(assert_return (invoke "as-br-value") (i32.const 9)) - -(assert_return (invoke "as-br_if-cond")) -(assert_return (invoke "as-br_if-value") (i32.const 8)) -(assert_return (invoke "as-br_if-value-cond") (i32.const 9)) - -(assert_return (invoke "as-br_table-index") (i64.const 9)) -(assert_return (invoke "as-br_table-value") (i32.const 10)) -(assert_return (invoke "as-br_table-value-index") (i32.const 11)) - -(assert_return (invoke "as-return-value") (i64.const 7)) - -(assert_return (invoke "as-if-cond") (i32.const 2)) -(assert_return (invoke "as-if-then" (i32.const 1) (i32.const 6)) (i32.const 3)) -(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 6)) (i32.const 4)) -(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) - -(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 6)) (i32.const 5)) -(assert_return (invoke "as-select-first" (i32.const 1) (i32.const 6)) (i32.const 5)) -(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-select-second" (i32.const 1) (i32.const 6)) (i32.const 6)) -(assert_return (invoke "as-select-cond") (i32.const 7)) - -(assert_return (invoke "as-call-first") (i32.const 12)) -(assert_return (invoke "as-call-mid") (i32.const 13)) -(assert_return (invoke "as-call-last") (i32.const 14)) - -(assert_return (invoke "as-call_indirect-func") (i32.const 20)) -(assert_return (invoke "as-call_indirect-first") (i32.const 21)) -(assert_return (invoke "as-call_indirect-mid") (i32.const 22)) -(assert_return (invoke "as-call_indirect-last") (i32.const 23)) - -(assert_return (invoke "as-set_local-value") (i32.const 17)) - -(assert_return (invoke "as-load-address") (f32.const 1.7)) -(assert_return (invoke "as-loadN-address") (i64.const 30)) - -(assert_return (invoke "as-store-address") (i32.const 30)) -(assert_return (invoke "as-store-value") (i32.const 31)) -(assert_return (invoke "as-storeN-address") (i32.const 32)) -(assert_return (invoke "as-storeN-value") (i32.const 33)) - -(assert_return (invoke "as-unary-operand") (f32.const 3.4)) - -(assert_return (invoke "as-binary-left") (i32.const 3)) -(assert_return (invoke "as-binary-right") (i64.const 45)) - -(assert_return (invoke "as-test-operand") (i32.const 44)) - -(assert_return (invoke "as-compare-left") (i32.const 43)) -(assert_return (invoke "as-compare-right") (i32.const 42)) - -(assert_return (invoke "as-convert-operand") (i32.const 41)) - -(assert_return (invoke "as-grow_memory-size") (i32.const 40)) - -(assert_invalid - (module (func $type-value-empty-vs-num (result f64) (return))) - "type mismatch" -) -(assert_invalid - (module (func $type-value-void-vs-num (result f64) (return (nop)))) - "type mismatch" -) -(assert_invalid - (module (func $type-value-num-vs-num (result f64) (return (i64.const 1)))) - "type mismatch" -) - diff --git a/libraries/wasm-jit/Test/spec/select.wast b/libraries/wasm-jit/Test/spec/select.wast deleted file mode 100644 index 4dfa4561212..00000000000 --- a/libraries/wasm-jit/Test/spec/select.wast +++ /dev/null @@ -1,67 +0,0 @@ -(module - (func (export "select_i32") (param $lhs i32) (param $rhs i32) (param $cond i32) (result i32) - (select (get_local $lhs) (get_local $rhs) (get_local $cond))) - - (func (export "select_i64") (param $lhs i64) (param $rhs i64) (param $cond i32) (result i64) - (select (get_local $lhs) (get_local $rhs) (get_local $cond))) - - (func (export "select_f32") (param $lhs f32) (param $rhs f32) (param $cond i32) (result f32) - (select (get_local $lhs) (get_local $rhs) (get_local $cond))) - - (func (export "select_f64") (param $lhs f64) (param $rhs f64) (param $cond i32) (result f64) - (select (get_local $lhs) (get_local $rhs) (get_local $cond))) - - ;; Check that both sides of the select are evaluated - (func (export "select_trap_l") (param $cond i32) (result i32) - (select (unreachable) (i32.const 0) (get_local $cond)) - ) - (func (export "select_trap_r") (param $cond i32) (result i32) - (select (i32.const 0) (unreachable) (get_local $cond)) - ) - - (func (export "select_unreached") - (unreachable) (select) - (unreachable) (i32.const 0) (select) - (unreachable) (i32.const 0) (i32.const 0) (select) - (unreachable) (f32.const 0) (i32.const 0) (select) - (unreachable) - ) -) - -(assert_return (invoke "select_i32" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1)) -(assert_return (invoke "select_i64" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2)) -(assert_return (invoke "select_f32" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1)) -(assert_return (invoke "select_f64" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1)) - -(assert_return (invoke "select_i32" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2)) -(assert_return (invoke "select_i32" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1)) -(assert_return (invoke "select_i64" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2)) -(assert_return (invoke "select_i64" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2)) - -(assert_return (invoke "select_f32" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan)) -(assert_return (invoke "select_f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304)) -(assert_return (invoke "select_f32" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1)) -(assert_return (invoke "select_f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1)) -(assert_return (invoke "select_f32" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2)) -(assert_return (invoke "select_f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2)) -(assert_return (invoke "select_f32" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan)) -(assert_return (invoke "select_f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304)) - -(assert_return (invoke "select_f64" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan)) -(assert_return (invoke "select_f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304)) -(assert_return (invoke "select_f64" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1)) -(assert_return (invoke "select_f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1)) -(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2)) -(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2)) -(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan)) -(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304)) - -(assert_trap (invoke "select_trap_l" (i32.const 1)) "unreachable executed") -(assert_trap (invoke "select_trap_l" (i32.const 0)) "unreachable executed") -(assert_trap (invoke "select_trap_r" (i32.const 1)) "unreachable executed") -(assert_trap (invoke "select_trap_r" (i32.const 0)) "unreachable executed") - -(assert_invalid - (module (func $arity-0 (select (nop) (nop) (i32.const 1)))) - "type mismatch" -) diff --git a/libraries/wasm-jit/Test/spec/set_local.wast b/libraries/wasm-jit/Test/spec/set_local.wast deleted file mode 100644 index 5a006e1148e..00000000000 --- a/libraries/wasm-jit/Test/spec/set_local.wast +++ /dev/null @@ -1,205 +0,0 @@ -;; Test `set_local` operator - -(module - ;; Typing - - (func (export "type-local-i32") (local i32) (set_local 0 (i32.const 0))) - (func (export "type-local-i64") (local i64) (set_local 0 (i64.const 0))) - (func (export "type-local-f32") (local f32) (set_local 0 (f32.const 0))) - (func (export "type-local-f64") (local f64) (set_local 0 (f64.const 0))) - - (func (export "type-param-i32") (param i32) (set_local 0 (i32.const 10))) - (func (export "type-param-i64") (param i64) (set_local 0 (i64.const 11))) - (func (export "type-param-f32") (param f32) (set_local 0 (f32.const 11.1))) - (func (export "type-param-f64") (param f64) (set_local 0 (f64.const 12.2))) - - (func (export "type-mixed") (param i64 f32 f64 i32 i32) (local f32 i64 i64 f64) - (set_local 0 (i64.const 0)) - (set_local 1 (f32.const 0)) - (set_local 2 (f64.const 0)) - (set_local 3 (i32.const 0)) - (set_local 4 (i32.const 0)) - (set_local 5 (f32.const 0)) - (set_local 6 (i64.const 0)) - (set_local 7 (i64.const 0)) - (set_local 8 (f64.const 0)) - ) - - ;; Writing - - (func (export "write") (param i64 f32 f64 i32 i32) (result i64) - (local f32 i64 i64 f64) - (set_local 1 (f32.const -0.3)) - (set_local 3 (i32.const 40)) - (set_local 4 (i32.const -7)) - (set_local 5 (f32.const 5.5)) - (set_local 6 (i64.const 6)) - (set_local 8 (f64.const 8)) - (i64.trunc_s/f64 - (f64.add - (f64.convert_u/i64 (get_local 0)) - (f64.add - (f64.promote/f32 (get_local 1)) - (f64.add - (get_local 2) - (f64.add - (f64.convert_u/i32 (get_local 3)) - (f64.add - (f64.convert_s/i32 (get_local 4)) - (f64.add - (f64.promote/f32 (get_local 5)) - (f64.add - (f64.convert_u/i64 (get_local 6)) - (f64.add - (f64.convert_u/i64 (get_local 7)) - (get_local 8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) -) - -(assert_return (invoke "type-local-i32")) -(assert_return (invoke "type-local-i64")) -(assert_return (invoke "type-local-f32")) -(assert_return (invoke "type-local-f64")) - -(assert_return (invoke "type-param-i32" (i32.const 2))) -(assert_return (invoke "type-param-i64" (i64.const 3))) -(assert_return (invoke "type-param-f32" (f32.const 4.4))) -(assert_return (invoke "type-param-f64" (f64.const 5.5))) - -(assert_return - (invoke "type-mixed" - (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) - ) -) - -(assert_return - (invoke "write" - (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) - ) - (i64.const 56) -) - - -;; Invalid typing of access to locals - -(assert_invalid - (module (func $type-local-num-vs-num (result i64) (local i32) - (set_local 0 (i32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f32) - (i32.eqz (set_local 0 (f32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f64 i64) - (f64.neg (set_local 1 (i64.const 0))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-local-arg-void-vs-num (local i32) (set_local 0 (nop)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-arg-num-vs-num (local i32) (set_local 0 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-arg-num-vs-num (local f32) (set_local 0 (f64.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-arg-num-vs-num (local f64 i64) (set_local 1 (f64.const 0)))) - "type mismatch" -) - - -;; Invalid typing of access to parameters - -(assert_invalid - (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) - "type mismatch" -) - -(assert_invalid - (module (func $type-param-arg-void-vs-num (param i32) (set_local 0 (nop)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-arg-num-vs-num (param i32) (set_local 0 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-arg-num-vs-num (param f32) (set_local 0 (f64.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-arg-num-vs-num (param f64 i64) (set_local 1 (f64.const 0)))) - "type mismatch" -) - - -;; Invalid local index - -(assert_invalid - (module (func $unbound-local (local i32 i64) (get_local 3))) - "unknown local" -) -(assert_invalid - (module (func $large-local (local i32 i64) (get_local 14324343))) - "unknown local" -) - -(assert_invalid - (module (func $unbound-param (param i32 i64) (get_local 2))) - "unknown local" -) -(assert_invalid - (module (func $large-param (local i32 i64) (get_local 714324343))) - "unknown local" -) - -(assert_invalid - (module (func $unbound-mixed (param i32) (local i32 i64) (get_local 3))) - "unknown local" -) -(assert_invalid - (module (func $large-mixed (param i64) (local i32 i64) (get_local 214324343))) - "unknown local" -) - -(assert_invalid - (module (func $type-mixed-arg-num-vs-num (param f32) (local i32) (set_local 1 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-mixed-arg-num-vs-num (param i64 i32) (local f32) (set_local 1 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-mixed-arg-num-vs-num (param i64) (local f64 i64) (set_local 1 (i64.const 0)))) - "type mismatch" -) - diff --git a/libraries/wasm-jit/Test/spec/skip-stack-guard-page.wast b/libraries/wasm-jit/Test/spec/skip-stack-guard-page.wast deleted file mode 100644 index f2449dc85d8..00000000000 --- a/libraries/wasm-jit/Test/spec/skip-stack-guard-page.wast +++ /dev/null @@ -1,2284 +0,0 @@ -;; This tests that the stack overflow guard page can't be skipped by a function with more than a page of locals. -(module - (memory 1) - (export "test-guard-page-skip" (func $test-guard-page-skip)) - - (func $test-guard-page-skip - (param $depth i32) - (if (i32.eq (get_local $depth) (i32.const 0)) - (then (call $function-with-many-locals)) - (else (call $test-guard-page-skip (i32.sub (get_local $depth) (i32.const 1)))) - ) - ) - - (func $function-with-many-locals - - ;; 1056 i64 = 8448 bytes of locals - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x000-0x007 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x008-0x00f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x010-0x017 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x018-0x01f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x020-0x027 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x028-0x02f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x030-0x037 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x038-0x03f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x040-0x047 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x048-0x04f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x050-0x057 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x058-0x05f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x060-0x067 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x068-0x06f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x070-0x077 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x078-0x07f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x080-0x087 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x088-0x08f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x090-0x097 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x098-0x09f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0a0-0x0a7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0a8-0x0af - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0b0-0x0b7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0b8-0x0bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0c0-0x0c7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0c8-0x0cf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0d0-0x0d7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0d8-0x0df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0e0-0x0e7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0e8-0x0ef - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0f0-0x0f7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0f8-0x0ff - - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x100-0x107 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x108-0x10f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x110-0x117 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x118-0x11f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x120-0x127 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x128-0x12f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x130-0x137 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x138-0x13f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x140-0x147 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x148-0x14f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x150-0x157 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x158-0x15f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x160-0x167 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x168-0x16f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x170-0x177 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x178-0x17f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x180-0x187 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x188-0x18f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x190-0x197 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x198-0x19f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1a0-0x1a7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1a8-0x1af - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1b0-0x1b7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1b8-0x1bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1c0-0x1c7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1c8-0x1cf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1d0-0x1d7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1d8-0x1df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1e0-0x1e7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1e8-0x1ef - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1f0-0x1f7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1f8-0x1ff - - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x200-0x207 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x208-0x20f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x210-0x217 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x218-0x21f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x220-0x227 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x228-0x22f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x230-0x237 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x238-0x23f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x240-0x247 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x248-0x24f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x250-0x257 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x258-0x25f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x260-0x267 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x268-0x26f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x270-0x277 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x278-0x27f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x280-0x287 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x288-0x28f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x290-0x297 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x298-0x29f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2a0-0x2a7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2a8-0x2af - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2b0-0x2b7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2b8-0x2bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2c0-0x2c7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2c8-0x2cf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2d0-0x2d7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2d8-0x2df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2e0-0x2e7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2e8-0x2ef - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2f0-0x2f7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2f8-0x2ff - - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x300-0x307 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x308-0x30f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x310-0x317 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x318-0x31f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x320-0x327 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x328-0x32f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x330-0x337 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x338-0x33f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x340-0x347 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x348-0x34f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x350-0x357 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x358-0x35f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x360-0x367 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x368-0x36f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x370-0x377 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x378-0x37f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x380-0x387 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x388-0x38f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x390-0x397 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x398-0x39f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3a0-0x3a7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3a8-0x3af - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3b0-0x3b7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3b8-0x3bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3c0-0x3c7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3c8-0x3cf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3d0-0x3d7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3d8-0x3df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3e0-0x3e7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3e8-0x3ef - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3f0-0x3f7 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3f8-0x3ff - - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x400-0x407 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x408-0x40f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x410-0x417 - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x418-0x41f - - ;; recurse first to try to make the callee access the stack below the space allocated for the locals before the locals themselves have been initialized. - (call $function-with-many-locals) - - ;; load from memory into the locals - (set_local 0x000 (i64.load offset=0x000 align=1 (i32.const 0))) - (set_local 0x001 (i64.load offset=0x001 align=1 (i32.const 0))) - (set_local 0x002 (i64.load offset=0x002 align=1 (i32.const 0))) - (set_local 0x003 (i64.load offset=0x003 align=1 (i32.const 0))) - (set_local 0x004 (i64.load offset=0x004 align=1 (i32.const 0))) - (set_local 0x005 (i64.load offset=0x005 align=1 (i32.const 0))) - (set_local 0x006 (i64.load offset=0x006 align=1 (i32.const 0))) - (set_local 0x007 (i64.load offset=0x007 align=1 (i32.const 0))) - (set_local 0x008 (i64.load offset=0x008 align=1 (i32.const 0))) - (set_local 0x009 (i64.load offset=0x009 align=1 (i32.const 0))) - (set_local 0x00a (i64.load offset=0x00a align=1 (i32.const 0))) - (set_local 0x00b (i64.load offset=0x00b align=1 (i32.const 0))) - (set_local 0x00c (i64.load offset=0x00c align=1 (i32.const 0))) - (set_local 0x00d (i64.load offset=0x00d align=1 (i32.const 0))) - (set_local 0x00e (i64.load offset=0x00e align=1 (i32.const 0))) - (set_local 0x00f (i64.load offset=0x00f align=1 (i32.const 0))) - (set_local 0x010 (i64.load offset=0x010 align=1 (i32.const 0))) - (set_local 0x011 (i64.load offset=0x011 align=1 (i32.const 0))) - (set_local 0x012 (i64.load offset=0x012 align=1 (i32.const 0))) - (set_local 0x013 (i64.load offset=0x013 align=1 (i32.const 0))) - (set_local 0x014 (i64.load offset=0x014 align=1 (i32.const 0))) - (set_local 0x015 (i64.load offset=0x015 align=1 (i32.const 0))) - (set_local 0x016 (i64.load offset=0x016 align=1 (i32.const 0))) - (set_local 0x017 (i64.load offset=0x017 align=1 (i32.const 0))) - (set_local 0x018 (i64.load offset=0x018 align=1 (i32.const 0))) - (set_local 0x019 (i64.load offset=0x019 align=1 (i32.const 0))) - (set_local 0x01a (i64.load offset=0x01a align=1 (i32.const 0))) - (set_local 0x01b (i64.load offset=0x01b align=1 (i32.const 0))) - (set_local 0x01c (i64.load offset=0x01c align=1 (i32.const 0))) - (set_local 0x01d (i64.load offset=0x01d align=1 (i32.const 0))) - (set_local 0x01e (i64.load offset=0x01e align=1 (i32.const 0))) - (set_local 0x01f (i64.load offset=0x01f align=1 (i32.const 0))) - (set_local 0x020 (i64.load offset=0x020 align=1 (i32.const 0))) - (set_local 0x021 (i64.load offset=0x021 align=1 (i32.const 0))) - (set_local 0x022 (i64.load offset=0x022 align=1 (i32.const 0))) - (set_local 0x023 (i64.load offset=0x023 align=1 (i32.const 0))) - (set_local 0x024 (i64.load offset=0x024 align=1 (i32.const 0))) - (set_local 0x025 (i64.load offset=0x025 align=1 (i32.const 0))) - (set_local 0x026 (i64.load offset=0x026 align=1 (i32.const 0))) - (set_local 0x027 (i64.load offset=0x027 align=1 (i32.const 0))) - (set_local 0x028 (i64.load offset=0x028 align=1 (i32.const 0))) - (set_local 0x029 (i64.load offset=0x029 align=1 (i32.const 0))) - (set_local 0x02a (i64.load offset=0x02a align=1 (i32.const 0))) - (set_local 0x02b (i64.load offset=0x02b align=1 (i32.const 0))) - (set_local 0x02c (i64.load offset=0x02c align=1 (i32.const 0))) - (set_local 0x02d (i64.load offset=0x02d align=1 (i32.const 0))) - (set_local 0x02e (i64.load offset=0x02e align=1 (i32.const 0))) - (set_local 0x02f (i64.load offset=0x02f align=1 (i32.const 0))) - (set_local 0x030 (i64.load offset=0x030 align=1 (i32.const 0))) - (set_local 0x031 (i64.load offset=0x031 align=1 (i32.const 0))) - (set_local 0x032 (i64.load offset=0x032 align=1 (i32.const 0))) - (set_local 0x033 (i64.load offset=0x033 align=1 (i32.const 0))) - (set_local 0x034 (i64.load offset=0x034 align=1 (i32.const 0))) - (set_local 0x035 (i64.load offset=0x035 align=1 (i32.const 0))) - (set_local 0x036 (i64.load offset=0x036 align=1 (i32.const 0))) - (set_local 0x037 (i64.load offset=0x037 align=1 (i32.const 0))) - (set_local 0x038 (i64.load offset=0x038 align=1 (i32.const 0))) - (set_local 0x039 (i64.load offset=0x039 align=1 (i32.const 0))) - (set_local 0x03a (i64.load offset=0x03a align=1 (i32.const 0))) - (set_local 0x03b (i64.load offset=0x03b align=1 (i32.const 0))) - (set_local 0x03c (i64.load offset=0x03c align=1 (i32.const 0))) - (set_local 0x03d (i64.load offset=0x03d align=1 (i32.const 0))) - (set_local 0x03e (i64.load offset=0x03e align=1 (i32.const 0))) - (set_local 0x03f (i64.load offset=0x03f align=1 (i32.const 0))) - (set_local 0x040 (i64.load offset=0x040 align=1 (i32.const 0))) - (set_local 0x041 (i64.load offset=0x041 align=1 (i32.const 0))) - (set_local 0x042 (i64.load offset=0x042 align=1 (i32.const 0))) - (set_local 0x043 (i64.load offset=0x043 align=1 (i32.const 0))) - (set_local 0x044 (i64.load offset=0x044 align=1 (i32.const 0))) - (set_local 0x045 (i64.load offset=0x045 align=1 (i32.const 0))) - (set_local 0x046 (i64.load offset=0x046 align=1 (i32.const 0))) - (set_local 0x047 (i64.load offset=0x047 align=1 (i32.const 0))) - (set_local 0x048 (i64.load offset=0x048 align=1 (i32.const 0))) - (set_local 0x049 (i64.load offset=0x049 align=1 (i32.const 0))) - (set_local 0x04a (i64.load offset=0x04a align=1 (i32.const 0))) - (set_local 0x04b (i64.load offset=0x04b align=1 (i32.const 0))) - (set_local 0x04c (i64.load offset=0x04c align=1 (i32.const 0))) - (set_local 0x04d (i64.load offset=0x04d align=1 (i32.const 0))) - (set_local 0x04e (i64.load offset=0x04e align=1 (i32.const 0))) - (set_local 0x04f (i64.load offset=0x04f align=1 (i32.const 0))) - (set_local 0x050 (i64.load offset=0x050 align=1 (i32.const 0))) - (set_local 0x051 (i64.load offset=0x051 align=1 (i32.const 0))) - (set_local 0x052 (i64.load offset=0x052 align=1 (i32.const 0))) - (set_local 0x053 (i64.load offset=0x053 align=1 (i32.const 0))) - (set_local 0x054 (i64.load offset=0x054 align=1 (i32.const 0))) - (set_local 0x055 (i64.load offset=0x055 align=1 (i32.const 0))) - (set_local 0x056 (i64.load offset=0x056 align=1 (i32.const 0))) - (set_local 0x057 (i64.load offset=0x057 align=1 (i32.const 0))) - (set_local 0x058 (i64.load offset=0x058 align=1 (i32.const 0))) - (set_local 0x059 (i64.load offset=0x059 align=1 (i32.const 0))) - (set_local 0x05a (i64.load offset=0x05a align=1 (i32.const 0))) - (set_local 0x05b (i64.load offset=0x05b align=1 (i32.const 0))) - (set_local 0x05c (i64.load offset=0x05c align=1 (i32.const 0))) - (set_local 0x05d (i64.load offset=0x05d align=1 (i32.const 0))) - (set_local 0x05e (i64.load offset=0x05e align=1 (i32.const 0))) - (set_local 0x05f (i64.load offset=0x05f align=1 (i32.const 0))) - (set_local 0x060 (i64.load offset=0x060 align=1 (i32.const 0))) - (set_local 0x061 (i64.load offset=0x061 align=1 (i32.const 0))) - (set_local 0x062 (i64.load offset=0x062 align=1 (i32.const 0))) - (set_local 0x063 (i64.load offset=0x063 align=1 (i32.const 0))) - (set_local 0x064 (i64.load offset=0x064 align=1 (i32.const 0))) - (set_local 0x065 (i64.load offset=0x065 align=1 (i32.const 0))) - (set_local 0x066 (i64.load offset=0x066 align=1 (i32.const 0))) - (set_local 0x067 (i64.load offset=0x067 align=1 (i32.const 0))) - (set_local 0x068 (i64.load offset=0x068 align=1 (i32.const 0))) - (set_local 0x069 (i64.load offset=0x069 align=1 (i32.const 0))) - (set_local 0x06a (i64.load offset=0x06a align=1 (i32.const 0))) - (set_local 0x06b (i64.load offset=0x06b align=1 (i32.const 0))) - (set_local 0x06c (i64.load offset=0x06c align=1 (i32.const 0))) - (set_local 0x06d (i64.load offset=0x06d align=1 (i32.const 0))) - (set_local 0x06e (i64.load offset=0x06e align=1 (i32.const 0))) - (set_local 0x06f (i64.load offset=0x06f align=1 (i32.const 0))) - (set_local 0x070 (i64.load offset=0x070 align=1 (i32.const 0))) - (set_local 0x071 (i64.load offset=0x071 align=1 (i32.const 0))) - (set_local 0x072 (i64.load offset=0x072 align=1 (i32.const 0))) - (set_local 0x073 (i64.load offset=0x073 align=1 (i32.const 0))) - (set_local 0x074 (i64.load offset=0x074 align=1 (i32.const 0))) - (set_local 0x075 (i64.load offset=0x075 align=1 (i32.const 0))) - (set_local 0x076 (i64.load offset=0x076 align=1 (i32.const 0))) - (set_local 0x077 (i64.load offset=0x077 align=1 (i32.const 0))) - (set_local 0x078 (i64.load offset=0x078 align=1 (i32.const 0))) - (set_local 0x079 (i64.load offset=0x079 align=1 (i32.const 0))) - (set_local 0x07a (i64.load offset=0x07a align=1 (i32.const 0))) - (set_local 0x07b (i64.load offset=0x07b align=1 (i32.const 0))) - (set_local 0x07c (i64.load offset=0x07c align=1 (i32.const 0))) - (set_local 0x07d (i64.load offset=0x07d align=1 (i32.const 0))) - (set_local 0x07e (i64.load offset=0x07e align=1 (i32.const 0))) - (set_local 0x07f (i64.load offset=0x07f align=1 (i32.const 0))) - (set_local 0x080 (i64.load offset=0x080 align=1 (i32.const 0))) - (set_local 0x081 (i64.load offset=0x081 align=1 (i32.const 0))) - (set_local 0x082 (i64.load offset=0x082 align=1 (i32.const 0))) - (set_local 0x083 (i64.load offset=0x083 align=1 (i32.const 0))) - (set_local 0x084 (i64.load offset=0x084 align=1 (i32.const 0))) - (set_local 0x085 (i64.load offset=0x085 align=1 (i32.const 0))) - (set_local 0x086 (i64.load offset=0x086 align=1 (i32.const 0))) - (set_local 0x087 (i64.load offset=0x087 align=1 (i32.const 0))) - (set_local 0x088 (i64.load offset=0x088 align=1 (i32.const 0))) - (set_local 0x089 (i64.load offset=0x089 align=1 (i32.const 0))) - (set_local 0x08a (i64.load offset=0x08a align=1 (i32.const 0))) - (set_local 0x08b (i64.load offset=0x08b align=1 (i32.const 0))) - (set_local 0x08c (i64.load offset=0x08c align=1 (i32.const 0))) - (set_local 0x08d (i64.load offset=0x08d align=1 (i32.const 0))) - (set_local 0x08e (i64.load offset=0x08e align=1 (i32.const 0))) - (set_local 0x08f (i64.load offset=0x08f align=1 (i32.const 0))) - (set_local 0x090 (i64.load offset=0x090 align=1 (i32.const 0))) - (set_local 0x091 (i64.load offset=0x091 align=1 (i32.const 0))) - (set_local 0x092 (i64.load offset=0x092 align=1 (i32.const 0))) - (set_local 0x093 (i64.load offset=0x093 align=1 (i32.const 0))) - (set_local 0x094 (i64.load offset=0x094 align=1 (i32.const 0))) - (set_local 0x095 (i64.load offset=0x095 align=1 (i32.const 0))) - (set_local 0x096 (i64.load offset=0x096 align=1 (i32.const 0))) - (set_local 0x097 (i64.load offset=0x097 align=1 (i32.const 0))) - (set_local 0x098 (i64.load offset=0x098 align=1 (i32.const 0))) - (set_local 0x099 (i64.load offset=0x099 align=1 (i32.const 0))) - (set_local 0x09a (i64.load offset=0x09a align=1 (i32.const 0))) - (set_local 0x09b (i64.load offset=0x09b align=1 (i32.const 0))) - (set_local 0x09c (i64.load offset=0x09c align=1 (i32.const 0))) - (set_local 0x09d (i64.load offset=0x09d align=1 (i32.const 0))) - (set_local 0x09e (i64.load offset=0x09e align=1 (i32.const 0))) - (set_local 0x09f (i64.load offset=0x09f align=1 (i32.const 0))) - (set_local 0x0a0 (i64.load offset=0x0a0 align=1 (i32.const 0))) - (set_local 0x0a1 (i64.load offset=0x0a1 align=1 (i32.const 0))) - (set_local 0x0a2 (i64.load offset=0x0a2 align=1 (i32.const 0))) - (set_local 0x0a3 (i64.load offset=0x0a3 align=1 (i32.const 0))) - (set_local 0x0a4 (i64.load offset=0x0a4 align=1 (i32.const 0))) - (set_local 0x0a5 (i64.load offset=0x0a5 align=1 (i32.const 0))) - (set_local 0x0a6 (i64.load offset=0x0a6 align=1 (i32.const 0))) - (set_local 0x0a7 (i64.load offset=0x0a7 align=1 (i32.const 0))) - (set_local 0x0a8 (i64.load offset=0x0a8 align=1 (i32.const 0))) - (set_local 0x0a9 (i64.load offset=0x0a9 align=1 (i32.const 0))) - (set_local 0x0aa (i64.load offset=0x0aa align=1 (i32.const 0))) - (set_local 0x0ab (i64.load offset=0x0ab align=1 (i32.const 0))) - (set_local 0x0ac (i64.load offset=0x0ac align=1 (i32.const 0))) - (set_local 0x0ad (i64.load offset=0x0ad align=1 (i32.const 0))) - (set_local 0x0ae (i64.load offset=0x0ae align=1 (i32.const 0))) - (set_local 0x0af (i64.load offset=0x0af align=1 (i32.const 0))) - (set_local 0x0b0 (i64.load offset=0x0b0 align=1 (i32.const 0))) - (set_local 0x0b1 (i64.load offset=0x0b1 align=1 (i32.const 0))) - (set_local 0x0b2 (i64.load offset=0x0b2 align=1 (i32.const 0))) - (set_local 0x0b3 (i64.load offset=0x0b3 align=1 (i32.const 0))) - (set_local 0x0b4 (i64.load offset=0x0b4 align=1 (i32.const 0))) - (set_local 0x0b5 (i64.load offset=0x0b5 align=1 (i32.const 0))) - (set_local 0x0b6 (i64.load offset=0x0b6 align=1 (i32.const 0))) - (set_local 0x0b7 (i64.load offset=0x0b7 align=1 (i32.const 0))) - (set_local 0x0b8 (i64.load offset=0x0b8 align=1 (i32.const 0))) - (set_local 0x0b9 (i64.load offset=0x0b9 align=1 (i32.const 0))) - (set_local 0x0ba (i64.load offset=0x0ba align=1 (i32.const 0))) - (set_local 0x0bb (i64.load offset=0x0bb align=1 (i32.const 0))) - (set_local 0x0bc (i64.load offset=0x0bc align=1 (i32.const 0))) - (set_local 0x0bd (i64.load offset=0x0bd align=1 (i32.const 0))) - (set_local 0x0be (i64.load offset=0x0be align=1 (i32.const 0))) - (set_local 0x0bf (i64.load offset=0x0bf align=1 (i32.const 0))) - (set_local 0x0c0 (i64.load offset=0x0c0 align=1 (i32.const 0))) - (set_local 0x0c1 (i64.load offset=0x0c1 align=1 (i32.const 0))) - (set_local 0x0c2 (i64.load offset=0x0c2 align=1 (i32.const 0))) - (set_local 0x0c3 (i64.load offset=0x0c3 align=1 (i32.const 0))) - (set_local 0x0c4 (i64.load offset=0x0c4 align=1 (i32.const 0))) - (set_local 0x0c5 (i64.load offset=0x0c5 align=1 (i32.const 0))) - (set_local 0x0c6 (i64.load offset=0x0c6 align=1 (i32.const 0))) - (set_local 0x0c7 (i64.load offset=0x0c7 align=1 (i32.const 0))) - (set_local 0x0c8 (i64.load offset=0x0c8 align=1 (i32.const 0))) - (set_local 0x0c9 (i64.load offset=0x0c9 align=1 (i32.const 0))) - (set_local 0x0ca (i64.load offset=0x0ca align=1 (i32.const 0))) - (set_local 0x0cb (i64.load offset=0x0cb align=1 (i32.const 0))) - (set_local 0x0cc (i64.load offset=0x0cc align=1 (i32.const 0))) - (set_local 0x0cd (i64.load offset=0x0cd align=1 (i32.const 0))) - (set_local 0x0ce (i64.load offset=0x0ce align=1 (i32.const 0))) - (set_local 0x0cf (i64.load offset=0x0cf align=1 (i32.const 0))) - (set_local 0x0d0 (i64.load offset=0x0d0 align=1 (i32.const 0))) - (set_local 0x0d1 (i64.load offset=0x0d1 align=1 (i32.const 0))) - (set_local 0x0d2 (i64.load offset=0x0d2 align=1 (i32.const 0))) - (set_local 0x0d3 (i64.load offset=0x0d3 align=1 (i32.const 0))) - (set_local 0x0d4 (i64.load offset=0x0d4 align=1 (i32.const 0))) - (set_local 0x0d5 (i64.load offset=0x0d5 align=1 (i32.const 0))) - (set_local 0x0d6 (i64.load offset=0x0d6 align=1 (i32.const 0))) - (set_local 0x0d7 (i64.load offset=0x0d7 align=1 (i32.const 0))) - (set_local 0x0d8 (i64.load offset=0x0d8 align=1 (i32.const 0))) - (set_local 0x0d9 (i64.load offset=0x0d9 align=1 (i32.const 0))) - (set_local 0x0da (i64.load offset=0x0da align=1 (i32.const 0))) - (set_local 0x0db (i64.load offset=0x0db align=1 (i32.const 0))) - (set_local 0x0dc (i64.load offset=0x0dc align=1 (i32.const 0))) - (set_local 0x0dd (i64.load offset=0x0dd align=1 (i32.const 0))) - (set_local 0x0de (i64.load offset=0x0de align=1 (i32.const 0))) - (set_local 0x0df (i64.load offset=0x0df align=1 (i32.const 0))) - (set_local 0x0e0 (i64.load offset=0x0e0 align=1 (i32.const 0))) - (set_local 0x0e1 (i64.load offset=0x0e1 align=1 (i32.const 0))) - (set_local 0x0e2 (i64.load offset=0x0e2 align=1 (i32.const 0))) - (set_local 0x0e3 (i64.load offset=0x0e3 align=1 (i32.const 0))) - (set_local 0x0e4 (i64.load offset=0x0e4 align=1 (i32.const 0))) - (set_local 0x0e5 (i64.load offset=0x0e5 align=1 (i32.const 0))) - (set_local 0x0e6 (i64.load offset=0x0e6 align=1 (i32.const 0))) - (set_local 0x0e7 (i64.load offset=0x0e7 align=1 (i32.const 0))) - (set_local 0x0e8 (i64.load offset=0x0e8 align=1 (i32.const 0))) - (set_local 0x0e9 (i64.load offset=0x0e9 align=1 (i32.const 0))) - (set_local 0x0ea (i64.load offset=0x0ea align=1 (i32.const 0))) - (set_local 0x0eb (i64.load offset=0x0eb align=1 (i32.const 0))) - (set_local 0x0ec (i64.load offset=0x0ec align=1 (i32.const 0))) - (set_local 0x0ed (i64.load offset=0x0ed align=1 (i32.const 0))) - (set_local 0x0ee (i64.load offset=0x0ee align=1 (i32.const 0))) - (set_local 0x0ef (i64.load offset=0x0ef align=1 (i32.const 0))) - (set_local 0x0f0 (i64.load offset=0x0f0 align=1 (i32.const 0))) - (set_local 0x0f1 (i64.load offset=0x0f1 align=1 (i32.const 0))) - (set_local 0x0f2 (i64.load offset=0x0f2 align=1 (i32.const 0))) - (set_local 0x0f3 (i64.load offset=0x0f3 align=1 (i32.const 0))) - (set_local 0x0f4 (i64.load offset=0x0f4 align=1 (i32.const 0))) - (set_local 0x0f5 (i64.load offset=0x0f5 align=1 (i32.const 0))) - (set_local 0x0f6 (i64.load offset=0x0f6 align=1 (i32.const 0))) - (set_local 0x0f7 (i64.load offset=0x0f7 align=1 (i32.const 0))) - (set_local 0x0f8 (i64.load offset=0x0f8 align=1 (i32.const 0))) - (set_local 0x0f9 (i64.load offset=0x0f9 align=1 (i32.const 0))) - (set_local 0x0fa (i64.load offset=0x0fa align=1 (i32.const 0))) - (set_local 0x0fb (i64.load offset=0x0fb align=1 (i32.const 0))) - (set_local 0x0fc (i64.load offset=0x0fc align=1 (i32.const 0))) - (set_local 0x0fd (i64.load offset=0x0fd align=1 (i32.const 0))) - (set_local 0x0fe (i64.load offset=0x0fe align=1 (i32.const 0))) - (set_local 0x0ff (i64.load offset=0x0ff align=1 (i32.const 0))) - (set_local 0x100 (i64.load offset=0x100 align=1 (i32.const 0))) - (set_local 0x101 (i64.load offset=0x101 align=1 (i32.const 0))) - (set_local 0x102 (i64.load offset=0x102 align=1 (i32.const 0))) - (set_local 0x103 (i64.load offset=0x103 align=1 (i32.const 0))) - (set_local 0x104 (i64.load offset=0x104 align=1 (i32.const 0))) - (set_local 0x105 (i64.load offset=0x105 align=1 (i32.const 0))) - (set_local 0x106 (i64.load offset=0x106 align=1 (i32.const 0))) - (set_local 0x107 (i64.load offset=0x107 align=1 (i32.const 0))) - (set_local 0x108 (i64.load offset=0x108 align=1 (i32.const 0))) - (set_local 0x109 (i64.load offset=0x109 align=1 (i32.const 0))) - (set_local 0x10a (i64.load offset=0x10a align=1 (i32.const 0))) - (set_local 0x10b (i64.load offset=0x10b align=1 (i32.const 0))) - (set_local 0x10c (i64.load offset=0x10c align=1 (i32.const 0))) - (set_local 0x10d (i64.load offset=0x10d align=1 (i32.const 0))) - (set_local 0x10e (i64.load offset=0x10e align=1 (i32.const 0))) - (set_local 0x10f (i64.load offset=0x10f align=1 (i32.const 0))) - (set_local 0x110 (i64.load offset=0x110 align=1 (i32.const 0))) - (set_local 0x111 (i64.load offset=0x111 align=1 (i32.const 0))) - (set_local 0x112 (i64.load offset=0x112 align=1 (i32.const 0))) - (set_local 0x113 (i64.load offset=0x113 align=1 (i32.const 0))) - (set_local 0x114 (i64.load offset=0x114 align=1 (i32.const 0))) - (set_local 0x115 (i64.load offset=0x115 align=1 (i32.const 0))) - (set_local 0x116 (i64.load offset=0x116 align=1 (i32.const 0))) - (set_local 0x117 (i64.load offset=0x117 align=1 (i32.const 0))) - (set_local 0x118 (i64.load offset=0x118 align=1 (i32.const 0))) - (set_local 0x119 (i64.load offset=0x119 align=1 (i32.const 0))) - (set_local 0x11a (i64.load offset=0x11a align=1 (i32.const 0))) - (set_local 0x11b (i64.load offset=0x11b align=1 (i32.const 0))) - (set_local 0x11c (i64.load offset=0x11c align=1 (i32.const 0))) - (set_local 0x11d (i64.load offset=0x11d align=1 (i32.const 0))) - (set_local 0x11e (i64.load offset=0x11e align=1 (i32.const 0))) - (set_local 0x11f (i64.load offset=0x11f align=1 (i32.const 0))) - (set_local 0x120 (i64.load offset=0x120 align=1 (i32.const 0))) - (set_local 0x121 (i64.load offset=0x121 align=1 (i32.const 0))) - (set_local 0x122 (i64.load offset=0x122 align=1 (i32.const 0))) - (set_local 0x123 (i64.load offset=0x123 align=1 (i32.const 0))) - (set_local 0x124 (i64.load offset=0x124 align=1 (i32.const 0))) - (set_local 0x125 (i64.load offset=0x125 align=1 (i32.const 0))) - (set_local 0x126 (i64.load offset=0x126 align=1 (i32.const 0))) - (set_local 0x127 (i64.load offset=0x127 align=1 (i32.const 0))) - (set_local 0x128 (i64.load offset=0x128 align=1 (i32.const 0))) - (set_local 0x129 (i64.load offset=0x129 align=1 (i32.const 0))) - (set_local 0x12a (i64.load offset=0x12a align=1 (i32.const 0))) - (set_local 0x12b (i64.load offset=0x12b align=1 (i32.const 0))) - (set_local 0x12c (i64.load offset=0x12c align=1 (i32.const 0))) - (set_local 0x12d (i64.load offset=0x12d align=1 (i32.const 0))) - (set_local 0x12e (i64.load offset=0x12e align=1 (i32.const 0))) - (set_local 0x12f (i64.load offset=0x12f align=1 (i32.const 0))) - (set_local 0x130 (i64.load offset=0x130 align=1 (i32.const 0))) - (set_local 0x131 (i64.load offset=0x131 align=1 (i32.const 0))) - (set_local 0x132 (i64.load offset=0x132 align=1 (i32.const 0))) - (set_local 0x133 (i64.load offset=0x133 align=1 (i32.const 0))) - (set_local 0x134 (i64.load offset=0x134 align=1 (i32.const 0))) - (set_local 0x135 (i64.load offset=0x135 align=1 (i32.const 0))) - (set_local 0x136 (i64.load offset=0x136 align=1 (i32.const 0))) - (set_local 0x137 (i64.load offset=0x137 align=1 (i32.const 0))) - (set_local 0x138 (i64.load offset=0x138 align=1 (i32.const 0))) - (set_local 0x139 (i64.load offset=0x139 align=1 (i32.const 0))) - (set_local 0x13a (i64.load offset=0x13a align=1 (i32.const 0))) - (set_local 0x13b (i64.load offset=0x13b align=1 (i32.const 0))) - (set_local 0x13c (i64.load offset=0x13c align=1 (i32.const 0))) - (set_local 0x13d (i64.load offset=0x13d align=1 (i32.const 0))) - (set_local 0x13e (i64.load offset=0x13e align=1 (i32.const 0))) - (set_local 0x13f (i64.load offset=0x13f align=1 (i32.const 0))) - (set_local 0x140 (i64.load offset=0x140 align=1 (i32.const 0))) - (set_local 0x141 (i64.load offset=0x141 align=1 (i32.const 0))) - (set_local 0x142 (i64.load offset=0x142 align=1 (i32.const 0))) - (set_local 0x143 (i64.load offset=0x143 align=1 (i32.const 0))) - (set_local 0x144 (i64.load offset=0x144 align=1 (i32.const 0))) - (set_local 0x145 (i64.load offset=0x145 align=1 (i32.const 0))) - (set_local 0x146 (i64.load offset=0x146 align=1 (i32.const 0))) - (set_local 0x147 (i64.load offset=0x147 align=1 (i32.const 0))) - (set_local 0x148 (i64.load offset=0x148 align=1 (i32.const 0))) - (set_local 0x149 (i64.load offset=0x149 align=1 (i32.const 0))) - (set_local 0x14a (i64.load offset=0x14a align=1 (i32.const 0))) - (set_local 0x14b (i64.load offset=0x14b align=1 (i32.const 0))) - (set_local 0x14c (i64.load offset=0x14c align=1 (i32.const 0))) - (set_local 0x14d (i64.load offset=0x14d align=1 (i32.const 0))) - (set_local 0x14e (i64.load offset=0x14e align=1 (i32.const 0))) - (set_local 0x14f (i64.load offset=0x14f align=1 (i32.const 0))) - (set_local 0x150 (i64.load offset=0x150 align=1 (i32.const 0))) - (set_local 0x151 (i64.load offset=0x151 align=1 (i32.const 0))) - (set_local 0x152 (i64.load offset=0x152 align=1 (i32.const 0))) - (set_local 0x153 (i64.load offset=0x153 align=1 (i32.const 0))) - (set_local 0x154 (i64.load offset=0x154 align=1 (i32.const 0))) - (set_local 0x155 (i64.load offset=0x155 align=1 (i32.const 0))) - (set_local 0x156 (i64.load offset=0x156 align=1 (i32.const 0))) - (set_local 0x157 (i64.load offset=0x157 align=1 (i32.const 0))) - (set_local 0x158 (i64.load offset=0x158 align=1 (i32.const 0))) - (set_local 0x159 (i64.load offset=0x159 align=1 (i32.const 0))) - (set_local 0x15a (i64.load offset=0x15a align=1 (i32.const 0))) - (set_local 0x15b (i64.load offset=0x15b align=1 (i32.const 0))) - (set_local 0x15c (i64.load offset=0x15c align=1 (i32.const 0))) - (set_local 0x15d (i64.load offset=0x15d align=1 (i32.const 0))) - (set_local 0x15e (i64.load offset=0x15e align=1 (i32.const 0))) - (set_local 0x15f (i64.load offset=0x15f align=1 (i32.const 0))) - (set_local 0x160 (i64.load offset=0x160 align=1 (i32.const 0))) - (set_local 0x161 (i64.load offset=0x161 align=1 (i32.const 0))) - (set_local 0x162 (i64.load offset=0x162 align=1 (i32.const 0))) - (set_local 0x163 (i64.load offset=0x163 align=1 (i32.const 0))) - (set_local 0x164 (i64.load offset=0x164 align=1 (i32.const 0))) - (set_local 0x165 (i64.load offset=0x165 align=1 (i32.const 0))) - (set_local 0x166 (i64.load offset=0x166 align=1 (i32.const 0))) - (set_local 0x167 (i64.load offset=0x167 align=1 (i32.const 0))) - (set_local 0x168 (i64.load offset=0x168 align=1 (i32.const 0))) - (set_local 0x169 (i64.load offset=0x169 align=1 (i32.const 0))) - (set_local 0x16a (i64.load offset=0x16a align=1 (i32.const 0))) - (set_local 0x16b (i64.load offset=0x16b align=1 (i32.const 0))) - (set_local 0x16c (i64.load offset=0x16c align=1 (i32.const 0))) - (set_local 0x16d (i64.load offset=0x16d align=1 (i32.const 0))) - (set_local 0x16e (i64.load offset=0x16e align=1 (i32.const 0))) - (set_local 0x16f (i64.load offset=0x16f align=1 (i32.const 0))) - (set_local 0x170 (i64.load offset=0x170 align=1 (i32.const 0))) - (set_local 0x171 (i64.load offset=0x171 align=1 (i32.const 0))) - (set_local 0x172 (i64.load offset=0x172 align=1 (i32.const 0))) - (set_local 0x173 (i64.load offset=0x173 align=1 (i32.const 0))) - (set_local 0x174 (i64.load offset=0x174 align=1 (i32.const 0))) - (set_local 0x175 (i64.load offset=0x175 align=1 (i32.const 0))) - (set_local 0x176 (i64.load offset=0x176 align=1 (i32.const 0))) - (set_local 0x177 (i64.load offset=0x177 align=1 (i32.const 0))) - (set_local 0x178 (i64.load offset=0x178 align=1 (i32.const 0))) - (set_local 0x179 (i64.load offset=0x179 align=1 (i32.const 0))) - (set_local 0x17a (i64.load offset=0x17a align=1 (i32.const 0))) - (set_local 0x17b (i64.load offset=0x17b align=1 (i32.const 0))) - (set_local 0x17c (i64.load offset=0x17c align=1 (i32.const 0))) - (set_local 0x17d (i64.load offset=0x17d align=1 (i32.const 0))) - (set_local 0x17e (i64.load offset=0x17e align=1 (i32.const 0))) - (set_local 0x17f (i64.load offset=0x17f align=1 (i32.const 0))) - (set_local 0x180 (i64.load offset=0x180 align=1 (i32.const 0))) - (set_local 0x181 (i64.load offset=0x181 align=1 (i32.const 0))) - (set_local 0x182 (i64.load offset=0x182 align=1 (i32.const 0))) - (set_local 0x183 (i64.load offset=0x183 align=1 (i32.const 0))) - (set_local 0x184 (i64.load offset=0x184 align=1 (i32.const 0))) - (set_local 0x185 (i64.load offset=0x185 align=1 (i32.const 0))) - (set_local 0x186 (i64.load offset=0x186 align=1 (i32.const 0))) - (set_local 0x187 (i64.load offset=0x187 align=1 (i32.const 0))) - (set_local 0x188 (i64.load offset=0x188 align=1 (i32.const 0))) - (set_local 0x189 (i64.load offset=0x189 align=1 (i32.const 0))) - (set_local 0x18a (i64.load offset=0x18a align=1 (i32.const 0))) - (set_local 0x18b (i64.load offset=0x18b align=1 (i32.const 0))) - (set_local 0x18c (i64.load offset=0x18c align=1 (i32.const 0))) - (set_local 0x18d (i64.load offset=0x18d align=1 (i32.const 0))) - (set_local 0x18e (i64.load offset=0x18e align=1 (i32.const 0))) - (set_local 0x18f (i64.load offset=0x18f align=1 (i32.const 0))) - (set_local 0x190 (i64.load offset=0x190 align=1 (i32.const 0))) - (set_local 0x191 (i64.load offset=0x191 align=1 (i32.const 0))) - (set_local 0x192 (i64.load offset=0x192 align=1 (i32.const 0))) - (set_local 0x193 (i64.load offset=0x193 align=1 (i32.const 0))) - (set_local 0x194 (i64.load offset=0x194 align=1 (i32.const 0))) - (set_local 0x195 (i64.load offset=0x195 align=1 (i32.const 0))) - (set_local 0x196 (i64.load offset=0x196 align=1 (i32.const 0))) - (set_local 0x197 (i64.load offset=0x197 align=1 (i32.const 0))) - (set_local 0x198 (i64.load offset=0x198 align=1 (i32.const 0))) - (set_local 0x199 (i64.load offset=0x199 align=1 (i32.const 0))) - (set_local 0x19a (i64.load offset=0x19a align=1 (i32.const 0))) - (set_local 0x19b (i64.load offset=0x19b align=1 (i32.const 0))) - (set_local 0x19c (i64.load offset=0x19c align=1 (i32.const 0))) - (set_local 0x19d (i64.load offset=0x19d align=1 (i32.const 0))) - (set_local 0x19e (i64.load offset=0x19e align=1 (i32.const 0))) - (set_local 0x19f (i64.load offset=0x19f align=1 (i32.const 0))) - (set_local 0x1a0 (i64.load offset=0x1a0 align=1 (i32.const 0))) - (set_local 0x1a1 (i64.load offset=0x1a1 align=1 (i32.const 0))) - (set_local 0x1a2 (i64.load offset=0x1a2 align=1 (i32.const 0))) - (set_local 0x1a3 (i64.load offset=0x1a3 align=1 (i32.const 0))) - (set_local 0x1a4 (i64.load offset=0x1a4 align=1 (i32.const 0))) - (set_local 0x1a5 (i64.load offset=0x1a5 align=1 (i32.const 0))) - (set_local 0x1a6 (i64.load offset=0x1a6 align=1 (i32.const 0))) - (set_local 0x1a7 (i64.load offset=0x1a7 align=1 (i32.const 0))) - (set_local 0x1a8 (i64.load offset=0x1a8 align=1 (i32.const 0))) - (set_local 0x1a9 (i64.load offset=0x1a9 align=1 (i32.const 0))) - (set_local 0x1aa (i64.load offset=0x1aa align=1 (i32.const 0))) - (set_local 0x1ab (i64.load offset=0x1ab align=1 (i32.const 0))) - (set_local 0x1ac (i64.load offset=0x1ac align=1 (i32.const 0))) - (set_local 0x1ad (i64.load offset=0x1ad align=1 (i32.const 0))) - (set_local 0x1ae (i64.load offset=0x1ae align=1 (i32.const 0))) - (set_local 0x1af (i64.load offset=0x1af align=1 (i32.const 0))) - (set_local 0x1b0 (i64.load offset=0x1b0 align=1 (i32.const 0))) - (set_local 0x1b1 (i64.load offset=0x1b1 align=1 (i32.const 0))) - (set_local 0x1b2 (i64.load offset=0x1b2 align=1 (i32.const 0))) - (set_local 0x1b3 (i64.load offset=0x1b3 align=1 (i32.const 0))) - (set_local 0x1b4 (i64.load offset=0x1b4 align=1 (i32.const 0))) - (set_local 0x1b5 (i64.load offset=0x1b5 align=1 (i32.const 0))) - (set_local 0x1b6 (i64.load offset=0x1b6 align=1 (i32.const 0))) - (set_local 0x1b7 (i64.load offset=0x1b7 align=1 (i32.const 0))) - (set_local 0x1b8 (i64.load offset=0x1b8 align=1 (i32.const 0))) - (set_local 0x1b9 (i64.load offset=0x1b9 align=1 (i32.const 0))) - (set_local 0x1ba (i64.load offset=0x1ba align=1 (i32.const 0))) - (set_local 0x1bb (i64.load offset=0x1bb align=1 (i32.const 0))) - (set_local 0x1bc (i64.load offset=0x1bc align=1 (i32.const 0))) - (set_local 0x1bd (i64.load offset=0x1bd align=1 (i32.const 0))) - (set_local 0x1be (i64.load offset=0x1be align=1 (i32.const 0))) - (set_local 0x1bf (i64.load offset=0x1bf align=1 (i32.const 0))) - (set_local 0x1c0 (i64.load offset=0x1c0 align=1 (i32.const 0))) - (set_local 0x1c1 (i64.load offset=0x1c1 align=1 (i32.const 0))) - (set_local 0x1c2 (i64.load offset=0x1c2 align=1 (i32.const 0))) - (set_local 0x1c3 (i64.load offset=0x1c3 align=1 (i32.const 0))) - (set_local 0x1c4 (i64.load offset=0x1c4 align=1 (i32.const 0))) - (set_local 0x1c5 (i64.load offset=0x1c5 align=1 (i32.const 0))) - (set_local 0x1c6 (i64.load offset=0x1c6 align=1 (i32.const 0))) - (set_local 0x1c7 (i64.load offset=0x1c7 align=1 (i32.const 0))) - (set_local 0x1c8 (i64.load offset=0x1c8 align=1 (i32.const 0))) - (set_local 0x1c9 (i64.load offset=0x1c9 align=1 (i32.const 0))) - (set_local 0x1ca (i64.load offset=0x1ca align=1 (i32.const 0))) - (set_local 0x1cb (i64.load offset=0x1cb align=1 (i32.const 0))) - (set_local 0x1cc (i64.load offset=0x1cc align=1 (i32.const 0))) - (set_local 0x1cd (i64.load offset=0x1cd align=1 (i32.const 0))) - (set_local 0x1ce (i64.load offset=0x1ce align=1 (i32.const 0))) - (set_local 0x1cf (i64.load offset=0x1cf align=1 (i32.const 0))) - (set_local 0x1d0 (i64.load offset=0x1d0 align=1 (i32.const 0))) - (set_local 0x1d1 (i64.load offset=0x1d1 align=1 (i32.const 0))) - (set_local 0x1d2 (i64.load offset=0x1d2 align=1 (i32.const 0))) - (set_local 0x1d3 (i64.load offset=0x1d3 align=1 (i32.const 0))) - (set_local 0x1d4 (i64.load offset=0x1d4 align=1 (i32.const 0))) - (set_local 0x1d5 (i64.load offset=0x1d5 align=1 (i32.const 0))) - (set_local 0x1d6 (i64.load offset=0x1d6 align=1 (i32.const 0))) - (set_local 0x1d7 (i64.load offset=0x1d7 align=1 (i32.const 0))) - (set_local 0x1d8 (i64.load offset=0x1d8 align=1 (i32.const 0))) - (set_local 0x1d9 (i64.load offset=0x1d9 align=1 (i32.const 0))) - (set_local 0x1da (i64.load offset=0x1da align=1 (i32.const 0))) - (set_local 0x1db (i64.load offset=0x1db align=1 (i32.const 0))) - (set_local 0x1dc (i64.load offset=0x1dc align=1 (i32.const 0))) - (set_local 0x1dd (i64.load offset=0x1dd align=1 (i32.const 0))) - (set_local 0x1de (i64.load offset=0x1de align=1 (i32.const 0))) - (set_local 0x1df (i64.load offset=0x1df align=1 (i32.const 0))) - (set_local 0x1e0 (i64.load offset=0x1e0 align=1 (i32.const 0))) - (set_local 0x1e1 (i64.load offset=0x1e1 align=1 (i32.const 0))) - (set_local 0x1e2 (i64.load offset=0x1e2 align=1 (i32.const 0))) - (set_local 0x1e3 (i64.load offset=0x1e3 align=1 (i32.const 0))) - (set_local 0x1e4 (i64.load offset=0x1e4 align=1 (i32.const 0))) - (set_local 0x1e5 (i64.load offset=0x1e5 align=1 (i32.const 0))) - (set_local 0x1e6 (i64.load offset=0x1e6 align=1 (i32.const 0))) - (set_local 0x1e7 (i64.load offset=0x1e7 align=1 (i32.const 0))) - (set_local 0x1e8 (i64.load offset=0x1e8 align=1 (i32.const 0))) - (set_local 0x1e9 (i64.load offset=0x1e9 align=1 (i32.const 0))) - (set_local 0x1ea (i64.load offset=0x1ea align=1 (i32.const 0))) - (set_local 0x1eb (i64.load offset=0x1eb align=1 (i32.const 0))) - (set_local 0x1ec (i64.load offset=0x1ec align=1 (i32.const 0))) - (set_local 0x1ed (i64.load offset=0x1ed align=1 (i32.const 0))) - (set_local 0x1ee (i64.load offset=0x1ee align=1 (i32.const 0))) - (set_local 0x1ef (i64.load offset=0x1ef align=1 (i32.const 0))) - (set_local 0x1f0 (i64.load offset=0x1f0 align=1 (i32.const 0))) - (set_local 0x1f1 (i64.load offset=0x1f1 align=1 (i32.const 0))) - (set_local 0x1f2 (i64.load offset=0x1f2 align=1 (i32.const 0))) - (set_local 0x1f3 (i64.load offset=0x1f3 align=1 (i32.const 0))) - (set_local 0x1f4 (i64.load offset=0x1f4 align=1 (i32.const 0))) - (set_local 0x1f5 (i64.load offset=0x1f5 align=1 (i32.const 0))) - (set_local 0x1f6 (i64.load offset=0x1f6 align=1 (i32.const 0))) - (set_local 0x1f7 (i64.load offset=0x1f7 align=1 (i32.const 0))) - (set_local 0x1f8 (i64.load offset=0x1f8 align=1 (i32.const 0))) - (set_local 0x1f9 (i64.load offset=0x1f9 align=1 (i32.const 0))) - (set_local 0x1fa (i64.load offset=0x1fa align=1 (i32.const 0))) - (set_local 0x1fb (i64.load offset=0x1fb align=1 (i32.const 0))) - (set_local 0x1fc (i64.load offset=0x1fc align=1 (i32.const 0))) - (set_local 0x1fd (i64.load offset=0x1fd align=1 (i32.const 0))) - (set_local 0x1fe (i64.load offset=0x1fe align=1 (i32.const 0))) - (set_local 0x1ff (i64.load offset=0x1ff align=1 (i32.const 0))) - (set_local 0x200 (i64.load offset=0x200 align=1 (i32.const 0))) - (set_local 0x201 (i64.load offset=0x201 align=1 (i32.const 0))) - (set_local 0x202 (i64.load offset=0x202 align=1 (i32.const 0))) - (set_local 0x203 (i64.load offset=0x203 align=1 (i32.const 0))) - (set_local 0x204 (i64.load offset=0x204 align=1 (i32.const 0))) - (set_local 0x205 (i64.load offset=0x205 align=1 (i32.const 0))) - (set_local 0x206 (i64.load offset=0x206 align=1 (i32.const 0))) - (set_local 0x207 (i64.load offset=0x207 align=1 (i32.const 0))) - (set_local 0x208 (i64.load offset=0x208 align=1 (i32.const 0))) - (set_local 0x209 (i64.load offset=0x209 align=1 (i32.const 0))) - (set_local 0x20a (i64.load offset=0x20a align=1 (i32.const 0))) - (set_local 0x20b (i64.load offset=0x20b align=1 (i32.const 0))) - (set_local 0x20c (i64.load offset=0x20c align=1 (i32.const 0))) - (set_local 0x20d (i64.load offset=0x20d align=1 (i32.const 0))) - (set_local 0x20e (i64.load offset=0x20e align=1 (i32.const 0))) - (set_local 0x20f (i64.load offset=0x20f align=1 (i32.const 0))) - (set_local 0x210 (i64.load offset=0x210 align=1 (i32.const 0))) - (set_local 0x211 (i64.load offset=0x211 align=1 (i32.const 0))) - (set_local 0x212 (i64.load offset=0x212 align=1 (i32.const 0))) - (set_local 0x213 (i64.load offset=0x213 align=1 (i32.const 0))) - (set_local 0x214 (i64.load offset=0x214 align=1 (i32.const 0))) - (set_local 0x215 (i64.load offset=0x215 align=1 (i32.const 0))) - (set_local 0x216 (i64.load offset=0x216 align=1 (i32.const 0))) - (set_local 0x217 (i64.load offset=0x217 align=1 (i32.const 0))) - (set_local 0x218 (i64.load offset=0x218 align=1 (i32.const 0))) - (set_local 0x219 (i64.load offset=0x219 align=1 (i32.const 0))) - (set_local 0x21a (i64.load offset=0x21a align=1 (i32.const 0))) - (set_local 0x21b (i64.load offset=0x21b align=1 (i32.const 0))) - (set_local 0x21c (i64.load offset=0x21c align=1 (i32.const 0))) - (set_local 0x21d (i64.load offset=0x21d align=1 (i32.const 0))) - (set_local 0x21e (i64.load offset=0x21e align=1 (i32.const 0))) - (set_local 0x21f (i64.load offset=0x21f align=1 (i32.const 0))) - (set_local 0x220 (i64.load offset=0x220 align=1 (i32.const 0))) - (set_local 0x221 (i64.load offset=0x221 align=1 (i32.const 0))) - (set_local 0x222 (i64.load offset=0x222 align=1 (i32.const 0))) - (set_local 0x223 (i64.load offset=0x223 align=1 (i32.const 0))) - (set_local 0x224 (i64.load offset=0x224 align=1 (i32.const 0))) - (set_local 0x225 (i64.load offset=0x225 align=1 (i32.const 0))) - (set_local 0x226 (i64.load offset=0x226 align=1 (i32.const 0))) - (set_local 0x227 (i64.load offset=0x227 align=1 (i32.const 0))) - (set_local 0x228 (i64.load offset=0x228 align=1 (i32.const 0))) - (set_local 0x229 (i64.load offset=0x229 align=1 (i32.const 0))) - (set_local 0x22a (i64.load offset=0x22a align=1 (i32.const 0))) - (set_local 0x22b (i64.load offset=0x22b align=1 (i32.const 0))) - (set_local 0x22c (i64.load offset=0x22c align=1 (i32.const 0))) - (set_local 0x22d (i64.load offset=0x22d align=1 (i32.const 0))) - (set_local 0x22e (i64.load offset=0x22e align=1 (i32.const 0))) - (set_local 0x22f (i64.load offset=0x22f align=1 (i32.const 0))) - (set_local 0x230 (i64.load offset=0x230 align=1 (i32.const 0))) - (set_local 0x231 (i64.load offset=0x231 align=1 (i32.const 0))) - (set_local 0x232 (i64.load offset=0x232 align=1 (i32.const 0))) - (set_local 0x233 (i64.load offset=0x233 align=1 (i32.const 0))) - (set_local 0x234 (i64.load offset=0x234 align=1 (i32.const 0))) - (set_local 0x235 (i64.load offset=0x235 align=1 (i32.const 0))) - (set_local 0x236 (i64.load offset=0x236 align=1 (i32.const 0))) - (set_local 0x237 (i64.load offset=0x237 align=1 (i32.const 0))) - (set_local 0x238 (i64.load offset=0x238 align=1 (i32.const 0))) - (set_local 0x239 (i64.load offset=0x239 align=1 (i32.const 0))) - (set_local 0x23a (i64.load offset=0x23a align=1 (i32.const 0))) - (set_local 0x23b (i64.load offset=0x23b align=1 (i32.const 0))) - (set_local 0x23c (i64.load offset=0x23c align=1 (i32.const 0))) - (set_local 0x23d (i64.load offset=0x23d align=1 (i32.const 0))) - (set_local 0x23e (i64.load offset=0x23e align=1 (i32.const 0))) - (set_local 0x23f (i64.load offset=0x23f align=1 (i32.const 0))) - (set_local 0x240 (i64.load offset=0x240 align=1 (i32.const 0))) - (set_local 0x241 (i64.load offset=0x241 align=1 (i32.const 0))) - (set_local 0x242 (i64.load offset=0x242 align=1 (i32.const 0))) - (set_local 0x243 (i64.load offset=0x243 align=1 (i32.const 0))) - (set_local 0x244 (i64.load offset=0x244 align=1 (i32.const 0))) - (set_local 0x245 (i64.load offset=0x245 align=1 (i32.const 0))) - (set_local 0x246 (i64.load offset=0x246 align=1 (i32.const 0))) - (set_local 0x247 (i64.load offset=0x247 align=1 (i32.const 0))) - (set_local 0x248 (i64.load offset=0x248 align=1 (i32.const 0))) - (set_local 0x249 (i64.load offset=0x249 align=1 (i32.const 0))) - (set_local 0x24a (i64.load offset=0x24a align=1 (i32.const 0))) - (set_local 0x24b (i64.load offset=0x24b align=1 (i32.const 0))) - (set_local 0x24c (i64.load offset=0x24c align=1 (i32.const 0))) - (set_local 0x24d (i64.load offset=0x24d align=1 (i32.const 0))) - (set_local 0x24e (i64.load offset=0x24e align=1 (i32.const 0))) - (set_local 0x24f (i64.load offset=0x24f align=1 (i32.const 0))) - (set_local 0x250 (i64.load offset=0x250 align=1 (i32.const 0))) - (set_local 0x251 (i64.load offset=0x251 align=1 (i32.const 0))) - (set_local 0x252 (i64.load offset=0x252 align=1 (i32.const 0))) - (set_local 0x253 (i64.load offset=0x253 align=1 (i32.const 0))) - (set_local 0x254 (i64.load offset=0x254 align=1 (i32.const 0))) - (set_local 0x255 (i64.load offset=0x255 align=1 (i32.const 0))) - (set_local 0x256 (i64.load offset=0x256 align=1 (i32.const 0))) - (set_local 0x257 (i64.load offset=0x257 align=1 (i32.const 0))) - (set_local 0x258 (i64.load offset=0x258 align=1 (i32.const 0))) - (set_local 0x259 (i64.load offset=0x259 align=1 (i32.const 0))) - (set_local 0x25a (i64.load offset=0x25a align=1 (i32.const 0))) - (set_local 0x25b (i64.load offset=0x25b align=1 (i32.const 0))) - (set_local 0x25c (i64.load offset=0x25c align=1 (i32.const 0))) - (set_local 0x25d (i64.load offset=0x25d align=1 (i32.const 0))) - (set_local 0x25e (i64.load offset=0x25e align=1 (i32.const 0))) - (set_local 0x25f (i64.load offset=0x25f align=1 (i32.const 0))) - (set_local 0x260 (i64.load offset=0x260 align=1 (i32.const 0))) - (set_local 0x261 (i64.load offset=0x261 align=1 (i32.const 0))) - (set_local 0x262 (i64.load offset=0x262 align=1 (i32.const 0))) - (set_local 0x263 (i64.load offset=0x263 align=1 (i32.const 0))) - (set_local 0x264 (i64.load offset=0x264 align=1 (i32.const 0))) - (set_local 0x265 (i64.load offset=0x265 align=1 (i32.const 0))) - (set_local 0x266 (i64.load offset=0x266 align=1 (i32.const 0))) - (set_local 0x267 (i64.load offset=0x267 align=1 (i32.const 0))) - (set_local 0x268 (i64.load offset=0x268 align=1 (i32.const 0))) - (set_local 0x269 (i64.load offset=0x269 align=1 (i32.const 0))) - (set_local 0x26a (i64.load offset=0x26a align=1 (i32.const 0))) - (set_local 0x26b (i64.load offset=0x26b align=1 (i32.const 0))) - (set_local 0x26c (i64.load offset=0x26c align=1 (i32.const 0))) - (set_local 0x26d (i64.load offset=0x26d align=1 (i32.const 0))) - (set_local 0x26e (i64.load offset=0x26e align=1 (i32.const 0))) - (set_local 0x26f (i64.load offset=0x26f align=1 (i32.const 0))) - (set_local 0x270 (i64.load offset=0x270 align=1 (i32.const 0))) - (set_local 0x271 (i64.load offset=0x271 align=1 (i32.const 0))) - (set_local 0x272 (i64.load offset=0x272 align=1 (i32.const 0))) - (set_local 0x273 (i64.load offset=0x273 align=1 (i32.const 0))) - (set_local 0x274 (i64.load offset=0x274 align=1 (i32.const 0))) - (set_local 0x275 (i64.load offset=0x275 align=1 (i32.const 0))) - (set_local 0x276 (i64.load offset=0x276 align=1 (i32.const 0))) - (set_local 0x277 (i64.load offset=0x277 align=1 (i32.const 0))) - (set_local 0x278 (i64.load offset=0x278 align=1 (i32.const 0))) - (set_local 0x279 (i64.load offset=0x279 align=1 (i32.const 0))) - (set_local 0x27a (i64.load offset=0x27a align=1 (i32.const 0))) - (set_local 0x27b (i64.load offset=0x27b align=1 (i32.const 0))) - (set_local 0x27c (i64.load offset=0x27c align=1 (i32.const 0))) - (set_local 0x27d (i64.load offset=0x27d align=1 (i32.const 0))) - (set_local 0x27e (i64.load offset=0x27e align=1 (i32.const 0))) - (set_local 0x27f (i64.load offset=0x27f align=1 (i32.const 0))) - (set_local 0x280 (i64.load offset=0x280 align=1 (i32.const 0))) - (set_local 0x281 (i64.load offset=0x281 align=1 (i32.const 0))) - (set_local 0x282 (i64.load offset=0x282 align=1 (i32.const 0))) - (set_local 0x283 (i64.load offset=0x283 align=1 (i32.const 0))) - (set_local 0x284 (i64.load offset=0x284 align=1 (i32.const 0))) - (set_local 0x285 (i64.load offset=0x285 align=1 (i32.const 0))) - (set_local 0x286 (i64.load offset=0x286 align=1 (i32.const 0))) - (set_local 0x287 (i64.load offset=0x287 align=1 (i32.const 0))) - (set_local 0x288 (i64.load offset=0x288 align=1 (i32.const 0))) - (set_local 0x289 (i64.load offset=0x289 align=1 (i32.const 0))) - (set_local 0x28a (i64.load offset=0x28a align=1 (i32.const 0))) - (set_local 0x28b (i64.load offset=0x28b align=1 (i32.const 0))) - (set_local 0x28c (i64.load offset=0x28c align=1 (i32.const 0))) - (set_local 0x28d (i64.load offset=0x28d align=1 (i32.const 0))) - (set_local 0x28e (i64.load offset=0x28e align=1 (i32.const 0))) - (set_local 0x28f (i64.load offset=0x28f align=1 (i32.const 0))) - (set_local 0x290 (i64.load offset=0x290 align=1 (i32.const 0))) - (set_local 0x291 (i64.load offset=0x291 align=1 (i32.const 0))) - (set_local 0x292 (i64.load offset=0x292 align=1 (i32.const 0))) - (set_local 0x293 (i64.load offset=0x293 align=1 (i32.const 0))) - (set_local 0x294 (i64.load offset=0x294 align=1 (i32.const 0))) - (set_local 0x295 (i64.load offset=0x295 align=1 (i32.const 0))) - (set_local 0x296 (i64.load offset=0x296 align=1 (i32.const 0))) - (set_local 0x297 (i64.load offset=0x297 align=1 (i32.const 0))) - (set_local 0x298 (i64.load offset=0x298 align=1 (i32.const 0))) - (set_local 0x299 (i64.load offset=0x299 align=1 (i32.const 0))) - (set_local 0x29a (i64.load offset=0x29a align=1 (i32.const 0))) - (set_local 0x29b (i64.load offset=0x29b align=1 (i32.const 0))) - (set_local 0x29c (i64.load offset=0x29c align=1 (i32.const 0))) - (set_local 0x29d (i64.load offset=0x29d align=1 (i32.const 0))) - (set_local 0x29e (i64.load offset=0x29e align=1 (i32.const 0))) - (set_local 0x29f (i64.load offset=0x29f align=1 (i32.const 0))) - (set_local 0x2a0 (i64.load offset=0x2a0 align=1 (i32.const 0))) - (set_local 0x2a1 (i64.load offset=0x2a1 align=1 (i32.const 0))) - (set_local 0x2a2 (i64.load offset=0x2a2 align=1 (i32.const 0))) - (set_local 0x2a3 (i64.load offset=0x2a3 align=1 (i32.const 0))) - (set_local 0x2a4 (i64.load offset=0x2a4 align=1 (i32.const 0))) - (set_local 0x2a5 (i64.load offset=0x2a5 align=1 (i32.const 0))) - (set_local 0x2a6 (i64.load offset=0x2a6 align=1 (i32.const 0))) - (set_local 0x2a7 (i64.load offset=0x2a7 align=1 (i32.const 0))) - (set_local 0x2a8 (i64.load offset=0x2a8 align=1 (i32.const 0))) - (set_local 0x2a9 (i64.load offset=0x2a9 align=1 (i32.const 0))) - (set_local 0x2aa (i64.load offset=0x2aa align=1 (i32.const 0))) - (set_local 0x2ab (i64.load offset=0x2ab align=1 (i32.const 0))) - (set_local 0x2ac (i64.load offset=0x2ac align=1 (i32.const 0))) - (set_local 0x2ad (i64.load offset=0x2ad align=1 (i32.const 0))) - (set_local 0x2ae (i64.load offset=0x2ae align=1 (i32.const 0))) - (set_local 0x2af (i64.load offset=0x2af align=1 (i32.const 0))) - (set_local 0x2b0 (i64.load offset=0x2b0 align=1 (i32.const 0))) - (set_local 0x2b1 (i64.load offset=0x2b1 align=1 (i32.const 0))) - (set_local 0x2b2 (i64.load offset=0x2b2 align=1 (i32.const 0))) - (set_local 0x2b3 (i64.load offset=0x2b3 align=1 (i32.const 0))) - (set_local 0x2b4 (i64.load offset=0x2b4 align=1 (i32.const 0))) - (set_local 0x2b5 (i64.load offset=0x2b5 align=1 (i32.const 0))) - (set_local 0x2b6 (i64.load offset=0x2b6 align=1 (i32.const 0))) - (set_local 0x2b7 (i64.load offset=0x2b7 align=1 (i32.const 0))) - (set_local 0x2b8 (i64.load offset=0x2b8 align=1 (i32.const 0))) - (set_local 0x2b9 (i64.load offset=0x2b9 align=1 (i32.const 0))) - (set_local 0x2ba (i64.load offset=0x2ba align=1 (i32.const 0))) - (set_local 0x2bb (i64.load offset=0x2bb align=1 (i32.const 0))) - (set_local 0x2bc (i64.load offset=0x2bc align=1 (i32.const 0))) - (set_local 0x2bd (i64.load offset=0x2bd align=1 (i32.const 0))) - (set_local 0x2be (i64.load offset=0x2be align=1 (i32.const 0))) - (set_local 0x2bf (i64.load offset=0x2bf align=1 (i32.const 0))) - (set_local 0x2c0 (i64.load offset=0x2c0 align=1 (i32.const 0))) - (set_local 0x2c1 (i64.load offset=0x2c1 align=1 (i32.const 0))) - (set_local 0x2c2 (i64.load offset=0x2c2 align=1 (i32.const 0))) - (set_local 0x2c3 (i64.load offset=0x2c3 align=1 (i32.const 0))) - (set_local 0x2c4 (i64.load offset=0x2c4 align=1 (i32.const 0))) - (set_local 0x2c5 (i64.load offset=0x2c5 align=1 (i32.const 0))) - (set_local 0x2c6 (i64.load offset=0x2c6 align=1 (i32.const 0))) - (set_local 0x2c7 (i64.load offset=0x2c7 align=1 (i32.const 0))) - (set_local 0x2c8 (i64.load offset=0x2c8 align=1 (i32.const 0))) - (set_local 0x2c9 (i64.load offset=0x2c9 align=1 (i32.const 0))) - (set_local 0x2ca (i64.load offset=0x2ca align=1 (i32.const 0))) - (set_local 0x2cb (i64.load offset=0x2cb align=1 (i32.const 0))) - (set_local 0x2cc (i64.load offset=0x2cc align=1 (i32.const 0))) - (set_local 0x2cd (i64.load offset=0x2cd align=1 (i32.const 0))) - (set_local 0x2ce (i64.load offset=0x2ce align=1 (i32.const 0))) - (set_local 0x2cf (i64.load offset=0x2cf align=1 (i32.const 0))) - (set_local 0x2d0 (i64.load offset=0x2d0 align=1 (i32.const 0))) - (set_local 0x2d1 (i64.load offset=0x2d1 align=1 (i32.const 0))) - (set_local 0x2d2 (i64.load offset=0x2d2 align=1 (i32.const 0))) - (set_local 0x2d3 (i64.load offset=0x2d3 align=1 (i32.const 0))) - (set_local 0x2d4 (i64.load offset=0x2d4 align=1 (i32.const 0))) - (set_local 0x2d5 (i64.load offset=0x2d5 align=1 (i32.const 0))) - (set_local 0x2d6 (i64.load offset=0x2d6 align=1 (i32.const 0))) - (set_local 0x2d7 (i64.load offset=0x2d7 align=1 (i32.const 0))) - (set_local 0x2d8 (i64.load offset=0x2d8 align=1 (i32.const 0))) - (set_local 0x2d9 (i64.load offset=0x2d9 align=1 (i32.const 0))) - (set_local 0x2da (i64.load offset=0x2da align=1 (i32.const 0))) - (set_local 0x2db (i64.load offset=0x2db align=1 (i32.const 0))) - (set_local 0x2dc (i64.load offset=0x2dc align=1 (i32.const 0))) - (set_local 0x2dd (i64.load offset=0x2dd align=1 (i32.const 0))) - (set_local 0x2de (i64.load offset=0x2de align=1 (i32.const 0))) - (set_local 0x2df (i64.load offset=0x2df align=1 (i32.const 0))) - (set_local 0x2e0 (i64.load offset=0x2e0 align=1 (i32.const 0))) - (set_local 0x2e1 (i64.load offset=0x2e1 align=1 (i32.const 0))) - (set_local 0x2e2 (i64.load offset=0x2e2 align=1 (i32.const 0))) - (set_local 0x2e3 (i64.load offset=0x2e3 align=1 (i32.const 0))) - (set_local 0x2e4 (i64.load offset=0x2e4 align=1 (i32.const 0))) - (set_local 0x2e5 (i64.load offset=0x2e5 align=1 (i32.const 0))) - (set_local 0x2e6 (i64.load offset=0x2e6 align=1 (i32.const 0))) - (set_local 0x2e7 (i64.load offset=0x2e7 align=1 (i32.const 0))) - (set_local 0x2e8 (i64.load offset=0x2e8 align=1 (i32.const 0))) - (set_local 0x2e9 (i64.load offset=0x2e9 align=1 (i32.const 0))) - (set_local 0x2ea (i64.load offset=0x2ea align=1 (i32.const 0))) - (set_local 0x2eb (i64.load offset=0x2eb align=1 (i32.const 0))) - (set_local 0x2ec (i64.load offset=0x2ec align=1 (i32.const 0))) - (set_local 0x2ed (i64.load offset=0x2ed align=1 (i32.const 0))) - (set_local 0x2ee (i64.load offset=0x2ee align=1 (i32.const 0))) - (set_local 0x2ef (i64.load offset=0x2ef align=1 (i32.const 0))) - (set_local 0x2f0 (i64.load offset=0x2f0 align=1 (i32.const 0))) - (set_local 0x2f1 (i64.load offset=0x2f1 align=1 (i32.const 0))) - (set_local 0x2f2 (i64.load offset=0x2f2 align=1 (i32.const 0))) - (set_local 0x2f3 (i64.load offset=0x2f3 align=1 (i32.const 0))) - (set_local 0x2f4 (i64.load offset=0x2f4 align=1 (i32.const 0))) - (set_local 0x2f5 (i64.load offset=0x2f5 align=1 (i32.const 0))) - (set_local 0x2f6 (i64.load offset=0x2f6 align=1 (i32.const 0))) - (set_local 0x2f7 (i64.load offset=0x2f7 align=1 (i32.const 0))) - (set_local 0x2f8 (i64.load offset=0x2f8 align=1 (i32.const 0))) - (set_local 0x2f9 (i64.load offset=0x2f9 align=1 (i32.const 0))) - (set_local 0x2fa (i64.load offset=0x2fa align=1 (i32.const 0))) - (set_local 0x2fb (i64.load offset=0x2fb align=1 (i32.const 0))) - (set_local 0x2fc (i64.load offset=0x2fc align=1 (i32.const 0))) - (set_local 0x2fd (i64.load offset=0x2fd align=1 (i32.const 0))) - (set_local 0x2fe (i64.load offset=0x2fe align=1 (i32.const 0))) - (set_local 0x2ff (i64.load offset=0x2ff align=1 (i32.const 0))) - (set_local 0x300 (i64.load offset=0x300 align=1 (i32.const 0))) - (set_local 0x301 (i64.load offset=0x301 align=1 (i32.const 0))) - (set_local 0x302 (i64.load offset=0x302 align=1 (i32.const 0))) - (set_local 0x303 (i64.load offset=0x303 align=1 (i32.const 0))) - (set_local 0x304 (i64.load offset=0x304 align=1 (i32.const 0))) - (set_local 0x305 (i64.load offset=0x305 align=1 (i32.const 0))) - (set_local 0x306 (i64.load offset=0x306 align=1 (i32.const 0))) - (set_local 0x307 (i64.load offset=0x307 align=1 (i32.const 0))) - (set_local 0x308 (i64.load offset=0x308 align=1 (i32.const 0))) - (set_local 0x309 (i64.load offset=0x309 align=1 (i32.const 0))) - (set_local 0x30a (i64.load offset=0x30a align=1 (i32.const 0))) - (set_local 0x30b (i64.load offset=0x30b align=1 (i32.const 0))) - (set_local 0x30c (i64.load offset=0x30c align=1 (i32.const 0))) - (set_local 0x30d (i64.load offset=0x30d align=1 (i32.const 0))) - (set_local 0x30e (i64.load offset=0x30e align=1 (i32.const 0))) - (set_local 0x30f (i64.load offset=0x30f align=1 (i32.const 0))) - (set_local 0x310 (i64.load offset=0x310 align=1 (i32.const 0))) - (set_local 0x311 (i64.load offset=0x311 align=1 (i32.const 0))) - (set_local 0x312 (i64.load offset=0x312 align=1 (i32.const 0))) - (set_local 0x313 (i64.load offset=0x313 align=1 (i32.const 0))) - (set_local 0x314 (i64.load offset=0x314 align=1 (i32.const 0))) - (set_local 0x315 (i64.load offset=0x315 align=1 (i32.const 0))) - (set_local 0x316 (i64.load offset=0x316 align=1 (i32.const 0))) - (set_local 0x317 (i64.load offset=0x317 align=1 (i32.const 0))) - (set_local 0x318 (i64.load offset=0x318 align=1 (i32.const 0))) - (set_local 0x319 (i64.load offset=0x319 align=1 (i32.const 0))) - (set_local 0x31a (i64.load offset=0x31a align=1 (i32.const 0))) - (set_local 0x31b (i64.load offset=0x31b align=1 (i32.const 0))) - (set_local 0x31c (i64.load offset=0x31c align=1 (i32.const 0))) - (set_local 0x31d (i64.load offset=0x31d align=1 (i32.const 0))) - (set_local 0x31e (i64.load offset=0x31e align=1 (i32.const 0))) - (set_local 0x31f (i64.load offset=0x31f align=1 (i32.const 0))) - (set_local 0x320 (i64.load offset=0x320 align=1 (i32.const 0))) - (set_local 0x321 (i64.load offset=0x321 align=1 (i32.const 0))) - (set_local 0x322 (i64.load offset=0x322 align=1 (i32.const 0))) - (set_local 0x323 (i64.load offset=0x323 align=1 (i32.const 0))) - (set_local 0x324 (i64.load offset=0x324 align=1 (i32.const 0))) - (set_local 0x325 (i64.load offset=0x325 align=1 (i32.const 0))) - (set_local 0x326 (i64.load offset=0x326 align=1 (i32.const 0))) - (set_local 0x327 (i64.load offset=0x327 align=1 (i32.const 0))) - (set_local 0x328 (i64.load offset=0x328 align=1 (i32.const 0))) - (set_local 0x329 (i64.load offset=0x329 align=1 (i32.const 0))) - (set_local 0x32a (i64.load offset=0x32a align=1 (i32.const 0))) - (set_local 0x32b (i64.load offset=0x32b align=1 (i32.const 0))) - (set_local 0x32c (i64.load offset=0x32c align=1 (i32.const 0))) - (set_local 0x32d (i64.load offset=0x32d align=1 (i32.const 0))) - (set_local 0x32e (i64.load offset=0x32e align=1 (i32.const 0))) - (set_local 0x32f (i64.load offset=0x32f align=1 (i32.const 0))) - (set_local 0x330 (i64.load offset=0x330 align=1 (i32.const 0))) - (set_local 0x331 (i64.load offset=0x331 align=1 (i32.const 0))) - (set_local 0x332 (i64.load offset=0x332 align=1 (i32.const 0))) - (set_local 0x333 (i64.load offset=0x333 align=1 (i32.const 0))) - (set_local 0x334 (i64.load offset=0x334 align=1 (i32.const 0))) - (set_local 0x335 (i64.load offset=0x335 align=1 (i32.const 0))) - (set_local 0x336 (i64.load offset=0x336 align=1 (i32.const 0))) - (set_local 0x337 (i64.load offset=0x337 align=1 (i32.const 0))) - (set_local 0x338 (i64.load offset=0x338 align=1 (i32.const 0))) - (set_local 0x339 (i64.load offset=0x339 align=1 (i32.const 0))) - (set_local 0x33a (i64.load offset=0x33a align=1 (i32.const 0))) - (set_local 0x33b (i64.load offset=0x33b align=1 (i32.const 0))) - (set_local 0x33c (i64.load offset=0x33c align=1 (i32.const 0))) - (set_local 0x33d (i64.load offset=0x33d align=1 (i32.const 0))) - (set_local 0x33e (i64.load offset=0x33e align=1 (i32.const 0))) - (set_local 0x33f (i64.load offset=0x33f align=1 (i32.const 0))) - (set_local 0x340 (i64.load offset=0x340 align=1 (i32.const 0))) - (set_local 0x341 (i64.load offset=0x341 align=1 (i32.const 0))) - (set_local 0x342 (i64.load offset=0x342 align=1 (i32.const 0))) - (set_local 0x343 (i64.load offset=0x343 align=1 (i32.const 0))) - (set_local 0x344 (i64.load offset=0x344 align=1 (i32.const 0))) - (set_local 0x345 (i64.load offset=0x345 align=1 (i32.const 0))) - (set_local 0x346 (i64.load offset=0x346 align=1 (i32.const 0))) - (set_local 0x347 (i64.load offset=0x347 align=1 (i32.const 0))) - (set_local 0x348 (i64.load offset=0x348 align=1 (i32.const 0))) - (set_local 0x349 (i64.load offset=0x349 align=1 (i32.const 0))) - (set_local 0x34a (i64.load offset=0x34a align=1 (i32.const 0))) - (set_local 0x34b (i64.load offset=0x34b align=1 (i32.const 0))) - (set_local 0x34c (i64.load offset=0x34c align=1 (i32.const 0))) - (set_local 0x34d (i64.load offset=0x34d align=1 (i32.const 0))) - (set_local 0x34e (i64.load offset=0x34e align=1 (i32.const 0))) - (set_local 0x34f (i64.load offset=0x34f align=1 (i32.const 0))) - (set_local 0x350 (i64.load offset=0x350 align=1 (i32.const 0))) - (set_local 0x351 (i64.load offset=0x351 align=1 (i32.const 0))) - (set_local 0x352 (i64.load offset=0x352 align=1 (i32.const 0))) - (set_local 0x353 (i64.load offset=0x353 align=1 (i32.const 0))) - (set_local 0x354 (i64.load offset=0x354 align=1 (i32.const 0))) - (set_local 0x355 (i64.load offset=0x355 align=1 (i32.const 0))) - (set_local 0x356 (i64.load offset=0x356 align=1 (i32.const 0))) - (set_local 0x357 (i64.load offset=0x357 align=1 (i32.const 0))) - (set_local 0x358 (i64.load offset=0x358 align=1 (i32.const 0))) - (set_local 0x359 (i64.load offset=0x359 align=1 (i32.const 0))) - (set_local 0x35a (i64.load offset=0x35a align=1 (i32.const 0))) - (set_local 0x35b (i64.load offset=0x35b align=1 (i32.const 0))) - (set_local 0x35c (i64.load offset=0x35c align=1 (i32.const 0))) - (set_local 0x35d (i64.load offset=0x35d align=1 (i32.const 0))) - (set_local 0x35e (i64.load offset=0x35e align=1 (i32.const 0))) - (set_local 0x35f (i64.load offset=0x35f align=1 (i32.const 0))) - (set_local 0x360 (i64.load offset=0x360 align=1 (i32.const 0))) - (set_local 0x361 (i64.load offset=0x361 align=1 (i32.const 0))) - (set_local 0x362 (i64.load offset=0x362 align=1 (i32.const 0))) - (set_local 0x363 (i64.load offset=0x363 align=1 (i32.const 0))) - (set_local 0x364 (i64.load offset=0x364 align=1 (i32.const 0))) - (set_local 0x365 (i64.load offset=0x365 align=1 (i32.const 0))) - (set_local 0x366 (i64.load offset=0x366 align=1 (i32.const 0))) - (set_local 0x367 (i64.load offset=0x367 align=1 (i32.const 0))) - (set_local 0x368 (i64.load offset=0x368 align=1 (i32.const 0))) - (set_local 0x369 (i64.load offset=0x369 align=1 (i32.const 0))) - (set_local 0x36a (i64.load offset=0x36a align=1 (i32.const 0))) - (set_local 0x36b (i64.load offset=0x36b align=1 (i32.const 0))) - (set_local 0x36c (i64.load offset=0x36c align=1 (i32.const 0))) - (set_local 0x36d (i64.load offset=0x36d align=1 (i32.const 0))) - (set_local 0x36e (i64.load offset=0x36e align=1 (i32.const 0))) - (set_local 0x36f (i64.load offset=0x36f align=1 (i32.const 0))) - (set_local 0x370 (i64.load offset=0x370 align=1 (i32.const 0))) - (set_local 0x371 (i64.load offset=0x371 align=1 (i32.const 0))) - (set_local 0x372 (i64.load offset=0x372 align=1 (i32.const 0))) - (set_local 0x373 (i64.load offset=0x373 align=1 (i32.const 0))) - (set_local 0x374 (i64.load offset=0x374 align=1 (i32.const 0))) - (set_local 0x375 (i64.load offset=0x375 align=1 (i32.const 0))) - (set_local 0x376 (i64.load offset=0x376 align=1 (i32.const 0))) - (set_local 0x377 (i64.load offset=0x377 align=1 (i32.const 0))) - (set_local 0x378 (i64.load offset=0x378 align=1 (i32.const 0))) - (set_local 0x379 (i64.load offset=0x379 align=1 (i32.const 0))) - (set_local 0x37a (i64.load offset=0x37a align=1 (i32.const 0))) - (set_local 0x37b (i64.load offset=0x37b align=1 (i32.const 0))) - (set_local 0x37c (i64.load offset=0x37c align=1 (i32.const 0))) - (set_local 0x37d (i64.load offset=0x37d align=1 (i32.const 0))) - (set_local 0x37e (i64.load offset=0x37e align=1 (i32.const 0))) - (set_local 0x37f (i64.load offset=0x37f align=1 (i32.const 0))) - (set_local 0x380 (i64.load offset=0x380 align=1 (i32.const 0))) - (set_local 0x381 (i64.load offset=0x381 align=1 (i32.const 0))) - (set_local 0x382 (i64.load offset=0x382 align=1 (i32.const 0))) - (set_local 0x383 (i64.load offset=0x383 align=1 (i32.const 0))) - (set_local 0x384 (i64.load offset=0x384 align=1 (i32.const 0))) - (set_local 0x385 (i64.load offset=0x385 align=1 (i32.const 0))) - (set_local 0x386 (i64.load offset=0x386 align=1 (i32.const 0))) - (set_local 0x387 (i64.load offset=0x387 align=1 (i32.const 0))) - (set_local 0x388 (i64.load offset=0x388 align=1 (i32.const 0))) - (set_local 0x389 (i64.load offset=0x389 align=1 (i32.const 0))) - (set_local 0x38a (i64.load offset=0x38a align=1 (i32.const 0))) - (set_local 0x38b (i64.load offset=0x38b align=1 (i32.const 0))) - (set_local 0x38c (i64.load offset=0x38c align=1 (i32.const 0))) - (set_local 0x38d (i64.load offset=0x38d align=1 (i32.const 0))) - (set_local 0x38e (i64.load offset=0x38e align=1 (i32.const 0))) - (set_local 0x38f (i64.load offset=0x38f align=1 (i32.const 0))) - (set_local 0x390 (i64.load offset=0x390 align=1 (i32.const 0))) - (set_local 0x391 (i64.load offset=0x391 align=1 (i32.const 0))) - (set_local 0x392 (i64.load offset=0x392 align=1 (i32.const 0))) - (set_local 0x393 (i64.load offset=0x393 align=1 (i32.const 0))) - (set_local 0x394 (i64.load offset=0x394 align=1 (i32.const 0))) - (set_local 0x395 (i64.load offset=0x395 align=1 (i32.const 0))) - (set_local 0x396 (i64.load offset=0x396 align=1 (i32.const 0))) - (set_local 0x397 (i64.load offset=0x397 align=1 (i32.const 0))) - (set_local 0x398 (i64.load offset=0x398 align=1 (i32.const 0))) - (set_local 0x399 (i64.load offset=0x399 align=1 (i32.const 0))) - (set_local 0x39a (i64.load offset=0x39a align=1 (i32.const 0))) - (set_local 0x39b (i64.load offset=0x39b align=1 (i32.const 0))) - (set_local 0x39c (i64.load offset=0x39c align=1 (i32.const 0))) - (set_local 0x39d (i64.load offset=0x39d align=1 (i32.const 0))) - (set_local 0x39e (i64.load offset=0x39e align=1 (i32.const 0))) - (set_local 0x39f (i64.load offset=0x39f align=1 (i32.const 0))) - (set_local 0x3a0 (i64.load offset=0x3a0 align=1 (i32.const 0))) - (set_local 0x3a1 (i64.load offset=0x3a1 align=1 (i32.const 0))) - (set_local 0x3a2 (i64.load offset=0x3a2 align=1 (i32.const 0))) - (set_local 0x3a3 (i64.load offset=0x3a3 align=1 (i32.const 0))) - (set_local 0x3a4 (i64.load offset=0x3a4 align=1 (i32.const 0))) - (set_local 0x3a5 (i64.load offset=0x3a5 align=1 (i32.const 0))) - (set_local 0x3a6 (i64.load offset=0x3a6 align=1 (i32.const 0))) - (set_local 0x3a7 (i64.load offset=0x3a7 align=1 (i32.const 0))) - (set_local 0x3a8 (i64.load offset=0x3a8 align=1 (i32.const 0))) - (set_local 0x3a9 (i64.load offset=0x3a9 align=1 (i32.const 0))) - (set_local 0x3aa (i64.load offset=0x3aa align=1 (i32.const 0))) - (set_local 0x3ab (i64.load offset=0x3ab align=1 (i32.const 0))) - (set_local 0x3ac (i64.load offset=0x3ac align=1 (i32.const 0))) - (set_local 0x3ad (i64.load offset=0x3ad align=1 (i32.const 0))) - (set_local 0x3ae (i64.load offset=0x3ae align=1 (i32.const 0))) - (set_local 0x3af (i64.load offset=0x3af align=1 (i32.const 0))) - (set_local 0x3b0 (i64.load offset=0x3b0 align=1 (i32.const 0))) - (set_local 0x3b1 (i64.load offset=0x3b1 align=1 (i32.const 0))) - (set_local 0x3b2 (i64.load offset=0x3b2 align=1 (i32.const 0))) - (set_local 0x3b3 (i64.load offset=0x3b3 align=1 (i32.const 0))) - (set_local 0x3b4 (i64.load offset=0x3b4 align=1 (i32.const 0))) - (set_local 0x3b5 (i64.load offset=0x3b5 align=1 (i32.const 0))) - (set_local 0x3b6 (i64.load offset=0x3b6 align=1 (i32.const 0))) - (set_local 0x3b7 (i64.load offset=0x3b7 align=1 (i32.const 0))) - (set_local 0x3b8 (i64.load offset=0x3b8 align=1 (i32.const 0))) - (set_local 0x3b9 (i64.load offset=0x3b9 align=1 (i32.const 0))) - (set_local 0x3ba (i64.load offset=0x3ba align=1 (i32.const 0))) - (set_local 0x3bb (i64.load offset=0x3bb align=1 (i32.const 0))) - (set_local 0x3bc (i64.load offset=0x3bc align=1 (i32.const 0))) - (set_local 0x3bd (i64.load offset=0x3bd align=1 (i32.const 0))) - (set_local 0x3be (i64.load offset=0x3be align=1 (i32.const 0))) - (set_local 0x3bf (i64.load offset=0x3bf align=1 (i32.const 0))) - (set_local 0x3c0 (i64.load offset=0x3c0 align=1 (i32.const 0))) - (set_local 0x3c1 (i64.load offset=0x3c1 align=1 (i32.const 0))) - (set_local 0x3c2 (i64.load offset=0x3c2 align=1 (i32.const 0))) - (set_local 0x3c3 (i64.load offset=0x3c3 align=1 (i32.const 0))) - (set_local 0x3c4 (i64.load offset=0x3c4 align=1 (i32.const 0))) - (set_local 0x3c5 (i64.load offset=0x3c5 align=1 (i32.const 0))) - (set_local 0x3c6 (i64.load offset=0x3c6 align=1 (i32.const 0))) - (set_local 0x3c7 (i64.load offset=0x3c7 align=1 (i32.const 0))) - (set_local 0x3c8 (i64.load offset=0x3c8 align=1 (i32.const 0))) - (set_local 0x3c9 (i64.load offset=0x3c9 align=1 (i32.const 0))) - (set_local 0x3ca (i64.load offset=0x3ca align=1 (i32.const 0))) - (set_local 0x3cb (i64.load offset=0x3cb align=1 (i32.const 0))) - (set_local 0x3cc (i64.load offset=0x3cc align=1 (i32.const 0))) - (set_local 0x3cd (i64.load offset=0x3cd align=1 (i32.const 0))) - (set_local 0x3ce (i64.load offset=0x3ce align=1 (i32.const 0))) - (set_local 0x3cf (i64.load offset=0x3cf align=1 (i32.const 0))) - (set_local 0x3d0 (i64.load offset=0x3d0 align=1 (i32.const 0))) - (set_local 0x3d1 (i64.load offset=0x3d1 align=1 (i32.const 0))) - (set_local 0x3d2 (i64.load offset=0x3d2 align=1 (i32.const 0))) - (set_local 0x3d3 (i64.load offset=0x3d3 align=1 (i32.const 0))) - (set_local 0x3d4 (i64.load offset=0x3d4 align=1 (i32.const 0))) - (set_local 0x3d5 (i64.load offset=0x3d5 align=1 (i32.const 0))) - (set_local 0x3d6 (i64.load offset=0x3d6 align=1 (i32.const 0))) - (set_local 0x3d7 (i64.load offset=0x3d7 align=1 (i32.const 0))) - (set_local 0x3d8 (i64.load offset=0x3d8 align=1 (i32.const 0))) - (set_local 0x3d9 (i64.load offset=0x3d9 align=1 (i32.const 0))) - (set_local 0x3da (i64.load offset=0x3da align=1 (i32.const 0))) - (set_local 0x3db (i64.load offset=0x3db align=1 (i32.const 0))) - (set_local 0x3dc (i64.load offset=0x3dc align=1 (i32.const 0))) - (set_local 0x3dd (i64.load offset=0x3dd align=1 (i32.const 0))) - (set_local 0x3de (i64.load offset=0x3de align=1 (i32.const 0))) - (set_local 0x3df (i64.load offset=0x3df align=1 (i32.const 0))) - (set_local 0x3e0 (i64.load offset=0x3e0 align=1 (i32.const 0))) - (set_local 0x3e1 (i64.load offset=0x3e1 align=1 (i32.const 0))) - (set_local 0x3e2 (i64.load offset=0x3e2 align=1 (i32.const 0))) - (set_local 0x3e3 (i64.load offset=0x3e3 align=1 (i32.const 0))) - (set_local 0x3e4 (i64.load offset=0x3e4 align=1 (i32.const 0))) - (set_local 0x3e5 (i64.load offset=0x3e5 align=1 (i32.const 0))) - (set_local 0x3e6 (i64.load offset=0x3e6 align=1 (i32.const 0))) - (set_local 0x3e7 (i64.load offset=0x3e7 align=1 (i32.const 0))) - (set_local 0x3e8 (i64.load offset=0x3e8 align=1 (i32.const 0))) - (set_local 0x3e9 (i64.load offset=0x3e9 align=1 (i32.const 0))) - (set_local 0x3ea (i64.load offset=0x3ea align=1 (i32.const 0))) - (set_local 0x3eb (i64.load offset=0x3eb align=1 (i32.const 0))) - (set_local 0x3ec (i64.load offset=0x3ec align=1 (i32.const 0))) - (set_local 0x3ed (i64.load offset=0x3ed align=1 (i32.const 0))) - (set_local 0x3ee (i64.load offset=0x3ee align=1 (i32.const 0))) - (set_local 0x3ef (i64.load offset=0x3ef align=1 (i32.const 0))) - (set_local 0x3f0 (i64.load offset=0x3f0 align=1 (i32.const 0))) - (set_local 0x3f1 (i64.load offset=0x3f1 align=1 (i32.const 0))) - (set_local 0x3f2 (i64.load offset=0x3f2 align=1 (i32.const 0))) - (set_local 0x3f3 (i64.load offset=0x3f3 align=1 (i32.const 0))) - (set_local 0x3f4 (i64.load offset=0x3f4 align=1 (i32.const 0))) - (set_local 0x3f5 (i64.load offset=0x3f5 align=1 (i32.const 0))) - (set_local 0x3f6 (i64.load offset=0x3f6 align=1 (i32.const 0))) - (set_local 0x3f7 (i64.load offset=0x3f7 align=1 (i32.const 0))) - (set_local 0x3f8 (i64.load offset=0x3f8 align=1 (i32.const 0))) - (set_local 0x3f9 (i64.load offset=0x3f9 align=1 (i32.const 0))) - (set_local 0x3fa (i64.load offset=0x3fa align=1 (i32.const 0))) - (set_local 0x3fb (i64.load offset=0x3fb align=1 (i32.const 0))) - (set_local 0x3fc (i64.load offset=0x3fc align=1 (i32.const 0))) - (set_local 0x3fd (i64.load offset=0x3fd align=1 (i32.const 0))) - (set_local 0x3fe (i64.load offset=0x3fe align=1 (i32.const 0))) - (set_local 0x3ff (i64.load offset=0x3ff align=1 (i32.const 0))) - (set_local 0x400 (i64.load offset=0x400 align=1 (i32.const 0))) - (set_local 0x401 (i64.load offset=0x401 align=1 (i32.const 0))) - (set_local 0x402 (i64.load offset=0x402 align=1 (i32.const 0))) - (set_local 0x403 (i64.load offset=0x403 align=1 (i32.const 0))) - (set_local 0x404 (i64.load offset=0x404 align=1 (i32.const 0))) - (set_local 0x405 (i64.load offset=0x405 align=1 (i32.const 0))) - (set_local 0x406 (i64.load offset=0x406 align=1 (i32.const 0))) - (set_local 0x407 (i64.load offset=0x407 align=1 (i32.const 0))) - (set_local 0x408 (i64.load offset=0x408 align=1 (i32.const 0))) - (set_local 0x409 (i64.load offset=0x409 align=1 (i32.const 0))) - (set_local 0x40a (i64.load offset=0x40a align=1 (i32.const 0))) - (set_local 0x40b (i64.load offset=0x40b align=1 (i32.const 0))) - (set_local 0x40c (i64.load offset=0x40c align=1 (i32.const 0))) - (set_local 0x40d (i64.load offset=0x40d align=1 (i32.const 0))) - (set_local 0x40e (i64.load offset=0x40e align=1 (i32.const 0))) - (set_local 0x40f (i64.load offset=0x40f align=1 (i32.const 0))) - (set_local 0x410 (i64.load offset=0x410 align=1 (i32.const 0))) - (set_local 0x411 (i64.load offset=0x411 align=1 (i32.const 0))) - (set_local 0x412 (i64.load offset=0x412 align=1 (i32.const 0))) - (set_local 0x413 (i64.load offset=0x413 align=1 (i32.const 0))) - (set_local 0x414 (i64.load offset=0x414 align=1 (i32.const 0))) - (set_local 0x415 (i64.load offset=0x415 align=1 (i32.const 0))) - (set_local 0x416 (i64.load offset=0x416 align=1 (i32.const 0))) - (set_local 0x417 (i64.load offset=0x417 align=1 (i32.const 0))) - (set_local 0x418 (i64.load offset=0x418 align=1 (i32.const 0))) - (set_local 0x419 (i64.load offset=0x419 align=1 (i32.const 0))) - (set_local 0x41a (i64.load offset=0x41a align=1 (i32.const 0))) - (set_local 0x41b (i64.load offset=0x41b align=1 (i32.const 0))) - (set_local 0x41c (i64.load offset=0x41c align=1 (i32.const 0))) - (set_local 0x41d (i64.load offset=0x41d align=1 (i32.const 0))) - (set_local 0x41e (i64.load offset=0x41e align=1 (i32.const 0))) - (set_local 0x41f (i64.load offset=0x41f align=1 (i32.const 0))) - - ;; store the locals back to memory - (i64.store offset=0x000 align=1 (i32.const 0) (get_local 0x000)) - (i64.store offset=0x001 align=1 (i32.const 0) (get_local 0x001)) - (i64.store offset=0x002 align=1 (i32.const 0) (get_local 0x002)) - (i64.store offset=0x003 align=1 (i32.const 0) (get_local 0x003)) - (i64.store offset=0x004 align=1 (i32.const 0) (get_local 0x004)) - (i64.store offset=0x005 align=1 (i32.const 0) (get_local 0x005)) - (i64.store offset=0x006 align=1 (i32.const 0) (get_local 0x006)) - (i64.store offset=0x007 align=1 (i32.const 0) (get_local 0x007)) - (i64.store offset=0x008 align=1 (i32.const 0) (get_local 0x008)) - (i64.store offset=0x009 align=1 (i32.const 0) (get_local 0x009)) - (i64.store offset=0x00a align=1 (i32.const 0) (get_local 0x00a)) - (i64.store offset=0x00b align=1 (i32.const 0) (get_local 0x00b)) - (i64.store offset=0x00c align=1 (i32.const 0) (get_local 0x00c)) - (i64.store offset=0x00d align=1 (i32.const 0) (get_local 0x00d)) - (i64.store offset=0x00e align=1 (i32.const 0) (get_local 0x00e)) - (i64.store offset=0x00f align=1 (i32.const 0) (get_local 0x00f)) - (i64.store offset=0x010 align=1 (i32.const 0) (get_local 0x010)) - (i64.store offset=0x011 align=1 (i32.const 0) (get_local 0x011)) - (i64.store offset=0x012 align=1 (i32.const 0) (get_local 0x012)) - (i64.store offset=0x013 align=1 (i32.const 0) (get_local 0x013)) - (i64.store offset=0x014 align=1 (i32.const 0) (get_local 0x014)) - (i64.store offset=0x015 align=1 (i32.const 0) (get_local 0x015)) - (i64.store offset=0x016 align=1 (i32.const 0) (get_local 0x016)) - (i64.store offset=0x017 align=1 (i32.const 0) (get_local 0x017)) - (i64.store offset=0x018 align=1 (i32.const 0) (get_local 0x018)) - (i64.store offset=0x019 align=1 (i32.const 0) (get_local 0x019)) - (i64.store offset=0x01a align=1 (i32.const 0) (get_local 0x01a)) - (i64.store offset=0x01b align=1 (i32.const 0) (get_local 0x01b)) - (i64.store offset=0x01c align=1 (i32.const 0) (get_local 0x01c)) - (i64.store offset=0x01d align=1 (i32.const 0) (get_local 0x01d)) - (i64.store offset=0x01e align=1 (i32.const 0) (get_local 0x01e)) - (i64.store offset=0x01f align=1 (i32.const 0) (get_local 0x01f)) - (i64.store offset=0x020 align=1 (i32.const 0) (get_local 0x020)) - (i64.store offset=0x021 align=1 (i32.const 0) (get_local 0x021)) - (i64.store offset=0x022 align=1 (i32.const 0) (get_local 0x022)) - (i64.store offset=0x023 align=1 (i32.const 0) (get_local 0x023)) - (i64.store offset=0x024 align=1 (i32.const 0) (get_local 0x024)) - (i64.store offset=0x025 align=1 (i32.const 0) (get_local 0x025)) - (i64.store offset=0x026 align=1 (i32.const 0) (get_local 0x026)) - (i64.store offset=0x027 align=1 (i32.const 0) (get_local 0x027)) - (i64.store offset=0x028 align=1 (i32.const 0) (get_local 0x028)) - (i64.store offset=0x029 align=1 (i32.const 0) (get_local 0x029)) - (i64.store offset=0x02a align=1 (i32.const 0) (get_local 0x02a)) - (i64.store offset=0x02b align=1 (i32.const 0) (get_local 0x02b)) - (i64.store offset=0x02c align=1 (i32.const 0) (get_local 0x02c)) - (i64.store offset=0x02d align=1 (i32.const 0) (get_local 0x02d)) - (i64.store offset=0x02e align=1 (i32.const 0) (get_local 0x02e)) - (i64.store offset=0x02f align=1 (i32.const 0) (get_local 0x02f)) - (i64.store offset=0x030 align=1 (i32.const 0) (get_local 0x030)) - (i64.store offset=0x031 align=1 (i32.const 0) (get_local 0x031)) - (i64.store offset=0x032 align=1 (i32.const 0) (get_local 0x032)) - (i64.store offset=0x033 align=1 (i32.const 0) (get_local 0x033)) - (i64.store offset=0x034 align=1 (i32.const 0) (get_local 0x034)) - (i64.store offset=0x035 align=1 (i32.const 0) (get_local 0x035)) - (i64.store offset=0x036 align=1 (i32.const 0) (get_local 0x036)) - (i64.store offset=0x037 align=1 (i32.const 0) (get_local 0x037)) - (i64.store offset=0x038 align=1 (i32.const 0) (get_local 0x038)) - (i64.store offset=0x039 align=1 (i32.const 0) (get_local 0x039)) - (i64.store offset=0x03a align=1 (i32.const 0) (get_local 0x03a)) - (i64.store offset=0x03b align=1 (i32.const 0) (get_local 0x03b)) - (i64.store offset=0x03c align=1 (i32.const 0) (get_local 0x03c)) - (i64.store offset=0x03d align=1 (i32.const 0) (get_local 0x03d)) - (i64.store offset=0x03e align=1 (i32.const 0) (get_local 0x03e)) - (i64.store offset=0x03f align=1 (i32.const 0) (get_local 0x03f)) - (i64.store offset=0x040 align=1 (i32.const 0) (get_local 0x040)) - (i64.store offset=0x041 align=1 (i32.const 0) (get_local 0x041)) - (i64.store offset=0x042 align=1 (i32.const 0) (get_local 0x042)) - (i64.store offset=0x043 align=1 (i32.const 0) (get_local 0x043)) - (i64.store offset=0x044 align=1 (i32.const 0) (get_local 0x044)) - (i64.store offset=0x045 align=1 (i32.const 0) (get_local 0x045)) - (i64.store offset=0x046 align=1 (i32.const 0) (get_local 0x046)) - (i64.store offset=0x047 align=1 (i32.const 0) (get_local 0x047)) - (i64.store offset=0x048 align=1 (i32.const 0) (get_local 0x048)) - (i64.store offset=0x049 align=1 (i32.const 0) (get_local 0x049)) - (i64.store offset=0x04a align=1 (i32.const 0) (get_local 0x04a)) - (i64.store offset=0x04b align=1 (i32.const 0) (get_local 0x04b)) - (i64.store offset=0x04c align=1 (i32.const 0) (get_local 0x04c)) - (i64.store offset=0x04d align=1 (i32.const 0) (get_local 0x04d)) - (i64.store offset=0x04e align=1 (i32.const 0) (get_local 0x04e)) - (i64.store offset=0x04f align=1 (i32.const 0) (get_local 0x04f)) - (i64.store offset=0x050 align=1 (i32.const 0) (get_local 0x050)) - (i64.store offset=0x051 align=1 (i32.const 0) (get_local 0x051)) - (i64.store offset=0x052 align=1 (i32.const 0) (get_local 0x052)) - (i64.store offset=0x053 align=1 (i32.const 0) (get_local 0x053)) - (i64.store offset=0x054 align=1 (i32.const 0) (get_local 0x054)) - (i64.store offset=0x055 align=1 (i32.const 0) (get_local 0x055)) - (i64.store offset=0x056 align=1 (i32.const 0) (get_local 0x056)) - (i64.store offset=0x057 align=1 (i32.const 0) (get_local 0x057)) - (i64.store offset=0x058 align=1 (i32.const 0) (get_local 0x058)) - (i64.store offset=0x059 align=1 (i32.const 0) (get_local 0x059)) - (i64.store offset=0x05a align=1 (i32.const 0) (get_local 0x05a)) - (i64.store offset=0x05b align=1 (i32.const 0) (get_local 0x05b)) - (i64.store offset=0x05c align=1 (i32.const 0) (get_local 0x05c)) - (i64.store offset=0x05d align=1 (i32.const 0) (get_local 0x05d)) - (i64.store offset=0x05e align=1 (i32.const 0) (get_local 0x05e)) - (i64.store offset=0x05f align=1 (i32.const 0) (get_local 0x05f)) - (i64.store offset=0x060 align=1 (i32.const 0) (get_local 0x060)) - (i64.store offset=0x061 align=1 (i32.const 0) (get_local 0x061)) - (i64.store offset=0x062 align=1 (i32.const 0) (get_local 0x062)) - (i64.store offset=0x063 align=1 (i32.const 0) (get_local 0x063)) - (i64.store offset=0x064 align=1 (i32.const 0) (get_local 0x064)) - (i64.store offset=0x065 align=1 (i32.const 0) (get_local 0x065)) - (i64.store offset=0x066 align=1 (i32.const 0) (get_local 0x066)) - (i64.store offset=0x067 align=1 (i32.const 0) (get_local 0x067)) - (i64.store offset=0x068 align=1 (i32.const 0) (get_local 0x068)) - (i64.store offset=0x069 align=1 (i32.const 0) (get_local 0x069)) - (i64.store offset=0x06a align=1 (i32.const 0) (get_local 0x06a)) - (i64.store offset=0x06b align=1 (i32.const 0) (get_local 0x06b)) - (i64.store offset=0x06c align=1 (i32.const 0) (get_local 0x06c)) - (i64.store offset=0x06d align=1 (i32.const 0) (get_local 0x06d)) - (i64.store offset=0x06e align=1 (i32.const 0) (get_local 0x06e)) - (i64.store offset=0x06f align=1 (i32.const 0) (get_local 0x06f)) - (i64.store offset=0x070 align=1 (i32.const 0) (get_local 0x070)) - (i64.store offset=0x071 align=1 (i32.const 0) (get_local 0x071)) - (i64.store offset=0x072 align=1 (i32.const 0) (get_local 0x072)) - (i64.store offset=0x073 align=1 (i32.const 0) (get_local 0x073)) - (i64.store offset=0x074 align=1 (i32.const 0) (get_local 0x074)) - (i64.store offset=0x075 align=1 (i32.const 0) (get_local 0x075)) - (i64.store offset=0x076 align=1 (i32.const 0) (get_local 0x076)) - (i64.store offset=0x077 align=1 (i32.const 0) (get_local 0x077)) - (i64.store offset=0x078 align=1 (i32.const 0) (get_local 0x078)) - (i64.store offset=0x079 align=1 (i32.const 0) (get_local 0x079)) - (i64.store offset=0x07a align=1 (i32.const 0) (get_local 0x07a)) - (i64.store offset=0x07b align=1 (i32.const 0) (get_local 0x07b)) - (i64.store offset=0x07c align=1 (i32.const 0) (get_local 0x07c)) - (i64.store offset=0x07d align=1 (i32.const 0) (get_local 0x07d)) - (i64.store offset=0x07e align=1 (i32.const 0) (get_local 0x07e)) - (i64.store offset=0x07f align=1 (i32.const 0) (get_local 0x07f)) - (i64.store offset=0x080 align=1 (i32.const 0) (get_local 0x080)) - (i64.store offset=0x081 align=1 (i32.const 0) (get_local 0x081)) - (i64.store offset=0x082 align=1 (i32.const 0) (get_local 0x082)) - (i64.store offset=0x083 align=1 (i32.const 0) (get_local 0x083)) - (i64.store offset=0x084 align=1 (i32.const 0) (get_local 0x084)) - (i64.store offset=0x085 align=1 (i32.const 0) (get_local 0x085)) - (i64.store offset=0x086 align=1 (i32.const 0) (get_local 0x086)) - (i64.store offset=0x087 align=1 (i32.const 0) (get_local 0x087)) - (i64.store offset=0x088 align=1 (i32.const 0) (get_local 0x088)) - (i64.store offset=0x089 align=1 (i32.const 0) (get_local 0x089)) - (i64.store offset=0x08a align=1 (i32.const 0) (get_local 0x08a)) - (i64.store offset=0x08b align=1 (i32.const 0) (get_local 0x08b)) - (i64.store offset=0x08c align=1 (i32.const 0) (get_local 0x08c)) - (i64.store offset=0x08d align=1 (i32.const 0) (get_local 0x08d)) - (i64.store offset=0x08e align=1 (i32.const 0) (get_local 0x08e)) - (i64.store offset=0x08f align=1 (i32.const 0) (get_local 0x08f)) - (i64.store offset=0x090 align=1 (i32.const 0) (get_local 0x090)) - (i64.store offset=0x091 align=1 (i32.const 0) (get_local 0x091)) - (i64.store offset=0x092 align=1 (i32.const 0) (get_local 0x092)) - (i64.store offset=0x093 align=1 (i32.const 0) (get_local 0x093)) - (i64.store offset=0x094 align=1 (i32.const 0) (get_local 0x094)) - (i64.store offset=0x095 align=1 (i32.const 0) (get_local 0x095)) - (i64.store offset=0x096 align=1 (i32.const 0) (get_local 0x096)) - (i64.store offset=0x097 align=1 (i32.const 0) (get_local 0x097)) - (i64.store offset=0x098 align=1 (i32.const 0) (get_local 0x098)) - (i64.store offset=0x099 align=1 (i32.const 0) (get_local 0x099)) - (i64.store offset=0x09a align=1 (i32.const 0) (get_local 0x09a)) - (i64.store offset=0x09b align=1 (i32.const 0) (get_local 0x09b)) - (i64.store offset=0x09c align=1 (i32.const 0) (get_local 0x09c)) - (i64.store offset=0x09d align=1 (i32.const 0) (get_local 0x09d)) - (i64.store offset=0x09e align=1 (i32.const 0) (get_local 0x09e)) - (i64.store offset=0x09f align=1 (i32.const 0) (get_local 0x09f)) - (i64.store offset=0x0a0 align=1 (i32.const 0) (get_local 0x0a0)) - (i64.store offset=0x0a1 align=1 (i32.const 0) (get_local 0x0a1)) - (i64.store offset=0x0a2 align=1 (i32.const 0) (get_local 0x0a2)) - (i64.store offset=0x0a3 align=1 (i32.const 0) (get_local 0x0a3)) - (i64.store offset=0x0a4 align=1 (i32.const 0) (get_local 0x0a4)) - (i64.store offset=0x0a5 align=1 (i32.const 0) (get_local 0x0a5)) - (i64.store offset=0x0a6 align=1 (i32.const 0) (get_local 0x0a6)) - (i64.store offset=0x0a7 align=1 (i32.const 0) (get_local 0x0a7)) - (i64.store offset=0x0a8 align=1 (i32.const 0) (get_local 0x0a8)) - (i64.store offset=0x0a9 align=1 (i32.const 0) (get_local 0x0a9)) - (i64.store offset=0x0aa align=1 (i32.const 0) (get_local 0x0aa)) - (i64.store offset=0x0ab align=1 (i32.const 0) (get_local 0x0ab)) - (i64.store offset=0x0ac align=1 (i32.const 0) (get_local 0x0ac)) - (i64.store offset=0x0ad align=1 (i32.const 0) (get_local 0x0ad)) - (i64.store offset=0x0ae align=1 (i32.const 0) (get_local 0x0ae)) - (i64.store offset=0x0af align=1 (i32.const 0) (get_local 0x0af)) - (i64.store offset=0x0b0 align=1 (i32.const 0) (get_local 0x0b0)) - (i64.store offset=0x0b1 align=1 (i32.const 0) (get_local 0x0b1)) - (i64.store offset=0x0b2 align=1 (i32.const 0) (get_local 0x0b2)) - (i64.store offset=0x0b3 align=1 (i32.const 0) (get_local 0x0b3)) - (i64.store offset=0x0b4 align=1 (i32.const 0) (get_local 0x0b4)) - (i64.store offset=0x0b5 align=1 (i32.const 0) (get_local 0x0b5)) - (i64.store offset=0x0b6 align=1 (i32.const 0) (get_local 0x0b6)) - (i64.store offset=0x0b7 align=1 (i32.const 0) (get_local 0x0b7)) - (i64.store offset=0x0b8 align=1 (i32.const 0) (get_local 0x0b8)) - (i64.store offset=0x0b9 align=1 (i32.const 0) (get_local 0x0b9)) - (i64.store offset=0x0ba align=1 (i32.const 0) (get_local 0x0ba)) - (i64.store offset=0x0bb align=1 (i32.const 0) (get_local 0x0bb)) - (i64.store offset=0x0bc align=1 (i32.const 0) (get_local 0x0bc)) - (i64.store offset=0x0bd align=1 (i32.const 0) (get_local 0x0bd)) - (i64.store offset=0x0be align=1 (i32.const 0) (get_local 0x0be)) - (i64.store offset=0x0bf align=1 (i32.const 0) (get_local 0x0bf)) - (i64.store offset=0x0c0 align=1 (i32.const 0) (get_local 0x0c0)) - (i64.store offset=0x0c1 align=1 (i32.const 0) (get_local 0x0c1)) - (i64.store offset=0x0c2 align=1 (i32.const 0) (get_local 0x0c2)) - (i64.store offset=0x0c3 align=1 (i32.const 0) (get_local 0x0c3)) - (i64.store offset=0x0c4 align=1 (i32.const 0) (get_local 0x0c4)) - (i64.store offset=0x0c5 align=1 (i32.const 0) (get_local 0x0c5)) - (i64.store offset=0x0c6 align=1 (i32.const 0) (get_local 0x0c6)) - (i64.store offset=0x0c7 align=1 (i32.const 0) (get_local 0x0c7)) - (i64.store offset=0x0c8 align=1 (i32.const 0) (get_local 0x0c8)) - (i64.store offset=0x0c9 align=1 (i32.const 0) (get_local 0x0c9)) - (i64.store offset=0x0ca align=1 (i32.const 0) (get_local 0x0ca)) - (i64.store offset=0x0cb align=1 (i32.const 0) (get_local 0x0cb)) - (i64.store offset=0x0cc align=1 (i32.const 0) (get_local 0x0cc)) - (i64.store offset=0x0cd align=1 (i32.const 0) (get_local 0x0cd)) - (i64.store offset=0x0ce align=1 (i32.const 0) (get_local 0x0ce)) - (i64.store offset=0x0cf align=1 (i32.const 0) (get_local 0x0cf)) - (i64.store offset=0x0d0 align=1 (i32.const 0) (get_local 0x0d0)) - (i64.store offset=0x0d1 align=1 (i32.const 0) (get_local 0x0d1)) - (i64.store offset=0x0d2 align=1 (i32.const 0) (get_local 0x0d2)) - (i64.store offset=0x0d3 align=1 (i32.const 0) (get_local 0x0d3)) - (i64.store offset=0x0d4 align=1 (i32.const 0) (get_local 0x0d4)) - (i64.store offset=0x0d5 align=1 (i32.const 0) (get_local 0x0d5)) - (i64.store offset=0x0d6 align=1 (i32.const 0) (get_local 0x0d6)) - (i64.store offset=0x0d7 align=1 (i32.const 0) (get_local 0x0d7)) - (i64.store offset=0x0d8 align=1 (i32.const 0) (get_local 0x0d8)) - (i64.store offset=0x0d9 align=1 (i32.const 0) (get_local 0x0d9)) - (i64.store offset=0x0da align=1 (i32.const 0) (get_local 0x0da)) - (i64.store offset=0x0db align=1 (i32.const 0) (get_local 0x0db)) - (i64.store offset=0x0dc align=1 (i32.const 0) (get_local 0x0dc)) - (i64.store offset=0x0dd align=1 (i32.const 0) (get_local 0x0dd)) - (i64.store offset=0x0de align=1 (i32.const 0) (get_local 0x0de)) - (i64.store offset=0x0df align=1 (i32.const 0) (get_local 0x0df)) - (i64.store offset=0x0e0 align=1 (i32.const 0) (get_local 0x0e0)) - (i64.store offset=0x0e1 align=1 (i32.const 0) (get_local 0x0e1)) - (i64.store offset=0x0e2 align=1 (i32.const 0) (get_local 0x0e2)) - (i64.store offset=0x0e3 align=1 (i32.const 0) (get_local 0x0e3)) - (i64.store offset=0x0e4 align=1 (i32.const 0) (get_local 0x0e4)) - (i64.store offset=0x0e5 align=1 (i32.const 0) (get_local 0x0e5)) - (i64.store offset=0x0e6 align=1 (i32.const 0) (get_local 0x0e6)) - (i64.store offset=0x0e7 align=1 (i32.const 0) (get_local 0x0e7)) - (i64.store offset=0x0e8 align=1 (i32.const 0) (get_local 0x0e8)) - (i64.store offset=0x0e9 align=1 (i32.const 0) (get_local 0x0e9)) - (i64.store offset=0x0ea align=1 (i32.const 0) (get_local 0x0ea)) - (i64.store offset=0x0eb align=1 (i32.const 0) (get_local 0x0eb)) - (i64.store offset=0x0ec align=1 (i32.const 0) (get_local 0x0ec)) - (i64.store offset=0x0ed align=1 (i32.const 0) (get_local 0x0ed)) - (i64.store offset=0x0ee align=1 (i32.const 0) (get_local 0x0ee)) - (i64.store offset=0x0ef align=1 (i32.const 0) (get_local 0x0ef)) - (i64.store offset=0x0f0 align=1 (i32.const 0) (get_local 0x0f0)) - (i64.store offset=0x0f1 align=1 (i32.const 0) (get_local 0x0f1)) - (i64.store offset=0x0f2 align=1 (i32.const 0) (get_local 0x0f2)) - (i64.store offset=0x0f3 align=1 (i32.const 0) (get_local 0x0f3)) - (i64.store offset=0x0f4 align=1 (i32.const 0) (get_local 0x0f4)) - (i64.store offset=0x0f5 align=1 (i32.const 0) (get_local 0x0f5)) - (i64.store offset=0x0f6 align=1 (i32.const 0) (get_local 0x0f6)) - (i64.store offset=0x0f7 align=1 (i32.const 0) (get_local 0x0f7)) - (i64.store offset=0x0f8 align=1 (i32.const 0) (get_local 0x0f8)) - (i64.store offset=0x0f9 align=1 (i32.const 0) (get_local 0x0f9)) - (i64.store offset=0x0fa align=1 (i32.const 0) (get_local 0x0fa)) - (i64.store offset=0x0fb align=1 (i32.const 0) (get_local 0x0fb)) - (i64.store offset=0x0fc align=1 (i32.const 0) (get_local 0x0fc)) - (i64.store offset=0x0fd align=1 (i32.const 0) (get_local 0x0fd)) - (i64.store offset=0x0fe align=1 (i32.const 0) (get_local 0x0fe)) - (i64.store offset=0x0ff align=1 (i32.const 0) (get_local 0x0ff)) - (i64.store offset=0x100 align=1 (i32.const 0) (get_local 0x100)) - (i64.store offset=0x101 align=1 (i32.const 0) (get_local 0x101)) - (i64.store offset=0x102 align=1 (i32.const 0) (get_local 0x102)) - (i64.store offset=0x103 align=1 (i32.const 0) (get_local 0x103)) - (i64.store offset=0x104 align=1 (i32.const 0) (get_local 0x104)) - (i64.store offset=0x105 align=1 (i32.const 0) (get_local 0x105)) - (i64.store offset=0x106 align=1 (i32.const 0) (get_local 0x106)) - (i64.store offset=0x107 align=1 (i32.const 0) (get_local 0x107)) - (i64.store offset=0x108 align=1 (i32.const 0) (get_local 0x108)) - (i64.store offset=0x109 align=1 (i32.const 0) (get_local 0x109)) - (i64.store offset=0x10a align=1 (i32.const 0) (get_local 0x10a)) - (i64.store offset=0x10b align=1 (i32.const 0) (get_local 0x10b)) - (i64.store offset=0x10c align=1 (i32.const 0) (get_local 0x10c)) - (i64.store offset=0x10d align=1 (i32.const 0) (get_local 0x10d)) - (i64.store offset=0x10e align=1 (i32.const 0) (get_local 0x10e)) - (i64.store offset=0x10f align=1 (i32.const 0) (get_local 0x10f)) - (i64.store offset=0x110 align=1 (i32.const 0) (get_local 0x110)) - (i64.store offset=0x111 align=1 (i32.const 0) (get_local 0x111)) - (i64.store offset=0x112 align=1 (i32.const 0) (get_local 0x112)) - (i64.store offset=0x113 align=1 (i32.const 0) (get_local 0x113)) - (i64.store offset=0x114 align=1 (i32.const 0) (get_local 0x114)) - (i64.store offset=0x115 align=1 (i32.const 0) (get_local 0x115)) - (i64.store offset=0x116 align=1 (i32.const 0) (get_local 0x116)) - (i64.store offset=0x117 align=1 (i32.const 0) (get_local 0x117)) - (i64.store offset=0x118 align=1 (i32.const 0) (get_local 0x118)) - (i64.store offset=0x119 align=1 (i32.const 0) (get_local 0x119)) - (i64.store offset=0x11a align=1 (i32.const 0) (get_local 0x11a)) - (i64.store offset=0x11b align=1 (i32.const 0) (get_local 0x11b)) - (i64.store offset=0x11c align=1 (i32.const 0) (get_local 0x11c)) - (i64.store offset=0x11d align=1 (i32.const 0) (get_local 0x11d)) - (i64.store offset=0x11e align=1 (i32.const 0) (get_local 0x11e)) - (i64.store offset=0x11f align=1 (i32.const 0) (get_local 0x11f)) - (i64.store offset=0x120 align=1 (i32.const 0) (get_local 0x120)) - (i64.store offset=0x121 align=1 (i32.const 0) (get_local 0x121)) - (i64.store offset=0x122 align=1 (i32.const 0) (get_local 0x122)) - (i64.store offset=0x123 align=1 (i32.const 0) (get_local 0x123)) - (i64.store offset=0x124 align=1 (i32.const 0) (get_local 0x124)) - (i64.store offset=0x125 align=1 (i32.const 0) (get_local 0x125)) - (i64.store offset=0x126 align=1 (i32.const 0) (get_local 0x126)) - (i64.store offset=0x127 align=1 (i32.const 0) (get_local 0x127)) - (i64.store offset=0x128 align=1 (i32.const 0) (get_local 0x128)) - (i64.store offset=0x129 align=1 (i32.const 0) (get_local 0x129)) - (i64.store offset=0x12a align=1 (i32.const 0) (get_local 0x12a)) - (i64.store offset=0x12b align=1 (i32.const 0) (get_local 0x12b)) - (i64.store offset=0x12c align=1 (i32.const 0) (get_local 0x12c)) - (i64.store offset=0x12d align=1 (i32.const 0) (get_local 0x12d)) - (i64.store offset=0x12e align=1 (i32.const 0) (get_local 0x12e)) - (i64.store offset=0x12f align=1 (i32.const 0) (get_local 0x12f)) - (i64.store offset=0x130 align=1 (i32.const 0) (get_local 0x130)) - (i64.store offset=0x131 align=1 (i32.const 0) (get_local 0x131)) - (i64.store offset=0x132 align=1 (i32.const 0) (get_local 0x132)) - (i64.store offset=0x133 align=1 (i32.const 0) (get_local 0x133)) - (i64.store offset=0x134 align=1 (i32.const 0) (get_local 0x134)) - (i64.store offset=0x135 align=1 (i32.const 0) (get_local 0x135)) - (i64.store offset=0x136 align=1 (i32.const 0) (get_local 0x136)) - (i64.store offset=0x137 align=1 (i32.const 0) (get_local 0x137)) - (i64.store offset=0x138 align=1 (i32.const 0) (get_local 0x138)) - (i64.store offset=0x139 align=1 (i32.const 0) (get_local 0x139)) - (i64.store offset=0x13a align=1 (i32.const 0) (get_local 0x13a)) - (i64.store offset=0x13b align=1 (i32.const 0) (get_local 0x13b)) - (i64.store offset=0x13c align=1 (i32.const 0) (get_local 0x13c)) - (i64.store offset=0x13d align=1 (i32.const 0) (get_local 0x13d)) - (i64.store offset=0x13e align=1 (i32.const 0) (get_local 0x13e)) - (i64.store offset=0x13f align=1 (i32.const 0) (get_local 0x13f)) - (i64.store offset=0x140 align=1 (i32.const 0) (get_local 0x140)) - (i64.store offset=0x141 align=1 (i32.const 0) (get_local 0x141)) - (i64.store offset=0x142 align=1 (i32.const 0) (get_local 0x142)) - (i64.store offset=0x143 align=1 (i32.const 0) (get_local 0x143)) - (i64.store offset=0x144 align=1 (i32.const 0) (get_local 0x144)) - (i64.store offset=0x145 align=1 (i32.const 0) (get_local 0x145)) - (i64.store offset=0x146 align=1 (i32.const 0) (get_local 0x146)) - (i64.store offset=0x147 align=1 (i32.const 0) (get_local 0x147)) - (i64.store offset=0x148 align=1 (i32.const 0) (get_local 0x148)) - (i64.store offset=0x149 align=1 (i32.const 0) (get_local 0x149)) - (i64.store offset=0x14a align=1 (i32.const 0) (get_local 0x14a)) - (i64.store offset=0x14b align=1 (i32.const 0) (get_local 0x14b)) - (i64.store offset=0x14c align=1 (i32.const 0) (get_local 0x14c)) - (i64.store offset=0x14d align=1 (i32.const 0) (get_local 0x14d)) - (i64.store offset=0x14e align=1 (i32.const 0) (get_local 0x14e)) - (i64.store offset=0x14f align=1 (i32.const 0) (get_local 0x14f)) - (i64.store offset=0x150 align=1 (i32.const 0) (get_local 0x150)) - (i64.store offset=0x151 align=1 (i32.const 0) (get_local 0x151)) - (i64.store offset=0x152 align=1 (i32.const 0) (get_local 0x152)) - (i64.store offset=0x153 align=1 (i32.const 0) (get_local 0x153)) - (i64.store offset=0x154 align=1 (i32.const 0) (get_local 0x154)) - (i64.store offset=0x155 align=1 (i32.const 0) (get_local 0x155)) - (i64.store offset=0x156 align=1 (i32.const 0) (get_local 0x156)) - (i64.store offset=0x157 align=1 (i32.const 0) (get_local 0x157)) - (i64.store offset=0x158 align=1 (i32.const 0) (get_local 0x158)) - (i64.store offset=0x159 align=1 (i32.const 0) (get_local 0x159)) - (i64.store offset=0x15a align=1 (i32.const 0) (get_local 0x15a)) - (i64.store offset=0x15b align=1 (i32.const 0) (get_local 0x15b)) - (i64.store offset=0x15c align=1 (i32.const 0) (get_local 0x15c)) - (i64.store offset=0x15d align=1 (i32.const 0) (get_local 0x15d)) - (i64.store offset=0x15e align=1 (i32.const 0) (get_local 0x15e)) - (i64.store offset=0x15f align=1 (i32.const 0) (get_local 0x15f)) - (i64.store offset=0x160 align=1 (i32.const 0) (get_local 0x160)) - (i64.store offset=0x161 align=1 (i32.const 0) (get_local 0x161)) - (i64.store offset=0x162 align=1 (i32.const 0) (get_local 0x162)) - (i64.store offset=0x163 align=1 (i32.const 0) (get_local 0x163)) - (i64.store offset=0x164 align=1 (i32.const 0) (get_local 0x164)) - (i64.store offset=0x165 align=1 (i32.const 0) (get_local 0x165)) - (i64.store offset=0x166 align=1 (i32.const 0) (get_local 0x166)) - (i64.store offset=0x167 align=1 (i32.const 0) (get_local 0x167)) - (i64.store offset=0x168 align=1 (i32.const 0) (get_local 0x168)) - (i64.store offset=0x169 align=1 (i32.const 0) (get_local 0x169)) - (i64.store offset=0x16a align=1 (i32.const 0) (get_local 0x16a)) - (i64.store offset=0x16b align=1 (i32.const 0) (get_local 0x16b)) - (i64.store offset=0x16c align=1 (i32.const 0) (get_local 0x16c)) - (i64.store offset=0x16d align=1 (i32.const 0) (get_local 0x16d)) - (i64.store offset=0x16e align=1 (i32.const 0) (get_local 0x16e)) - (i64.store offset=0x16f align=1 (i32.const 0) (get_local 0x16f)) - (i64.store offset=0x170 align=1 (i32.const 0) (get_local 0x170)) - (i64.store offset=0x171 align=1 (i32.const 0) (get_local 0x171)) - (i64.store offset=0x172 align=1 (i32.const 0) (get_local 0x172)) - (i64.store offset=0x173 align=1 (i32.const 0) (get_local 0x173)) - (i64.store offset=0x174 align=1 (i32.const 0) (get_local 0x174)) - (i64.store offset=0x175 align=1 (i32.const 0) (get_local 0x175)) - (i64.store offset=0x176 align=1 (i32.const 0) (get_local 0x176)) - (i64.store offset=0x177 align=1 (i32.const 0) (get_local 0x177)) - (i64.store offset=0x178 align=1 (i32.const 0) (get_local 0x178)) - (i64.store offset=0x179 align=1 (i32.const 0) (get_local 0x179)) - (i64.store offset=0x17a align=1 (i32.const 0) (get_local 0x17a)) - (i64.store offset=0x17b align=1 (i32.const 0) (get_local 0x17b)) - (i64.store offset=0x17c align=1 (i32.const 0) (get_local 0x17c)) - (i64.store offset=0x17d align=1 (i32.const 0) (get_local 0x17d)) - (i64.store offset=0x17e align=1 (i32.const 0) (get_local 0x17e)) - (i64.store offset=0x17f align=1 (i32.const 0) (get_local 0x17f)) - (i64.store offset=0x180 align=1 (i32.const 0) (get_local 0x180)) - (i64.store offset=0x181 align=1 (i32.const 0) (get_local 0x181)) - (i64.store offset=0x182 align=1 (i32.const 0) (get_local 0x182)) - (i64.store offset=0x183 align=1 (i32.const 0) (get_local 0x183)) - (i64.store offset=0x184 align=1 (i32.const 0) (get_local 0x184)) - (i64.store offset=0x185 align=1 (i32.const 0) (get_local 0x185)) - (i64.store offset=0x186 align=1 (i32.const 0) (get_local 0x186)) - (i64.store offset=0x187 align=1 (i32.const 0) (get_local 0x187)) - (i64.store offset=0x188 align=1 (i32.const 0) (get_local 0x188)) - (i64.store offset=0x189 align=1 (i32.const 0) (get_local 0x189)) - (i64.store offset=0x18a align=1 (i32.const 0) (get_local 0x18a)) - (i64.store offset=0x18b align=1 (i32.const 0) (get_local 0x18b)) - (i64.store offset=0x18c align=1 (i32.const 0) (get_local 0x18c)) - (i64.store offset=0x18d align=1 (i32.const 0) (get_local 0x18d)) - (i64.store offset=0x18e align=1 (i32.const 0) (get_local 0x18e)) - (i64.store offset=0x18f align=1 (i32.const 0) (get_local 0x18f)) - (i64.store offset=0x190 align=1 (i32.const 0) (get_local 0x190)) - (i64.store offset=0x191 align=1 (i32.const 0) (get_local 0x191)) - (i64.store offset=0x192 align=1 (i32.const 0) (get_local 0x192)) - (i64.store offset=0x193 align=1 (i32.const 0) (get_local 0x193)) - (i64.store offset=0x194 align=1 (i32.const 0) (get_local 0x194)) - (i64.store offset=0x195 align=1 (i32.const 0) (get_local 0x195)) - (i64.store offset=0x196 align=1 (i32.const 0) (get_local 0x196)) - (i64.store offset=0x197 align=1 (i32.const 0) (get_local 0x197)) - (i64.store offset=0x198 align=1 (i32.const 0) (get_local 0x198)) - (i64.store offset=0x199 align=1 (i32.const 0) (get_local 0x199)) - (i64.store offset=0x19a align=1 (i32.const 0) (get_local 0x19a)) - (i64.store offset=0x19b align=1 (i32.const 0) (get_local 0x19b)) - (i64.store offset=0x19c align=1 (i32.const 0) (get_local 0x19c)) - (i64.store offset=0x19d align=1 (i32.const 0) (get_local 0x19d)) - (i64.store offset=0x19e align=1 (i32.const 0) (get_local 0x19e)) - (i64.store offset=0x19f align=1 (i32.const 0) (get_local 0x19f)) - (i64.store offset=0x1a0 align=1 (i32.const 0) (get_local 0x1a0)) - (i64.store offset=0x1a1 align=1 (i32.const 0) (get_local 0x1a1)) - (i64.store offset=0x1a2 align=1 (i32.const 0) (get_local 0x1a2)) - (i64.store offset=0x1a3 align=1 (i32.const 0) (get_local 0x1a3)) - (i64.store offset=0x1a4 align=1 (i32.const 0) (get_local 0x1a4)) - (i64.store offset=0x1a5 align=1 (i32.const 0) (get_local 0x1a5)) - (i64.store offset=0x1a6 align=1 (i32.const 0) (get_local 0x1a6)) - (i64.store offset=0x1a7 align=1 (i32.const 0) (get_local 0x1a7)) - (i64.store offset=0x1a8 align=1 (i32.const 0) (get_local 0x1a8)) - (i64.store offset=0x1a9 align=1 (i32.const 0) (get_local 0x1a9)) - (i64.store offset=0x1aa align=1 (i32.const 0) (get_local 0x1aa)) - (i64.store offset=0x1ab align=1 (i32.const 0) (get_local 0x1ab)) - (i64.store offset=0x1ac align=1 (i32.const 0) (get_local 0x1ac)) - (i64.store offset=0x1ad align=1 (i32.const 0) (get_local 0x1ad)) - (i64.store offset=0x1ae align=1 (i32.const 0) (get_local 0x1ae)) - (i64.store offset=0x1af align=1 (i32.const 0) (get_local 0x1af)) - (i64.store offset=0x1b0 align=1 (i32.const 0) (get_local 0x1b0)) - (i64.store offset=0x1b1 align=1 (i32.const 0) (get_local 0x1b1)) - (i64.store offset=0x1b2 align=1 (i32.const 0) (get_local 0x1b2)) - (i64.store offset=0x1b3 align=1 (i32.const 0) (get_local 0x1b3)) - (i64.store offset=0x1b4 align=1 (i32.const 0) (get_local 0x1b4)) - (i64.store offset=0x1b5 align=1 (i32.const 0) (get_local 0x1b5)) - (i64.store offset=0x1b6 align=1 (i32.const 0) (get_local 0x1b6)) - (i64.store offset=0x1b7 align=1 (i32.const 0) (get_local 0x1b7)) - (i64.store offset=0x1b8 align=1 (i32.const 0) (get_local 0x1b8)) - (i64.store offset=0x1b9 align=1 (i32.const 0) (get_local 0x1b9)) - (i64.store offset=0x1ba align=1 (i32.const 0) (get_local 0x1ba)) - (i64.store offset=0x1bb align=1 (i32.const 0) (get_local 0x1bb)) - (i64.store offset=0x1bc align=1 (i32.const 0) (get_local 0x1bc)) - (i64.store offset=0x1bd align=1 (i32.const 0) (get_local 0x1bd)) - (i64.store offset=0x1be align=1 (i32.const 0) (get_local 0x1be)) - (i64.store offset=0x1bf align=1 (i32.const 0) (get_local 0x1bf)) - (i64.store offset=0x1c0 align=1 (i32.const 0) (get_local 0x1c0)) - (i64.store offset=0x1c1 align=1 (i32.const 0) (get_local 0x1c1)) - (i64.store offset=0x1c2 align=1 (i32.const 0) (get_local 0x1c2)) - (i64.store offset=0x1c3 align=1 (i32.const 0) (get_local 0x1c3)) - (i64.store offset=0x1c4 align=1 (i32.const 0) (get_local 0x1c4)) - (i64.store offset=0x1c5 align=1 (i32.const 0) (get_local 0x1c5)) - (i64.store offset=0x1c6 align=1 (i32.const 0) (get_local 0x1c6)) - (i64.store offset=0x1c7 align=1 (i32.const 0) (get_local 0x1c7)) - (i64.store offset=0x1c8 align=1 (i32.const 0) (get_local 0x1c8)) - (i64.store offset=0x1c9 align=1 (i32.const 0) (get_local 0x1c9)) - (i64.store offset=0x1ca align=1 (i32.const 0) (get_local 0x1ca)) - (i64.store offset=0x1cb align=1 (i32.const 0) (get_local 0x1cb)) - (i64.store offset=0x1cc align=1 (i32.const 0) (get_local 0x1cc)) - (i64.store offset=0x1cd align=1 (i32.const 0) (get_local 0x1cd)) - (i64.store offset=0x1ce align=1 (i32.const 0) (get_local 0x1ce)) - (i64.store offset=0x1cf align=1 (i32.const 0) (get_local 0x1cf)) - (i64.store offset=0x1d0 align=1 (i32.const 0) (get_local 0x1d0)) - (i64.store offset=0x1d1 align=1 (i32.const 0) (get_local 0x1d1)) - (i64.store offset=0x1d2 align=1 (i32.const 0) (get_local 0x1d2)) - (i64.store offset=0x1d3 align=1 (i32.const 0) (get_local 0x1d3)) - (i64.store offset=0x1d4 align=1 (i32.const 0) (get_local 0x1d4)) - (i64.store offset=0x1d5 align=1 (i32.const 0) (get_local 0x1d5)) - (i64.store offset=0x1d6 align=1 (i32.const 0) (get_local 0x1d6)) - (i64.store offset=0x1d7 align=1 (i32.const 0) (get_local 0x1d7)) - (i64.store offset=0x1d8 align=1 (i32.const 0) (get_local 0x1d8)) - (i64.store offset=0x1d9 align=1 (i32.const 0) (get_local 0x1d9)) - (i64.store offset=0x1da align=1 (i32.const 0) (get_local 0x1da)) - (i64.store offset=0x1db align=1 (i32.const 0) (get_local 0x1db)) - (i64.store offset=0x1dc align=1 (i32.const 0) (get_local 0x1dc)) - (i64.store offset=0x1dd align=1 (i32.const 0) (get_local 0x1dd)) - (i64.store offset=0x1de align=1 (i32.const 0) (get_local 0x1de)) - (i64.store offset=0x1df align=1 (i32.const 0) (get_local 0x1df)) - (i64.store offset=0x1e0 align=1 (i32.const 0) (get_local 0x1e0)) - (i64.store offset=0x1e1 align=1 (i32.const 0) (get_local 0x1e1)) - (i64.store offset=0x1e2 align=1 (i32.const 0) (get_local 0x1e2)) - (i64.store offset=0x1e3 align=1 (i32.const 0) (get_local 0x1e3)) - (i64.store offset=0x1e4 align=1 (i32.const 0) (get_local 0x1e4)) - (i64.store offset=0x1e5 align=1 (i32.const 0) (get_local 0x1e5)) - (i64.store offset=0x1e6 align=1 (i32.const 0) (get_local 0x1e6)) - (i64.store offset=0x1e7 align=1 (i32.const 0) (get_local 0x1e7)) - (i64.store offset=0x1e8 align=1 (i32.const 0) (get_local 0x1e8)) - (i64.store offset=0x1e9 align=1 (i32.const 0) (get_local 0x1e9)) - (i64.store offset=0x1ea align=1 (i32.const 0) (get_local 0x1ea)) - (i64.store offset=0x1eb align=1 (i32.const 0) (get_local 0x1eb)) - (i64.store offset=0x1ec align=1 (i32.const 0) (get_local 0x1ec)) - (i64.store offset=0x1ed align=1 (i32.const 0) (get_local 0x1ed)) - (i64.store offset=0x1ee align=1 (i32.const 0) (get_local 0x1ee)) - (i64.store offset=0x1ef align=1 (i32.const 0) (get_local 0x1ef)) - (i64.store offset=0x1f0 align=1 (i32.const 0) (get_local 0x1f0)) - (i64.store offset=0x1f1 align=1 (i32.const 0) (get_local 0x1f1)) - (i64.store offset=0x1f2 align=1 (i32.const 0) (get_local 0x1f2)) - (i64.store offset=0x1f3 align=1 (i32.const 0) (get_local 0x1f3)) - (i64.store offset=0x1f4 align=1 (i32.const 0) (get_local 0x1f4)) - (i64.store offset=0x1f5 align=1 (i32.const 0) (get_local 0x1f5)) - (i64.store offset=0x1f6 align=1 (i32.const 0) (get_local 0x1f6)) - (i64.store offset=0x1f7 align=1 (i32.const 0) (get_local 0x1f7)) - (i64.store offset=0x1f8 align=1 (i32.const 0) (get_local 0x1f8)) - (i64.store offset=0x1f9 align=1 (i32.const 0) (get_local 0x1f9)) - (i64.store offset=0x1fa align=1 (i32.const 0) (get_local 0x1fa)) - (i64.store offset=0x1fb align=1 (i32.const 0) (get_local 0x1fb)) - (i64.store offset=0x1fc align=1 (i32.const 0) (get_local 0x1fc)) - (i64.store offset=0x1fd align=1 (i32.const 0) (get_local 0x1fd)) - (i64.store offset=0x1fe align=1 (i32.const 0) (get_local 0x1fe)) - (i64.store offset=0x1ff align=1 (i32.const 0) (get_local 0x1ff)) - (i64.store offset=0x200 align=1 (i32.const 0) (get_local 0x200)) - (i64.store offset=0x201 align=1 (i32.const 0) (get_local 0x201)) - (i64.store offset=0x202 align=1 (i32.const 0) (get_local 0x202)) - (i64.store offset=0x203 align=1 (i32.const 0) (get_local 0x203)) - (i64.store offset=0x204 align=1 (i32.const 0) (get_local 0x204)) - (i64.store offset=0x205 align=1 (i32.const 0) (get_local 0x205)) - (i64.store offset=0x206 align=1 (i32.const 0) (get_local 0x206)) - (i64.store offset=0x207 align=1 (i32.const 0) (get_local 0x207)) - (i64.store offset=0x208 align=1 (i32.const 0) (get_local 0x208)) - (i64.store offset=0x209 align=1 (i32.const 0) (get_local 0x209)) - (i64.store offset=0x20a align=1 (i32.const 0) (get_local 0x20a)) - (i64.store offset=0x20b align=1 (i32.const 0) (get_local 0x20b)) - (i64.store offset=0x20c align=1 (i32.const 0) (get_local 0x20c)) - (i64.store offset=0x20d align=1 (i32.const 0) (get_local 0x20d)) - (i64.store offset=0x20e align=1 (i32.const 0) (get_local 0x20e)) - (i64.store offset=0x20f align=1 (i32.const 0) (get_local 0x20f)) - (i64.store offset=0x210 align=1 (i32.const 0) (get_local 0x210)) - (i64.store offset=0x211 align=1 (i32.const 0) (get_local 0x211)) - (i64.store offset=0x212 align=1 (i32.const 0) (get_local 0x212)) - (i64.store offset=0x213 align=1 (i32.const 0) (get_local 0x213)) - (i64.store offset=0x214 align=1 (i32.const 0) (get_local 0x214)) - (i64.store offset=0x215 align=1 (i32.const 0) (get_local 0x215)) - (i64.store offset=0x216 align=1 (i32.const 0) (get_local 0x216)) - (i64.store offset=0x217 align=1 (i32.const 0) (get_local 0x217)) - (i64.store offset=0x218 align=1 (i32.const 0) (get_local 0x218)) - (i64.store offset=0x219 align=1 (i32.const 0) (get_local 0x219)) - (i64.store offset=0x21a align=1 (i32.const 0) (get_local 0x21a)) - (i64.store offset=0x21b align=1 (i32.const 0) (get_local 0x21b)) - (i64.store offset=0x21c align=1 (i32.const 0) (get_local 0x21c)) - (i64.store offset=0x21d align=1 (i32.const 0) (get_local 0x21d)) - (i64.store offset=0x21e align=1 (i32.const 0) (get_local 0x21e)) - (i64.store offset=0x21f align=1 (i32.const 0) (get_local 0x21f)) - (i64.store offset=0x220 align=1 (i32.const 0) (get_local 0x220)) - (i64.store offset=0x221 align=1 (i32.const 0) (get_local 0x221)) - (i64.store offset=0x222 align=1 (i32.const 0) (get_local 0x222)) - (i64.store offset=0x223 align=1 (i32.const 0) (get_local 0x223)) - (i64.store offset=0x224 align=1 (i32.const 0) (get_local 0x224)) - (i64.store offset=0x225 align=1 (i32.const 0) (get_local 0x225)) - (i64.store offset=0x226 align=1 (i32.const 0) (get_local 0x226)) - (i64.store offset=0x227 align=1 (i32.const 0) (get_local 0x227)) - (i64.store offset=0x228 align=1 (i32.const 0) (get_local 0x228)) - (i64.store offset=0x229 align=1 (i32.const 0) (get_local 0x229)) - (i64.store offset=0x22a align=1 (i32.const 0) (get_local 0x22a)) - (i64.store offset=0x22b align=1 (i32.const 0) (get_local 0x22b)) - (i64.store offset=0x22c align=1 (i32.const 0) (get_local 0x22c)) - (i64.store offset=0x22d align=1 (i32.const 0) (get_local 0x22d)) - (i64.store offset=0x22e align=1 (i32.const 0) (get_local 0x22e)) - (i64.store offset=0x22f align=1 (i32.const 0) (get_local 0x22f)) - (i64.store offset=0x230 align=1 (i32.const 0) (get_local 0x230)) - (i64.store offset=0x231 align=1 (i32.const 0) (get_local 0x231)) - (i64.store offset=0x232 align=1 (i32.const 0) (get_local 0x232)) - (i64.store offset=0x233 align=1 (i32.const 0) (get_local 0x233)) - (i64.store offset=0x234 align=1 (i32.const 0) (get_local 0x234)) - (i64.store offset=0x235 align=1 (i32.const 0) (get_local 0x235)) - (i64.store offset=0x236 align=1 (i32.const 0) (get_local 0x236)) - (i64.store offset=0x237 align=1 (i32.const 0) (get_local 0x237)) - (i64.store offset=0x238 align=1 (i32.const 0) (get_local 0x238)) - (i64.store offset=0x239 align=1 (i32.const 0) (get_local 0x239)) - (i64.store offset=0x23a align=1 (i32.const 0) (get_local 0x23a)) - (i64.store offset=0x23b align=1 (i32.const 0) (get_local 0x23b)) - (i64.store offset=0x23c align=1 (i32.const 0) (get_local 0x23c)) - (i64.store offset=0x23d align=1 (i32.const 0) (get_local 0x23d)) - (i64.store offset=0x23e align=1 (i32.const 0) (get_local 0x23e)) - (i64.store offset=0x23f align=1 (i32.const 0) (get_local 0x23f)) - (i64.store offset=0x240 align=1 (i32.const 0) (get_local 0x240)) - (i64.store offset=0x241 align=1 (i32.const 0) (get_local 0x241)) - (i64.store offset=0x242 align=1 (i32.const 0) (get_local 0x242)) - (i64.store offset=0x243 align=1 (i32.const 0) (get_local 0x243)) - (i64.store offset=0x244 align=1 (i32.const 0) (get_local 0x244)) - (i64.store offset=0x245 align=1 (i32.const 0) (get_local 0x245)) - (i64.store offset=0x246 align=1 (i32.const 0) (get_local 0x246)) - (i64.store offset=0x247 align=1 (i32.const 0) (get_local 0x247)) - (i64.store offset=0x248 align=1 (i32.const 0) (get_local 0x248)) - (i64.store offset=0x249 align=1 (i32.const 0) (get_local 0x249)) - (i64.store offset=0x24a align=1 (i32.const 0) (get_local 0x24a)) - (i64.store offset=0x24b align=1 (i32.const 0) (get_local 0x24b)) - (i64.store offset=0x24c align=1 (i32.const 0) (get_local 0x24c)) - (i64.store offset=0x24d align=1 (i32.const 0) (get_local 0x24d)) - (i64.store offset=0x24e align=1 (i32.const 0) (get_local 0x24e)) - (i64.store offset=0x24f align=1 (i32.const 0) (get_local 0x24f)) - (i64.store offset=0x250 align=1 (i32.const 0) (get_local 0x250)) - (i64.store offset=0x251 align=1 (i32.const 0) (get_local 0x251)) - (i64.store offset=0x252 align=1 (i32.const 0) (get_local 0x252)) - (i64.store offset=0x253 align=1 (i32.const 0) (get_local 0x253)) - (i64.store offset=0x254 align=1 (i32.const 0) (get_local 0x254)) - (i64.store offset=0x255 align=1 (i32.const 0) (get_local 0x255)) - (i64.store offset=0x256 align=1 (i32.const 0) (get_local 0x256)) - (i64.store offset=0x257 align=1 (i32.const 0) (get_local 0x257)) - (i64.store offset=0x258 align=1 (i32.const 0) (get_local 0x258)) - (i64.store offset=0x259 align=1 (i32.const 0) (get_local 0x259)) - (i64.store offset=0x25a align=1 (i32.const 0) (get_local 0x25a)) - (i64.store offset=0x25b align=1 (i32.const 0) (get_local 0x25b)) - (i64.store offset=0x25c align=1 (i32.const 0) (get_local 0x25c)) - (i64.store offset=0x25d align=1 (i32.const 0) (get_local 0x25d)) - (i64.store offset=0x25e align=1 (i32.const 0) (get_local 0x25e)) - (i64.store offset=0x25f align=1 (i32.const 0) (get_local 0x25f)) - (i64.store offset=0x260 align=1 (i32.const 0) (get_local 0x260)) - (i64.store offset=0x261 align=1 (i32.const 0) (get_local 0x261)) - (i64.store offset=0x262 align=1 (i32.const 0) (get_local 0x262)) - (i64.store offset=0x263 align=1 (i32.const 0) (get_local 0x263)) - (i64.store offset=0x264 align=1 (i32.const 0) (get_local 0x264)) - (i64.store offset=0x265 align=1 (i32.const 0) (get_local 0x265)) - (i64.store offset=0x266 align=1 (i32.const 0) (get_local 0x266)) - (i64.store offset=0x267 align=1 (i32.const 0) (get_local 0x267)) - (i64.store offset=0x268 align=1 (i32.const 0) (get_local 0x268)) - (i64.store offset=0x269 align=1 (i32.const 0) (get_local 0x269)) - (i64.store offset=0x26a align=1 (i32.const 0) (get_local 0x26a)) - (i64.store offset=0x26b align=1 (i32.const 0) (get_local 0x26b)) - (i64.store offset=0x26c align=1 (i32.const 0) (get_local 0x26c)) - (i64.store offset=0x26d align=1 (i32.const 0) (get_local 0x26d)) - (i64.store offset=0x26e align=1 (i32.const 0) (get_local 0x26e)) - (i64.store offset=0x26f align=1 (i32.const 0) (get_local 0x26f)) - (i64.store offset=0x270 align=1 (i32.const 0) (get_local 0x270)) - (i64.store offset=0x271 align=1 (i32.const 0) (get_local 0x271)) - (i64.store offset=0x272 align=1 (i32.const 0) (get_local 0x272)) - (i64.store offset=0x273 align=1 (i32.const 0) (get_local 0x273)) - (i64.store offset=0x274 align=1 (i32.const 0) (get_local 0x274)) - (i64.store offset=0x275 align=1 (i32.const 0) (get_local 0x275)) - (i64.store offset=0x276 align=1 (i32.const 0) (get_local 0x276)) - (i64.store offset=0x277 align=1 (i32.const 0) (get_local 0x277)) - (i64.store offset=0x278 align=1 (i32.const 0) (get_local 0x278)) - (i64.store offset=0x279 align=1 (i32.const 0) (get_local 0x279)) - (i64.store offset=0x27a align=1 (i32.const 0) (get_local 0x27a)) - (i64.store offset=0x27b align=1 (i32.const 0) (get_local 0x27b)) - (i64.store offset=0x27c align=1 (i32.const 0) (get_local 0x27c)) - (i64.store offset=0x27d align=1 (i32.const 0) (get_local 0x27d)) - (i64.store offset=0x27e align=1 (i32.const 0) (get_local 0x27e)) - (i64.store offset=0x27f align=1 (i32.const 0) (get_local 0x27f)) - (i64.store offset=0x280 align=1 (i32.const 0) (get_local 0x280)) - (i64.store offset=0x281 align=1 (i32.const 0) (get_local 0x281)) - (i64.store offset=0x282 align=1 (i32.const 0) (get_local 0x282)) - (i64.store offset=0x283 align=1 (i32.const 0) (get_local 0x283)) - (i64.store offset=0x284 align=1 (i32.const 0) (get_local 0x284)) - (i64.store offset=0x285 align=1 (i32.const 0) (get_local 0x285)) - (i64.store offset=0x286 align=1 (i32.const 0) (get_local 0x286)) - (i64.store offset=0x287 align=1 (i32.const 0) (get_local 0x287)) - (i64.store offset=0x288 align=1 (i32.const 0) (get_local 0x288)) - (i64.store offset=0x289 align=1 (i32.const 0) (get_local 0x289)) - (i64.store offset=0x28a align=1 (i32.const 0) (get_local 0x28a)) - (i64.store offset=0x28b align=1 (i32.const 0) (get_local 0x28b)) - (i64.store offset=0x28c align=1 (i32.const 0) (get_local 0x28c)) - (i64.store offset=0x28d align=1 (i32.const 0) (get_local 0x28d)) - (i64.store offset=0x28e align=1 (i32.const 0) (get_local 0x28e)) - (i64.store offset=0x28f align=1 (i32.const 0) (get_local 0x28f)) - (i64.store offset=0x290 align=1 (i32.const 0) (get_local 0x290)) - (i64.store offset=0x291 align=1 (i32.const 0) (get_local 0x291)) - (i64.store offset=0x292 align=1 (i32.const 0) (get_local 0x292)) - (i64.store offset=0x293 align=1 (i32.const 0) (get_local 0x293)) - (i64.store offset=0x294 align=1 (i32.const 0) (get_local 0x294)) - (i64.store offset=0x295 align=1 (i32.const 0) (get_local 0x295)) - (i64.store offset=0x296 align=1 (i32.const 0) (get_local 0x296)) - (i64.store offset=0x297 align=1 (i32.const 0) (get_local 0x297)) - (i64.store offset=0x298 align=1 (i32.const 0) (get_local 0x298)) - (i64.store offset=0x299 align=1 (i32.const 0) (get_local 0x299)) - (i64.store offset=0x29a align=1 (i32.const 0) (get_local 0x29a)) - (i64.store offset=0x29b align=1 (i32.const 0) (get_local 0x29b)) - (i64.store offset=0x29c align=1 (i32.const 0) (get_local 0x29c)) - (i64.store offset=0x29d align=1 (i32.const 0) (get_local 0x29d)) - (i64.store offset=0x29e align=1 (i32.const 0) (get_local 0x29e)) - (i64.store offset=0x29f align=1 (i32.const 0) (get_local 0x29f)) - (i64.store offset=0x2a0 align=1 (i32.const 0) (get_local 0x2a0)) - (i64.store offset=0x2a1 align=1 (i32.const 0) (get_local 0x2a1)) - (i64.store offset=0x2a2 align=1 (i32.const 0) (get_local 0x2a2)) - (i64.store offset=0x2a3 align=1 (i32.const 0) (get_local 0x2a3)) - (i64.store offset=0x2a4 align=1 (i32.const 0) (get_local 0x2a4)) - (i64.store offset=0x2a5 align=1 (i32.const 0) (get_local 0x2a5)) - (i64.store offset=0x2a6 align=1 (i32.const 0) (get_local 0x2a6)) - (i64.store offset=0x2a7 align=1 (i32.const 0) (get_local 0x2a7)) - (i64.store offset=0x2a8 align=1 (i32.const 0) (get_local 0x2a8)) - (i64.store offset=0x2a9 align=1 (i32.const 0) (get_local 0x2a9)) - (i64.store offset=0x2aa align=1 (i32.const 0) (get_local 0x2aa)) - (i64.store offset=0x2ab align=1 (i32.const 0) (get_local 0x2ab)) - (i64.store offset=0x2ac align=1 (i32.const 0) (get_local 0x2ac)) - (i64.store offset=0x2ad align=1 (i32.const 0) (get_local 0x2ad)) - (i64.store offset=0x2ae align=1 (i32.const 0) (get_local 0x2ae)) - (i64.store offset=0x2af align=1 (i32.const 0) (get_local 0x2af)) - (i64.store offset=0x2b0 align=1 (i32.const 0) (get_local 0x2b0)) - (i64.store offset=0x2b1 align=1 (i32.const 0) (get_local 0x2b1)) - (i64.store offset=0x2b2 align=1 (i32.const 0) (get_local 0x2b2)) - (i64.store offset=0x2b3 align=1 (i32.const 0) (get_local 0x2b3)) - (i64.store offset=0x2b4 align=1 (i32.const 0) (get_local 0x2b4)) - (i64.store offset=0x2b5 align=1 (i32.const 0) (get_local 0x2b5)) - (i64.store offset=0x2b6 align=1 (i32.const 0) (get_local 0x2b6)) - (i64.store offset=0x2b7 align=1 (i32.const 0) (get_local 0x2b7)) - (i64.store offset=0x2b8 align=1 (i32.const 0) (get_local 0x2b8)) - (i64.store offset=0x2b9 align=1 (i32.const 0) (get_local 0x2b9)) - (i64.store offset=0x2ba align=1 (i32.const 0) (get_local 0x2ba)) - (i64.store offset=0x2bb align=1 (i32.const 0) (get_local 0x2bb)) - (i64.store offset=0x2bc align=1 (i32.const 0) (get_local 0x2bc)) - (i64.store offset=0x2bd align=1 (i32.const 0) (get_local 0x2bd)) - (i64.store offset=0x2be align=1 (i32.const 0) (get_local 0x2be)) - (i64.store offset=0x2bf align=1 (i32.const 0) (get_local 0x2bf)) - (i64.store offset=0x2c0 align=1 (i32.const 0) (get_local 0x2c0)) - (i64.store offset=0x2c1 align=1 (i32.const 0) (get_local 0x2c1)) - (i64.store offset=0x2c2 align=1 (i32.const 0) (get_local 0x2c2)) - (i64.store offset=0x2c3 align=1 (i32.const 0) (get_local 0x2c3)) - (i64.store offset=0x2c4 align=1 (i32.const 0) (get_local 0x2c4)) - (i64.store offset=0x2c5 align=1 (i32.const 0) (get_local 0x2c5)) - (i64.store offset=0x2c6 align=1 (i32.const 0) (get_local 0x2c6)) - (i64.store offset=0x2c7 align=1 (i32.const 0) (get_local 0x2c7)) - (i64.store offset=0x2c8 align=1 (i32.const 0) (get_local 0x2c8)) - (i64.store offset=0x2c9 align=1 (i32.const 0) (get_local 0x2c9)) - (i64.store offset=0x2ca align=1 (i32.const 0) (get_local 0x2ca)) - (i64.store offset=0x2cb align=1 (i32.const 0) (get_local 0x2cb)) - (i64.store offset=0x2cc align=1 (i32.const 0) (get_local 0x2cc)) - (i64.store offset=0x2cd align=1 (i32.const 0) (get_local 0x2cd)) - (i64.store offset=0x2ce align=1 (i32.const 0) (get_local 0x2ce)) - (i64.store offset=0x2cf align=1 (i32.const 0) (get_local 0x2cf)) - (i64.store offset=0x2d0 align=1 (i32.const 0) (get_local 0x2d0)) - (i64.store offset=0x2d1 align=1 (i32.const 0) (get_local 0x2d1)) - (i64.store offset=0x2d2 align=1 (i32.const 0) (get_local 0x2d2)) - (i64.store offset=0x2d3 align=1 (i32.const 0) (get_local 0x2d3)) - (i64.store offset=0x2d4 align=1 (i32.const 0) (get_local 0x2d4)) - (i64.store offset=0x2d5 align=1 (i32.const 0) (get_local 0x2d5)) - (i64.store offset=0x2d6 align=1 (i32.const 0) (get_local 0x2d6)) - (i64.store offset=0x2d7 align=1 (i32.const 0) (get_local 0x2d7)) - (i64.store offset=0x2d8 align=1 (i32.const 0) (get_local 0x2d8)) - (i64.store offset=0x2d9 align=1 (i32.const 0) (get_local 0x2d9)) - (i64.store offset=0x2da align=1 (i32.const 0) (get_local 0x2da)) - (i64.store offset=0x2db align=1 (i32.const 0) (get_local 0x2db)) - (i64.store offset=0x2dc align=1 (i32.const 0) (get_local 0x2dc)) - (i64.store offset=0x2dd align=1 (i32.const 0) (get_local 0x2dd)) - (i64.store offset=0x2de align=1 (i32.const 0) (get_local 0x2de)) - (i64.store offset=0x2df align=1 (i32.const 0) (get_local 0x2df)) - (i64.store offset=0x2e0 align=1 (i32.const 0) (get_local 0x2e0)) - (i64.store offset=0x2e1 align=1 (i32.const 0) (get_local 0x2e1)) - (i64.store offset=0x2e2 align=1 (i32.const 0) (get_local 0x2e2)) - (i64.store offset=0x2e3 align=1 (i32.const 0) (get_local 0x2e3)) - (i64.store offset=0x2e4 align=1 (i32.const 0) (get_local 0x2e4)) - (i64.store offset=0x2e5 align=1 (i32.const 0) (get_local 0x2e5)) - (i64.store offset=0x2e6 align=1 (i32.const 0) (get_local 0x2e6)) - (i64.store offset=0x2e7 align=1 (i32.const 0) (get_local 0x2e7)) - (i64.store offset=0x2e8 align=1 (i32.const 0) (get_local 0x2e8)) - (i64.store offset=0x2e9 align=1 (i32.const 0) (get_local 0x2e9)) - (i64.store offset=0x2ea align=1 (i32.const 0) (get_local 0x2ea)) - (i64.store offset=0x2eb align=1 (i32.const 0) (get_local 0x2eb)) - (i64.store offset=0x2ec align=1 (i32.const 0) (get_local 0x2ec)) - (i64.store offset=0x2ed align=1 (i32.const 0) (get_local 0x2ed)) - (i64.store offset=0x2ee align=1 (i32.const 0) (get_local 0x2ee)) - (i64.store offset=0x2ef align=1 (i32.const 0) (get_local 0x2ef)) - (i64.store offset=0x2f0 align=1 (i32.const 0) (get_local 0x2f0)) - (i64.store offset=0x2f1 align=1 (i32.const 0) (get_local 0x2f1)) - (i64.store offset=0x2f2 align=1 (i32.const 0) (get_local 0x2f2)) - (i64.store offset=0x2f3 align=1 (i32.const 0) (get_local 0x2f3)) - (i64.store offset=0x2f4 align=1 (i32.const 0) (get_local 0x2f4)) - (i64.store offset=0x2f5 align=1 (i32.const 0) (get_local 0x2f5)) - (i64.store offset=0x2f6 align=1 (i32.const 0) (get_local 0x2f6)) - (i64.store offset=0x2f7 align=1 (i32.const 0) (get_local 0x2f7)) - (i64.store offset=0x2f8 align=1 (i32.const 0) (get_local 0x2f8)) - (i64.store offset=0x2f9 align=1 (i32.const 0) (get_local 0x2f9)) - (i64.store offset=0x2fa align=1 (i32.const 0) (get_local 0x2fa)) - (i64.store offset=0x2fb align=1 (i32.const 0) (get_local 0x2fb)) - (i64.store offset=0x2fc align=1 (i32.const 0) (get_local 0x2fc)) - (i64.store offset=0x2fd align=1 (i32.const 0) (get_local 0x2fd)) - (i64.store offset=0x2fe align=1 (i32.const 0) (get_local 0x2fe)) - (i64.store offset=0x2ff align=1 (i32.const 0) (get_local 0x2ff)) - (i64.store offset=0x300 align=1 (i32.const 0) (get_local 0x300)) - (i64.store offset=0x301 align=1 (i32.const 0) (get_local 0x301)) - (i64.store offset=0x302 align=1 (i32.const 0) (get_local 0x302)) - (i64.store offset=0x303 align=1 (i32.const 0) (get_local 0x303)) - (i64.store offset=0x304 align=1 (i32.const 0) (get_local 0x304)) - (i64.store offset=0x305 align=1 (i32.const 0) (get_local 0x305)) - (i64.store offset=0x306 align=1 (i32.const 0) (get_local 0x306)) - (i64.store offset=0x307 align=1 (i32.const 0) (get_local 0x307)) - (i64.store offset=0x308 align=1 (i32.const 0) (get_local 0x308)) - (i64.store offset=0x309 align=1 (i32.const 0) (get_local 0x309)) - (i64.store offset=0x30a align=1 (i32.const 0) (get_local 0x30a)) - (i64.store offset=0x30b align=1 (i32.const 0) (get_local 0x30b)) - (i64.store offset=0x30c align=1 (i32.const 0) (get_local 0x30c)) - (i64.store offset=0x30d align=1 (i32.const 0) (get_local 0x30d)) - (i64.store offset=0x30e align=1 (i32.const 0) (get_local 0x30e)) - (i64.store offset=0x30f align=1 (i32.const 0) (get_local 0x30f)) - (i64.store offset=0x310 align=1 (i32.const 0) (get_local 0x310)) - (i64.store offset=0x311 align=1 (i32.const 0) (get_local 0x311)) - (i64.store offset=0x312 align=1 (i32.const 0) (get_local 0x312)) - (i64.store offset=0x313 align=1 (i32.const 0) (get_local 0x313)) - (i64.store offset=0x314 align=1 (i32.const 0) (get_local 0x314)) - (i64.store offset=0x315 align=1 (i32.const 0) (get_local 0x315)) - (i64.store offset=0x316 align=1 (i32.const 0) (get_local 0x316)) - (i64.store offset=0x317 align=1 (i32.const 0) (get_local 0x317)) - (i64.store offset=0x318 align=1 (i32.const 0) (get_local 0x318)) - (i64.store offset=0x319 align=1 (i32.const 0) (get_local 0x319)) - (i64.store offset=0x31a align=1 (i32.const 0) (get_local 0x31a)) - (i64.store offset=0x31b align=1 (i32.const 0) (get_local 0x31b)) - (i64.store offset=0x31c align=1 (i32.const 0) (get_local 0x31c)) - (i64.store offset=0x31d align=1 (i32.const 0) (get_local 0x31d)) - (i64.store offset=0x31e align=1 (i32.const 0) (get_local 0x31e)) - (i64.store offset=0x31f align=1 (i32.const 0) (get_local 0x31f)) - (i64.store offset=0x320 align=1 (i32.const 0) (get_local 0x320)) - (i64.store offset=0x321 align=1 (i32.const 0) (get_local 0x321)) - (i64.store offset=0x322 align=1 (i32.const 0) (get_local 0x322)) - (i64.store offset=0x323 align=1 (i32.const 0) (get_local 0x323)) - (i64.store offset=0x324 align=1 (i32.const 0) (get_local 0x324)) - (i64.store offset=0x325 align=1 (i32.const 0) (get_local 0x325)) - (i64.store offset=0x326 align=1 (i32.const 0) (get_local 0x326)) - (i64.store offset=0x327 align=1 (i32.const 0) (get_local 0x327)) - (i64.store offset=0x328 align=1 (i32.const 0) (get_local 0x328)) - (i64.store offset=0x329 align=1 (i32.const 0) (get_local 0x329)) - (i64.store offset=0x32a align=1 (i32.const 0) (get_local 0x32a)) - (i64.store offset=0x32b align=1 (i32.const 0) (get_local 0x32b)) - (i64.store offset=0x32c align=1 (i32.const 0) (get_local 0x32c)) - (i64.store offset=0x32d align=1 (i32.const 0) (get_local 0x32d)) - (i64.store offset=0x32e align=1 (i32.const 0) (get_local 0x32e)) - (i64.store offset=0x32f align=1 (i32.const 0) (get_local 0x32f)) - (i64.store offset=0x330 align=1 (i32.const 0) (get_local 0x330)) - (i64.store offset=0x331 align=1 (i32.const 0) (get_local 0x331)) - (i64.store offset=0x332 align=1 (i32.const 0) (get_local 0x332)) - (i64.store offset=0x333 align=1 (i32.const 0) (get_local 0x333)) - (i64.store offset=0x334 align=1 (i32.const 0) (get_local 0x334)) - (i64.store offset=0x335 align=1 (i32.const 0) (get_local 0x335)) - (i64.store offset=0x336 align=1 (i32.const 0) (get_local 0x336)) - (i64.store offset=0x337 align=1 (i32.const 0) (get_local 0x337)) - (i64.store offset=0x338 align=1 (i32.const 0) (get_local 0x338)) - (i64.store offset=0x339 align=1 (i32.const 0) (get_local 0x339)) - (i64.store offset=0x33a align=1 (i32.const 0) (get_local 0x33a)) - (i64.store offset=0x33b align=1 (i32.const 0) (get_local 0x33b)) - (i64.store offset=0x33c align=1 (i32.const 0) (get_local 0x33c)) - (i64.store offset=0x33d align=1 (i32.const 0) (get_local 0x33d)) - (i64.store offset=0x33e align=1 (i32.const 0) (get_local 0x33e)) - (i64.store offset=0x33f align=1 (i32.const 0) (get_local 0x33f)) - (i64.store offset=0x340 align=1 (i32.const 0) (get_local 0x340)) - (i64.store offset=0x341 align=1 (i32.const 0) (get_local 0x341)) - (i64.store offset=0x342 align=1 (i32.const 0) (get_local 0x342)) - (i64.store offset=0x343 align=1 (i32.const 0) (get_local 0x343)) - (i64.store offset=0x344 align=1 (i32.const 0) (get_local 0x344)) - (i64.store offset=0x345 align=1 (i32.const 0) (get_local 0x345)) - (i64.store offset=0x346 align=1 (i32.const 0) (get_local 0x346)) - (i64.store offset=0x347 align=1 (i32.const 0) (get_local 0x347)) - (i64.store offset=0x348 align=1 (i32.const 0) (get_local 0x348)) - (i64.store offset=0x349 align=1 (i32.const 0) (get_local 0x349)) - (i64.store offset=0x34a align=1 (i32.const 0) (get_local 0x34a)) - (i64.store offset=0x34b align=1 (i32.const 0) (get_local 0x34b)) - (i64.store offset=0x34c align=1 (i32.const 0) (get_local 0x34c)) - (i64.store offset=0x34d align=1 (i32.const 0) (get_local 0x34d)) - (i64.store offset=0x34e align=1 (i32.const 0) (get_local 0x34e)) - (i64.store offset=0x34f align=1 (i32.const 0) (get_local 0x34f)) - (i64.store offset=0x350 align=1 (i32.const 0) (get_local 0x350)) - (i64.store offset=0x351 align=1 (i32.const 0) (get_local 0x351)) - (i64.store offset=0x352 align=1 (i32.const 0) (get_local 0x352)) - (i64.store offset=0x353 align=1 (i32.const 0) (get_local 0x353)) - (i64.store offset=0x354 align=1 (i32.const 0) (get_local 0x354)) - (i64.store offset=0x355 align=1 (i32.const 0) (get_local 0x355)) - (i64.store offset=0x356 align=1 (i32.const 0) (get_local 0x356)) - (i64.store offset=0x357 align=1 (i32.const 0) (get_local 0x357)) - (i64.store offset=0x358 align=1 (i32.const 0) (get_local 0x358)) - (i64.store offset=0x359 align=1 (i32.const 0) (get_local 0x359)) - (i64.store offset=0x35a align=1 (i32.const 0) (get_local 0x35a)) - (i64.store offset=0x35b align=1 (i32.const 0) (get_local 0x35b)) - (i64.store offset=0x35c align=1 (i32.const 0) (get_local 0x35c)) - (i64.store offset=0x35d align=1 (i32.const 0) (get_local 0x35d)) - (i64.store offset=0x35e align=1 (i32.const 0) (get_local 0x35e)) - (i64.store offset=0x35f align=1 (i32.const 0) (get_local 0x35f)) - (i64.store offset=0x360 align=1 (i32.const 0) (get_local 0x360)) - (i64.store offset=0x361 align=1 (i32.const 0) (get_local 0x361)) - (i64.store offset=0x362 align=1 (i32.const 0) (get_local 0x362)) - (i64.store offset=0x363 align=1 (i32.const 0) (get_local 0x363)) - (i64.store offset=0x364 align=1 (i32.const 0) (get_local 0x364)) - (i64.store offset=0x365 align=1 (i32.const 0) (get_local 0x365)) - (i64.store offset=0x366 align=1 (i32.const 0) (get_local 0x366)) - (i64.store offset=0x367 align=1 (i32.const 0) (get_local 0x367)) - (i64.store offset=0x368 align=1 (i32.const 0) (get_local 0x368)) - (i64.store offset=0x369 align=1 (i32.const 0) (get_local 0x369)) - (i64.store offset=0x36a align=1 (i32.const 0) (get_local 0x36a)) - (i64.store offset=0x36b align=1 (i32.const 0) (get_local 0x36b)) - (i64.store offset=0x36c align=1 (i32.const 0) (get_local 0x36c)) - (i64.store offset=0x36d align=1 (i32.const 0) (get_local 0x36d)) - (i64.store offset=0x36e align=1 (i32.const 0) (get_local 0x36e)) - (i64.store offset=0x36f align=1 (i32.const 0) (get_local 0x36f)) - (i64.store offset=0x370 align=1 (i32.const 0) (get_local 0x370)) - (i64.store offset=0x371 align=1 (i32.const 0) (get_local 0x371)) - (i64.store offset=0x372 align=1 (i32.const 0) (get_local 0x372)) - (i64.store offset=0x373 align=1 (i32.const 0) (get_local 0x373)) - (i64.store offset=0x374 align=1 (i32.const 0) (get_local 0x374)) - (i64.store offset=0x375 align=1 (i32.const 0) (get_local 0x375)) - (i64.store offset=0x376 align=1 (i32.const 0) (get_local 0x376)) - (i64.store offset=0x377 align=1 (i32.const 0) (get_local 0x377)) - (i64.store offset=0x378 align=1 (i32.const 0) (get_local 0x378)) - (i64.store offset=0x379 align=1 (i32.const 0) (get_local 0x379)) - (i64.store offset=0x37a align=1 (i32.const 0) (get_local 0x37a)) - (i64.store offset=0x37b align=1 (i32.const 0) (get_local 0x37b)) - (i64.store offset=0x37c align=1 (i32.const 0) (get_local 0x37c)) - (i64.store offset=0x37d align=1 (i32.const 0) (get_local 0x37d)) - (i64.store offset=0x37e align=1 (i32.const 0) (get_local 0x37e)) - (i64.store offset=0x37f align=1 (i32.const 0) (get_local 0x37f)) - (i64.store offset=0x380 align=1 (i32.const 0) (get_local 0x380)) - (i64.store offset=0x381 align=1 (i32.const 0) (get_local 0x381)) - (i64.store offset=0x382 align=1 (i32.const 0) (get_local 0x382)) - (i64.store offset=0x383 align=1 (i32.const 0) (get_local 0x383)) - (i64.store offset=0x384 align=1 (i32.const 0) (get_local 0x384)) - (i64.store offset=0x385 align=1 (i32.const 0) (get_local 0x385)) - (i64.store offset=0x386 align=1 (i32.const 0) (get_local 0x386)) - (i64.store offset=0x387 align=1 (i32.const 0) (get_local 0x387)) - (i64.store offset=0x388 align=1 (i32.const 0) (get_local 0x388)) - (i64.store offset=0x389 align=1 (i32.const 0) (get_local 0x389)) - (i64.store offset=0x38a align=1 (i32.const 0) (get_local 0x38a)) - (i64.store offset=0x38b align=1 (i32.const 0) (get_local 0x38b)) - (i64.store offset=0x38c align=1 (i32.const 0) (get_local 0x38c)) - (i64.store offset=0x38d align=1 (i32.const 0) (get_local 0x38d)) - (i64.store offset=0x38e align=1 (i32.const 0) (get_local 0x38e)) - (i64.store offset=0x38f align=1 (i32.const 0) (get_local 0x38f)) - (i64.store offset=0x390 align=1 (i32.const 0) (get_local 0x390)) - (i64.store offset=0x391 align=1 (i32.const 0) (get_local 0x391)) - (i64.store offset=0x392 align=1 (i32.const 0) (get_local 0x392)) - (i64.store offset=0x393 align=1 (i32.const 0) (get_local 0x393)) - (i64.store offset=0x394 align=1 (i32.const 0) (get_local 0x394)) - (i64.store offset=0x395 align=1 (i32.const 0) (get_local 0x395)) - (i64.store offset=0x396 align=1 (i32.const 0) (get_local 0x396)) - (i64.store offset=0x397 align=1 (i32.const 0) (get_local 0x397)) - (i64.store offset=0x398 align=1 (i32.const 0) (get_local 0x398)) - (i64.store offset=0x399 align=1 (i32.const 0) (get_local 0x399)) - (i64.store offset=0x39a align=1 (i32.const 0) (get_local 0x39a)) - (i64.store offset=0x39b align=1 (i32.const 0) (get_local 0x39b)) - (i64.store offset=0x39c align=1 (i32.const 0) (get_local 0x39c)) - (i64.store offset=0x39d align=1 (i32.const 0) (get_local 0x39d)) - (i64.store offset=0x39e align=1 (i32.const 0) (get_local 0x39e)) - (i64.store offset=0x39f align=1 (i32.const 0) (get_local 0x39f)) - (i64.store offset=0x3a0 align=1 (i32.const 0) (get_local 0x3a0)) - (i64.store offset=0x3a1 align=1 (i32.const 0) (get_local 0x3a1)) - (i64.store offset=0x3a2 align=1 (i32.const 0) (get_local 0x3a2)) - (i64.store offset=0x3a3 align=1 (i32.const 0) (get_local 0x3a3)) - (i64.store offset=0x3a4 align=1 (i32.const 0) (get_local 0x3a4)) - (i64.store offset=0x3a5 align=1 (i32.const 0) (get_local 0x3a5)) - (i64.store offset=0x3a6 align=1 (i32.const 0) (get_local 0x3a6)) - (i64.store offset=0x3a7 align=1 (i32.const 0) (get_local 0x3a7)) - (i64.store offset=0x3a8 align=1 (i32.const 0) (get_local 0x3a8)) - (i64.store offset=0x3a9 align=1 (i32.const 0) (get_local 0x3a9)) - (i64.store offset=0x3aa align=1 (i32.const 0) (get_local 0x3aa)) - (i64.store offset=0x3ab align=1 (i32.const 0) (get_local 0x3ab)) - (i64.store offset=0x3ac align=1 (i32.const 0) (get_local 0x3ac)) - (i64.store offset=0x3ad align=1 (i32.const 0) (get_local 0x3ad)) - (i64.store offset=0x3ae align=1 (i32.const 0) (get_local 0x3ae)) - (i64.store offset=0x3af align=1 (i32.const 0) (get_local 0x3af)) - (i64.store offset=0x3b0 align=1 (i32.const 0) (get_local 0x3b0)) - (i64.store offset=0x3b1 align=1 (i32.const 0) (get_local 0x3b1)) - (i64.store offset=0x3b2 align=1 (i32.const 0) (get_local 0x3b2)) - (i64.store offset=0x3b3 align=1 (i32.const 0) (get_local 0x3b3)) - (i64.store offset=0x3b4 align=1 (i32.const 0) (get_local 0x3b4)) - (i64.store offset=0x3b5 align=1 (i32.const 0) (get_local 0x3b5)) - (i64.store offset=0x3b6 align=1 (i32.const 0) (get_local 0x3b6)) - (i64.store offset=0x3b7 align=1 (i32.const 0) (get_local 0x3b7)) - (i64.store offset=0x3b8 align=1 (i32.const 0) (get_local 0x3b8)) - (i64.store offset=0x3b9 align=1 (i32.const 0) (get_local 0x3b9)) - (i64.store offset=0x3ba align=1 (i32.const 0) (get_local 0x3ba)) - (i64.store offset=0x3bb align=1 (i32.const 0) (get_local 0x3bb)) - (i64.store offset=0x3bc align=1 (i32.const 0) (get_local 0x3bc)) - (i64.store offset=0x3bd align=1 (i32.const 0) (get_local 0x3bd)) - (i64.store offset=0x3be align=1 (i32.const 0) (get_local 0x3be)) - (i64.store offset=0x3bf align=1 (i32.const 0) (get_local 0x3bf)) - (i64.store offset=0x3c0 align=1 (i32.const 0) (get_local 0x3c0)) - (i64.store offset=0x3c1 align=1 (i32.const 0) (get_local 0x3c1)) - (i64.store offset=0x3c2 align=1 (i32.const 0) (get_local 0x3c2)) - (i64.store offset=0x3c3 align=1 (i32.const 0) (get_local 0x3c3)) - (i64.store offset=0x3c4 align=1 (i32.const 0) (get_local 0x3c4)) - (i64.store offset=0x3c5 align=1 (i32.const 0) (get_local 0x3c5)) - (i64.store offset=0x3c6 align=1 (i32.const 0) (get_local 0x3c6)) - (i64.store offset=0x3c7 align=1 (i32.const 0) (get_local 0x3c7)) - (i64.store offset=0x3c8 align=1 (i32.const 0) (get_local 0x3c8)) - (i64.store offset=0x3c9 align=1 (i32.const 0) (get_local 0x3c9)) - (i64.store offset=0x3ca align=1 (i32.const 0) (get_local 0x3ca)) - (i64.store offset=0x3cb align=1 (i32.const 0) (get_local 0x3cb)) - (i64.store offset=0x3cc align=1 (i32.const 0) (get_local 0x3cc)) - (i64.store offset=0x3cd align=1 (i32.const 0) (get_local 0x3cd)) - (i64.store offset=0x3ce align=1 (i32.const 0) (get_local 0x3ce)) - (i64.store offset=0x3cf align=1 (i32.const 0) (get_local 0x3cf)) - (i64.store offset=0x3d0 align=1 (i32.const 0) (get_local 0x3d0)) - (i64.store offset=0x3d1 align=1 (i32.const 0) (get_local 0x3d1)) - (i64.store offset=0x3d2 align=1 (i32.const 0) (get_local 0x3d2)) - (i64.store offset=0x3d3 align=1 (i32.const 0) (get_local 0x3d3)) - (i64.store offset=0x3d4 align=1 (i32.const 0) (get_local 0x3d4)) - (i64.store offset=0x3d5 align=1 (i32.const 0) (get_local 0x3d5)) - (i64.store offset=0x3d6 align=1 (i32.const 0) (get_local 0x3d6)) - (i64.store offset=0x3d7 align=1 (i32.const 0) (get_local 0x3d7)) - (i64.store offset=0x3d8 align=1 (i32.const 0) (get_local 0x3d8)) - (i64.store offset=0x3d9 align=1 (i32.const 0) (get_local 0x3d9)) - (i64.store offset=0x3da align=1 (i32.const 0) (get_local 0x3da)) - (i64.store offset=0x3db align=1 (i32.const 0) (get_local 0x3db)) - (i64.store offset=0x3dc align=1 (i32.const 0) (get_local 0x3dc)) - (i64.store offset=0x3dd align=1 (i32.const 0) (get_local 0x3dd)) - (i64.store offset=0x3de align=1 (i32.const 0) (get_local 0x3de)) - (i64.store offset=0x3df align=1 (i32.const 0) (get_local 0x3df)) - (i64.store offset=0x3e0 align=1 (i32.const 0) (get_local 0x3e0)) - (i64.store offset=0x3e1 align=1 (i32.const 0) (get_local 0x3e1)) - (i64.store offset=0x3e2 align=1 (i32.const 0) (get_local 0x3e2)) - (i64.store offset=0x3e3 align=1 (i32.const 0) (get_local 0x3e3)) - (i64.store offset=0x3e4 align=1 (i32.const 0) (get_local 0x3e4)) - (i64.store offset=0x3e5 align=1 (i32.const 0) (get_local 0x3e5)) - (i64.store offset=0x3e6 align=1 (i32.const 0) (get_local 0x3e6)) - (i64.store offset=0x3e7 align=1 (i32.const 0) (get_local 0x3e7)) - (i64.store offset=0x3e8 align=1 (i32.const 0) (get_local 0x3e8)) - (i64.store offset=0x3e9 align=1 (i32.const 0) (get_local 0x3e9)) - (i64.store offset=0x3ea align=1 (i32.const 0) (get_local 0x3ea)) - (i64.store offset=0x3eb align=1 (i32.const 0) (get_local 0x3eb)) - (i64.store offset=0x3ec align=1 (i32.const 0) (get_local 0x3ec)) - (i64.store offset=0x3ed align=1 (i32.const 0) (get_local 0x3ed)) - (i64.store offset=0x3ee align=1 (i32.const 0) (get_local 0x3ee)) - (i64.store offset=0x3ef align=1 (i32.const 0) (get_local 0x3ef)) - (i64.store offset=0x3f0 align=1 (i32.const 0) (get_local 0x3f0)) - (i64.store offset=0x3f1 align=1 (i32.const 0) (get_local 0x3f1)) - (i64.store offset=0x3f2 align=1 (i32.const 0) (get_local 0x3f2)) - (i64.store offset=0x3f3 align=1 (i32.const 0) (get_local 0x3f3)) - (i64.store offset=0x3f4 align=1 (i32.const 0) (get_local 0x3f4)) - (i64.store offset=0x3f5 align=1 (i32.const 0) (get_local 0x3f5)) - (i64.store offset=0x3f6 align=1 (i32.const 0) (get_local 0x3f6)) - (i64.store offset=0x3f7 align=1 (i32.const 0) (get_local 0x3f7)) - (i64.store offset=0x3f8 align=1 (i32.const 0) (get_local 0x3f8)) - (i64.store offset=0x3f9 align=1 (i32.const 0) (get_local 0x3f9)) - (i64.store offset=0x3fa align=1 (i32.const 0) (get_local 0x3fa)) - (i64.store offset=0x3fb align=1 (i32.const 0) (get_local 0x3fb)) - (i64.store offset=0x3fc align=1 (i32.const 0) (get_local 0x3fc)) - (i64.store offset=0x3fd align=1 (i32.const 0) (get_local 0x3fd)) - (i64.store offset=0x3fe align=1 (i32.const 0) (get_local 0x3fe)) - (i64.store offset=0x3ff align=1 (i32.const 0) (get_local 0x3ff)) - (i64.store offset=0x400 align=1 (i32.const 0) (get_local 0x400)) - (i64.store offset=0x401 align=1 (i32.const 0) (get_local 0x401)) - (i64.store offset=0x402 align=1 (i32.const 0) (get_local 0x402)) - (i64.store offset=0x403 align=1 (i32.const 0) (get_local 0x403)) - (i64.store offset=0x404 align=1 (i32.const 0) (get_local 0x404)) - (i64.store offset=0x405 align=1 (i32.const 0) (get_local 0x405)) - (i64.store offset=0x406 align=1 (i32.const 0) (get_local 0x406)) - (i64.store offset=0x407 align=1 (i32.const 0) (get_local 0x407)) - (i64.store offset=0x408 align=1 (i32.const 0) (get_local 0x408)) - (i64.store offset=0x409 align=1 (i32.const 0) (get_local 0x409)) - (i64.store offset=0x40a align=1 (i32.const 0) (get_local 0x40a)) - (i64.store offset=0x40b align=1 (i32.const 0) (get_local 0x40b)) - (i64.store offset=0x40c align=1 (i32.const 0) (get_local 0x40c)) - (i64.store offset=0x40d align=1 (i32.const 0) (get_local 0x40d)) - (i64.store offset=0x40e align=1 (i32.const 0) (get_local 0x40e)) - (i64.store offset=0x40f align=1 (i32.const 0) (get_local 0x40f)) - (i64.store offset=0x410 align=1 (i32.const 0) (get_local 0x410)) - (i64.store offset=0x411 align=1 (i32.const 0) (get_local 0x411)) - (i64.store offset=0x412 align=1 (i32.const 0) (get_local 0x412)) - (i64.store offset=0x413 align=1 (i32.const 0) (get_local 0x413)) - (i64.store offset=0x414 align=1 (i32.const 0) (get_local 0x414)) - (i64.store offset=0x415 align=1 (i32.const 0) (get_local 0x415)) - (i64.store offset=0x416 align=1 (i32.const 0) (get_local 0x416)) - (i64.store offset=0x417 align=1 (i32.const 0) (get_local 0x417)) - (i64.store offset=0x418 align=1 (i32.const 0) (get_local 0x418)) - (i64.store offset=0x419 align=1 (i32.const 0) (get_local 0x419)) - (i64.store offset=0x41a align=1 (i32.const 0) (get_local 0x41a)) - (i64.store offset=0x41b align=1 (i32.const 0) (get_local 0x41b)) - (i64.store offset=0x41c align=1 (i32.const 0) (get_local 0x41c)) - (i64.store offset=0x41d align=1 (i32.const 0) (get_local 0x41d)) - (i64.store offset=0x41e align=1 (i32.const 0) (get_local 0x41e)) - (i64.store offset=0x41f align=1 (i32.const 0) (get_local 0x41f)) - ) -) - -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 0)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 100)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 200)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 300)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 400)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 500)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 600)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 700)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 800)) "call stack exhausted") -(assert_exhaustion (invoke "test-guard-page-skip" (i32.const 900)) "call stack exhausted") \ No newline at end of file diff --git a/libraries/wasm-jit/Test/spec/stack.wast b/libraries/wasm-jit/Test/spec/stack.wast deleted file mode 100644 index b3f321ecacb..00000000000 --- a/libraries/wasm-jit/Test/spec/stack.wast +++ /dev/null @@ -1,132 +0,0 @@ -(module - (func (export "fac-expr") (param $n i64) (result i64) - (local $i i64) - (local $res i64) - (set_local $i (get_local $n)) - (set_local $res (i64.const 1)) - (block $done - (loop $loop - (if - (i64.eq (get_local $i) (i64.const 0)) - (then (br $done)) - (else - (set_local $res (i64.mul (get_local $i) (get_local $res))) - (set_local $i (i64.sub (get_local $i) (i64.const 1))) - ) - ) - (br $loop) - ) - ) - (get_local $res) - ) - - (func (export "fac-stack") (param $n i64) (result i64) - (local $i i64) - (local $res i64) - (get_local $n) - (set_local $i) - (i64.const 1) - (set_local $res) - (block $done - (loop $loop - (get_local $i) - (i64.const 0) - (i64.eq) - (if - (then (br $done)) - (else - (get_local $i) - (get_local $res) - (i64.mul) - (set_local $res) - (get_local $i) - (i64.const 1) - (i64.sub) - (set_local $i) - ) - ) - (br $loop) - ) - ) - (get_local $res) - ) - - (func (export "fac-stack-raw") (param $n i64) (result i64) - (local $i i64) - (local $res i64) - get_local $n - set_local $i - i64.const 1 - set_local $res - block $done - loop $loop - get_local $i - i64.const 0 - i64.eq - if $body - br $done - else $body - get_local $i - get_local $res - i64.mul - set_local $res - get_local $i - i64.const 1 - i64.sub - set_local $i - end $body - br $loop - end $loop - end $done - get_local $res - ) - - (func (export "fac-mixed") (param $n i64) (result i64) - (local $i i64) - (local $res i64) - (set_local $i (get_local $n)) - (set_local $res (i64.const 1)) - (block $done - (loop $loop - (i64.eq (get_local $i) (i64.const 0)) - (if - (then (br $done)) - (else - (i64.mul (get_local $i) (get_local $res)) - (set_local $res) - (i64.sub (get_local $i) (i64.const 1)) - (set_local $i) - ) - ) - (br $loop) - ) - ) - (get_local $res) - ) - - (func (export "fac-mixed-raw") (param $n i64) (result i64) - (local $i i64) - (local $res i64) - (set_local $i (get_local $n)) - (set_local $res (i64.const 1)) - block $done - loop $loop - (i64.eq (get_local $i) (i64.const 0)) - if - br $done - else - (i64.mul (get_local $i) (get_local $res)) - set_local $res - (i64.sub (get_local $i) (i64.const 1)) - set_local $i - end - br $loop - end - end - get_local $res - ) -) - -(assert_return (invoke "fac-expr" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_return (invoke "fac-stack" (i64.const 25)) (i64.const 7034535277573963776)) -(assert_return (invoke "fac-mixed" (i64.const 25)) (i64.const 7034535277573963776)) diff --git a/libraries/wasm-jit/Test/spec/start.wast b/libraries/wasm-jit/Test/spec/start.wast deleted file mode 100644 index a94dfa16be2..00000000000 --- a/libraries/wasm-jit/Test/spec/start.wast +++ /dev/null @@ -1,100 +0,0 @@ -(assert_invalid - (module (func) (start 1)) - "unknown function" -) - -(assert_invalid - (module - (func $main (result i32) (return (i32.const 0))) - (start $main) - ) - "start function" -) -(assert_invalid - (module - (func $main (param $a i32)) - (start $main) - ) - "start function" -) - -(module - (memory (data "A")) - (func $inc - (i32.store8 - (i32.const 0) - (i32.add - (i32.load8_u (i32.const 0)) - (i32.const 1) - ) - ) - ) - (func $get (result i32) - (return (i32.load8_u (i32.const 0))) - ) - (func $main - (call $inc) - (call $inc) - (call $inc) - ) - - (start $main) - (export "inc" (func $inc)) - (export "get" (func $get)) -) -(assert_return (invoke "get") (i32.const 68)) -(invoke "inc") -(assert_return (invoke "get") (i32.const 69)) -(invoke "inc") -(assert_return (invoke "get") (i32.const 70)) - -(module - (memory (data "A")) - (func $inc - (i32.store8 - (i32.const 0) - (i32.add - (i32.load8_u (i32.const 0)) - (i32.const 1) - ) - ) - ) - (func $get (result i32) - (return (i32.load8_u (i32.const 0))) - ) - (func $main - (call $inc) - (call $inc) - (call $inc) - ) - (start 2) - (export "inc" (func $inc)) - (export "get" (func $get)) -) -(assert_return (invoke "get") (i32.const 68)) -(invoke "inc") -(assert_return (invoke "get") (i32.const 69)) -(invoke "inc") -(assert_return (invoke "get") (i32.const 70)) - -(module - (func $print_i32 (import "spectest" "print") (param i32)) - (func $main (call $print_i32 (i32.const 1))) - (start 1) -) - -(module - (func $print_i32 (import "spectest" "print") (param i32)) - (func $main (call $print_i32 (i32.const 2))) - (start $main) -) - -(module - (func $print (import "spectest" "print")) - (start $print) -) - -(assert_trap - (module (func $main (unreachable)) (start $main)) - "unreachable" -) diff --git a/libraries/wasm-jit/Test/spec/store_retval.wast b/libraries/wasm-jit/Test/spec/store_retval.wast deleted file mode 100644 index a4d03582f63..00000000000 --- a/libraries/wasm-jit/Test/spec/store_retval.wast +++ /dev/null @@ -1,55 +0,0 @@ -(assert_invalid - (module (func (param i32) (result i32) (set_local 0 (i32.const 1)))) - "type mismatch" -) -(assert_invalid - (module (func (param i64) (result i64) (set_local 0 (i64.const 1)))) - "type mismatch" -) -(assert_invalid - (module (func (param f32) (result f32) (set_local 0 (f32.const 1)))) - "type mismatch" -) -(assert_invalid - (module (func (param f64) (result f64) (set_local 0 (f64.const 1)))) - "type mismatch" -) - -(assert_invalid - (module (memory 1) (func (param i32) (result i32) (i32.store (i32.const 0) (i32.const 1)))) - "type mismatch" -) -(assert_invalid - (module (memory 1) (func (param i64) (result i64) (i64.store (i32.const 0) (i64.const 1)))) - "type mismatch" -) -(assert_invalid - (module (memory 1) (func (param f32) (result f32) (f32.store (i32.const 0) (f32.const 1)))) - "type mismatch" -) -(assert_invalid - (module (memory 1) (func (param f64) (result f64) (f64.store (i32.const 0) (f64.const 1)))) - "type mismatch" -) - -(assert_invalid - (module (memory 1) (func (param i32) (result i32) (i32.store8 (i32.const 0) (i32.const 1)))) - "type mismatch" -) -(assert_invalid - (module (memory 1) (func (param i32) (result i32) (i32.store16 (i32.const 0) (i32.const 1)))) - "type mismatch" -) -(assert_invalid - (module (memory 1) (func (param i64) (result i64) (i64.store8 (i32.const 0) (i64.const 1)))) - "type mismatch" -) -(assert_invalid - (module (memory 1) (func (param i64) (result i64) (i64.store16 (i32.const 0) (i64.const 1)))) - "type mismatch" -) -(assert_invalid - (module (memory 1) (func (param i64) (result i64) (i64.store32 (i32.const 0) (i64.const 1)))) - "type mismatch" -) - diff --git a/libraries/wasm-jit/Test/spec/switch.wast b/libraries/wasm-jit/Test/spec/switch.wast deleted file mode 100644 index 829acc02404..00000000000 --- a/libraries/wasm-jit/Test/spec/switch.wast +++ /dev/null @@ -1,150 +0,0 @@ -(module - ;; Statement switch - (func (export "stmt") (param $i i32) (result i32) - (local $j i32) - (set_local $j (i32.const 100)) - (block $switch - (block $7 - (block $default - (block $6 - (block $5 - (block $4 - (block $3 - (block $2 - (block $1 - (block $0 - (br_table $0 $1 $2 $3 $4 $5 $6 $7 $default - (get_local $i) - ) - ) ;; 0 - (return (get_local $i)) - ) ;; 1 - (nop) - ;; fallthrough - ) ;; 2 - ;; fallthrough - ) ;; 3 - (set_local $j (i32.sub (i32.const 0) (get_local $i))) - (br $switch) - ) ;; 4 - (br $switch) - ) ;; 5 - (set_local $j (i32.const 101)) - (br $switch) - ) ;; 6 - (set_local $j (i32.const 101)) - ;; fallthrough - ) ;; default - (set_local $j (i32.const 102)) - ) ;; 7 - ;; fallthrough - ) - (return (get_local $j)) - ) - - ;; Expression switch - (func (export "expr") (param $i i64) (result i64) - (local $j i64) - (set_local $j (i64.const 100)) - (return - (block $switch (result i64) - (block $7 - (block $default - (block $4 - (block $5 - (block $6 - (block $3 - (block $2 - (block $1 - (block $0 - (br_table $0 $1 $2 $3 $4 $5 $6 $7 $default - (i32.wrap/i64 (get_local $i)) - ) - ) ;; 0 - (return (get_local $i)) - ) ;; 1 - (nop) - ;; fallthrough - ) ;; 2 - ;; fallthrough - ) ;; 3 - (br $switch (i64.sub (i64.const 0) (get_local $i))) - ) ;; 6 - (set_local $j (i64.const 101)) - ;; fallthrough - ) ;; 4 - ;; fallthrough - ) ;; 5 - ;; fallthrough - ) ;; default - (br $switch (get_local $j)) - ) ;; 7 - (i64.const -5) - ) - ) - ) - - ;; Argument switch - (func (export "arg") (param $i i32) (result i32) - (return - (block $2 (result i32) - (i32.add (i32.const 10) - (block $1 (result i32) - (i32.add (i32.const 100) - (block $0 (result i32) - (i32.add (i32.const 1000) - (block $default (result i32) - (br_table $0 $1 $2 $default - (i32.mul (i32.const 2) (get_local $i)) - (i32.and (i32.const 3) (get_local $i)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - - ;; Corner cases - (func (export "corner") (result i32) - (block - (br_table 0 (i32.const 0)) - ) - (i32.const 1) - ) -) - -(assert_return (invoke "stmt" (i32.const 0)) (i32.const 0)) -(assert_return (invoke "stmt" (i32.const 1)) (i32.const -1)) -(assert_return (invoke "stmt" (i32.const 2)) (i32.const -2)) -(assert_return (invoke "stmt" (i32.const 3)) (i32.const -3)) -(assert_return (invoke "stmt" (i32.const 4)) (i32.const 100)) -(assert_return (invoke "stmt" (i32.const 5)) (i32.const 101)) -(assert_return (invoke "stmt" (i32.const 6)) (i32.const 102)) -(assert_return (invoke "stmt" (i32.const 7)) (i32.const 100)) -(assert_return (invoke "stmt" (i32.const -10)) (i32.const 102)) - -(assert_return (invoke "expr" (i64.const 0)) (i64.const 0)) -(assert_return (invoke "expr" (i64.const 1)) (i64.const -1)) -(assert_return (invoke "expr" (i64.const 2)) (i64.const -2)) -(assert_return (invoke "expr" (i64.const 3)) (i64.const -3)) -(assert_return (invoke "expr" (i64.const 6)) (i64.const 101)) -(assert_return (invoke "expr" (i64.const 7)) (i64.const -5)) -(assert_return (invoke "expr" (i64.const -10)) (i64.const 100)) - -(assert_return (invoke "arg" (i32.const 0)) (i32.const 110)) -(assert_return (invoke "arg" (i32.const 1)) (i32.const 12)) -(assert_return (invoke "arg" (i32.const 2)) (i32.const 4)) -(assert_return (invoke "arg" (i32.const 3)) (i32.const 1116)) -(assert_return (invoke "arg" (i32.const 4)) (i32.const 118)) -(assert_return (invoke "arg" (i32.const 5)) (i32.const 20)) -(assert_return (invoke "arg" (i32.const 6)) (i32.const 12)) -(assert_return (invoke "arg" (i32.const 7)) (i32.const 1124)) -(assert_return (invoke "arg" (i32.const 8)) (i32.const 126)) - -(assert_return (invoke "corner") (i32.const 1)) - -(assert_invalid (module (func (br_table 3 (i32.const 0)))) "unknown label") diff --git a/libraries/wasm-jit/Test/spec/tee_local.wast b/libraries/wasm-jit/Test/spec/tee_local.wast deleted file mode 100644 index 452793e3001..00000000000 --- a/libraries/wasm-jit/Test/spec/tee_local.wast +++ /dev/null @@ -1,236 +0,0 @@ -;; Test `tee_local` operator - -(module - ;; Typing - - (func (export "type-local-i32") (result i32) (local i32) (tee_local 0 (i32.const 0))) - (func (export "type-local-i64") (result i64) (local i64) (tee_local 0 (i64.const 0))) - (func (export "type-local-f32") (result f32) (local f32) (tee_local 0 (f32.const 0))) - (func (export "type-local-f64") (result f64) (local f64) (tee_local 0 (f64.const 0))) - - (func (export "type-param-i32") (param i32) (result i32) (tee_local 0 (i32.const 10))) - (func (export "type-param-i64") (param i64) (result i64) (tee_local 0 (i64.const 11))) - (func (export "type-param-f32") (param f32) (result f32) (tee_local 0 (f32.const 11.1))) - (func (export "type-param-f64") (param f64) (result f64) (tee_local 0 (f64.const 12.2))) - - (func (export "type-mixed") (param i64 f32 f64 i32 i32) (local f32 i64 i64 f64) - (drop (i64.eqz (tee_local 0 (i64.const 0)))) - (drop (f32.neg (tee_local 1 (f32.const 0)))) - (drop (f64.neg (tee_local 2 (f64.const 0)))) - (drop (i32.eqz (tee_local 3 (i32.const 0)))) - (drop (i32.eqz (tee_local 4 (i32.const 0)))) - (drop (f32.neg (tee_local 5 (f32.const 0)))) - (drop (i64.eqz (tee_local 6 (i64.const 0)))) - (drop (i64.eqz (tee_local 7 (i64.const 0)))) - (drop (f64.neg (tee_local 8 (f64.const 0)))) - ) - - ;; Writing - - (func (export "write") (param i64 f32 f64 i32 i32) (result i64) (local f32 i64 i64 f64) - (drop (tee_local 1 (f32.const -0.3))) - (drop (tee_local 3 (i32.const 40))) - (drop (tee_local 4 (i32.const -7))) - (drop (tee_local 5 (f32.const 5.5))) - (drop (tee_local 6 (i64.const 6))) - (drop (tee_local 8 (f64.const 8))) - (i64.trunc_s/f64 - (f64.add - (f64.convert_u/i64 (get_local 0)) - (f64.add - (f64.promote/f32 (get_local 1)) - (f64.add - (get_local 2) - (f64.add - (f64.convert_u/i32 (get_local 3)) - (f64.add - (f64.convert_s/i32 (get_local 4)) - (f64.add - (f64.promote/f32 (get_local 5)) - (f64.add - (f64.convert_u/i64 (get_local 6)) - (f64.add - (f64.convert_u/i64 (get_local 7)) - (get_local 8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - - ;; Result - - (func (export "result") (param i64 f32 f64 i32 i32) (result f64) - (local f32 i64 i64 f64) - (f64.add - (f64.convert_u/i64 (tee_local 0 (i64.const 1))) - (f64.add - (f64.promote/f32 (tee_local 1 (f32.const 2))) - (f64.add - (tee_local 2 (f64.const 3.3)) - (f64.add - (f64.convert_u/i32 (tee_local 3 (i32.const 4))) - (f64.add - (f64.convert_s/i32 (tee_local 4 (i32.const 5))) - (f64.add - (f64.promote/f32 (tee_local 5 (f32.const 5.5))) - (f64.add - (f64.convert_u/i64 (tee_local 6 (i64.const 6))) - (f64.add - (f64.convert_u/i64 (tee_local 7 (i64.const 0))) - (tee_local 8 (f64.const 8)) - ) - ) - ) - ) - ) - ) - ) - ) - ) -) - -(assert_return (invoke "type-local-i32") (i32.const 0)) -(assert_return (invoke "type-local-i64") (i64.const 0)) -(assert_return (invoke "type-local-f32") (f32.const 0)) -(assert_return (invoke "type-local-f64") (f64.const 0)) - -(assert_return (invoke "type-param-i32" (i32.const 2)) (i32.const 10)) -(assert_return (invoke "type-param-i64" (i64.const 3)) (i64.const 11)) -(assert_return (invoke "type-param-f32" (f32.const 4.4)) (f32.const 11.1)) -(assert_return (invoke "type-param-f64" (f64.const 5.5)) (f64.const 12.2)) - -(assert_return - (invoke "type-mixed" - (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) - ) -) - -(assert_return - (invoke "write" - (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) - ) - (i64.const 56) -) - -(assert_return - (invoke "result" - (i64.const -1) (f32.const -2) (f64.const -3.3) (i32.const -4) (i32.const -5) - ) - (f64.const 34.8) -) - - -;; Invalid typing of access to locals - -(assert_invalid - (module (func $type-local-num-vs-num (result i64) (local i32) (tee_local 0 (i32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f32) (i32.eqz (tee_local 0 (f32.const 0))))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-num-vs-num (local f64 i64) (f64.neg (tee_local 1 (i64.const 0))))) - "type mismatch" -) - -(assert_invalid - (module (func $type-local-arg-void-vs-num (local i32) (tee_local 0 (nop)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-arg-num-vs-num (local i32) (tee_local 0 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-arg-num-vs-num (local f32) (tee_local 0 (f64.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-local-arg-num-vs-num (local f64 i64) (tee_local 1 (f64.const 0)))) - "type mismatch" -) - - -;; Invalid typing of access to parameters - -(assert_invalid - (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) - "type mismatch" -) - -(assert_invalid - (module (func $type-param-arg-void-vs-num (param i32) (tee_local 0 (nop)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-arg-num-vs-num (param i32) (tee_local 0 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-arg-num-vs-num (param f32) (tee_local 0 (f64.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-param-arg-num-vs-num (param f64 i64) (tee_local 1 (f64.const 0)))) - "type mismatch" -) - - -;; Invalid local index - -(assert_invalid - (module (func $unbound-local (local i32 i64) (get_local 3))) - "unknown local" -) -(assert_invalid - (module (func $large-local (local i32 i64) (get_local 14324343))) - "unknown local" -) - -(assert_invalid - (module (func $unbound-param (param i32 i64) (get_local 2))) - "unknown local" -) -(assert_invalid - (module (func $large-param (local i32 i64) (get_local 714324343))) - "unknown local" -) - -(assert_invalid - (module (func $unbound-mixed (param i32) (local i32 i64) (get_local 3))) - "unknown local" -) -(assert_invalid - (module (func $large-mixed (param i64) (local i32 i64) (get_local 214324343))) - "unknown local" -) - -(assert_invalid - (module (func $type-mixed-arg-num-vs-num (param f32) (local i32) (tee_local 1 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-mixed-arg-num-vs-num (param i64 i32) (local f32) (tee_local 1 (f32.const 0)))) - "type mismatch" -) -(assert_invalid - (module (func $type-mixed-arg-num-vs-num (param i64) (local f64 i64) (tee_local 1 (i64.const 0)))) - "type mismatch" -) - diff --git a/libraries/wasm-jit/Test/spec/token.wast b/libraries/wasm-jit/Test/spec/token.wast deleted file mode 100644 index 1dcd32e7f75..00000000000 --- a/libraries/wasm-jit/Test/spec/token.wast +++ /dev/null @@ -1,10 +0,0 @@ -;; Test tokenization - -(assert_malformed - (module quote "(func (drop (i32.const0)))") - "unknown operator" -) -(assert_malformed - (module quote "(func br 0drop)") - "unknown operator" -) diff --git a/libraries/wasm-jit/Test/spec/traps.wast b/libraries/wasm-jit/Test/spec/traps.wast deleted file mode 100644 index a9401408e3f..00000000000 --- a/libraries/wasm-jit/Test/spec/traps.wast +++ /dev/null @@ -1,91 +0,0 @@ -;; Test that traps are preserved even in instructions which might otherwise -;; be dead-code-eliminated. These functions all perform an operation and -;; discard its return value. - -(module - (func (export "no_dce.i32.div_s") (param $x i32) (param $y i32) - (drop (i32.div_s (get_local $x) (get_local $y)))) - (func (export "no_dce.i32.div_u") (param $x i32) (param $y i32) - (drop (i32.div_u (get_local $x) (get_local $y)))) - (func (export "no_dce.i64.div_s") (param $x i64) (param $y i64) - (drop (i64.div_s (get_local $x) (get_local $y)))) - (func (export "no_dce.i64.div_u") (param $x i64) (param $y i64) - (drop (i64.div_u (get_local $x) (get_local $y)))) -) - -(assert_trap (invoke "no_dce.i32.div_s" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "no_dce.i32.div_u" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "no_dce.i64.div_s" (i64.const 1) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "no_dce.i64.div_u" (i64.const 1) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "no_dce.i32.div_s" (i32.const 0x80000000) (i32.const -1)) "integer overflow") -(assert_trap (invoke "no_dce.i64.div_s" (i64.const 0x8000000000000000) (i64.const -1)) "integer overflow") - -(module - (func (export "no_dce.i32.rem_s") (param $x i32) (param $y i32) - (drop (i32.rem_s (get_local $x) (get_local $y)))) - (func (export "no_dce.i32.rem_u") (param $x i32) (param $y i32) - (drop (i32.rem_u (get_local $x) (get_local $y)))) - (func (export "no_dce.i64.rem_s") (param $x i64) (param $y i64) - (drop (i64.rem_s (get_local $x) (get_local $y)))) - (func (export "no_dce.i64.rem_u") (param $x i64) (param $y i64) - (drop (i64.rem_u (get_local $x) (get_local $y)))) -) - -(assert_trap (invoke "no_dce.i32.rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "no_dce.i32.rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero") -(assert_trap (invoke "no_dce.i64.rem_s" (i64.const 1) (i64.const 0)) "integer divide by zero") -(assert_trap (invoke "no_dce.i64.rem_u" (i64.const 1) (i64.const 0)) "integer divide by zero") - -(module - (func (export "no_dce.i32.trunc_s_f32") (param $x f32) (drop (i32.trunc_s/f32 (get_local $x)))) - (func (export "no_dce.i32.trunc_u_f32") (param $x f32) (drop (i32.trunc_u/f32 (get_local $x)))) - (func (export "no_dce.i32.trunc_s_f64") (param $x f64) (drop (i32.trunc_s/f64 (get_local $x)))) - (func (export "no_dce.i32.trunc_u_f64") (param $x f64) (drop (i32.trunc_u/f64 (get_local $x)))) - (func (export "no_dce.i64.trunc_s_f32") (param $x f32) (drop (i64.trunc_s/f32 (get_local $x)))) - (func (export "no_dce.i64.trunc_u_f32") (param $x f32) (drop (i64.trunc_u/f32 (get_local $x)))) - (func (export "no_dce.i64.trunc_s_f64") (param $x f64) (drop (i64.trunc_s/f64 (get_local $x)))) - (func (export "no_dce.i64.trunc_u_f64") (param $x f64) (drop (i64.trunc_u/f64 (get_local $x)))) -) - -(assert_trap (invoke "no_dce.i32.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "no_dce.i32.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "no_dce.i32.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") -(assert_trap (invoke "no_dce.i32.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") -(assert_trap (invoke "no_dce.i64.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "no_dce.i64.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") -(assert_trap (invoke "no_dce.i64.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") -(assert_trap (invoke "no_dce.i64.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") - -(module - (memory 1) - - (func (export "no_dce.i32.load") (param $i i32) (drop (i32.load (get_local $i)))) - (func (export "no_dce.i32.load16_s") (param $i i32) (drop (i32.load16_s (get_local $i)))) - (func (export "no_dce.i32.load16_u") (param $i i32) (drop (i32.load16_u (get_local $i)))) - (func (export "no_dce.i32.load8_s") (param $i i32) (drop (i32.load8_s (get_local $i)))) - (func (export "no_dce.i32.load8_u") (param $i i32) (drop (i32.load8_u (get_local $i)))) - (func (export "no_dce.i64.load") (param $i i32) (drop (i64.load (get_local $i)))) - (func (export "no_dce.i64.load32_s") (param $i i32) (drop (i64.load32_s (get_local $i)))) - (func (export "no_dce.i64.load32_u") (param $i i32) (drop (i64.load32_u (get_local $i)))) - (func (export "no_dce.i64.load16_s") (param $i i32) (drop (i64.load16_s (get_local $i)))) - (func (export "no_dce.i64.load16_u") (param $i i32) (drop (i64.load16_u (get_local $i)))) - (func (export "no_dce.i64.load8_s") (param $i i32) (drop (i64.load8_s (get_local $i)))) - (func (export "no_dce.i64.load8_u") (param $i i32) (drop (i64.load8_u (get_local $i)))) - (func (export "no_dce.f32.load") (param $i i32) (drop (f32.load (get_local $i)))) - (func (export "no_dce.f64.load") (param $i i32) (drop (f64.load (get_local $i)))) -) - -(assert_trap (invoke "no_dce.i32.load" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i32.load16_s" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i32.load16_u" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i32.load8_s" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i32.load8_u" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i64.load" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i64.load32_s" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i64.load32_u" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i64.load16_s" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i64.load16_u" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i64.load8_s" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.i64.load8_u" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.f32.load" (i32.const 65536)) "out of bounds memory access") -(assert_trap (invoke "no_dce.f64.load" (i32.const 65536)) "out of bounds memory access") diff --git a/libraries/wasm-jit/Test/spec/type.wast b/libraries/wasm-jit/Test/spec/type.wast deleted file mode 100644 index 5ceeeb26977..00000000000 --- a/libraries/wasm-jit/Test/spec/type.wast +++ /dev/null @@ -1,59 +0,0 @@ -;; Test type definitions - -(module - (type (func)) - (type $t (func)) - - (type (func (param i32))) - (type (func (param $x i32))) - (type (func (result i32))) - (type (func (param i32) (result i32))) - (type (func (param $x i32) (result i32))) - - (type (func (param f32 f64))) - ;; (type (func (result i64 f32))) - ;; (type (func (param i32 i64) (result f32 f64))) - - (type (func (param f32) (param f64))) - (type (func (param $x f32) (param f64))) - (type (func (param f32) (param $y f64))) - (type (func (param $x f32) (param $y f64))) - ;; (type (func (result i64) (result f32))) - ;; (type (func (param i32) (param i64) (result f32) (result f64))) - ;; (type (func (param $x i32) (param $y i64) (result f32) (result f64))) - - (type (func (param f32 f64) (param $x i32) (param f64 i32 i32))) - ;; (type (func (result i64 i64 f32) (result f32 i32))) - ;; (type - ;; (func (param i32 i32) (param i64 i32) (result f32 f64) (result f64 i32)) - ;; ) - - (type (func (param) (param $x f32) (param) (param) (param f64 i32) (param))) - ;; (type - ;; (func (result) (result) (result i64 i64) (result) (result f32) (result)) - ;; ) - ;; (type - ;; (func - ;; (param i32 i32) (param i64 i32) (param) (param $x i32) (param) - ;; (result) (result f32 f64) (result f64 i32) (result) - ;; ) - ;; ) -) - -(assert_malformed - (module quote "(type (func (result i32) (param i32)))") - "result before parameter" -) -(assert_malformed - (module quote "(type (func (result $x i32)))") - "unexpected token" -) - -(assert_invalid - (module (type (func (result i32 i32)))) - "invalid result arity" -) -(assert_invalid - (module (type (func (result i32) (result i32)))) - "invalid result arity" -) diff --git a/libraries/wasm-jit/Test/spec/typecheck.wast b/libraries/wasm-jit/Test/spec/typecheck.wast deleted file mode 100644 index 72f6f621f1c..00000000000 --- a/libraries/wasm-jit/Test/spec/typecheck.wast +++ /dev/null @@ -1,425 +0,0 @@ -;; TODO: move all tests in this file to appropriate operator-specific files. - -(assert_invalid - (module (func $type-unary-operand-missing - (i32.eqz) (drop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-operand-missing-in-block - (i32.const 0) - (block (i32.eqz) (drop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-operand-missing-in-loop - (i32.const 0) - (loop (i32.eqz) (drop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-operand-missing-in-if - (i32.const 0) (i32.const 0) - (if (then (i32.eqz) (drop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-operand-missing-in-else - (i32.const 0) (i32.const 0) - (if (result i32) (then (i32.const 0)) (else (i32.eqz))) (drop) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-binary-1st-operand-missing - (i32.add) (drop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-2nd-operand-missing - (i32.const 0) (i32.add) (drop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-1st-operand-missing-in-block - (i32.const 0) (i32.const 0) - (block (i32.add) (drop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-2nd-operand-missing-in-block - (i32.const 0) - (block (i32.const 0) (i32.add) (drop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-1st-operand-missing-in-loop - (i32.const 0) (i32.const 0) - (loop (i32.add) (drop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-2nd-operand-missing-in-loop - (i32.const 0) - (loop (i32.const 0) (i32.add) (drop)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-1st-operand-missing-in-if - (i32.const 0) (i32.const 0) (i32.const 0) - (if (i32.add) (then (drop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-2nd-operand-missing-in-if - (i32.const 0) (i32.const 0) - (if (i32.const 0) (then (i32.add)) (else (drop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-1st-operand-missing-in-else - (i32.const 0) (i32.const 0) (i32.const 0) - (if (result i32) (then (i32.const 0)) (else (i32.add) (i32.const 0))) - (drop) (drop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-2nd-operand-missing-in-else - (i32.const 0) (i32.const 0) - (if (result i32) (then (i32.const 0)) (else (i32.add))) - (drop) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-if-operand-missing - (if (then)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-if-operand-missing-in-block - (i32.const 0) - (block (if (then))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-if-operand-missing-in-loop - (i32.const 0) - (loop (if (then))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-if-operand-missing-in-if - (i32.const 0) (i32.const 0) - (if (then (if (then)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-if-operand-missing-in-else - (i32.const 0) (i32.const 0) - (if (result i32) (then (i32.const 0)) (else (if (then)) (i32.const 0))) - (drop) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-br-operand-missing - (block (result i32) (br 0)) - (i32.eqz) (drop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br-operand-missing-in-block - (i32.const 0) - (block (result i32) (br 0)) - (i32.eqz) (drop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br-operand-missing-in-if - (block - (i32.const 0) (i32.const 0) - (if (result i32) (then (br 0))) - ) - (i32.eqz) (drop) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br-operand-missing-in-else - (block - (i32.const 0) (i32.const 0) - (if (result i32) (then (i32.const 0)) (else (br 0))) - ) - (i32.eqz) (drop) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-return-operand-missing (result i32) - (return) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-operand-missing-in-block (result i32) - (i32.const 0) - (block (return)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-operand-missing-in-loop (result i32) - (i32.const 0) - (loop (return)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-operand-missing-in-if (result i32) - (i32.const 0) (i32.const 0) - (if (then (return))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-return-operand-missing-in-else (result i32) - (i32.const 0) (i32.const 0) - (if (result i32) (then (i32.const 0)) (else (return))) (drop) - )) - "type mismatch" -) - -;; TODO(stack): more of the above - -;; if condition -(assert_invalid (module (func (if (f32.const 0) (then)))) "type mismatch") - -;; br_if condition -(assert_invalid (module (func (block (br_if 0 (f32.const 0))))) "type mismatch") - -;; br_table key -(assert_invalid - (module (func (block (br_table 0 (f32.const 0))))) - "type mismatch") - -;; call params -(assert_invalid (module (func (param i32)) (func (call 0 (f32.const 0)))) "type mismatch") -(assert_invalid - (module - (type (func (param i32))) - (func (type 0)) - (table 0 anyfunc) - (func - (call_indirect 0 (i32.const 0) (f32.const 0)))) - "type mismatch") - -;; call_indirect index -(assert_invalid - (module - (type (func)) - (func (type 0)) - (table 0 anyfunc) - (func (call_indirect 0 (f32.const 0)))) - "type mismatch") - -;; return -(assert_invalid (module (func (result i32) (return (f32.const 0)))) "type mismatch") - -;; set_local -(assert_invalid (module (func (local i32) (set_local 0 (f32.const 0)))) "type mismatch") - -;; load index -(assert_invalid (module (memory 1) (func (i32.load (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.load8_s (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.load8_u (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.load16_s (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.load16_u (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.load (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.load8_s (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.load8_u (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.load16_s (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.load16_u (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.load32_s (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.load32_u (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (f32.load (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (f64.load (f32.const 0)))) "type mismatch") - -;; store index -(assert_invalid (module (memory 1) (func (i32.store (f32.const 0) (i32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.store8 (f32.const 0) (i32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.store16 (f32.const 0) (i32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store (f32.const 0) (i32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store8 (f32.const 0) (i64.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store16 (f32.const 0) (i64.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store32 (f32.const 0) (i64.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (f32.store (f32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (f64.store (f32.const 0) (f64.const 0)))) "type mismatch") - -;; store value -(assert_invalid (module (memory 1) (func (i32.store (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.store8 (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i32.store16 (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store8 (i32.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store16 (i32.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (i64.store32 (i32.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (f32.store (i32.const 0) (i32.const 0)))) "type mismatch") -(assert_invalid (module (memory 1) (func (f64.store (i32.const 0) (i64.const 0)))) "type mismatch") - -;; binary -(assert_invalid (module (func (i32.add (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.and (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.or (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.add (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.and (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.div_s (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.div_u (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.mul (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.or (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.rem_s (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.rem_u (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.rotl (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.rotr (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.shl (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.shr_s (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.shr_u (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.sub (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.xor (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.add (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.copysign (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.div (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.max (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.min (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.mul (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.sub (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.add (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.copysign (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.div (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.max (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.min (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.mul (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.sub (i64.const 0) (f32.const 0)))) "type mismatch") - -;; unary -(assert_invalid (module (func (i32.eqz (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.clz (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.ctz (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.popcnt (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.eqz (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.clz (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.ctz (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.popcnt (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.abs (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.ceil (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.floor (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.nearest (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.neg (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.sqrt (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.trunc (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.abs (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.ceil (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.floor (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.nearest (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.neg (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.sqrt (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.trunc (i64.const 0)))) "type mismatch") - -;; compare -(assert_invalid (module (func (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.eq (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.ge_s (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.ge_u (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.gt_s (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.gt_u (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.le_s (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.le_u (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.lt_s (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.lt_u (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.ne (i32.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.eq (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.ge (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.gt (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.le (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.lt (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.ne (i64.const 0) (f64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.eq (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.ge (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.gt (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.le (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.lt (i64.const 0) (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.ne (i64.const 0) (f32.const 0)))) "type mismatch") - -;; convert -(assert_invalid (module (func (i32.wrap/i64 (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.trunc_s/f32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.trunc_u/f32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.trunc_s/f64 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.trunc_u/f64 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i32.reinterpret/f32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.extend_s/i32 (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.extend_u/i32 (f32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.trunc_s/f32 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.trunc_u/f32 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.trunc_s/f64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.trunc_u/f64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (i64.reinterpret/f64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.convert_s/i32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.convert_u/i32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.convert_s/i64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.convert_u/i64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.demote/f64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f32.reinterpret/i32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.convert_s/i32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.convert_u/i32 (i64.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.convert_s/i64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.convert_u/i64 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.promote/f32 (i32.const 0)))) "type mismatch") -(assert_invalid (module (func (f64.reinterpret/i64 (i32.const 0)))) "type mismatch") - -;; grow_memory -(assert_invalid (module (memory 1) (func (grow_memory (f32.const 0)))) "type mismatch") diff --git a/libraries/wasm-jit/Test/spec/unreachable.wast b/libraries/wasm-jit/Test/spec/unreachable.wast deleted file mode 100644 index 30df789e212..00000000000 --- a/libraries/wasm-jit/Test/spec/unreachable.wast +++ /dev/null @@ -1,282 +0,0 @@ -;; Test `unreachable` operator - -(module - ;; Auxiliary definitions - (func $dummy) - (func $dummy3 (param i32 i32 i32)) - - (func (export "type-i32") (result i32) (unreachable)) - (func (export "type-i64") (result i32) (unreachable)) - (func (export "type-f32") (result f64) (unreachable)) - (func (export "type-f64") (result f64) (unreachable)) - - (func (export "as-func-first") (result i32) - (unreachable) (i32.const -1) - ) - (func (export "as-func-mid") (result i32) - (call $dummy) (unreachable) (i32.const -1) - ) - (func (export "as-func-last") - (call $dummy) (unreachable) - ) - (func (export "as-func-value") (result i32) - (call $dummy) (unreachable) - ) - - (func (export "as-block-first") (result i32) - (block (result i32) (unreachable) (i32.const 2)) - ) - (func (export "as-block-mid") (result i32) - (block (result i32) (call $dummy) (unreachable) (i32.const 2)) - ) - (func (export "as-block-last") - (block (nop) (call $dummy) (unreachable)) - ) - (func (export "as-block-value") (result i32) - (block (result i32) (nop) (call $dummy) (unreachable)) - ) - (func (export "as-block-broke") (result i32) - (block (result i32) (call $dummy) (br 0 (i32.const 1)) (unreachable)) - ) - - (func (export "as-loop-first") (result i32) - (loop (result i32) (unreachable) (i32.const 2)) - ) - (func (export "as-loop-mid") (result i32) - (loop (result i32) (call $dummy) (unreachable) (i32.const 2)) - ) - (func (export "as-loop-last") - (loop (nop) (call $dummy) (unreachable)) - ) - (func (export "as-loop-broke") (result i32) - (block (result i32) - (loop (result i32) (call $dummy) (br 1 (i32.const 1)) (unreachable)) - ) - ) - - (func (export "as-br-value") (result i32) - (block (result i32) (br 0 (unreachable))) - ) - - (func (export "as-br_if-cond") - (block (br_if 0 (unreachable))) - ) - (func (export "as-br_if-value") (result i32) - (block (result i32) - (drop (br_if 0 (unreachable) (i32.const 1))) (i32.const 7) - ) - ) - (func (export "as-br_if-value-cond") (result i32) - (block (result i32) - (drop (br_if 0 (i32.const 6) (unreachable))) (i32.const 7) - ) - ) - - (func (export "as-br_table-index") - (block (br_table 0 0 0 (unreachable))) - ) - (func (export "as-br_table-value") (result i32) - (block (result i32) - (br_table 0 0 0 (unreachable) (i32.const 1)) (i32.const 7) - ) - ) - (func (export "as-br_table-value-2") (result i32) - (block (result i32) - (block (result i32) (br_table 0 1 (unreachable) (i32.const 1))) - ) - ) - (func (export "as-br_table-value-index") (result i32) - (block (result i32) - (br_table 0 0 (i32.const 6) (unreachable)) (i32.const 7) - ) - ) - (func (export "as-br_table-value-and-index") (result i32) - (block (result i32) (br_table 0 0 (unreachable)) (i32.const 8)) - ) - - (func (export "as-return-value") (result i64) - (return (unreachable)) - ) - - (func (export "as-if-cond") (result i32) - (if (result i32) (unreachable) (then (i32.const 0)) (else (i32.const 1))) - ) - (func (export "as-if-then") (param i32 i32) (result i32) - (if (result i32) (get_local 0) (then (unreachable)) (else (get_local 1))) - ) - (func (export "as-if-else") (param i32 i32) (result i32) - (if (result i32) (get_local 0) (then (get_local 1)) (else (unreachable))) - ) - - (func (export "as-select-first") (param i32 i32) (result i32) - (select (unreachable) (get_local 0) (get_local 1)) - ) - (func (export "as-select-second") (param i32 i32) (result i32) - (select (get_local 0) (unreachable) (get_local 1)) - ) - (func (export "as-select-cond") (result i32) - (select (i32.const 0) (i32.const 1) (unreachable)) - ) - - (func (export "as-call-first") - (call $dummy3 (unreachable) (i32.const 2) (i32.const 3)) - ) - (func (export "as-call-mid") - (call $dummy3 (i32.const 1) (unreachable) (i32.const 3)) - ) - (func (export "as-call-last") - (call $dummy3 (i32.const 1) (i32.const 2) (unreachable)) - ) - - (type $sig (func (param i32 i32 i32))) - (table anyfunc (elem $dummy3)) - (func (export "as-call_indirect-func") - (call_indirect $sig (unreachable) (i32.const 1) (i32.const 2) (i32.const 3)) - ) - (func (export "as-call_indirect-first") - (call_indirect $sig (i32.const 0) (unreachable) (i32.const 2) (i32.const 3)) - ) - (func (export "as-call_indirect-mid") - (call_indirect $sig (i32.const 0) (i32.const 1) (unreachable) (i32.const 3)) - ) - (func (export "as-call_indirect-last") - (call_indirect $sig (i32.const 0) (i32.const 1) (i32.const 2) (unreachable)) - ) - - (func (export "as-set_local-value") (local f32) - (set_local 0 (unreachable)) - ) - - (memory 1) - (func (export "as-load-address") (result f32) - (f32.load (unreachable)) - ) - (func (export "as-loadN-address") (result i64) - (i64.load8_s (unreachable)) - ) - - (func (export "as-store-address") - (f64.store (unreachable) (f64.const 7)) - ) - (func (export "as-store-value") - (i64.store (i32.const 2) (unreachable)) - ) - - (func (export "as-storeN-address") - (i32.store8 (unreachable) (i32.const 7)) - ) - (func (export "as-storeN-value") - (i64.store16 (i32.const 2) (unreachable)) - ) - - (func (export "as-unary-operand") (result f32) - (f32.neg (unreachable)) - ) - - (func (export "as-binary-left") (result i32) - (i32.add (unreachable) (i32.const 10)) - ) - (func (export "as-binary-right") (result i64) - (i64.sub (i64.const 10) (unreachable)) - ) - - (func (export "as-test-operand") (result i32) - (i32.eqz (unreachable)) - ) - - (func (export "as-compare-left") (result i32) - (f64.le (unreachable) (f64.const 10)) - ) - (func (export "as-compare-right") (result i32) - (f32.ne (f32.const 10) (unreachable)) - ) - - (func (export "as-convert-operand") (result i32) - (i32.wrap/i64 (unreachable)) - ) - - (func (export "as-grow_memory-size") (result i32) - (grow_memory (unreachable)) - ) -) - -(assert_trap (invoke "type-i32") "unreachable") -(assert_trap (invoke "type-i64") "unreachable") -(assert_trap (invoke "type-f32") "unreachable") -(assert_trap (invoke "type-f64") "unreachable") - -(assert_trap (invoke "as-func-first") "unreachable") -(assert_trap (invoke "as-func-mid") "unreachable") -(assert_trap (invoke "as-func-last") "unreachable") -(assert_trap (invoke "as-func-value") "unreachable") - -(assert_trap (invoke "as-block-first") "unreachable") -(assert_trap (invoke "as-block-mid") "unreachable") -(assert_trap (invoke "as-block-last") "unreachable") -(assert_trap (invoke "as-block-value") "unreachable") -(assert_return (invoke "as-block-broke") (i32.const 1)) - -(assert_trap (invoke "as-loop-first") "unreachable") -(assert_trap (invoke "as-loop-mid") "unreachable") -(assert_trap (invoke "as-loop-last") "unreachable") -(assert_return (invoke "as-loop-broke") (i32.const 1)) - -(assert_trap (invoke "as-br-value") "unreachable") - -(assert_trap (invoke "as-br_if-cond") "unreachable") -(assert_trap (invoke "as-br_if-value") "unreachable") -(assert_trap (invoke "as-br_if-value-cond") "unreachable") - -(assert_trap (invoke "as-br_table-index") "unreachable") -(assert_trap (invoke "as-br_table-value") "unreachable") -(assert_trap (invoke "as-br_table-value-2") "unreachable") -(assert_trap (invoke "as-br_table-value-index") "unreachable") -(assert_trap (invoke "as-br_table-value-and-index") "unreachable") - -(assert_trap (invoke "as-return-value") "unreachable") - -(assert_trap (invoke "as-if-cond") "unreachable") -(assert_trap (invoke "as-if-then" (i32.const 1) (i32.const 6)) "unreachable") -(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) -(assert_trap (invoke "as-if-else" (i32.const 0) (i32.const 6)) "unreachable") -(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) - -(assert_trap (invoke "as-select-first" (i32.const 0) (i32.const 6)) "unreachable") -(assert_trap (invoke "as-select-first" (i32.const 1) (i32.const 6)) "unreachable") -(assert_trap (invoke "as-select-second" (i32.const 0) (i32.const 6)) "unreachable") -(assert_trap (invoke "as-select-second" (i32.const 1) (i32.const 6)) "unreachable") -(assert_trap (invoke "as-select-cond") "unreachable") - -(assert_trap (invoke "as-call-first") "unreachable") -(assert_trap (invoke "as-call-mid") "unreachable") -(assert_trap (invoke "as-call-last") "unreachable") - -(assert_trap (invoke "as-call_indirect-func") "unreachable") -(assert_trap (invoke "as-call_indirect-first") "unreachable") -(assert_trap (invoke "as-call_indirect-mid") "unreachable") -(assert_trap (invoke "as-call_indirect-last") "unreachable") - -(assert_trap (invoke "as-set_local-value") "unreachable") - -(assert_trap (invoke "as-load-address") "unreachable") -(assert_trap (invoke "as-loadN-address") "unreachable") - -(assert_trap (invoke "as-store-address") "unreachable") -(assert_trap (invoke "as-store-value") "unreachable") -(assert_trap (invoke "as-storeN-address") "unreachable") -(assert_trap (invoke "as-storeN-value") "unreachable") - -(assert_trap (invoke "as-unary-operand") "unreachable") - -(assert_trap (invoke "as-binary-left") "unreachable") -(assert_trap (invoke "as-binary-right") "unreachable") - -(assert_trap (invoke "as-test-operand") "unreachable") - -(assert_trap (invoke "as-compare-left") "unreachable") -(assert_trap (invoke "as-compare-right") "unreachable") - -(assert_trap (invoke "as-convert-operand") "unreachable") - -(assert_trap (invoke "as-grow_memory-size") "unreachable") - diff --git a/libraries/wasm-jit/Test/spec/unreached-invalid.wast b/libraries/wasm-jit/Test/spec/unreached-invalid.wast deleted file mode 100644 index e22b8b4c91f..00000000000 --- a/libraries/wasm-jit/Test/spec/unreached-invalid.wast +++ /dev/null @@ -1,699 +0,0 @@ -;; Failures in unreachable code. - -(assert_invalid - (module (func $local-index (unreachable) (drop (get_local 0)))) - "unknown local" -) -(assert_invalid - (module (func $global-index (unreachable) (drop (get_global 0)))) - "unknown global" -) -(assert_invalid - (module (func $func-index (unreachable) (call 1))) - "unknown function" -) -(assert_invalid - (module (func $label-index (unreachable) (br 1))) - "unknown label" -) - -(assert_invalid - (module (func $type-num-vs-num - (unreachable) (drop (i64.eqz (i32.const 0)))) - ) - "type mismatch" -) -(assert_invalid - (module (func $type-poly-num-vs-num (result i32) - (unreachable) (i64.const 0) (i32.const 0) (select) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-poly-transitive-num-vs-num (result i32) - (unreachable) - (i64.const 0) (i32.const 0) (select) - (i32.const 0) (i32.const 0) (select) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-unconsumed-const (unreachable) (i32.const 0))) - "type mismatch" -) -(assert_invalid - (module (func $type-unconsumed-result (unreachable) (i32.eqz))) - "type mismatch" -) -(assert_invalid - (module (func $type-unconsumed-result2 - (unreachable) (i32.const 0) (i32.add) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unconsumed-poly0 (unreachable) (select))) - "type mismatch" -) -(assert_invalid - (module (func $type-unconsumed-poly1 (unreachable) (i32.const 0) (select))) - "type mismatch" -) -(assert_invalid - (module (func $type-unconsumed-poly2 - (unreachable) (i32.const 0) (i32.const 0) (select) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-unary-num-vs-void-after-break - (block (br 0) (block (drop (i32.eqz (nop))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-num-after-break - (block (br 0) (drop (i32.eqz (f32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-void-after-break - (block (br 0) (block (drop (f32.eq (i32.const 1))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-num-after-break - (block (br 0) (drop (f32.eq (i32.const 1) (f32.const 0)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-void-after-break - (block (br 0) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-num-after-break (result i32) - (block (result i32) (i32.const 1) (br 0) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-void-after-break - (block (loop (br 1) (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-num-after-break (result i32) - (loop (result i32) (br 1 (i32.const 1)) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-void-after-break - (br 0) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-num-after-break (result i32) - (br 0 (i32.const 1)) (f32.const 0) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-unary-num-vs-void-after-return - (return) (block (drop (i32.eqz (nop)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-num-after-return - (return) (drop (i32.eqz (f32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-void-after-return - (return) (block (drop (f32.eq (i32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-num-after-return - (return) (drop (f32.eq (i32.const 1) (f32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-void-after-return - (block (return) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-num-after-return (result i32) - (block (result i32) (i32.const 1) (return (i32.const 0)) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-void-after-return - (block (loop (return) (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-num-after-return (result i32) - (loop (result i32) (return (i32.const 1)) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-void-after-return - (return) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-num-after-return (result i32) - (return (i32.const 1)) (f32.const 0) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-unary-num-vs-void-after-unreachable - (unreachable) (block (drop (i32.eqz (nop)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-void-in-loop-after-unreachable - (unreachable) (loop (drop (i32.eqz (nop)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-void-in-i32-loop-after-unreachable - (unreachable) (loop (result i32) (i32.eqz (nop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-num-after-unreachable - (unreachable) (drop (i32.eqz (f32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-void-after-unreachable - (unreachable) (block (drop (f32.eq (i32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-num-after-unreachable - (unreachable) (drop (f32.eq (i32.const 1) (f32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-void-after-unreachable - (block (unreachable) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-num-after-unreachable (result i32) - (block (result i32) (i32.const 1) (unreachable) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-void-after-unreachable - (block (loop (unreachable) (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-num-after-unreachable (result i32) - (loop (result i32) (unreachable) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-void-after-unreachable - (unreachable) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-num-after-unreachable (result i32) - (unreachable) (f32.const 0) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-void-in-if-after-unreachable - (unreachable) (if (i32.const 0) (then (drop (i32.eqz (nop))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-void-in-else-after-unreachable - (unreachable) (if (i32.const 0) (then (nop)) (else (drop (i32.eqz (nop))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-void-in-else-after-unreachable-if - (if (i32.const 0) (then (unreachable)) (else (drop (i32.eqz (nop))))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-unary-num-vs-void-after-nested-unreachable - (block (unreachable)) (block (drop (i32.eqz (nop)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-num-after-nested-unreachable - (block (unreachable)) (drop (i32.eqz (f32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-void-after-nested-unreachable - (block (unreachable)) (block (drop (f32.eq (i32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-num-after-nested-unreachable - (block (unreachable)) (drop (f32.eq (i32.const 1) (f32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-void-after-nested-unreachable - (block (block (unreachable)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-num-after-nested-unreachable - (result i32) - (block (result i32) (i32.const 1) (block (unreachable)) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-void-after-nested-unreachable - (block (loop (block (unreachable)) (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-num-after-nested-unreachable - (result i32) - (loop (result i32) (block (unreachable)) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-void-after-nested-unreachable - (block (unreachable)) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-num-after-nested-unreachable - (result i32) - (block (unreachable)) (f32.const 0) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-unary-num-vs-void-after-infinite-loop - (loop (br 0)) (block (drop (i32.eqz (nop)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-num-after-infinite-loop - (loop (br 0)) (drop (i32.eqz (f32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-void-after-infinite-loop - (loop (br 0)) (block (drop (f32.eq (i32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-num-after-infinite-loop - (loop (br 0)) (drop (f32.eq (i32.const 1) (f32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-void-after-infinite-loop - (block (loop (br 0)) (i32.const 1)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-num-after-infinite-loop (result i32) - (block (result i32) (i32.const 1) (loop (br 0)) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-void-after-infinite-loop - (block (loop (loop (br 0)) (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-num-vs-num-after-infinite-loop (result i32) - (loop (result i32) (loop (br 0)) (f32.const 0)) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-void-after-infinite-loop - (loop (br 0)) (i32.const 1) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-func-value-num-vs-num-after-infinite-loop (result i32) - (loop (br 0)) (f32.const 0) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-unary-num-vs-void-in-dead-body - (if (i32.const 0) (then (drop (i32.eqz (nop))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-unary-num-vs-num-in-dead-body - (if (i32.const 0) (then (drop (i32.eqz (f32.const 1))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-void-in-dead-body - (if (i32.const 0) (then (drop (f32.eq (i32.const 1))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-binary-num-vs-num-in-dead-body - (if (i32.const 0) (then (drop (f32.eq (i32.const 1) (f32.const 0))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-if-value-num-vs-void-in-dead-body - (if (i32.const 0) (then (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-if-value-num-vs-num-in-dead-body (result i32) - (if (result i32) (i32.const 0) (then (f32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-void-in-dead-body - (if (i32.const 0) (then (block (i32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-num-in-dead-body (result i32) - (if (result i32) (i32.const 0) (then (block (result i32) (f32.const 0)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-void-in-dead-body - (if (i32.const 0) (then (loop (i32.const 1)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-num-vs-num-in-dead-body (result i32) - (if (result i32) (i32.const 0) (then (loop (result i32) (f32.const 0)))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-return-second-num-vs-num (result i32) - (return (i32.const 1)) (return (f64.const 1)) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-br-second-num-vs-num (result i32) - (block (result i32) (br 0 (i32.const 1)) (br 0 (f64.const 1))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-br_if-cond-num-vs-num-after-unreachable - (block (br_if 0 (unreachable) (f32.const 0))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br_if-num-vs-void-after-unreachable (result i32) - (block (result i32) - (block (unreachable) (br_if 1 (i32.const 0) (i32.const 0))) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br_if-num-vs-num-after-unreachable (result i32) - (block (result i32) - (block (result f32) (unreachable) (br_if 1 (i32.const 0) (i32.const 0))) - (drop) (i32.const 0) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br_if-num2-vs-num-after-unreachable (result i32) - (block (result i32) - (unreachable) (br_if 0 (i32.const 0) (i32.const 0)) (i32.const 0) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br_table-num-vs-num-after-unreachable - (block (br_table 0 (unreachable) (f32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br_table-label-num-vs-num-after-unreachable (result i32) - (block (result i32) (unreachable) (br_table 0 (f32.const 0) (i32.const 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br_table-label-num-vs-label-void-after-unreachable - (block - (block (result f32) - (unreachable) - (br_table 0 1 0 (i32.const 1)) - ) - (drop) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-br_table-label-num-vs-label-num-after-unreachable - (block (result f64) - (block (result f32) - (unreachable) - (br_table 0 1 1 (i32.const 1)) - ) - (drop) - (f64.const 0) - ) - (drop) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-block-value-nested-unreachable-num-vs-void - (block (i32.const 3) (block (unreachable))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-unreachable-void-vs-num (result i32) - (block (block (unreachable))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-unreachable-num-vs-num (result i32) - (block (result i64) (i64.const 0) (block (unreachable))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-unreachable-num2-vs-void (result i32) - (block (i32.const 3) (block (i64.const 1) (unreachable))) (i32.const 9) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-block-value-nested-br-num-vs-void - (block (i32.const 3) (block (br 1))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-br-void-vs-num (result i32) - (block (result i32) (block (br 1 (i32.const 0)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-br-num-vs-num (result i32) - (block (result i32) (i64.const 0) (block (br 1 (i32.const 0)))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-block-value-nested2-br-num-vs-void - (block (block (i32.const 3) (block (br 2)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested2-br-void-vs-num (result i32) - (block (result i32) (block (block (br 2 (i32.const 0))))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested2-br-num-vs-num (result i32) - (block (result i32) - (block (result i64) (i64.const 0) (block (br 2 (i32.const 0)))) - ) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested2-br-num2-vs-void (result i32) - (block (i32.const 3) (block (i64.const 1) (br 1))) (i32.const 9) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-block-value-nested-return-num-vs-void - (block (i32.const 3) (block (return))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-return-void-vs-num (result i32) - (block (block (return (i32.const 0)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-return-num-vs-num (result i32) - (block (result i64) (i64.const 0) (block (return (i32.const 0)))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-block-value-nested-return-num2-vs-void (result i32) - (block (i32.const 3) (block (i64.const 1) (return (i32.const 0)))) - (i32.const 9) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-loop-value-nested-unreachable-num-vs-void - (loop (i32.const 3) (block (unreachable))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-nested-unreachable-void-vs-num (result i32) - (loop (block (unreachable))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-loop-value-nested-unreachable-num-vs-num (result i32) - (loop (result i64) (i64.const 0) (block (unreachable))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $type-cont-last-void-vs-empty (result i32) - (loop (br 0 (nop))) - )) - "type mismatch" -) -(assert_invalid - (module (func $type-cont-last-num-vs-empty (result i32) - (loop (br 0 (i32.const 0))) - )) - "type mismatch" -) - -(assert_invalid - (module (func $tee-local-unreachable-value - (local i32) - (tee_local 0 (unreachable)) - )) - "type mismatch" -) -(assert_invalid - (module (func $br_if-unreachable (result i32) - (block (result i32) - (block - (br_if 1 (unreachable) (i32.const 0)) - ) - (i32.const 0) - ) - )) - "type mismatch" -) diff --git a/libraries/wasm-jit/Test/spec/unwind.wast b/libraries/wasm-jit/Test/spec/unwind.wast deleted file mode 100644 index 40b0dcf6f22..00000000000 --- a/libraries/wasm-jit/Test/spec/unwind.wast +++ /dev/null @@ -1,203 +0,0 @@ -;; Test that control-flow transfer unwinds stack and it can be anything after. - -(module - (func (export "func-unwind-by-unreachable") - (i32.const 3) (i64.const 1) (unreachable) - ) - (func (export "func-unwind-by-br") - (i32.const 3) (i64.const 1) (br 0) - ) - (func (export "func-unwind-by-br-value") (result i32) - (i32.const 3) (i64.const 1) (br 0 (i32.const 9)) - ) - (func (export "func-unwind-by-br_table") - (i32.const 3) (i64.const 1) (br_table 0 (i32.const 0)) - ) - (func (export "func-unwind-by-br_table-value") (result i32) - (i32.const 3) (i64.const 1) (br_table 0 (i32.const 9) (i32.const 0)) - ) - (func (export "func-unwind-by-return") (result i32) - (i32.const 3) (i64.const 1) (return (i32.const 9)) - ) - - (func (export "block-unwind-by-unreachable") - (block (i32.const 3) (i64.const 1) (unreachable)) - ) - (func (export "block-unwind-by-br") (result i32) - (block (i32.const 3) (i64.const 1) (br 0)) (i32.const 9) - ) - (func (export "block-unwind-by-br-value") (result i32) - (block (result i32) (i32.const 3) (i64.const 1) (br 0 (i32.const 9))) - ) - (func (export "block-unwind-by-br_table") (result i32) - (block (i32.const 3) (i64.const 1) (br_table 0 (i32.const 0))) (i32.const 9) - ) - (func (export "block-unwind-by-br_table-value") (result i32) - (block (result i32) - (i32.const 3) (i64.const 1) (br_table 0 (i32.const 9) (i32.const 0)) - ) - ) - (func (export "block-unwind-by-return") (result i32) - (block (result i32) (i32.const 3) (i64.const 1) (return (i32.const 9))) - ) - - (func (export "block-nested-unwind-by-unreachable") (result i32) - (block (result i32) (i32.const 3) (block (i64.const 1) (unreachable))) - ) - (func (export "block-nested-unwind-by-br") (result i32) - (block (i32.const 3) (block (i64.const 1) (br 1)) (drop)) (i32.const 9) - ) - (func (export "block-nested-unwind-by-br-value") (result i32) - (block (result i32) - (i32.const 3) (block (i64.const 1) (br 1 (i32.const 9))) - ) - ) - (func (export "block-nested-unwind-by-br_table") (result i32) - (block - (i32.const 3) (block (i64.const 1) (br_table 1 (i32.const 1))) - (drop) - ) - (i32.const 9) - ) - (func (export "block-nested-unwind-by-br_table-value") (result i32) - (block (result i32) - (i32.const 3) - (block (i64.const 1) (br_table 1 (i32.const 9) (i32.const 1))) - ) - ) - (func (export "block-nested-unwind-by-return") (result i32) - (block (result i32) - (i32.const 3) (block (i64.const 1) (return (i32.const 9))) - ) - ) - - (func (export "unary-after-unreachable") (result i32) - (f32.const 0) (unreachable) (i64.eqz) - ) - (func (export "unary-after-br") (result i32) - (block (result i32) (f32.const 0) (br 0 (i32.const 9)) (i64.eqz)) - ) - (func (export "unary-after-br_table") (result i32) - (block (result i32) - (f32.const 0) (br_table 0 0 (i32.const 9) (i32.const 0)) (i64.eqz) - ) - ) - (func (export "unary-after-return") (result i32) - (f32.const 0) (return (i32.const 9)) (i64.eqz) - ) - - (func (export "binary-after-unreachable") (result i32) - (f32.const 0) (f64.const 1) (unreachable) (i64.eq) - ) - (func (export "binary-after-br") (result i32) - (block (result i32) - (f32.const 0) (f64.const 1) (br 0 (i32.const 9)) (i64.eq) - ) - ) - (func (export "binary-after-br_table") (result i32) - (block (result i32) - (f32.const 0) (f64.const 1) (br_table 0 (i32.const 9) (i32.const 0)) - (i64.eq) - ) - ) - (func (export "binary-after-return") (result i32) - (f32.const 0) (f64.const 1) (return (i32.const 9)) (i64.eq) - ) - - (func (export "select-after-unreachable") (result i32) - (f32.const 0) (f64.const 1) (i64.const 0) (unreachable) (select) - ) - (func (export "select-after-br") (result i32) - (block (result i32) - (f32.const 0) (f64.const 1) (i64.const 0) (br 0 (i32.const 9)) (select) - ) - ) - (func (export "select-after-br_table") (result i32) - (block (result i32) - (f32.const 0) (f64.const 1) (i64.const 0) - (br_table 0 (i32.const 9) (i32.const 0)) - (select) - ) - ) - (func (export "select-after-return") (result i32) - (f32.const 0) (f64.const 1) (i64.const 1) (return (i32.const 9)) (select) - ) - - (func (export "block-value-after-unreachable") (result i32) - (block (result i32) (f32.const 0) (unreachable)) - ) - (func (export "block-value-after-br") (result i32) - (block (result i32) (f32.const 0) (br 0 (i32.const 9))) - ) - (func (export "block-value-after-br_table") (result i32) - (block (result i32) - (f32.const 0) (br_table 0 0 (i32.const 9) (i32.const 0)) - ) - ) - (func (export "block-value-after-return") (result i32) - (block (result i32) (f32.const 0) (return (i32.const 9))) - ) - - (func (export "loop-value-after-unreachable") (result i32) - (loop (result i32) (f32.const 0) (unreachable)) - ) - (func (export "loop-value-after-br") (result i32) - (block (result i32) (loop (result i32) (f32.const 0) (br 1 (i32.const 9)))) - ) - (func (export "loop-value-after-br_table") (result i32) - (block (result i32) - (loop (result i32) - (f32.const 0) (br_table 1 1 (i32.const 9) (i32.const 0)) - ) - ) - ) - (func (export "loop-value-after-return") (result i32) - (loop (result i32) (f32.const 0) (return (i32.const 9))) - ) -) - -(assert_trap (invoke "func-unwind-by-unreachable") "unreachable") -(assert_return (invoke "func-unwind-by-br")) -(assert_return (invoke "func-unwind-by-br-value") (i32.const 9)) -(assert_return (invoke "func-unwind-by-br_table")) -(assert_return (invoke "func-unwind-by-br_table-value") (i32.const 9)) -(assert_return (invoke "func-unwind-by-return") (i32.const 9)) - -(assert_trap (invoke "block-unwind-by-unreachable") "unreachable") -(assert_return (invoke "block-unwind-by-br") (i32.const 9)) -(assert_return (invoke "block-unwind-by-br-value") (i32.const 9)) -(assert_return (invoke "block-unwind-by-br_table") (i32.const 9)) -(assert_return (invoke "block-unwind-by-br_table-value") (i32.const 9)) -(assert_return (invoke "block-unwind-by-return") (i32.const 9)) - -(assert_trap (invoke "block-nested-unwind-by-unreachable") "unreachable") -(assert_return (invoke "block-nested-unwind-by-br") (i32.const 9)) -(assert_return (invoke "block-nested-unwind-by-br-value") (i32.const 9)) -(assert_return (invoke "block-nested-unwind-by-br_table") (i32.const 9)) -(assert_return (invoke "block-nested-unwind-by-br_table-value") (i32.const 9)) -(assert_return (invoke "block-nested-unwind-by-return") (i32.const 9)) - -(assert_trap (invoke "unary-after-unreachable") "unreachable") -(assert_return (invoke "unary-after-br") (i32.const 9)) -(assert_return (invoke "unary-after-br_table") (i32.const 9)) -(assert_return (invoke "unary-after-return") (i32.const 9)) - -(assert_trap (invoke "binary-after-unreachable") "unreachable") -(assert_return (invoke "binary-after-br") (i32.const 9)) -(assert_return (invoke "binary-after-br_table") (i32.const 9)) -(assert_return (invoke "binary-after-return") (i32.const 9)) - -(assert_trap (invoke "select-after-unreachable") "unreachable") -(assert_return (invoke "select-after-br") (i32.const 9)) -(assert_return (invoke "select-after-br_table") (i32.const 9)) -(assert_return (invoke "select-after-return") (i32.const 9)) - -(assert_trap (invoke "block-value-after-unreachable") "unreachable") -(assert_return (invoke "block-value-after-br") (i32.const 9)) -(assert_return (invoke "block-value-after-br_table") (i32.const 9)) -(assert_return (invoke "block-value-after-return") (i32.const 9)) - -(assert_trap (invoke "loop-value-after-unreachable") "unreachable") -(assert_return (invoke "loop-value-after-br") (i32.const 9)) -(assert_return (invoke "loop-value-after-br_table") (i32.const 9)) -(assert_return (invoke "loop-value-after-return") (i32.const 9)) diff --git a/libraries/wasm-jit/Test/spec/utf8-custom-section-id.wast b/libraries/wasm-jit/Test/spec/utf8-custom-section-id.wast deleted file mode 100644 index 129d2b91393..00000000000 --- a/libraries/wasm-jit/Test/spec/utf8-custom-section-id.wast +++ /dev/null @@ -1,1792 +0,0 @@ -;;;;;; Invalid UTF-8 custom section names - -;;;; Continuation bytes not preceded by prefixes - -;; encoding starts with (first) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\80" ;; "\80" - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x8f) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\8f" ;; "\8f" - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x90) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\90" ;; "\90" - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x9f) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\9f" ;; "\9f" - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0xa0) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\a0" ;; "\a0" - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (last) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\bf" ;; "\bf" - ) - "invalid UTF-8 encoding" -) - -;;;; 2-byte sequences - -;; 2-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\c2\80\80" ;; "\c2\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 2-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\c2" ;; "\c2" - ) - "invalid UTF-8 encoding" -) - -;; 2-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c2\2e" ;; "\c2." - ) - "invalid UTF-8 encoding" -) - -;;;; 2-byte sequence contents - -;; overlong encoding after 0xc0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c0\80" ;; "\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c0\bf" ;; "\c0\bf" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc1 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c1\80" ;; "\c1\80" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc1 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c1\bf" ;; "\c1\bf" - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a contination byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c2\00" ;; "\c2\00" - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c2\7f" ;; "\c2\7f" - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c2\c0" ;; "\c2\c0" - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\c2\fd" ;; "\c2\fd" - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\df\00" ;; "\df\00" - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\df\7f" ;; "\df\7f" - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\df\c0" ;; "\df\c0" - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\df\fd" ;; "\df\fd" - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequences - -;; 3-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\e1\80\80\80" ;; "\e1\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\e1\80" ;; "\e1\80" - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\80\2e" ;; "\e1\80." - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\e1" ;; "\e1" - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\e1\2e" ;; "\e1." - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequence contents - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\00\a0" ;; "\e0\00\a0" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\7f\a0" ;; "\e0\7f\a0" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\80\80" ;; "\e0\80\80" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\80\a0" ;; "\e0\80\a0" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\9f\a0" ;; "\e0\9f\a0" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\9f\bf" ;; "\e0\9f\bf" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\c0\a0" ;; "\e0\c0\a0" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\fd\a0" ;; "\e0\fd\a0" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\00\80" ;; "\e1\00\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\7f\80" ;; "\e1\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\c0\80" ;; "\e1\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\fd\80" ;; "\e1\fd\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\00\80" ;; "\ec\00\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\7f\80" ;; "\ec\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\c0\80" ;; "\ec\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\fd\80" ;; "\ec\fd\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\00\80" ;; "\ed\00\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\7f\80" ;; "\ed\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\a0\80" ;; "\ed\a0\80" - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\a0\bf" ;; "\ed\a0\bf" - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\bf\80" ;; "\ed\bf\80" - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\bf\bf" ;; "\ed\bf\bf" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\c0\80" ;; "\ed\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\fd\80" ;; "\ed\fd\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\00\80" ;; "\ee\00\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\7f\80" ;; "\ee\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\c0\80" ;; "\ee\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\fd\80" ;; "\ee\fd\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\00\80" ;; "\ef\00\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\7f\80" ;; "\ef\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\c0\80" ;; "\ef\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\fd\80" ;; "\ef\fd\80" - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequence contents (third byte) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\a0\00" ;; "\e0\a0\00" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\a0\7f" ;; "\e0\a0\7f" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\a0\c0" ;; "\e0\a0\c0" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e0\a0\fd" ;; "\e0\a0\fd" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\80\00" ;; "\e1\80\00" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\80\7f" ;; "\e1\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\80\c0" ;; "\e1\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\e1\80\fd" ;; "\e1\80\fd" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\80\00" ;; "\ec\80\00" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\80\7f" ;; "\ec\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\80\c0" ;; "\ec\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ec\80\fd" ;; "\ec\80\fd" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\80\00" ;; "\ed\80\00" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\80\7f" ;; "\ed\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\80\c0" ;; "\ed\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ed\80\fd" ;; "\ed\80\fd" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\80\00" ;; "\ee\80\00" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\80\7f" ;; "\ee\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\80\c0" ;; "\ee\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ee\80\fd" ;; "\ee\80\fd" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\80\00" ;; "\ef\80\00" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\80\7f" ;; "\ef\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\80\c0" ;; "\ef\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\ef\80\fd" ;; "\ef\80\fd" - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequences - -;; 4-byte sequence contains 5 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\06" ;; custom section - "\05\f1\80\80\80\80" ;; "\f1\80\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\f1\80\80" ;; "\f1\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\80\23" ;; "\f1\80\80#" - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\f1\80" ;; "\f1\80" - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\f1\80\23" ;; "\f1\80#" - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\f1" ;; "\f1" - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\f1\23" ;; "\f1#" - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\00\90\90" ;; "\f0\00\90\90" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\7f\90\90" ;; "\f0\7f\90\90" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\80\80\80" ;; "\f0\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\80\90\90" ;; "\f0\80\90\90" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\8f\90\90" ;; "\f0\8f\90\90" - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\8f\bf\bf" ;; "\f0\8f\bf\bf" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\c0\90\90" ;; "\f0\c0\90\90" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\fd\90\90" ;; "\f0\fd\90\90" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\00\80\80" ;; "\f1\00\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\7f\80\80" ;; "\f1\7f\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\c0\80\80" ;; "\f1\c0\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\fd\80\80" ;; "\f1\fd\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\00\80\80" ;; "\f3\00\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\7f\80\80" ;; "\f3\7f\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\c0\80\80" ;; "\f3\c0\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\fd\80\80" ;; "\f3\fd\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\00\80\80" ;; "\f4\00\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\7f\80\80" ;; "\f4\7f\80\80" - ) - "invalid UTF-8 encoding" -) - -;; (first) invalid code point -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\90\80\80" ;; "\f4\90\80\80" - ) - "invalid UTF-8 encoding" -) - -;; invalid code point -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\bf\80\80" ;; "\f4\bf\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\c0\80\80" ;; "\f4\c0\80\80" - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\fd\80\80" ;; "\f4\fd\80\80" - ) - "invalid UTF-8 encoding" -) - -;; (first) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f5\80\80\80" ;; "\f5\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f7\80\80\80" ;; "\f7\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f7\bf\bf\bf" ;; "\f7\bf\bf\bf" - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents (third byte) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\00\90" ;; "\f0\90\00\90" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\7f\90" ;; "\f0\90\7f\90" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\c0\90" ;; "\f0\90\c0\90" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\fd\90" ;; "\f0\90\fd\90" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\00\80" ;; "\f1\80\00\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\7f\80" ;; "\f1\80\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\c0\80" ;; "\f1\80\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\fd\80" ;; "\f1\80\fd\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\00\80" ;; "\f3\80\00\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\7f\80" ;; "\f3\80\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\c0\80" ;; "\f3\80\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\fd\80" ;; "\f3\80\fd\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\00\80" ;; "\f4\80\00\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\7f\80" ;; "\f4\80\7f\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\c0\80" ;; "\f4\80\c0\80" - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\fd\80" ;; "\f4\80\fd\80" - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents (fourth byte) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\90\00" ;; "\f0\90\90\00" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\90\7f" ;; "\f0\90\90\7f" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\90\c0" ;; "\f0\90\90\c0" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f0\90\90\fd" ;; "\f0\90\90\fd" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\80\00" ;; "\f1\80\80\00" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\80\7f" ;; "\f1\80\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\80\c0" ;; "\f1\80\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f1\80\80\fd" ;; "\f1\80\80\fd" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\80\00" ;; "\f3\80\80\00" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\80\7f" ;; "\f3\80\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\80\c0" ;; "\f3\80\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f3\80\80\fd" ;; "\f3\80\80\fd" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\80\00" ;; "\f4\80\80\00" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\80\7f" ;; "\f4\80\80\7f" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\80\c0" ;; "\f4\80\80\c0" - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f4\80\80\fd" ;; "\f4\80\80\fd" - ) - "invalid UTF-8 encoding" -) - -;;;; 5-byte sequences - -;; 5-byte sequence contains 6 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\07" ;; custom section - "\06\f8\80\80\80\80\80" ;; "\f8\80\80\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 4 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f8\80\80\80" ;; "\f8\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\06" ;; custom section - "\05\f8\80\80\80\23" ;; "\f8\80\80\80#" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\f8\80\80" ;; "\f8\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\f8\80\80\23" ;; "\f8\80\80#" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\f8\80" ;; "\f8\80" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\f8\80\23" ;; "\f8\80#" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\f8" ;; "\f8" - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\f8\23" ;; "\f8#" - ) - "invalid UTF-8 encoding" -) - -;;;; 5-byte sequence contents - -;; (first) invalid 5-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\06" ;; custom section - "\05\f8\80\80\80\80" ;; "\f8\80\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 5-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\06" ;; custom section - "\05\fb\bf\bf\bf\bf" ;; "\fb\bf\bf\bf\bf" - ) - "invalid UTF-8 encoding" -) - -;;;; 6-byte sequences - -;; 6-byte sequence contains 7 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\08" ;; custom section - "\07\fc\80\80\80\80\80\80" ;; "\fc\80\80\80\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 5 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\06" ;; custom section - "\05\fc\80\80\80\80" ;; "\fc\80\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 5 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\07" ;; custom section - "\06\fc\80\80\80\80\23" ;; "\fc\80\80\80\80#" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 4 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\fc\80\80\80" ;; "\fc\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\06" ;; custom section - "\05\fc\80\80\80\23" ;; "\fc\80\80\80#" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\fc\80\80" ;; "\fc\80\80" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\fc\80\80\23" ;; "\fc\80\80#" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\fc\80" ;; "\fc\80" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\04" ;; custom section - "\03\fc\80\23" ;; "\fc\80#" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\fc" ;; "\fc" - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\fc\23" ;; "\fc#" - ) - "invalid UTF-8 encoding" -) - -;;;; 6-byte sequence contents - -;; (first) invalid 6-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\07" ;; custom section - "\06\fc\80\80\80\80\80" ;; "\fc\80\80\80\80\80" - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 6-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\07" ;; custom section - "\06\fd\bf\bf\bf\bf\bf" ;; "\fd\bf\bf\bf\bf\bf" - ) - "invalid UTF-8 encoding" -) - -;;;; Miscellaneous invalid bytes - -;; invalid byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\fe" ;; "\fe" - ) - "invalid UTF-8 encoding" -) - -;; invalid byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\02" ;; custom section - "\01\ff" ;; "\ff" - ) - "invalid UTF-8 encoding" -) - -;; UTF-16BE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\fe\ff" ;; "\fe\ff" - ) - "invalid UTF-8 encoding" -) - -;; UTF-32BE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\00\00\fe\ff" ;; "\00\00\fe\ff" - ) - "invalid UTF-8 encoding" -) - -;; UTF-16LE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\03" ;; custom section - "\02\ff\fe" ;; "\ff\fe" - ) - "invalid UTF-8 encoding" -) - -;; UTF-32LE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\00\05" ;; custom section - "\04\ff\fe\00\00" ;; "\ff\fe\00\00" - ) - "invalid UTF-8 encoding" -) - diff --git a/libraries/wasm-jit/Test/spec/utf8-import-field.wast b/libraries/wasm-jit/Test/spec/utf8-import-field.wast deleted file mode 100644 index 1ff2aa03068..00000000000 --- a/libraries/wasm-jit/Test/spec/utf8-import-field.wast +++ /dev/null @@ -1,2672 +0,0 @@ -;;;;;; Invalid UTF-8 import field names - -;;;; Continuation bytes not preceded by prefixes - -;; encoding starts with (first) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\80" ;; "\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x8f) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\8f" ;; "\8f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x90) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\90" ;; "\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x9f) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\9f" ;; "\9f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0xa0) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\a0" ;; "\a0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (last) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\bf" ;; "\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 2-byte sequences - -;; 2-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\c2\80\80" ;; "\c2\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 2-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\c2" ;; "\c2" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 2-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c2\2e" ;; "\c2." - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 2-byte sequence contents - -;; overlong encoding after 0xc0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c0\80" ;; "\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c0\bf" ;; "\c0\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc1 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c1\80" ;; "\c1\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc1 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c1\bf" ;; "\c1\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a contination byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c2\00" ;; "\c2\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c2\7f" ;; "\c2\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c2\c0" ;; "\c2\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\c2\fd" ;; "\c2\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\df\00" ;; "\df\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\df\7f" ;; "\df\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\df\c0" ;; "\df\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\df\fd" ;; "\df\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequences - -;; 3-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\e1\80\80\80" ;; "\e1\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\e1\80" ;; "\e1\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\80\2e" ;; "\e1\80." - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\e1" ;; "\e1" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\e1\2e" ;; "\e1." - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequence contents - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\00\a0" ;; "\e0\00\a0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\7f\a0" ;; "\e0\7f\a0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\80\80" ;; "\e0\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\80\a0" ;; "\e0\80\a0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\9f\a0" ;; "\e0\9f\a0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\9f\bf" ;; "\e0\9f\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\c0\a0" ;; "\e0\c0\a0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\fd\a0" ;; "\e0\fd\a0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\00\80" ;; "\e1\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\7f\80" ;; "\e1\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\c0\80" ;; "\e1\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\fd\80" ;; "\e1\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\00\80" ;; "\ec\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\7f\80" ;; "\ec\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\c0\80" ;; "\ec\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\fd\80" ;; "\ec\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\00\80" ;; "\ed\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\7f\80" ;; "\ed\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\a0\80" ;; "\ed\a0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\a0\bf" ;; "\ed\a0\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\bf\80" ;; "\ed\bf\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\bf\bf" ;; "\ed\bf\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\c0\80" ;; "\ed\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\fd\80" ;; "\ed\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\00\80" ;; "\ee\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\7f\80" ;; "\ee\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\c0\80" ;; "\ee\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\fd\80" ;; "\ee\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\00\80" ;; "\ef\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\7f\80" ;; "\ef\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\c0\80" ;; "\ef\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\fd\80" ;; "\ef\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequence contents (third byte) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\a0\00" ;; "\e0\a0\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\a0\7f" ;; "\e0\a0\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\a0\c0" ;; "\e0\a0\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e0\a0\fd" ;; "\e0\a0\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\80\00" ;; "\e1\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\80\7f" ;; "\e1\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\80\c0" ;; "\e1\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\e1\80\fd" ;; "\e1\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\80\00" ;; "\ec\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\80\7f" ;; "\ec\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\80\c0" ;; "\ec\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ec\80\fd" ;; "\ec\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\80\00" ;; "\ed\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\80\7f" ;; "\ed\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\80\c0" ;; "\ed\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ed\80\fd" ;; "\ed\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\80\00" ;; "\ee\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\80\7f" ;; "\ee\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\80\c0" ;; "\ee\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ee\80\fd" ;; "\ee\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\80\00" ;; "\ef\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\80\7f" ;; "\ef\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\80\c0" ;; "\ef\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\ef\80\fd" ;; "\ef\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequences - -;; 4-byte sequence contains 5 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\05\f1\80\80\80\80" ;; "\f1\80\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\f1\80\80" ;; "\f1\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\80\23" ;; "\f1\80\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\f1\80" ;; "\f1\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\f1\80\23" ;; "\f1\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\f1" ;; "\f1" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\f1\23" ;; "\f1#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\00\90\90" ;; "\f0\00\90\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\7f\90\90" ;; "\f0\7f\90\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\80\80\80" ;; "\f0\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\80\90\90" ;; "\f0\80\90\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\8f\90\90" ;; "\f0\8f\90\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\8f\bf\bf" ;; "\f0\8f\bf\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\c0\90\90" ;; "\f0\c0\90\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\fd\90\90" ;; "\f0\fd\90\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\00\80\80" ;; "\f1\00\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\7f\80\80" ;; "\f1\7f\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\c0\80\80" ;; "\f1\c0\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\fd\80\80" ;; "\f1\fd\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\00\80\80" ;; "\f3\00\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\7f\80\80" ;; "\f3\7f\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\c0\80\80" ;; "\f3\c0\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\fd\80\80" ;; "\f3\fd\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\00\80\80" ;; "\f4\00\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\7f\80\80" ;; "\f4\7f\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (first) invalid code point -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\90\80\80" ;; "\f4\90\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; invalid code point -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\bf\80\80" ;; "\f4\bf\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\c0\80\80" ;; "\f4\c0\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\fd\80\80" ;; "\f4\fd\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (first) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f5\80\80\80" ;; "\f5\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f7\80\80\80" ;; "\f7\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f7\bf\bf\bf" ;; "\f7\bf\bf\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents (third byte) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\00\90" ;; "\f0\90\00\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\7f\90" ;; "\f0\90\7f\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\c0\90" ;; "\f0\90\c0\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\fd\90" ;; "\f0\90\fd\90" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\00\80" ;; "\f1\80\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\7f\80" ;; "\f1\80\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\c0\80" ;; "\f1\80\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\fd\80" ;; "\f1\80\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\00\80" ;; "\f3\80\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\7f\80" ;; "\f3\80\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\c0\80" ;; "\f3\80\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\fd\80" ;; "\f3\80\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\00\80" ;; "\f4\80\00\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\7f\80" ;; "\f4\80\7f\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\c0\80" ;; "\f4\80\c0\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\fd\80" ;; "\f4\80\fd\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents (fourth byte) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\90\00" ;; "\f0\90\90\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\90\7f" ;; "\f0\90\90\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\90\c0" ;; "\f0\90\90\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f0\90\90\fd" ;; "\f0\90\90\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\80\00" ;; "\f1\80\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\80\7f" ;; "\f1\80\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\80\c0" ;; "\f1\80\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f1\80\80\fd" ;; "\f1\80\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\80\00" ;; "\f3\80\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\80\7f" ;; "\f3\80\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\80\c0" ;; "\f3\80\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f3\80\80\fd" ;; "\f3\80\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\80\00" ;; "\f4\80\80\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\80\7f" ;; "\f4\80\80\7f" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\80\c0" ;; "\f4\80\80\c0" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f4\80\80\fd" ;; "\f4\80\80\fd" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 5-byte sequences - -;; 5-byte sequence contains 6 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\06\f8\80\80\80\80\80" ;; "\f8\80\80\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 4 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f8\80\80\80" ;; "\f8\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\05\f8\80\80\80\23" ;; "\f8\80\80\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\f8\80\80" ;; "\f8\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\f8\80\80\23" ;; "\f8\80\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\f8\80" ;; "\f8\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\f8\80\23" ;; "\f8\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\f8" ;; "\f8" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\f8\23" ;; "\f8#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 5-byte sequence contents - -;; (first) invalid 5-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\05\f8\80\80\80\80" ;; "\f8\80\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 5-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\05\fb\bf\bf\bf\bf" ;; "\fb\bf\bf\bf\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 6-byte sequences - -;; 6-byte sequence contains 7 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\11" ;; import section - "\01" ;; length 1 - "\07\fc\80\80\80\80\80\80" ;; "\fc\80\80\80\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 5 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\05\fc\80\80\80\80" ;; "\fc\80\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 5 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\06\fc\80\80\80\80\23" ;; "\fc\80\80\80\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 4 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\fc\80\80\80" ;; "\fc\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\05\fc\80\80\80\23" ;; "\fc\80\80\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\fc\80\80" ;; "\fc\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\fc\80\80\23" ;; "\fc\80\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\fc\80" ;; "\fc\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\03\fc\80\23" ;; "\fc\80#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\fc" ;; "\fc" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\fc\23" ;; "\fc#" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 6-byte sequence contents - -;; (first) invalid 6-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\06\fc\80\80\80\80\80" ;; "\fc\80\80\80\80\80" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 6-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\06\fd\bf\bf\bf\bf\bf" ;; "\fd\bf\bf\bf\bf\bf" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; Miscellaneous invalid bytes - -;; invalid byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\fe" ;; "\fe" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; invalid byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\01\ff" ;; "\ff" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-16BE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\fe\ff" ;; "\fe\ff" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-32BE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\00\00\fe\ff" ;; "\00\00\fe\ff" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-16LE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\02\ff\fe" ;; "\ff\fe" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-32LE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\ff\fe\00\00" ;; "\ff\fe\00\00" - "\04\74\65\73\74" ;; "test" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - diff --git a/libraries/wasm-jit/Test/spec/utf8-import-module.wast b/libraries/wasm-jit/Test/spec/utf8-import-module.wast deleted file mode 100644 index ceabbeb7ce9..00000000000 --- a/libraries/wasm-jit/Test/spec/utf8-import-module.wast +++ /dev/null @@ -1,2672 +0,0 @@ -;;;;;; Invalid UTF-8 import module names - -;;;; Continuation bytes not preceded by prefixes - -;; encoding starts with (first) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\80" ;; "\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x8f) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\8f" ;; "\8f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x90) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\90" ;; "\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0x9f) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\9f" ;; "\9f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (0xa0) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\a0" ;; "\a0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; encoding starts with (last) continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\bf" ;; "\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 2-byte sequences - -;; 2-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\c2\80\80" ;; "\c2\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 2-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\c2" ;; "\c2" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 2-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c2\2e" ;; "\c2." - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 2-byte sequence contents - -;; overlong encoding after 0xc0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c0\80" ;; "\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c0\bf" ;; "\c0\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc1 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c1\80" ;; "\c1\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xc1 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c1\bf" ;; "\c1\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a contination byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c2\00" ;; "\c2\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c2\7f" ;; "\c2\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c2\c0" ;; "\c2\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (first) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\c2\fd" ;; "\c2\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\df\00" ;; "\df\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\df\7f" ;; "\df\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\df\c0" ;; "\df\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte after (last) 2-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\df\fd" ;; "\df\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequences - -;; 3-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\e1\80\80\80" ;; "\e1\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\e1\80" ;; "\e1\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\80\2e" ;; "\e1\80." - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\e1" ;; "\e1" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 3-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\e1\2e" ;; "\e1." - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequence contents - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\00\a0" ;; "\e0\00\a0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\7f\a0" ;; "\e0\7f\a0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\80\80" ;; "\e0\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\80\a0" ;; "\e0\80\a0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\9f\a0" ;; "\e0\9f\a0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xe0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\9f\bf" ;; "\e0\9f\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\c0\a0" ;; "\e0\c0\a0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\fd\a0" ;; "\e0\fd\a0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\00\80" ;; "\e1\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\7f\80" ;; "\e1\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\c0\80" ;; "\e1\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\fd\80" ;; "\e1\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\00\80" ;; "\ec\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\7f\80" ;; "\ec\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\c0\80" ;; "\ec\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\fd\80" ;; "\ec\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\00\80" ;; "\ed\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\7f\80" ;; "\ed\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\a0\80" ;; "\ed\a0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\a0\bf" ;; "\ed\a0\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\bf\80" ;; "\ed\bf\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; byte sequence reserved for UTF-16 surrogate half -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\bf\bf" ;; "\ed\bf\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\c0\80" ;; "\ed\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\fd\80" ;; "\ed\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\00\80" ;; "\ee\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\7f\80" ;; "\ee\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\c0\80" ;; "\ee\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\fd\80" ;; "\ee\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\00\80" ;; "\ef\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\7f\80" ;; "\ef\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\c0\80" ;; "\ef\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\fd\80" ;; "\ef\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 3-byte sequence contents (third byte) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\a0\00" ;; "\e0\a0\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\a0\7f" ;; "\e0\a0\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\a0\c0" ;; "\e0\a0\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xe0) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e0\a0\fd" ;; "\e0\a0\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\80\00" ;; "\e1\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\80\7f" ;; "\e1\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\80\c0" ;; "\e1\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\e1\80\fd" ;; "\e1\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\80\00" ;; "\ec\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\80\7f" ;; "\ec\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\80\c0" ;; "\ec\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ec\80\fd" ;; "\ec\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\80\00" ;; "\ed\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\80\7f" ;; "\ed\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\80\c0" ;; "\ed\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xed) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ed\80\fd" ;; "\ed\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\80\00" ;; "\ee\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\80\7f" ;; "\ee\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\80\c0" ;; "\ee\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ee\80\fd" ;; "\ee\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\80\00" ;; "\ef\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\80\7f" ;; "\ef\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\80\c0" ;; "\ef\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 3-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\ef\80\fd" ;; "\ef\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequences - -;; 4-byte sequence contains 5 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\05\f1\80\80\80\80" ;; "\f1\80\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\f1\80\80" ;; "\f1\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\80\23" ;; "\f1\80\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\f1\80" ;; "\f1\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\f1\80\23" ;; "\f1\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\f1" ;; "\f1" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 4-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\f1\23" ;; "\f1#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\00\90\90" ;; "\f0\00\90\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\7f\90\90" ;; "\f0\7f\90\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\80\80\80" ;; "\f0\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\80\90\90" ;; "\f0\80\90\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\8f\90\90" ;; "\f0\8f\90\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; overlong encoding after 0xf0 prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\8f\bf\bf" ;; "\f0\8f\bf\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\c0\90\90" ;; "\f0\c0\90\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\fd\90\90" ;; "\f0\fd\90\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\00\80\80" ;; "\f1\00\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\7f\80\80" ;; "\f1\7f\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\c0\80\80" ;; "\f1\c0\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\fd\80\80" ;; "\f1\fd\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\00\80\80" ;; "\f3\00\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\7f\80\80" ;; "\f3\7f\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\c0\80\80" ;; "\f3\c0\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\fd\80\80" ;; "\f3\fd\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\00\80\80" ;; "\f4\00\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\7f\80\80" ;; "\f4\7f\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (first) invalid code point -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\90\80\80" ;; "\f4\90\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; invalid code point -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\bf\80\80" ;; "\f4\bf\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\c0\80\80" ;; "\f4\c0\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; first byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\fd\80\80" ;; "\f4\fd\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (first) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f5\80\80\80" ;; "\f5\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f7\80\80\80" ;; "\f7\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 4-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f7\bf\bf\bf" ;; "\f7\bf\bf\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents (third byte) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\00\90" ;; "\f0\90\00\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\7f\90" ;; "\f0\90\7f\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\c0\90" ;; "\f0\90\c0\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\fd\90" ;; "\f0\90\fd\90" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\00\80" ;; "\f1\80\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\7f\80" ;; "\f1\80\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\c0\80" ;; "\f1\80\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\fd\80" ;; "\f1\80\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\00\80" ;; "\f3\80\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\7f\80" ;; "\f3\80\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\c0\80" ;; "\f3\80\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\fd\80" ;; "\f3\80\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\00\80" ;; "\f4\80\00\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\7f\80" ;; "\f4\80\7f\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\c0\80" ;; "\f4\80\c0\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; second byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\fd\80" ;; "\f4\80\fd\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 4-byte sequence contents (fourth byte) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\90\00" ;; "\f0\90\90\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\90\7f" ;; "\f0\90\90\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\90\c0" ;; "\f0\90\90\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf0) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f0\90\90\fd" ;; "\f0\90\90\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\80\00" ;; "\f1\80\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\80\7f" ;; "\f1\80\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\80\c0" ;; "\f1\80\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (first normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f1\80\80\fd" ;; "\f1\80\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\80\00" ;; "\f3\80\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\80\7f" ;; "\f3\80\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\80\c0" ;; "\f3\80\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (last normal) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f3\80\80\fd" ;; "\f3\80\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\80\00" ;; "\f4\80\80\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\80\7f" ;; "\f4\80\80\7f" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\80\c0" ;; "\f4\80\80\c0" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; third byte after (0xf4) 4-byte prefix not a continuation byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f4\80\80\fd" ;; "\f4\80\80\fd" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 5-byte sequences - -;; 5-byte sequence contains 6 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\06\f8\80\80\80\80\80" ;; "\f8\80\80\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 4 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f8\80\80\80" ;; "\f8\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\05\f8\80\80\80\23" ;; "\f8\80\80\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\f8\80\80" ;; "\f8\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\f8\80\80\23" ;; "\f8\80\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\f8\80" ;; "\f8\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\f8\80\23" ;; "\f8\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\f8" ;; "\f8" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 5-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\f8\23" ;; "\f8#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 5-byte sequence contents - -;; (first) invalid 5-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\05\f8\80\80\80\80" ;; "\f8\80\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 5-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\05\fb\bf\bf\bf\bf" ;; "\fb\bf\bf\bf\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 6-byte sequences - -;; 6-byte sequence contains 7 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\11" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\07\fc\80\80\80\80\80\80" ;; "\fc\80\80\80\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 5 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\05\fc\80\80\80\80" ;; "\fc\80\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 5 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\06\fc\80\80\80\80\23" ;; "\fc\80\80\80\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 4 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\fc\80\80\80" ;; "\fc\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 4 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0f" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\05\fc\80\80\80\23" ;; "\fc\80\80\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 3 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\fc\80\80" ;; "\fc\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 3 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\fc\80\80\23" ;; "\fc\80\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 2 bytes at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\fc\80" ;; "\fc\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 2 bytes -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0d" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\03\fc\80\23" ;; "\fc\80#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 1 byte at end of string -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\fc" ;; "\fc" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; 6-byte sequence contains 1 byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\fc\23" ;; "\fc#" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; 6-byte sequence contents - -;; (first) invalid 6-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\06\fc\80\80\80\80\80" ;; "\fc\80\80\80\80\80" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; (last) invalid 6-byte prefix -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\10" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\06\fd\bf\bf\bf\bf\bf" ;; "\fd\bf\bf\bf\bf\bf" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;;;; Miscellaneous invalid bytes - -;; invalid byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\fe" ;; "\fe" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; invalid byte -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0b" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\01\ff" ;; "\ff" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-16BE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\fe\ff" ;; "\fe\ff" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-32BE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\00\00\fe\ff" ;; "\00\00\fe\ff" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-16LE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0c" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\02\ff\fe" ;; "\ff\fe" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - -;; UTF-32LE BOM -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\02\0e" ;; import section - "\01" ;; length 1 - "\04\74\65\73\74" ;; "test" - "\04\ff\fe\00\00" ;; "\ff\fe\00\00" - "\03" ;; GlobalImport - "\7f" ;; i32 - "\00" ;; immutable - ) - "invalid UTF-8 encoding" -) - diff --git a/libraries/wasm-jit/Test/spec/utf8-invalid-encoding.wast b/libraries/wasm-jit/Test/spec/utf8-invalid-encoding.wast deleted file mode 100644 index 3b35730989c..00000000000 --- a/libraries/wasm-jit/Test/spec/utf8-invalid-encoding.wast +++ /dev/null @@ -1,176 +0,0 @@ -(assert_malformed (module quote "(func (export \"\\00\\00\\fe\\ff\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\8f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\9f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\a0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c0\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c1\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c1\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c2\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c2\\2e\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c2\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c2\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c2\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c2\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\c2\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\df\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\df\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\df\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\df\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\00\\a0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\7f\\a0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\80\\a0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\9f\\a0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\9f\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\a0\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\a0\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\a0\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\a0\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\c0\\a0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e0\\fd\\a0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\2e\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\80\\2e\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\e1\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ec\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\a0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\a0\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\bf\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\bf\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ed\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ee\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ef\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\00\\90\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\7f\\90\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\80\\90\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\8f\\90\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\8f\\bf\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\00\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\7f\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\90\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\90\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\90\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\90\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\c0\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\90\\fd\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\c0\\90\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f0\\fd\\90\\90\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\00\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\7f\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\80\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\c0\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f1\\fd\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\00\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\7f\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\80\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\c0\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f3\\fd\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\00\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\7f\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\00\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\7f\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\80\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\80\\7f\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\80\\c0\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\80\\fd\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\c0\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\80\\fd\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\90\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\bf\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\c0\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f4\\fd\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f5\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f7\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f7\\bf\\bf\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\\80\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\\80\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\f8\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fb\\bf\\bf\\bf\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\\80\\80\\23\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\\80\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\\80\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fc\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fd\\bf\\bf\\bf\\bf\\bf\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fe\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\fe\\ff\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ff\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ff\\fe\\00\\00\"))") "invalid UTF-8 encoding") -(assert_malformed (module quote "(func (export \"\\ff\\fe\"))") "invalid UTF-8 encoding") diff --git a/libraries/wasm-jit/Test/wast/echo.wast b/libraries/wasm-jit/Test/wast/echo.wast deleted file mode 100644 index b7e5f9bc460..00000000000 --- a/libraries/wasm-jit/Test/wast/echo.wast +++ /dev/null @@ -1,63 +0,0 @@ -;; Classic Unix echo program in WebAssembly WASM AST - -(module - (data (i32.const 8) "\n\00") - (data (i32.const 12) " \00") - - (import "env" "memory" (memory 1)) - (import "env" "_fwrite" (func $__fwrite (param i32 i32 i32 i32) (result i32))) - (import "env" "_stdout" (global $stdoutPtr i32)) - (export "main" (func $main)) - - (func $strlen (param $s i32) (result i32) - (local $head i32) - (set_local $head (get_local $s)) - (loop $loop - (block $done - (br_if $done (i32.eq (i32.const 0) (i32.load8_u offset=0 (get_local $head)))) - (set_local $head (i32.add (get_local $head) (i32.const 1))) - ;; Would it be worth unrolling offset 1,2,3? - (br $loop) - ) - ) - (return (i32.sub (get_local $head) (get_local $s))) - ) - - (func $fputs (param $s i32) (param $stream i32) (result i32) - (local $len i32) - (set_local $len (call $strlen (get_local $s))) - (return (call $__fwrite - (get_local $s) ;; ptr - (i32.const 1) ;; size_t size => Data size - (get_local $len) ;; size_t nmemb => Length of our string - (get_local $stream))) ;; stream - ) - - (func $main (param $argc i32) (param $argv i32) (result i32) - (local $stdout i32) - (local $s i32) - (local $space i32) - (set_local $space (i32.const 0)) - (set_local $stdout (i32.load align=4 (get_global $stdoutPtr))) - - (loop $loop - (block $done - (set_local $argv (i32.add (get_local $argv) (i32.const 4))) - (set_local $s (i32.load (get_local $argv))) - (br_if $done (i32.eq (i32.const 0) (get_local $s))) - - (if (i32.eq (i32.const 1) (get_local $space)) - (drop (call $fputs (i32.const 12) (get_local $stdout))) ;; ' ' - ) - (set_local $space (i32.const 1)) - - (drop (call $fputs (get_local $s) (get_local $stdout))) - (br $loop) - ) - ) - - (drop (call $fputs (i32.const 8) (get_local $stdout))) ;; \n - - (return (i32.const 0)) - ) -) diff --git a/libraries/wasm-jit/Test/wast/helloworld.wast b/libraries/wasm-jit/Test/wast/helloworld.wast deleted file mode 100644 index 8095e6a1e1b..00000000000 --- a/libraries/wasm-jit/Test/wast/helloworld.wast +++ /dev/null @@ -1,24 +0,0 @@ -;; WebAssembly WASM AST Hello World! program - -(module - (import "env" "_fwrite" (func $__fwrite (param i32 i32 i32 i32) (result i32))) - (import "env" "_stdout" (global $stdoutPtr i32)) - (import "env" "memory" (memory 1)) - (export "main" (func $main)) - - (data (i32.const 8) "Hello World!\n") - - (func (export "establishStackSpace") (param i32 i32) (nop)) - - (func $main (result i32) - (local $stdout i32) - (set_local $stdout (i32.load align=4 (get_global $stdoutPtr))) - - (return (call $__fwrite - (i32.const 8) ;; void *ptr => Address of our string - (i32.const 1) ;; size_t size => Data size - (i32.const 13) ;; size_t nmemb => Length of our string - (get_local $stdout)) ;; stream - ) - ) -) diff --git a/libraries/wasm-jit/Test/wast/skip-stack-guard-page.wast b/libraries/wasm-jit/Test/wast/skip-stack-guard-page.wast deleted file mode 100644 index 95b4c365423..00000000000 --- a/libraries/wasm-jit/Test/wast/skip-stack-guard-page.wast +++ /dev/null @@ -1,2180 +0,0 @@ -;; This tests that the stack overflow guard page can't be skipped by a function with more than a page of locals. -(module - (memory 1) - (export "test-guard-page-skip" (func $test-guard-page-skip)) - - (func $test-guard-page-skip - (param $depth i32) - (if (i32.eq (get_local $depth) (i32.const 0)) - (then (call $function-with-many-locals)) - (else (call $test-guard-page-skip (i32.sub (get_local $depth) (i32.const 1)))) - ) - ) - - (func $function-with-many-locals - - ;; 1056 i64 = 8448 bytes of locals - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x000-0x01f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x020-0x03f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x040-0x05f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x060-0x07f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x080-0x09f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0a0-0x0bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0c0-0x0df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0e0-0x0ff - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x100-0x11f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x120-0x13f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x140-0x15f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x160-0x17f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x180-0x19f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1a0-0x1bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1c0-0x1df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1e0-0x1ff - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x200-0x21f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x220-0x23f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x240-0x25f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x260-0x27f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x280-0x29f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2a0-0x2bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2c0-0x2df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2e0-0x2ff - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x300-0x31f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x320-0x33f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x340-0x35f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x360-0x37f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x380-0x39f - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3a0-0x3bf - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3c0-0x3df - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3e0-0x3ff - (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x400-0x41f - - ;; recurse first to try to make the callee access the stack below the space allocated for the locals before the locals themselves have been initialized. - (call $function-with-many-locals) - - ;; load from memory into the locals - (set_local 0x000 (i64.load offset=0x000 align=1 (i32.const 0))) - (set_local 0x001 (i64.load offset=0x001 align=1 (i32.const 0))) - (set_local 0x002 (i64.load offset=0x002 align=1 (i32.const 0))) - (set_local 0x003 (i64.load offset=0x003 align=1 (i32.const 0))) - (set_local 0x004 (i64.load offset=0x004 align=1 (i32.const 0))) - (set_local 0x005 (i64.load offset=0x005 align=1 (i32.const 0))) - (set_local 0x006 (i64.load offset=0x006 align=1 (i32.const 0))) - (set_local 0x007 (i64.load offset=0x007 align=1 (i32.const 0))) - (set_local 0x008 (i64.load offset=0x008 align=1 (i32.const 0))) - (set_local 0x009 (i64.load offset=0x009 align=1 (i32.const 0))) - (set_local 0x00a (i64.load offset=0x00a align=1 (i32.const 0))) - (set_local 0x00b (i64.load offset=0x00b align=1 (i32.const 0))) - (set_local 0x00c (i64.load offset=0x00c align=1 (i32.const 0))) - (set_local 0x00d (i64.load offset=0x00d align=1 (i32.const 0))) - (set_local 0x00e (i64.load offset=0x00e align=1 (i32.const 0))) - (set_local 0x00f (i64.load offset=0x00f align=1 (i32.const 0))) - (set_local 0x010 (i64.load offset=0x010 align=1 (i32.const 0))) - (set_local 0x011 (i64.load offset=0x011 align=1 (i32.const 0))) - (set_local 0x012 (i64.load offset=0x012 align=1 (i32.const 0))) - (set_local 0x013 (i64.load offset=0x013 align=1 (i32.const 0))) - (set_local 0x014 (i64.load offset=0x014 align=1 (i32.const 0))) - (set_local 0x015 (i64.load offset=0x015 align=1 (i32.const 0))) - (set_local 0x016 (i64.load offset=0x016 align=1 (i32.const 0))) - (set_local 0x017 (i64.load offset=0x017 align=1 (i32.const 0))) - (set_local 0x018 (i64.load offset=0x018 align=1 (i32.const 0))) - (set_local 0x019 (i64.load offset=0x019 align=1 (i32.const 0))) - (set_local 0x01a (i64.load offset=0x01a align=1 (i32.const 0))) - (set_local 0x01b (i64.load offset=0x01b align=1 (i32.const 0))) - (set_local 0x01c (i64.load offset=0x01c align=1 (i32.const 0))) - (set_local 0x01d (i64.load offset=0x01d align=1 (i32.const 0))) - (set_local 0x01e (i64.load offset=0x01e align=1 (i32.const 0))) - (set_local 0x01f (i64.load offset=0x01f align=1 (i32.const 0))) - (set_local 0x020 (i64.load offset=0x020 align=1 (i32.const 0))) - (set_local 0x021 (i64.load offset=0x021 align=1 (i32.const 0))) - (set_local 0x022 (i64.load offset=0x022 align=1 (i32.const 0))) - (set_local 0x023 (i64.load offset=0x023 align=1 (i32.const 0))) - (set_local 0x024 (i64.load offset=0x024 align=1 (i32.const 0))) - (set_local 0x025 (i64.load offset=0x025 align=1 (i32.const 0))) - (set_local 0x026 (i64.load offset=0x026 align=1 (i32.const 0))) - (set_local 0x027 (i64.load offset=0x027 align=1 (i32.const 0))) - (set_local 0x028 (i64.load offset=0x028 align=1 (i32.const 0))) - (set_local 0x029 (i64.load offset=0x029 align=1 (i32.const 0))) - (set_local 0x02a (i64.load offset=0x02a align=1 (i32.const 0))) - (set_local 0x02b (i64.load offset=0x02b align=1 (i32.const 0))) - (set_local 0x02c (i64.load offset=0x02c align=1 (i32.const 0))) - (set_local 0x02d (i64.load offset=0x02d align=1 (i32.const 0))) - (set_local 0x02e (i64.load offset=0x02e align=1 (i32.const 0))) - (set_local 0x02f (i64.load offset=0x02f align=1 (i32.const 0))) - (set_local 0x030 (i64.load offset=0x030 align=1 (i32.const 0))) - (set_local 0x031 (i64.load offset=0x031 align=1 (i32.const 0))) - (set_local 0x032 (i64.load offset=0x032 align=1 (i32.const 0))) - (set_local 0x033 (i64.load offset=0x033 align=1 (i32.const 0))) - (set_local 0x034 (i64.load offset=0x034 align=1 (i32.const 0))) - (set_local 0x035 (i64.load offset=0x035 align=1 (i32.const 0))) - (set_local 0x036 (i64.load offset=0x036 align=1 (i32.const 0))) - (set_local 0x037 (i64.load offset=0x037 align=1 (i32.const 0))) - (set_local 0x038 (i64.load offset=0x038 align=1 (i32.const 0))) - (set_local 0x039 (i64.load offset=0x039 align=1 (i32.const 0))) - (set_local 0x03a (i64.load offset=0x03a align=1 (i32.const 0))) - (set_local 0x03b (i64.load offset=0x03b align=1 (i32.const 0))) - (set_local 0x03c (i64.load offset=0x03c align=1 (i32.const 0))) - (set_local 0x03d (i64.load offset=0x03d align=1 (i32.const 0))) - (set_local 0x03e (i64.load offset=0x03e align=1 (i32.const 0))) - (set_local 0x03f (i64.load offset=0x03f align=1 (i32.const 0))) - (set_local 0x040 (i64.load offset=0x040 align=1 (i32.const 0))) - (set_local 0x041 (i64.load offset=0x041 align=1 (i32.const 0))) - (set_local 0x042 (i64.load offset=0x042 align=1 (i32.const 0))) - (set_local 0x043 (i64.load offset=0x043 align=1 (i32.const 0))) - (set_local 0x044 (i64.load offset=0x044 align=1 (i32.const 0))) - (set_local 0x045 (i64.load offset=0x045 align=1 (i32.const 0))) - (set_local 0x046 (i64.load offset=0x046 align=1 (i32.const 0))) - (set_local 0x047 (i64.load offset=0x047 align=1 (i32.const 0))) - (set_local 0x048 (i64.load offset=0x048 align=1 (i32.const 0))) - (set_local 0x049 (i64.load offset=0x049 align=1 (i32.const 0))) - (set_local 0x04a (i64.load offset=0x04a align=1 (i32.const 0))) - (set_local 0x04b (i64.load offset=0x04b align=1 (i32.const 0))) - (set_local 0x04c (i64.load offset=0x04c align=1 (i32.const 0))) - (set_local 0x04d (i64.load offset=0x04d align=1 (i32.const 0))) - (set_local 0x04e (i64.load offset=0x04e align=1 (i32.const 0))) - (set_local 0x04f (i64.load offset=0x04f align=1 (i32.const 0))) - (set_local 0x050 (i64.load offset=0x050 align=1 (i32.const 0))) - (set_local 0x051 (i64.load offset=0x051 align=1 (i32.const 0))) - (set_local 0x052 (i64.load offset=0x052 align=1 (i32.const 0))) - (set_local 0x053 (i64.load offset=0x053 align=1 (i32.const 0))) - (set_local 0x054 (i64.load offset=0x054 align=1 (i32.const 0))) - (set_local 0x055 (i64.load offset=0x055 align=1 (i32.const 0))) - (set_local 0x056 (i64.load offset=0x056 align=1 (i32.const 0))) - (set_local 0x057 (i64.load offset=0x057 align=1 (i32.const 0))) - (set_local 0x058 (i64.load offset=0x058 align=1 (i32.const 0))) - (set_local 0x059 (i64.load offset=0x059 align=1 (i32.const 0))) - (set_local 0x05a (i64.load offset=0x05a align=1 (i32.const 0))) - (set_local 0x05b (i64.load offset=0x05b align=1 (i32.const 0))) - (set_local 0x05c (i64.load offset=0x05c align=1 (i32.const 0))) - (set_local 0x05d (i64.load offset=0x05d align=1 (i32.const 0))) - (set_local 0x05e (i64.load offset=0x05e align=1 (i32.const 0))) - (set_local 0x05f (i64.load offset=0x05f align=1 (i32.const 0))) - (set_local 0x060 (i64.load offset=0x060 align=1 (i32.const 0))) - (set_local 0x061 (i64.load offset=0x061 align=1 (i32.const 0))) - (set_local 0x062 (i64.load offset=0x062 align=1 (i32.const 0))) - (set_local 0x063 (i64.load offset=0x063 align=1 (i32.const 0))) - (set_local 0x064 (i64.load offset=0x064 align=1 (i32.const 0))) - (set_local 0x065 (i64.load offset=0x065 align=1 (i32.const 0))) - (set_local 0x066 (i64.load offset=0x066 align=1 (i32.const 0))) - (set_local 0x067 (i64.load offset=0x067 align=1 (i32.const 0))) - (set_local 0x068 (i64.load offset=0x068 align=1 (i32.const 0))) - (set_local 0x069 (i64.load offset=0x069 align=1 (i32.const 0))) - (set_local 0x06a (i64.load offset=0x06a align=1 (i32.const 0))) - (set_local 0x06b (i64.load offset=0x06b align=1 (i32.const 0))) - (set_local 0x06c (i64.load offset=0x06c align=1 (i32.const 0))) - (set_local 0x06d (i64.load offset=0x06d align=1 (i32.const 0))) - (set_local 0x06e (i64.load offset=0x06e align=1 (i32.const 0))) - (set_local 0x06f (i64.load offset=0x06f align=1 (i32.const 0))) - (set_local 0x070 (i64.load offset=0x070 align=1 (i32.const 0))) - (set_local 0x071 (i64.load offset=0x071 align=1 (i32.const 0))) - (set_local 0x072 (i64.load offset=0x072 align=1 (i32.const 0))) - (set_local 0x073 (i64.load offset=0x073 align=1 (i32.const 0))) - (set_local 0x074 (i64.load offset=0x074 align=1 (i32.const 0))) - (set_local 0x075 (i64.load offset=0x075 align=1 (i32.const 0))) - (set_local 0x076 (i64.load offset=0x076 align=1 (i32.const 0))) - (set_local 0x077 (i64.load offset=0x077 align=1 (i32.const 0))) - (set_local 0x078 (i64.load offset=0x078 align=1 (i32.const 0))) - (set_local 0x079 (i64.load offset=0x079 align=1 (i32.const 0))) - (set_local 0x07a (i64.load offset=0x07a align=1 (i32.const 0))) - (set_local 0x07b (i64.load offset=0x07b align=1 (i32.const 0))) - (set_local 0x07c (i64.load offset=0x07c align=1 (i32.const 0))) - (set_local 0x07d (i64.load offset=0x07d align=1 (i32.const 0))) - (set_local 0x07e (i64.load offset=0x07e align=1 (i32.const 0))) - (set_local 0x07f (i64.load offset=0x07f align=1 (i32.const 0))) - (set_local 0x080 (i64.load offset=0x080 align=1 (i32.const 0))) - (set_local 0x081 (i64.load offset=0x081 align=1 (i32.const 0))) - (set_local 0x082 (i64.load offset=0x082 align=1 (i32.const 0))) - (set_local 0x083 (i64.load offset=0x083 align=1 (i32.const 0))) - (set_local 0x084 (i64.load offset=0x084 align=1 (i32.const 0))) - (set_local 0x085 (i64.load offset=0x085 align=1 (i32.const 0))) - (set_local 0x086 (i64.load offset=0x086 align=1 (i32.const 0))) - (set_local 0x087 (i64.load offset=0x087 align=1 (i32.const 0))) - (set_local 0x088 (i64.load offset=0x088 align=1 (i32.const 0))) - (set_local 0x089 (i64.load offset=0x089 align=1 (i32.const 0))) - (set_local 0x08a (i64.load offset=0x08a align=1 (i32.const 0))) - (set_local 0x08b (i64.load offset=0x08b align=1 (i32.const 0))) - (set_local 0x08c (i64.load offset=0x08c align=1 (i32.const 0))) - (set_local 0x08d (i64.load offset=0x08d align=1 (i32.const 0))) - (set_local 0x08e (i64.load offset=0x08e align=1 (i32.const 0))) - (set_local 0x08f (i64.load offset=0x08f align=1 (i32.const 0))) - (set_local 0x090 (i64.load offset=0x090 align=1 (i32.const 0))) - (set_local 0x091 (i64.load offset=0x091 align=1 (i32.const 0))) - (set_local 0x092 (i64.load offset=0x092 align=1 (i32.const 0))) - (set_local 0x093 (i64.load offset=0x093 align=1 (i32.const 0))) - (set_local 0x094 (i64.load offset=0x094 align=1 (i32.const 0))) - (set_local 0x095 (i64.load offset=0x095 align=1 (i32.const 0))) - (set_local 0x096 (i64.load offset=0x096 align=1 (i32.const 0))) - (set_local 0x097 (i64.load offset=0x097 align=1 (i32.const 0))) - (set_local 0x098 (i64.load offset=0x098 align=1 (i32.const 0))) - (set_local 0x099 (i64.load offset=0x099 align=1 (i32.const 0))) - (set_local 0x09a (i64.load offset=0x09a align=1 (i32.const 0))) - (set_local 0x09b (i64.load offset=0x09b align=1 (i32.const 0))) - (set_local 0x09c (i64.load offset=0x09c align=1 (i32.const 0))) - (set_local 0x09d (i64.load offset=0x09d align=1 (i32.const 0))) - (set_local 0x09e (i64.load offset=0x09e align=1 (i32.const 0))) - (set_local 0x09f (i64.load offset=0x09f align=1 (i32.const 0))) - (set_local 0x0a0 (i64.load offset=0x0a0 align=1 (i32.const 0))) - (set_local 0x0a1 (i64.load offset=0x0a1 align=1 (i32.const 0))) - (set_local 0x0a2 (i64.load offset=0x0a2 align=1 (i32.const 0))) - (set_local 0x0a3 (i64.load offset=0x0a3 align=1 (i32.const 0))) - (set_local 0x0a4 (i64.load offset=0x0a4 align=1 (i32.const 0))) - (set_local 0x0a5 (i64.load offset=0x0a5 align=1 (i32.const 0))) - (set_local 0x0a6 (i64.load offset=0x0a6 align=1 (i32.const 0))) - (set_local 0x0a7 (i64.load offset=0x0a7 align=1 (i32.const 0))) - (set_local 0x0a8 (i64.load offset=0x0a8 align=1 (i32.const 0))) - (set_local 0x0a9 (i64.load offset=0x0a9 align=1 (i32.const 0))) - (set_local 0x0aa (i64.load offset=0x0aa align=1 (i32.const 0))) - (set_local 0x0ab (i64.load offset=0x0ab align=1 (i32.const 0))) - (set_local 0x0ac (i64.load offset=0x0ac align=1 (i32.const 0))) - (set_local 0x0ad (i64.load offset=0x0ad align=1 (i32.const 0))) - (set_local 0x0ae (i64.load offset=0x0ae align=1 (i32.const 0))) - (set_local 0x0af (i64.load offset=0x0af align=1 (i32.const 0))) - (set_local 0x0b0 (i64.load offset=0x0b0 align=1 (i32.const 0))) - (set_local 0x0b1 (i64.load offset=0x0b1 align=1 (i32.const 0))) - (set_local 0x0b2 (i64.load offset=0x0b2 align=1 (i32.const 0))) - (set_local 0x0b3 (i64.load offset=0x0b3 align=1 (i32.const 0))) - (set_local 0x0b4 (i64.load offset=0x0b4 align=1 (i32.const 0))) - (set_local 0x0b5 (i64.load offset=0x0b5 align=1 (i32.const 0))) - (set_local 0x0b6 (i64.load offset=0x0b6 align=1 (i32.const 0))) - (set_local 0x0b7 (i64.load offset=0x0b7 align=1 (i32.const 0))) - (set_local 0x0b8 (i64.load offset=0x0b8 align=1 (i32.const 0))) - (set_local 0x0b9 (i64.load offset=0x0b9 align=1 (i32.const 0))) - (set_local 0x0ba (i64.load offset=0x0ba align=1 (i32.const 0))) - (set_local 0x0bb (i64.load offset=0x0bb align=1 (i32.const 0))) - (set_local 0x0bc (i64.load offset=0x0bc align=1 (i32.const 0))) - (set_local 0x0bd (i64.load offset=0x0bd align=1 (i32.const 0))) - (set_local 0x0be (i64.load offset=0x0be align=1 (i32.const 0))) - (set_local 0x0bf (i64.load offset=0x0bf align=1 (i32.const 0))) - (set_local 0x0c0 (i64.load offset=0x0c0 align=1 (i32.const 0))) - (set_local 0x0c1 (i64.load offset=0x0c1 align=1 (i32.const 0))) - (set_local 0x0c2 (i64.load offset=0x0c2 align=1 (i32.const 0))) - (set_local 0x0c3 (i64.load offset=0x0c3 align=1 (i32.const 0))) - (set_local 0x0c4 (i64.load offset=0x0c4 align=1 (i32.const 0))) - (set_local 0x0c5 (i64.load offset=0x0c5 align=1 (i32.const 0))) - (set_local 0x0c6 (i64.load offset=0x0c6 align=1 (i32.const 0))) - (set_local 0x0c7 (i64.load offset=0x0c7 align=1 (i32.const 0))) - (set_local 0x0c8 (i64.load offset=0x0c8 align=1 (i32.const 0))) - (set_local 0x0c9 (i64.load offset=0x0c9 align=1 (i32.const 0))) - (set_local 0x0ca (i64.load offset=0x0ca align=1 (i32.const 0))) - (set_local 0x0cb (i64.load offset=0x0cb align=1 (i32.const 0))) - (set_local 0x0cc (i64.load offset=0x0cc align=1 (i32.const 0))) - (set_local 0x0cd (i64.load offset=0x0cd align=1 (i32.const 0))) - (set_local 0x0ce (i64.load offset=0x0ce align=1 (i32.const 0))) - (set_local 0x0cf (i64.load offset=0x0cf align=1 (i32.const 0))) - (set_local 0x0d0 (i64.load offset=0x0d0 align=1 (i32.const 0))) - (set_local 0x0d1 (i64.load offset=0x0d1 align=1 (i32.const 0))) - (set_local 0x0d2 (i64.load offset=0x0d2 align=1 (i32.const 0))) - (set_local 0x0d3 (i64.load offset=0x0d3 align=1 (i32.const 0))) - (set_local 0x0d4 (i64.load offset=0x0d4 align=1 (i32.const 0))) - (set_local 0x0d5 (i64.load offset=0x0d5 align=1 (i32.const 0))) - (set_local 0x0d6 (i64.load offset=0x0d6 align=1 (i32.const 0))) - (set_local 0x0d7 (i64.load offset=0x0d7 align=1 (i32.const 0))) - (set_local 0x0d8 (i64.load offset=0x0d8 align=1 (i32.const 0))) - (set_local 0x0d9 (i64.load offset=0x0d9 align=1 (i32.const 0))) - (set_local 0x0da (i64.load offset=0x0da align=1 (i32.const 0))) - (set_local 0x0db (i64.load offset=0x0db align=1 (i32.const 0))) - (set_local 0x0dc (i64.load offset=0x0dc align=1 (i32.const 0))) - (set_local 0x0dd (i64.load offset=0x0dd align=1 (i32.const 0))) - (set_local 0x0de (i64.load offset=0x0de align=1 (i32.const 0))) - (set_local 0x0df (i64.load offset=0x0df align=1 (i32.const 0))) - (set_local 0x0e0 (i64.load offset=0x0e0 align=1 (i32.const 0))) - (set_local 0x0e1 (i64.load offset=0x0e1 align=1 (i32.const 0))) - (set_local 0x0e2 (i64.load offset=0x0e2 align=1 (i32.const 0))) - (set_local 0x0e3 (i64.load offset=0x0e3 align=1 (i32.const 0))) - (set_local 0x0e4 (i64.load offset=0x0e4 align=1 (i32.const 0))) - (set_local 0x0e5 (i64.load offset=0x0e5 align=1 (i32.const 0))) - (set_local 0x0e6 (i64.load offset=0x0e6 align=1 (i32.const 0))) - (set_local 0x0e7 (i64.load offset=0x0e7 align=1 (i32.const 0))) - (set_local 0x0e8 (i64.load offset=0x0e8 align=1 (i32.const 0))) - (set_local 0x0e9 (i64.load offset=0x0e9 align=1 (i32.const 0))) - (set_local 0x0ea (i64.load offset=0x0ea align=1 (i32.const 0))) - (set_local 0x0eb (i64.load offset=0x0eb align=1 (i32.const 0))) - (set_local 0x0ec (i64.load offset=0x0ec align=1 (i32.const 0))) - (set_local 0x0ed (i64.load offset=0x0ed align=1 (i32.const 0))) - (set_local 0x0ee (i64.load offset=0x0ee align=1 (i32.const 0))) - (set_local 0x0ef (i64.load offset=0x0ef align=1 (i32.const 0))) - (set_local 0x0f0 (i64.load offset=0x0f0 align=1 (i32.const 0))) - (set_local 0x0f1 (i64.load offset=0x0f1 align=1 (i32.const 0))) - (set_local 0x0f2 (i64.load offset=0x0f2 align=1 (i32.const 0))) - (set_local 0x0f3 (i64.load offset=0x0f3 align=1 (i32.const 0))) - (set_local 0x0f4 (i64.load offset=0x0f4 align=1 (i32.const 0))) - (set_local 0x0f5 (i64.load offset=0x0f5 align=1 (i32.const 0))) - (set_local 0x0f6 (i64.load offset=0x0f6 align=1 (i32.const 0))) - (set_local 0x0f7 (i64.load offset=0x0f7 align=1 (i32.const 0))) - (set_local 0x0f8 (i64.load offset=0x0f8 align=1 (i32.const 0))) - (set_local 0x0f9 (i64.load offset=0x0f9 align=1 (i32.const 0))) - (set_local 0x0fa (i64.load offset=0x0fa align=1 (i32.const 0))) - (set_local 0x0fb (i64.load offset=0x0fb align=1 (i32.const 0))) - (set_local 0x0fc (i64.load offset=0x0fc align=1 (i32.const 0))) - (set_local 0x0fd (i64.load offset=0x0fd align=1 (i32.const 0))) - (set_local 0x0fe (i64.load offset=0x0fe align=1 (i32.const 0))) - (set_local 0x0ff (i64.load offset=0x0ff align=1 (i32.const 0))) - (set_local 0x100 (i64.load offset=0x100 align=1 (i32.const 0))) - (set_local 0x101 (i64.load offset=0x101 align=1 (i32.const 0))) - (set_local 0x102 (i64.load offset=0x102 align=1 (i32.const 0))) - (set_local 0x103 (i64.load offset=0x103 align=1 (i32.const 0))) - (set_local 0x104 (i64.load offset=0x104 align=1 (i32.const 0))) - (set_local 0x105 (i64.load offset=0x105 align=1 (i32.const 0))) - (set_local 0x106 (i64.load offset=0x106 align=1 (i32.const 0))) - (set_local 0x107 (i64.load offset=0x107 align=1 (i32.const 0))) - (set_local 0x108 (i64.load offset=0x108 align=1 (i32.const 0))) - (set_local 0x109 (i64.load offset=0x109 align=1 (i32.const 0))) - (set_local 0x10a (i64.load offset=0x10a align=1 (i32.const 0))) - (set_local 0x10b (i64.load offset=0x10b align=1 (i32.const 0))) - (set_local 0x10c (i64.load offset=0x10c align=1 (i32.const 0))) - (set_local 0x10d (i64.load offset=0x10d align=1 (i32.const 0))) - (set_local 0x10e (i64.load offset=0x10e align=1 (i32.const 0))) - (set_local 0x10f (i64.load offset=0x10f align=1 (i32.const 0))) - (set_local 0x110 (i64.load offset=0x110 align=1 (i32.const 0))) - (set_local 0x111 (i64.load offset=0x111 align=1 (i32.const 0))) - (set_local 0x112 (i64.load offset=0x112 align=1 (i32.const 0))) - (set_local 0x113 (i64.load offset=0x113 align=1 (i32.const 0))) - (set_local 0x114 (i64.load offset=0x114 align=1 (i32.const 0))) - (set_local 0x115 (i64.load offset=0x115 align=1 (i32.const 0))) - (set_local 0x116 (i64.load offset=0x116 align=1 (i32.const 0))) - (set_local 0x117 (i64.load offset=0x117 align=1 (i32.const 0))) - (set_local 0x118 (i64.load offset=0x118 align=1 (i32.const 0))) - (set_local 0x119 (i64.load offset=0x119 align=1 (i32.const 0))) - (set_local 0x11a (i64.load offset=0x11a align=1 (i32.const 0))) - (set_local 0x11b (i64.load offset=0x11b align=1 (i32.const 0))) - (set_local 0x11c (i64.load offset=0x11c align=1 (i32.const 0))) - (set_local 0x11d (i64.load offset=0x11d align=1 (i32.const 0))) - (set_local 0x11e (i64.load offset=0x11e align=1 (i32.const 0))) - (set_local 0x11f (i64.load offset=0x11f align=1 (i32.const 0))) - (set_local 0x120 (i64.load offset=0x120 align=1 (i32.const 0))) - (set_local 0x121 (i64.load offset=0x121 align=1 (i32.const 0))) - (set_local 0x122 (i64.load offset=0x122 align=1 (i32.const 0))) - (set_local 0x123 (i64.load offset=0x123 align=1 (i32.const 0))) - (set_local 0x124 (i64.load offset=0x124 align=1 (i32.const 0))) - (set_local 0x125 (i64.load offset=0x125 align=1 (i32.const 0))) - (set_local 0x126 (i64.load offset=0x126 align=1 (i32.const 0))) - (set_local 0x127 (i64.load offset=0x127 align=1 (i32.const 0))) - (set_local 0x128 (i64.load offset=0x128 align=1 (i32.const 0))) - (set_local 0x129 (i64.load offset=0x129 align=1 (i32.const 0))) - (set_local 0x12a (i64.load offset=0x12a align=1 (i32.const 0))) - (set_local 0x12b (i64.load offset=0x12b align=1 (i32.const 0))) - (set_local 0x12c (i64.load offset=0x12c align=1 (i32.const 0))) - (set_local 0x12d (i64.load offset=0x12d align=1 (i32.const 0))) - (set_local 0x12e (i64.load offset=0x12e align=1 (i32.const 0))) - (set_local 0x12f (i64.load offset=0x12f align=1 (i32.const 0))) - (set_local 0x130 (i64.load offset=0x130 align=1 (i32.const 0))) - (set_local 0x131 (i64.load offset=0x131 align=1 (i32.const 0))) - (set_local 0x132 (i64.load offset=0x132 align=1 (i32.const 0))) - (set_local 0x133 (i64.load offset=0x133 align=1 (i32.const 0))) - (set_local 0x134 (i64.load offset=0x134 align=1 (i32.const 0))) - (set_local 0x135 (i64.load offset=0x135 align=1 (i32.const 0))) - (set_local 0x136 (i64.load offset=0x136 align=1 (i32.const 0))) - (set_local 0x137 (i64.load offset=0x137 align=1 (i32.const 0))) - (set_local 0x138 (i64.load offset=0x138 align=1 (i32.const 0))) - (set_local 0x139 (i64.load offset=0x139 align=1 (i32.const 0))) - (set_local 0x13a (i64.load offset=0x13a align=1 (i32.const 0))) - (set_local 0x13b (i64.load offset=0x13b align=1 (i32.const 0))) - (set_local 0x13c (i64.load offset=0x13c align=1 (i32.const 0))) - (set_local 0x13d (i64.load offset=0x13d align=1 (i32.const 0))) - (set_local 0x13e (i64.load offset=0x13e align=1 (i32.const 0))) - (set_local 0x13f (i64.load offset=0x13f align=1 (i32.const 0))) - (set_local 0x140 (i64.load offset=0x140 align=1 (i32.const 0))) - (set_local 0x141 (i64.load offset=0x141 align=1 (i32.const 0))) - (set_local 0x142 (i64.load offset=0x142 align=1 (i32.const 0))) - (set_local 0x143 (i64.load offset=0x143 align=1 (i32.const 0))) - (set_local 0x144 (i64.load offset=0x144 align=1 (i32.const 0))) - (set_local 0x145 (i64.load offset=0x145 align=1 (i32.const 0))) - (set_local 0x146 (i64.load offset=0x146 align=1 (i32.const 0))) - (set_local 0x147 (i64.load offset=0x147 align=1 (i32.const 0))) - (set_local 0x148 (i64.load offset=0x148 align=1 (i32.const 0))) - (set_local 0x149 (i64.load offset=0x149 align=1 (i32.const 0))) - (set_local 0x14a (i64.load offset=0x14a align=1 (i32.const 0))) - (set_local 0x14b (i64.load offset=0x14b align=1 (i32.const 0))) - (set_local 0x14c (i64.load offset=0x14c align=1 (i32.const 0))) - (set_local 0x14d (i64.load offset=0x14d align=1 (i32.const 0))) - (set_local 0x14e (i64.load offset=0x14e align=1 (i32.const 0))) - (set_local 0x14f (i64.load offset=0x14f align=1 (i32.const 0))) - (set_local 0x150 (i64.load offset=0x150 align=1 (i32.const 0))) - (set_local 0x151 (i64.load offset=0x151 align=1 (i32.const 0))) - (set_local 0x152 (i64.load offset=0x152 align=1 (i32.const 0))) - (set_local 0x153 (i64.load offset=0x153 align=1 (i32.const 0))) - (set_local 0x154 (i64.load offset=0x154 align=1 (i32.const 0))) - (set_local 0x155 (i64.load offset=0x155 align=1 (i32.const 0))) - (set_local 0x156 (i64.load offset=0x156 align=1 (i32.const 0))) - (set_local 0x157 (i64.load offset=0x157 align=1 (i32.const 0))) - (set_local 0x158 (i64.load offset=0x158 align=1 (i32.const 0))) - (set_local 0x159 (i64.load offset=0x159 align=1 (i32.const 0))) - (set_local 0x15a (i64.load offset=0x15a align=1 (i32.const 0))) - (set_local 0x15b (i64.load offset=0x15b align=1 (i32.const 0))) - (set_local 0x15c (i64.load offset=0x15c align=1 (i32.const 0))) - (set_local 0x15d (i64.load offset=0x15d align=1 (i32.const 0))) - (set_local 0x15e (i64.load offset=0x15e align=1 (i32.const 0))) - (set_local 0x15f (i64.load offset=0x15f align=1 (i32.const 0))) - (set_local 0x160 (i64.load offset=0x160 align=1 (i32.const 0))) - (set_local 0x161 (i64.load offset=0x161 align=1 (i32.const 0))) - (set_local 0x162 (i64.load offset=0x162 align=1 (i32.const 0))) - (set_local 0x163 (i64.load offset=0x163 align=1 (i32.const 0))) - (set_local 0x164 (i64.load offset=0x164 align=1 (i32.const 0))) - (set_local 0x165 (i64.load offset=0x165 align=1 (i32.const 0))) - (set_local 0x166 (i64.load offset=0x166 align=1 (i32.const 0))) - (set_local 0x167 (i64.load offset=0x167 align=1 (i32.const 0))) - (set_local 0x168 (i64.load offset=0x168 align=1 (i32.const 0))) - (set_local 0x169 (i64.load offset=0x169 align=1 (i32.const 0))) - (set_local 0x16a (i64.load offset=0x16a align=1 (i32.const 0))) - (set_local 0x16b (i64.load offset=0x16b align=1 (i32.const 0))) - (set_local 0x16c (i64.load offset=0x16c align=1 (i32.const 0))) - (set_local 0x16d (i64.load offset=0x16d align=1 (i32.const 0))) - (set_local 0x16e (i64.load offset=0x16e align=1 (i32.const 0))) - (set_local 0x16f (i64.load offset=0x16f align=1 (i32.const 0))) - (set_local 0x170 (i64.load offset=0x170 align=1 (i32.const 0))) - (set_local 0x171 (i64.load offset=0x171 align=1 (i32.const 0))) - (set_local 0x172 (i64.load offset=0x172 align=1 (i32.const 0))) - (set_local 0x173 (i64.load offset=0x173 align=1 (i32.const 0))) - (set_local 0x174 (i64.load offset=0x174 align=1 (i32.const 0))) - (set_local 0x175 (i64.load offset=0x175 align=1 (i32.const 0))) - (set_local 0x176 (i64.load offset=0x176 align=1 (i32.const 0))) - (set_local 0x177 (i64.load offset=0x177 align=1 (i32.const 0))) - (set_local 0x178 (i64.load offset=0x178 align=1 (i32.const 0))) - (set_local 0x179 (i64.load offset=0x179 align=1 (i32.const 0))) - (set_local 0x17a (i64.load offset=0x17a align=1 (i32.const 0))) - (set_local 0x17b (i64.load offset=0x17b align=1 (i32.const 0))) - (set_local 0x17c (i64.load offset=0x17c align=1 (i32.const 0))) - (set_local 0x17d (i64.load offset=0x17d align=1 (i32.const 0))) - (set_local 0x17e (i64.load offset=0x17e align=1 (i32.const 0))) - (set_local 0x17f (i64.load offset=0x17f align=1 (i32.const 0))) - (set_local 0x180 (i64.load offset=0x180 align=1 (i32.const 0))) - (set_local 0x181 (i64.load offset=0x181 align=1 (i32.const 0))) - (set_local 0x182 (i64.load offset=0x182 align=1 (i32.const 0))) - (set_local 0x183 (i64.load offset=0x183 align=1 (i32.const 0))) - (set_local 0x184 (i64.load offset=0x184 align=1 (i32.const 0))) - (set_local 0x185 (i64.load offset=0x185 align=1 (i32.const 0))) - (set_local 0x186 (i64.load offset=0x186 align=1 (i32.const 0))) - (set_local 0x187 (i64.load offset=0x187 align=1 (i32.const 0))) - (set_local 0x188 (i64.load offset=0x188 align=1 (i32.const 0))) - (set_local 0x189 (i64.load offset=0x189 align=1 (i32.const 0))) - (set_local 0x18a (i64.load offset=0x18a align=1 (i32.const 0))) - (set_local 0x18b (i64.load offset=0x18b align=1 (i32.const 0))) - (set_local 0x18c (i64.load offset=0x18c align=1 (i32.const 0))) - (set_local 0x18d (i64.load offset=0x18d align=1 (i32.const 0))) - (set_local 0x18e (i64.load offset=0x18e align=1 (i32.const 0))) - (set_local 0x18f (i64.load offset=0x18f align=1 (i32.const 0))) - (set_local 0x190 (i64.load offset=0x190 align=1 (i32.const 0))) - (set_local 0x191 (i64.load offset=0x191 align=1 (i32.const 0))) - (set_local 0x192 (i64.load offset=0x192 align=1 (i32.const 0))) - (set_local 0x193 (i64.load offset=0x193 align=1 (i32.const 0))) - (set_local 0x194 (i64.load offset=0x194 align=1 (i32.const 0))) - (set_local 0x195 (i64.load offset=0x195 align=1 (i32.const 0))) - (set_local 0x196 (i64.load offset=0x196 align=1 (i32.const 0))) - (set_local 0x197 (i64.load offset=0x197 align=1 (i32.const 0))) - (set_local 0x198 (i64.load offset=0x198 align=1 (i32.const 0))) - (set_local 0x199 (i64.load offset=0x199 align=1 (i32.const 0))) - (set_local 0x19a (i64.load offset=0x19a align=1 (i32.const 0))) - (set_local 0x19b (i64.load offset=0x19b align=1 (i32.const 0))) - (set_local 0x19c (i64.load offset=0x19c align=1 (i32.const 0))) - (set_local 0x19d (i64.load offset=0x19d align=1 (i32.const 0))) - (set_local 0x19e (i64.load offset=0x19e align=1 (i32.const 0))) - (set_local 0x19f (i64.load offset=0x19f align=1 (i32.const 0))) - (set_local 0x1a0 (i64.load offset=0x1a0 align=1 (i32.const 0))) - (set_local 0x1a1 (i64.load offset=0x1a1 align=1 (i32.const 0))) - (set_local 0x1a2 (i64.load offset=0x1a2 align=1 (i32.const 0))) - (set_local 0x1a3 (i64.load offset=0x1a3 align=1 (i32.const 0))) - (set_local 0x1a4 (i64.load offset=0x1a4 align=1 (i32.const 0))) - (set_local 0x1a5 (i64.load offset=0x1a5 align=1 (i32.const 0))) - (set_local 0x1a6 (i64.load offset=0x1a6 align=1 (i32.const 0))) - (set_local 0x1a7 (i64.load offset=0x1a7 align=1 (i32.const 0))) - (set_local 0x1a8 (i64.load offset=0x1a8 align=1 (i32.const 0))) - (set_local 0x1a9 (i64.load offset=0x1a9 align=1 (i32.const 0))) - (set_local 0x1aa (i64.load offset=0x1aa align=1 (i32.const 0))) - (set_local 0x1ab (i64.load offset=0x1ab align=1 (i32.const 0))) - (set_local 0x1ac (i64.load offset=0x1ac align=1 (i32.const 0))) - (set_local 0x1ad (i64.load offset=0x1ad align=1 (i32.const 0))) - (set_local 0x1ae (i64.load offset=0x1ae align=1 (i32.const 0))) - (set_local 0x1af (i64.load offset=0x1af align=1 (i32.const 0))) - (set_local 0x1b0 (i64.load offset=0x1b0 align=1 (i32.const 0))) - (set_local 0x1b1 (i64.load offset=0x1b1 align=1 (i32.const 0))) - (set_local 0x1b2 (i64.load offset=0x1b2 align=1 (i32.const 0))) - (set_local 0x1b3 (i64.load offset=0x1b3 align=1 (i32.const 0))) - (set_local 0x1b4 (i64.load offset=0x1b4 align=1 (i32.const 0))) - (set_local 0x1b5 (i64.load offset=0x1b5 align=1 (i32.const 0))) - (set_local 0x1b6 (i64.load offset=0x1b6 align=1 (i32.const 0))) - (set_local 0x1b7 (i64.load offset=0x1b7 align=1 (i32.const 0))) - (set_local 0x1b8 (i64.load offset=0x1b8 align=1 (i32.const 0))) - (set_local 0x1b9 (i64.load offset=0x1b9 align=1 (i32.const 0))) - (set_local 0x1ba (i64.load offset=0x1ba align=1 (i32.const 0))) - (set_local 0x1bb (i64.load offset=0x1bb align=1 (i32.const 0))) - (set_local 0x1bc (i64.load offset=0x1bc align=1 (i32.const 0))) - (set_local 0x1bd (i64.load offset=0x1bd align=1 (i32.const 0))) - (set_local 0x1be (i64.load offset=0x1be align=1 (i32.const 0))) - (set_local 0x1bf (i64.load offset=0x1bf align=1 (i32.const 0))) - (set_local 0x1c0 (i64.load offset=0x1c0 align=1 (i32.const 0))) - (set_local 0x1c1 (i64.load offset=0x1c1 align=1 (i32.const 0))) - (set_local 0x1c2 (i64.load offset=0x1c2 align=1 (i32.const 0))) - (set_local 0x1c3 (i64.load offset=0x1c3 align=1 (i32.const 0))) - (set_local 0x1c4 (i64.load offset=0x1c4 align=1 (i32.const 0))) - (set_local 0x1c5 (i64.load offset=0x1c5 align=1 (i32.const 0))) - (set_local 0x1c6 (i64.load offset=0x1c6 align=1 (i32.const 0))) - (set_local 0x1c7 (i64.load offset=0x1c7 align=1 (i32.const 0))) - (set_local 0x1c8 (i64.load offset=0x1c8 align=1 (i32.const 0))) - (set_local 0x1c9 (i64.load offset=0x1c9 align=1 (i32.const 0))) - (set_local 0x1ca (i64.load offset=0x1ca align=1 (i32.const 0))) - (set_local 0x1cb (i64.load offset=0x1cb align=1 (i32.const 0))) - (set_local 0x1cc (i64.load offset=0x1cc align=1 (i32.const 0))) - (set_local 0x1cd (i64.load offset=0x1cd align=1 (i32.const 0))) - (set_local 0x1ce (i64.load offset=0x1ce align=1 (i32.const 0))) - (set_local 0x1cf (i64.load offset=0x1cf align=1 (i32.const 0))) - (set_local 0x1d0 (i64.load offset=0x1d0 align=1 (i32.const 0))) - (set_local 0x1d1 (i64.load offset=0x1d1 align=1 (i32.const 0))) - (set_local 0x1d2 (i64.load offset=0x1d2 align=1 (i32.const 0))) - (set_local 0x1d3 (i64.load offset=0x1d3 align=1 (i32.const 0))) - (set_local 0x1d4 (i64.load offset=0x1d4 align=1 (i32.const 0))) - (set_local 0x1d5 (i64.load offset=0x1d5 align=1 (i32.const 0))) - (set_local 0x1d6 (i64.load offset=0x1d6 align=1 (i32.const 0))) - (set_local 0x1d7 (i64.load offset=0x1d7 align=1 (i32.const 0))) - (set_local 0x1d8 (i64.load offset=0x1d8 align=1 (i32.const 0))) - (set_local 0x1d9 (i64.load offset=0x1d9 align=1 (i32.const 0))) - (set_local 0x1da (i64.load offset=0x1da align=1 (i32.const 0))) - (set_local 0x1db (i64.load offset=0x1db align=1 (i32.const 0))) - (set_local 0x1dc (i64.load offset=0x1dc align=1 (i32.const 0))) - (set_local 0x1dd (i64.load offset=0x1dd align=1 (i32.const 0))) - (set_local 0x1de (i64.load offset=0x1de align=1 (i32.const 0))) - (set_local 0x1df (i64.load offset=0x1df align=1 (i32.const 0))) - (set_local 0x1e0 (i64.load offset=0x1e0 align=1 (i32.const 0))) - (set_local 0x1e1 (i64.load offset=0x1e1 align=1 (i32.const 0))) - (set_local 0x1e2 (i64.load offset=0x1e2 align=1 (i32.const 0))) - (set_local 0x1e3 (i64.load offset=0x1e3 align=1 (i32.const 0))) - (set_local 0x1e4 (i64.load offset=0x1e4 align=1 (i32.const 0))) - (set_local 0x1e5 (i64.load offset=0x1e5 align=1 (i32.const 0))) - (set_local 0x1e6 (i64.load offset=0x1e6 align=1 (i32.const 0))) - (set_local 0x1e7 (i64.load offset=0x1e7 align=1 (i32.const 0))) - (set_local 0x1e8 (i64.load offset=0x1e8 align=1 (i32.const 0))) - (set_local 0x1e9 (i64.load offset=0x1e9 align=1 (i32.const 0))) - (set_local 0x1ea (i64.load offset=0x1ea align=1 (i32.const 0))) - (set_local 0x1eb (i64.load offset=0x1eb align=1 (i32.const 0))) - (set_local 0x1ec (i64.load offset=0x1ec align=1 (i32.const 0))) - (set_local 0x1ed (i64.load offset=0x1ed align=1 (i32.const 0))) - (set_local 0x1ee (i64.load offset=0x1ee align=1 (i32.const 0))) - (set_local 0x1ef (i64.load offset=0x1ef align=1 (i32.const 0))) - (set_local 0x1f0 (i64.load offset=0x1f0 align=1 (i32.const 0))) - (set_local 0x1f1 (i64.load offset=0x1f1 align=1 (i32.const 0))) - (set_local 0x1f2 (i64.load offset=0x1f2 align=1 (i32.const 0))) - (set_local 0x1f3 (i64.load offset=0x1f3 align=1 (i32.const 0))) - (set_local 0x1f4 (i64.load offset=0x1f4 align=1 (i32.const 0))) - (set_local 0x1f5 (i64.load offset=0x1f5 align=1 (i32.const 0))) - (set_local 0x1f6 (i64.load offset=0x1f6 align=1 (i32.const 0))) - (set_local 0x1f7 (i64.load offset=0x1f7 align=1 (i32.const 0))) - (set_local 0x1f8 (i64.load offset=0x1f8 align=1 (i32.const 0))) - (set_local 0x1f9 (i64.load offset=0x1f9 align=1 (i32.const 0))) - (set_local 0x1fa (i64.load offset=0x1fa align=1 (i32.const 0))) - (set_local 0x1fb (i64.load offset=0x1fb align=1 (i32.const 0))) - (set_local 0x1fc (i64.load offset=0x1fc align=1 (i32.const 0))) - (set_local 0x1fd (i64.load offset=0x1fd align=1 (i32.const 0))) - (set_local 0x1fe (i64.load offset=0x1fe align=1 (i32.const 0))) - (set_local 0x1ff (i64.load offset=0x1ff align=1 (i32.const 0))) - (set_local 0x200 (i64.load offset=0x200 align=1 (i32.const 0))) - (set_local 0x201 (i64.load offset=0x201 align=1 (i32.const 0))) - (set_local 0x202 (i64.load offset=0x202 align=1 (i32.const 0))) - (set_local 0x203 (i64.load offset=0x203 align=1 (i32.const 0))) - (set_local 0x204 (i64.load offset=0x204 align=1 (i32.const 0))) - (set_local 0x205 (i64.load offset=0x205 align=1 (i32.const 0))) - (set_local 0x206 (i64.load offset=0x206 align=1 (i32.const 0))) - (set_local 0x207 (i64.load offset=0x207 align=1 (i32.const 0))) - (set_local 0x208 (i64.load offset=0x208 align=1 (i32.const 0))) - (set_local 0x209 (i64.load offset=0x209 align=1 (i32.const 0))) - (set_local 0x20a (i64.load offset=0x20a align=1 (i32.const 0))) - (set_local 0x20b (i64.load offset=0x20b align=1 (i32.const 0))) - (set_local 0x20c (i64.load offset=0x20c align=1 (i32.const 0))) - (set_local 0x20d (i64.load offset=0x20d align=1 (i32.const 0))) - (set_local 0x20e (i64.load offset=0x20e align=1 (i32.const 0))) - (set_local 0x20f (i64.load offset=0x20f align=1 (i32.const 0))) - (set_local 0x210 (i64.load offset=0x210 align=1 (i32.const 0))) - (set_local 0x211 (i64.load offset=0x211 align=1 (i32.const 0))) - (set_local 0x212 (i64.load offset=0x212 align=1 (i32.const 0))) - (set_local 0x213 (i64.load offset=0x213 align=1 (i32.const 0))) - (set_local 0x214 (i64.load offset=0x214 align=1 (i32.const 0))) - (set_local 0x215 (i64.load offset=0x215 align=1 (i32.const 0))) - (set_local 0x216 (i64.load offset=0x216 align=1 (i32.const 0))) - (set_local 0x217 (i64.load offset=0x217 align=1 (i32.const 0))) - (set_local 0x218 (i64.load offset=0x218 align=1 (i32.const 0))) - (set_local 0x219 (i64.load offset=0x219 align=1 (i32.const 0))) - (set_local 0x21a (i64.load offset=0x21a align=1 (i32.const 0))) - (set_local 0x21b (i64.load offset=0x21b align=1 (i32.const 0))) - (set_local 0x21c (i64.load offset=0x21c align=1 (i32.const 0))) - (set_local 0x21d (i64.load offset=0x21d align=1 (i32.const 0))) - (set_local 0x21e (i64.load offset=0x21e align=1 (i32.const 0))) - (set_local 0x21f (i64.load offset=0x21f align=1 (i32.const 0))) - (set_local 0x220 (i64.load offset=0x220 align=1 (i32.const 0))) - (set_local 0x221 (i64.load offset=0x221 align=1 (i32.const 0))) - (set_local 0x222 (i64.load offset=0x222 align=1 (i32.const 0))) - (set_local 0x223 (i64.load offset=0x223 align=1 (i32.const 0))) - (set_local 0x224 (i64.load offset=0x224 align=1 (i32.const 0))) - (set_local 0x225 (i64.load offset=0x225 align=1 (i32.const 0))) - (set_local 0x226 (i64.load offset=0x226 align=1 (i32.const 0))) - (set_local 0x227 (i64.load offset=0x227 align=1 (i32.const 0))) - (set_local 0x228 (i64.load offset=0x228 align=1 (i32.const 0))) - (set_local 0x229 (i64.load offset=0x229 align=1 (i32.const 0))) - (set_local 0x22a (i64.load offset=0x22a align=1 (i32.const 0))) - (set_local 0x22b (i64.load offset=0x22b align=1 (i32.const 0))) - (set_local 0x22c (i64.load offset=0x22c align=1 (i32.const 0))) - (set_local 0x22d (i64.load offset=0x22d align=1 (i32.const 0))) - (set_local 0x22e (i64.load offset=0x22e align=1 (i32.const 0))) - (set_local 0x22f (i64.load offset=0x22f align=1 (i32.const 0))) - (set_local 0x230 (i64.load offset=0x230 align=1 (i32.const 0))) - (set_local 0x231 (i64.load offset=0x231 align=1 (i32.const 0))) - (set_local 0x232 (i64.load offset=0x232 align=1 (i32.const 0))) - (set_local 0x233 (i64.load offset=0x233 align=1 (i32.const 0))) - (set_local 0x234 (i64.load offset=0x234 align=1 (i32.const 0))) - (set_local 0x235 (i64.load offset=0x235 align=1 (i32.const 0))) - (set_local 0x236 (i64.load offset=0x236 align=1 (i32.const 0))) - (set_local 0x237 (i64.load offset=0x237 align=1 (i32.const 0))) - (set_local 0x238 (i64.load offset=0x238 align=1 (i32.const 0))) - (set_local 0x239 (i64.load offset=0x239 align=1 (i32.const 0))) - (set_local 0x23a (i64.load offset=0x23a align=1 (i32.const 0))) - (set_local 0x23b (i64.load offset=0x23b align=1 (i32.const 0))) - (set_local 0x23c (i64.load offset=0x23c align=1 (i32.const 0))) - (set_local 0x23d (i64.load offset=0x23d align=1 (i32.const 0))) - (set_local 0x23e (i64.load offset=0x23e align=1 (i32.const 0))) - (set_local 0x23f (i64.load offset=0x23f align=1 (i32.const 0))) - (set_local 0x240 (i64.load offset=0x240 align=1 (i32.const 0))) - (set_local 0x241 (i64.load offset=0x241 align=1 (i32.const 0))) - (set_local 0x242 (i64.load offset=0x242 align=1 (i32.const 0))) - (set_local 0x243 (i64.load offset=0x243 align=1 (i32.const 0))) - (set_local 0x244 (i64.load offset=0x244 align=1 (i32.const 0))) - (set_local 0x245 (i64.load offset=0x245 align=1 (i32.const 0))) - (set_local 0x246 (i64.load offset=0x246 align=1 (i32.const 0))) - (set_local 0x247 (i64.load offset=0x247 align=1 (i32.const 0))) - (set_local 0x248 (i64.load offset=0x248 align=1 (i32.const 0))) - (set_local 0x249 (i64.load offset=0x249 align=1 (i32.const 0))) - (set_local 0x24a (i64.load offset=0x24a align=1 (i32.const 0))) - (set_local 0x24b (i64.load offset=0x24b align=1 (i32.const 0))) - (set_local 0x24c (i64.load offset=0x24c align=1 (i32.const 0))) - (set_local 0x24d (i64.load offset=0x24d align=1 (i32.const 0))) - (set_local 0x24e (i64.load offset=0x24e align=1 (i32.const 0))) - (set_local 0x24f (i64.load offset=0x24f align=1 (i32.const 0))) - (set_local 0x250 (i64.load offset=0x250 align=1 (i32.const 0))) - (set_local 0x251 (i64.load offset=0x251 align=1 (i32.const 0))) - (set_local 0x252 (i64.load offset=0x252 align=1 (i32.const 0))) - (set_local 0x253 (i64.load offset=0x253 align=1 (i32.const 0))) - (set_local 0x254 (i64.load offset=0x254 align=1 (i32.const 0))) - (set_local 0x255 (i64.load offset=0x255 align=1 (i32.const 0))) - (set_local 0x256 (i64.load offset=0x256 align=1 (i32.const 0))) - (set_local 0x257 (i64.load offset=0x257 align=1 (i32.const 0))) - (set_local 0x258 (i64.load offset=0x258 align=1 (i32.const 0))) - (set_local 0x259 (i64.load offset=0x259 align=1 (i32.const 0))) - (set_local 0x25a (i64.load offset=0x25a align=1 (i32.const 0))) - (set_local 0x25b (i64.load offset=0x25b align=1 (i32.const 0))) - (set_local 0x25c (i64.load offset=0x25c align=1 (i32.const 0))) - (set_local 0x25d (i64.load offset=0x25d align=1 (i32.const 0))) - (set_local 0x25e (i64.load offset=0x25e align=1 (i32.const 0))) - (set_local 0x25f (i64.load offset=0x25f align=1 (i32.const 0))) - (set_local 0x260 (i64.load offset=0x260 align=1 (i32.const 0))) - (set_local 0x261 (i64.load offset=0x261 align=1 (i32.const 0))) - (set_local 0x262 (i64.load offset=0x262 align=1 (i32.const 0))) - (set_local 0x263 (i64.load offset=0x263 align=1 (i32.const 0))) - (set_local 0x264 (i64.load offset=0x264 align=1 (i32.const 0))) - (set_local 0x265 (i64.load offset=0x265 align=1 (i32.const 0))) - (set_local 0x266 (i64.load offset=0x266 align=1 (i32.const 0))) - (set_local 0x267 (i64.load offset=0x267 align=1 (i32.const 0))) - (set_local 0x268 (i64.load offset=0x268 align=1 (i32.const 0))) - (set_local 0x269 (i64.load offset=0x269 align=1 (i32.const 0))) - (set_local 0x26a (i64.load offset=0x26a align=1 (i32.const 0))) - (set_local 0x26b (i64.load offset=0x26b align=1 (i32.const 0))) - (set_local 0x26c (i64.load offset=0x26c align=1 (i32.const 0))) - (set_local 0x26d (i64.load offset=0x26d align=1 (i32.const 0))) - (set_local 0x26e (i64.load offset=0x26e align=1 (i32.const 0))) - (set_local 0x26f (i64.load offset=0x26f align=1 (i32.const 0))) - (set_local 0x270 (i64.load offset=0x270 align=1 (i32.const 0))) - (set_local 0x271 (i64.load offset=0x271 align=1 (i32.const 0))) - (set_local 0x272 (i64.load offset=0x272 align=1 (i32.const 0))) - (set_local 0x273 (i64.load offset=0x273 align=1 (i32.const 0))) - (set_local 0x274 (i64.load offset=0x274 align=1 (i32.const 0))) - (set_local 0x275 (i64.load offset=0x275 align=1 (i32.const 0))) - (set_local 0x276 (i64.load offset=0x276 align=1 (i32.const 0))) - (set_local 0x277 (i64.load offset=0x277 align=1 (i32.const 0))) - (set_local 0x278 (i64.load offset=0x278 align=1 (i32.const 0))) - (set_local 0x279 (i64.load offset=0x279 align=1 (i32.const 0))) - (set_local 0x27a (i64.load offset=0x27a align=1 (i32.const 0))) - (set_local 0x27b (i64.load offset=0x27b align=1 (i32.const 0))) - (set_local 0x27c (i64.load offset=0x27c align=1 (i32.const 0))) - (set_local 0x27d (i64.load offset=0x27d align=1 (i32.const 0))) - (set_local 0x27e (i64.load offset=0x27e align=1 (i32.const 0))) - (set_local 0x27f (i64.load offset=0x27f align=1 (i32.const 0))) - (set_local 0x280 (i64.load offset=0x280 align=1 (i32.const 0))) - (set_local 0x281 (i64.load offset=0x281 align=1 (i32.const 0))) - (set_local 0x282 (i64.load offset=0x282 align=1 (i32.const 0))) - (set_local 0x283 (i64.load offset=0x283 align=1 (i32.const 0))) - (set_local 0x284 (i64.load offset=0x284 align=1 (i32.const 0))) - (set_local 0x285 (i64.load offset=0x285 align=1 (i32.const 0))) - (set_local 0x286 (i64.load offset=0x286 align=1 (i32.const 0))) - (set_local 0x287 (i64.load offset=0x287 align=1 (i32.const 0))) - (set_local 0x288 (i64.load offset=0x288 align=1 (i32.const 0))) - (set_local 0x289 (i64.load offset=0x289 align=1 (i32.const 0))) - (set_local 0x28a (i64.load offset=0x28a align=1 (i32.const 0))) - (set_local 0x28b (i64.load offset=0x28b align=1 (i32.const 0))) - (set_local 0x28c (i64.load offset=0x28c align=1 (i32.const 0))) - (set_local 0x28d (i64.load offset=0x28d align=1 (i32.const 0))) - (set_local 0x28e (i64.load offset=0x28e align=1 (i32.const 0))) - (set_local 0x28f (i64.load offset=0x28f align=1 (i32.const 0))) - (set_local 0x290 (i64.load offset=0x290 align=1 (i32.const 0))) - (set_local 0x291 (i64.load offset=0x291 align=1 (i32.const 0))) - (set_local 0x292 (i64.load offset=0x292 align=1 (i32.const 0))) - (set_local 0x293 (i64.load offset=0x293 align=1 (i32.const 0))) - (set_local 0x294 (i64.load offset=0x294 align=1 (i32.const 0))) - (set_local 0x295 (i64.load offset=0x295 align=1 (i32.const 0))) - (set_local 0x296 (i64.load offset=0x296 align=1 (i32.const 0))) - (set_local 0x297 (i64.load offset=0x297 align=1 (i32.const 0))) - (set_local 0x298 (i64.load offset=0x298 align=1 (i32.const 0))) - (set_local 0x299 (i64.load offset=0x299 align=1 (i32.const 0))) - (set_local 0x29a (i64.load offset=0x29a align=1 (i32.const 0))) - (set_local 0x29b (i64.load offset=0x29b align=1 (i32.const 0))) - (set_local 0x29c (i64.load offset=0x29c align=1 (i32.const 0))) - (set_local 0x29d (i64.load offset=0x29d align=1 (i32.const 0))) - (set_local 0x29e (i64.load offset=0x29e align=1 (i32.const 0))) - (set_local 0x29f (i64.load offset=0x29f align=1 (i32.const 0))) - (set_local 0x2a0 (i64.load offset=0x2a0 align=1 (i32.const 0))) - (set_local 0x2a1 (i64.load offset=0x2a1 align=1 (i32.const 0))) - (set_local 0x2a2 (i64.load offset=0x2a2 align=1 (i32.const 0))) - (set_local 0x2a3 (i64.load offset=0x2a3 align=1 (i32.const 0))) - (set_local 0x2a4 (i64.load offset=0x2a4 align=1 (i32.const 0))) - (set_local 0x2a5 (i64.load offset=0x2a5 align=1 (i32.const 0))) - (set_local 0x2a6 (i64.load offset=0x2a6 align=1 (i32.const 0))) - (set_local 0x2a7 (i64.load offset=0x2a7 align=1 (i32.const 0))) - (set_local 0x2a8 (i64.load offset=0x2a8 align=1 (i32.const 0))) - (set_local 0x2a9 (i64.load offset=0x2a9 align=1 (i32.const 0))) - (set_local 0x2aa (i64.load offset=0x2aa align=1 (i32.const 0))) - (set_local 0x2ab (i64.load offset=0x2ab align=1 (i32.const 0))) - (set_local 0x2ac (i64.load offset=0x2ac align=1 (i32.const 0))) - (set_local 0x2ad (i64.load offset=0x2ad align=1 (i32.const 0))) - (set_local 0x2ae (i64.load offset=0x2ae align=1 (i32.const 0))) - (set_local 0x2af (i64.load offset=0x2af align=1 (i32.const 0))) - (set_local 0x2b0 (i64.load offset=0x2b0 align=1 (i32.const 0))) - (set_local 0x2b1 (i64.load offset=0x2b1 align=1 (i32.const 0))) - (set_local 0x2b2 (i64.load offset=0x2b2 align=1 (i32.const 0))) - (set_local 0x2b3 (i64.load offset=0x2b3 align=1 (i32.const 0))) - (set_local 0x2b4 (i64.load offset=0x2b4 align=1 (i32.const 0))) - (set_local 0x2b5 (i64.load offset=0x2b5 align=1 (i32.const 0))) - (set_local 0x2b6 (i64.load offset=0x2b6 align=1 (i32.const 0))) - (set_local 0x2b7 (i64.load offset=0x2b7 align=1 (i32.const 0))) - (set_local 0x2b8 (i64.load offset=0x2b8 align=1 (i32.const 0))) - (set_local 0x2b9 (i64.load offset=0x2b9 align=1 (i32.const 0))) - (set_local 0x2ba (i64.load offset=0x2ba align=1 (i32.const 0))) - (set_local 0x2bb (i64.load offset=0x2bb align=1 (i32.const 0))) - (set_local 0x2bc (i64.load offset=0x2bc align=1 (i32.const 0))) - (set_local 0x2bd (i64.load offset=0x2bd align=1 (i32.const 0))) - (set_local 0x2be (i64.load offset=0x2be align=1 (i32.const 0))) - (set_local 0x2bf (i64.load offset=0x2bf align=1 (i32.const 0))) - (set_local 0x2c0 (i64.load offset=0x2c0 align=1 (i32.const 0))) - (set_local 0x2c1 (i64.load offset=0x2c1 align=1 (i32.const 0))) - (set_local 0x2c2 (i64.load offset=0x2c2 align=1 (i32.const 0))) - (set_local 0x2c3 (i64.load offset=0x2c3 align=1 (i32.const 0))) - (set_local 0x2c4 (i64.load offset=0x2c4 align=1 (i32.const 0))) - (set_local 0x2c5 (i64.load offset=0x2c5 align=1 (i32.const 0))) - (set_local 0x2c6 (i64.load offset=0x2c6 align=1 (i32.const 0))) - (set_local 0x2c7 (i64.load offset=0x2c7 align=1 (i32.const 0))) - (set_local 0x2c8 (i64.load offset=0x2c8 align=1 (i32.const 0))) - (set_local 0x2c9 (i64.load offset=0x2c9 align=1 (i32.const 0))) - (set_local 0x2ca (i64.load offset=0x2ca align=1 (i32.const 0))) - (set_local 0x2cb (i64.load offset=0x2cb align=1 (i32.const 0))) - (set_local 0x2cc (i64.load offset=0x2cc align=1 (i32.const 0))) - (set_local 0x2cd (i64.load offset=0x2cd align=1 (i32.const 0))) - (set_local 0x2ce (i64.load offset=0x2ce align=1 (i32.const 0))) - (set_local 0x2cf (i64.load offset=0x2cf align=1 (i32.const 0))) - (set_local 0x2d0 (i64.load offset=0x2d0 align=1 (i32.const 0))) - (set_local 0x2d1 (i64.load offset=0x2d1 align=1 (i32.const 0))) - (set_local 0x2d2 (i64.load offset=0x2d2 align=1 (i32.const 0))) - (set_local 0x2d3 (i64.load offset=0x2d3 align=1 (i32.const 0))) - (set_local 0x2d4 (i64.load offset=0x2d4 align=1 (i32.const 0))) - (set_local 0x2d5 (i64.load offset=0x2d5 align=1 (i32.const 0))) - (set_local 0x2d6 (i64.load offset=0x2d6 align=1 (i32.const 0))) - (set_local 0x2d7 (i64.load offset=0x2d7 align=1 (i32.const 0))) - (set_local 0x2d8 (i64.load offset=0x2d8 align=1 (i32.const 0))) - (set_local 0x2d9 (i64.load offset=0x2d9 align=1 (i32.const 0))) - (set_local 0x2da (i64.load offset=0x2da align=1 (i32.const 0))) - (set_local 0x2db (i64.load offset=0x2db align=1 (i32.const 0))) - (set_local 0x2dc (i64.load offset=0x2dc align=1 (i32.const 0))) - (set_local 0x2dd (i64.load offset=0x2dd align=1 (i32.const 0))) - (set_local 0x2de (i64.load offset=0x2de align=1 (i32.const 0))) - (set_local 0x2df (i64.load offset=0x2df align=1 (i32.const 0))) - (set_local 0x2e0 (i64.load offset=0x2e0 align=1 (i32.const 0))) - (set_local 0x2e1 (i64.load offset=0x2e1 align=1 (i32.const 0))) - (set_local 0x2e2 (i64.load offset=0x2e2 align=1 (i32.const 0))) - (set_local 0x2e3 (i64.load offset=0x2e3 align=1 (i32.const 0))) - (set_local 0x2e4 (i64.load offset=0x2e4 align=1 (i32.const 0))) - (set_local 0x2e5 (i64.load offset=0x2e5 align=1 (i32.const 0))) - (set_local 0x2e6 (i64.load offset=0x2e6 align=1 (i32.const 0))) - (set_local 0x2e7 (i64.load offset=0x2e7 align=1 (i32.const 0))) - (set_local 0x2e8 (i64.load offset=0x2e8 align=1 (i32.const 0))) - (set_local 0x2e9 (i64.load offset=0x2e9 align=1 (i32.const 0))) - (set_local 0x2ea (i64.load offset=0x2ea align=1 (i32.const 0))) - (set_local 0x2eb (i64.load offset=0x2eb align=1 (i32.const 0))) - (set_local 0x2ec (i64.load offset=0x2ec align=1 (i32.const 0))) - (set_local 0x2ed (i64.load offset=0x2ed align=1 (i32.const 0))) - (set_local 0x2ee (i64.load offset=0x2ee align=1 (i32.const 0))) - (set_local 0x2ef (i64.load offset=0x2ef align=1 (i32.const 0))) - (set_local 0x2f0 (i64.load offset=0x2f0 align=1 (i32.const 0))) - (set_local 0x2f1 (i64.load offset=0x2f1 align=1 (i32.const 0))) - (set_local 0x2f2 (i64.load offset=0x2f2 align=1 (i32.const 0))) - (set_local 0x2f3 (i64.load offset=0x2f3 align=1 (i32.const 0))) - (set_local 0x2f4 (i64.load offset=0x2f4 align=1 (i32.const 0))) - (set_local 0x2f5 (i64.load offset=0x2f5 align=1 (i32.const 0))) - (set_local 0x2f6 (i64.load offset=0x2f6 align=1 (i32.const 0))) - (set_local 0x2f7 (i64.load offset=0x2f7 align=1 (i32.const 0))) - (set_local 0x2f8 (i64.load offset=0x2f8 align=1 (i32.const 0))) - (set_local 0x2f9 (i64.load offset=0x2f9 align=1 (i32.const 0))) - (set_local 0x2fa (i64.load offset=0x2fa align=1 (i32.const 0))) - (set_local 0x2fb (i64.load offset=0x2fb align=1 (i32.const 0))) - (set_local 0x2fc (i64.load offset=0x2fc align=1 (i32.const 0))) - (set_local 0x2fd (i64.load offset=0x2fd align=1 (i32.const 0))) - (set_local 0x2fe (i64.load offset=0x2fe align=1 (i32.const 0))) - (set_local 0x2ff (i64.load offset=0x2ff align=1 (i32.const 0))) - (set_local 0x300 (i64.load offset=0x300 align=1 (i32.const 0))) - (set_local 0x301 (i64.load offset=0x301 align=1 (i32.const 0))) - (set_local 0x302 (i64.load offset=0x302 align=1 (i32.const 0))) - (set_local 0x303 (i64.load offset=0x303 align=1 (i32.const 0))) - (set_local 0x304 (i64.load offset=0x304 align=1 (i32.const 0))) - (set_local 0x305 (i64.load offset=0x305 align=1 (i32.const 0))) - (set_local 0x306 (i64.load offset=0x306 align=1 (i32.const 0))) - (set_local 0x307 (i64.load offset=0x307 align=1 (i32.const 0))) - (set_local 0x308 (i64.load offset=0x308 align=1 (i32.const 0))) - (set_local 0x309 (i64.load offset=0x309 align=1 (i32.const 0))) - (set_local 0x30a (i64.load offset=0x30a align=1 (i32.const 0))) - (set_local 0x30b (i64.load offset=0x30b align=1 (i32.const 0))) - (set_local 0x30c (i64.load offset=0x30c align=1 (i32.const 0))) - (set_local 0x30d (i64.load offset=0x30d align=1 (i32.const 0))) - (set_local 0x30e (i64.load offset=0x30e align=1 (i32.const 0))) - (set_local 0x30f (i64.load offset=0x30f align=1 (i32.const 0))) - (set_local 0x310 (i64.load offset=0x310 align=1 (i32.const 0))) - (set_local 0x311 (i64.load offset=0x311 align=1 (i32.const 0))) - (set_local 0x312 (i64.load offset=0x312 align=1 (i32.const 0))) - (set_local 0x313 (i64.load offset=0x313 align=1 (i32.const 0))) - (set_local 0x314 (i64.load offset=0x314 align=1 (i32.const 0))) - (set_local 0x315 (i64.load offset=0x315 align=1 (i32.const 0))) - (set_local 0x316 (i64.load offset=0x316 align=1 (i32.const 0))) - (set_local 0x317 (i64.load offset=0x317 align=1 (i32.const 0))) - (set_local 0x318 (i64.load offset=0x318 align=1 (i32.const 0))) - (set_local 0x319 (i64.load offset=0x319 align=1 (i32.const 0))) - (set_local 0x31a (i64.load offset=0x31a align=1 (i32.const 0))) - (set_local 0x31b (i64.load offset=0x31b align=1 (i32.const 0))) - (set_local 0x31c (i64.load offset=0x31c align=1 (i32.const 0))) - (set_local 0x31d (i64.load offset=0x31d align=1 (i32.const 0))) - (set_local 0x31e (i64.load offset=0x31e align=1 (i32.const 0))) - (set_local 0x31f (i64.load offset=0x31f align=1 (i32.const 0))) - (set_local 0x320 (i64.load offset=0x320 align=1 (i32.const 0))) - (set_local 0x321 (i64.load offset=0x321 align=1 (i32.const 0))) - (set_local 0x322 (i64.load offset=0x322 align=1 (i32.const 0))) - (set_local 0x323 (i64.load offset=0x323 align=1 (i32.const 0))) - (set_local 0x324 (i64.load offset=0x324 align=1 (i32.const 0))) - (set_local 0x325 (i64.load offset=0x325 align=1 (i32.const 0))) - (set_local 0x326 (i64.load offset=0x326 align=1 (i32.const 0))) - (set_local 0x327 (i64.load offset=0x327 align=1 (i32.const 0))) - (set_local 0x328 (i64.load offset=0x328 align=1 (i32.const 0))) - (set_local 0x329 (i64.load offset=0x329 align=1 (i32.const 0))) - (set_local 0x32a (i64.load offset=0x32a align=1 (i32.const 0))) - (set_local 0x32b (i64.load offset=0x32b align=1 (i32.const 0))) - (set_local 0x32c (i64.load offset=0x32c align=1 (i32.const 0))) - (set_local 0x32d (i64.load offset=0x32d align=1 (i32.const 0))) - (set_local 0x32e (i64.load offset=0x32e align=1 (i32.const 0))) - (set_local 0x32f (i64.load offset=0x32f align=1 (i32.const 0))) - (set_local 0x330 (i64.load offset=0x330 align=1 (i32.const 0))) - (set_local 0x331 (i64.load offset=0x331 align=1 (i32.const 0))) - (set_local 0x332 (i64.load offset=0x332 align=1 (i32.const 0))) - (set_local 0x333 (i64.load offset=0x333 align=1 (i32.const 0))) - (set_local 0x334 (i64.load offset=0x334 align=1 (i32.const 0))) - (set_local 0x335 (i64.load offset=0x335 align=1 (i32.const 0))) - (set_local 0x336 (i64.load offset=0x336 align=1 (i32.const 0))) - (set_local 0x337 (i64.load offset=0x337 align=1 (i32.const 0))) - (set_local 0x338 (i64.load offset=0x338 align=1 (i32.const 0))) - (set_local 0x339 (i64.load offset=0x339 align=1 (i32.const 0))) - (set_local 0x33a (i64.load offset=0x33a align=1 (i32.const 0))) - (set_local 0x33b (i64.load offset=0x33b align=1 (i32.const 0))) - (set_local 0x33c (i64.load offset=0x33c align=1 (i32.const 0))) - (set_local 0x33d (i64.load offset=0x33d align=1 (i32.const 0))) - (set_local 0x33e (i64.load offset=0x33e align=1 (i32.const 0))) - (set_local 0x33f (i64.load offset=0x33f align=1 (i32.const 0))) - (set_local 0x340 (i64.load offset=0x340 align=1 (i32.const 0))) - (set_local 0x341 (i64.load offset=0x341 align=1 (i32.const 0))) - (set_local 0x342 (i64.load offset=0x342 align=1 (i32.const 0))) - (set_local 0x343 (i64.load offset=0x343 align=1 (i32.const 0))) - (set_local 0x344 (i64.load offset=0x344 align=1 (i32.const 0))) - (set_local 0x345 (i64.load offset=0x345 align=1 (i32.const 0))) - (set_local 0x346 (i64.load offset=0x346 align=1 (i32.const 0))) - (set_local 0x347 (i64.load offset=0x347 align=1 (i32.const 0))) - (set_local 0x348 (i64.load offset=0x348 align=1 (i32.const 0))) - (set_local 0x349 (i64.load offset=0x349 align=1 (i32.const 0))) - (set_local 0x34a (i64.load offset=0x34a align=1 (i32.const 0))) - (set_local 0x34b (i64.load offset=0x34b align=1 (i32.const 0))) - (set_local 0x34c (i64.load offset=0x34c align=1 (i32.const 0))) - (set_local 0x34d (i64.load offset=0x34d align=1 (i32.const 0))) - (set_local 0x34e (i64.load offset=0x34e align=1 (i32.const 0))) - (set_local 0x34f (i64.load offset=0x34f align=1 (i32.const 0))) - (set_local 0x350 (i64.load offset=0x350 align=1 (i32.const 0))) - (set_local 0x351 (i64.load offset=0x351 align=1 (i32.const 0))) - (set_local 0x352 (i64.load offset=0x352 align=1 (i32.const 0))) - (set_local 0x353 (i64.load offset=0x353 align=1 (i32.const 0))) - (set_local 0x354 (i64.load offset=0x354 align=1 (i32.const 0))) - (set_local 0x355 (i64.load offset=0x355 align=1 (i32.const 0))) - (set_local 0x356 (i64.load offset=0x356 align=1 (i32.const 0))) - (set_local 0x357 (i64.load offset=0x357 align=1 (i32.const 0))) - (set_local 0x358 (i64.load offset=0x358 align=1 (i32.const 0))) - (set_local 0x359 (i64.load offset=0x359 align=1 (i32.const 0))) - (set_local 0x35a (i64.load offset=0x35a align=1 (i32.const 0))) - (set_local 0x35b (i64.load offset=0x35b align=1 (i32.const 0))) - (set_local 0x35c (i64.load offset=0x35c align=1 (i32.const 0))) - (set_local 0x35d (i64.load offset=0x35d align=1 (i32.const 0))) - (set_local 0x35e (i64.load offset=0x35e align=1 (i32.const 0))) - (set_local 0x35f (i64.load offset=0x35f align=1 (i32.const 0))) - (set_local 0x360 (i64.load offset=0x360 align=1 (i32.const 0))) - (set_local 0x361 (i64.load offset=0x361 align=1 (i32.const 0))) - (set_local 0x362 (i64.load offset=0x362 align=1 (i32.const 0))) - (set_local 0x363 (i64.load offset=0x363 align=1 (i32.const 0))) - (set_local 0x364 (i64.load offset=0x364 align=1 (i32.const 0))) - (set_local 0x365 (i64.load offset=0x365 align=1 (i32.const 0))) - (set_local 0x366 (i64.load offset=0x366 align=1 (i32.const 0))) - (set_local 0x367 (i64.load offset=0x367 align=1 (i32.const 0))) - (set_local 0x368 (i64.load offset=0x368 align=1 (i32.const 0))) - (set_local 0x369 (i64.load offset=0x369 align=1 (i32.const 0))) - (set_local 0x36a (i64.load offset=0x36a align=1 (i32.const 0))) - (set_local 0x36b (i64.load offset=0x36b align=1 (i32.const 0))) - (set_local 0x36c (i64.load offset=0x36c align=1 (i32.const 0))) - (set_local 0x36d (i64.load offset=0x36d align=1 (i32.const 0))) - (set_local 0x36e (i64.load offset=0x36e align=1 (i32.const 0))) - (set_local 0x36f (i64.load offset=0x36f align=1 (i32.const 0))) - (set_local 0x370 (i64.load offset=0x370 align=1 (i32.const 0))) - (set_local 0x371 (i64.load offset=0x371 align=1 (i32.const 0))) - (set_local 0x372 (i64.load offset=0x372 align=1 (i32.const 0))) - (set_local 0x373 (i64.load offset=0x373 align=1 (i32.const 0))) - (set_local 0x374 (i64.load offset=0x374 align=1 (i32.const 0))) - (set_local 0x375 (i64.load offset=0x375 align=1 (i32.const 0))) - (set_local 0x376 (i64.load offset=0x376 align=1 (i32.const 0))) - (set_local 0x377 (i64.load offset=0x377 align=1 (i32.const 0))) - (set_local 0x378 (i64.load offset=0x378 align=1 (i32.const 0))) - (set_local 0x379 (i64.load offset=0x379 align=1 (i32.const 0))) - (set_local 0x37a (i64.load offset=0x37a align=1 (i32.const 0))) - (set_local 0x37b (i64.load offset=0x37b align=1 (i32.const 0))) - (set_local 0x37c (i64.load offset=0x37c align=1 (i32.const 0))) - (set_local 0x37d (i64.load offset=0x37d align=1 (i32.const 0))) - (set_local 0x37e (i64.load offset=0x37e align=1 (i32.const 0))) - (set_local 0x37f (i64.load offset=0x37f align=1 (i32.const 0))) - (set_local 0x380 (i64.load offset=0x380 align=1 (i32.const 0))) - (set_local 0x381 (i64.load offset=0x381 align=1 (i32.const 0))) - (set_local 0x382 (i64.load offset=0x382 align=1 (i32.const 0))) - (set_local 0x383 (i64.load offset=0x383 align=1 (i32.const 0))) - (set_local 0x384 (i64.load offset=0x384 align=1 (i32.const 0))) - (set_local 0x385 (i64.load offset=0x385 align=1 (i32.const 0))) - (set_local 0x386 (i64.load offset=0x386 align=1 (i32.const 0))) - (set_local 0x387 (i64.load offset=0x387 align=1 (i32.const 0))) - (set_local 0x388 (i64.load offset=0x388 align=1 (i32.const 0))) - (set_local 0x389 (i64.load offset=0x389 align=1 (i32.const 0))) - (set_local 0x38a (i64.load offset=0x38a align=1 (i32.const 0))) - (set_local 0x38b (i64.load offset=0x38b align=1 (i32.const 0))) - (set_local 0x38c (i64.load offset=0x38c align=1 (i32.const 0))) - (set_local 0x38d (i64.load offset=0x38d align=1 (i32.const 0))) - (set_local 0x38e (i64.load offset=0x38e align=1 (i32.const 0))) - (set_local 0x38f (i64.load offset=0x38f align=1 (i32.const 0))) - (set_local 0x390 (i64.load offset=0x390 align=1 (i32.const 0))) - (set_local 0x391 (i64.load offset=0x391 align=1 (i32.const 0))) - (set_local 0x392 (i64.load offset=0x392 align=1 (i32.const 0))) - (set_local 0x393 (i64.load offset=0x393 align=1 (i32.const 0))) - (set_local 0x394 (i64.load offset=0x394 align=1 (i32.const 0))) - (set_local 0x395 (i64.load offset=0x395 align=1 (i32.const 0))) - (set_local 0x396 (i64.load offset=0x396 align=1 (i32.const 0))) - (set_local 0x397 (i64.load offset=0x397 align=1 (i32.const 0))) - (set_local 0x398 (i64.load offset=0x398 align=1 (i32.const 0))) - (set_local 0x399 (i64.load offset=0x399 align=1 (i32.const 0))) - (set_local 0x39a (i64.load offset=0x39a align=1 (i32.const 0))) - (set_local 0x39b (i64.load offset=0x39b align=1 (i32.const 0))) - (set_local 0x39c (i64.load offset=0x39c align=1 (i32.const 0))) - (set_local 0x39d (i64.load offset=0x39d align=1 (i32.const 0))) - (set_local 0x39e (i64.load offset=0x39e align=1 (i32.const 0))) - (set_local 0x39f (i64.load offset=0x39f align=1 (i32.const 0))) - (set_local 0x3a0 (i64.load offset=0x3a0 align=1 (i32.const 0))) - (set_local 0x3a1 (i64.load offset=0x3a1 align=1 (i32.const 0))) - (set_local 0x3a2 (i64.load offset=0x3a2 align=1 (i32.const 0))) - (set_local 0x3a3 (i64.load offset=0x3a3 align=1 (i32.const 0))) - (set_local 0x3a4 (i64.load offset=0x3a4 align=1 (i32.const 0))) - (set_local 0x3a5 (i64.load offset=0x3a5 align=1 (i32.const 0))) - (set_local 0x3a6 (i64.load offset=0x3a6 align=1 (i32.const 0))) - (set_local 0x3a7 (i64.load offset=0x3a7 align=1 (i32.const 0))) - (set_local 0x3a8 (i64.load offset=0x3a8 align=1 (i32.const 0))) - (set_local 0x3a9 (i64.load offset=0x3a9 align=1 (i32.const 0))) - (set_local 0x3aa (i64.load offset=0x3aa align=1 (i32.const 0))) - (set_local 0x3ab (i64.load offset=0x3ab align=1 (i32.const 0))) - (set_local 0x3ac (i64.load offset=0x3ac align=1 (i32.const 0))) - (set_local 0x3ad (i64.load offset=0x3ad align=1 (i32.const 0))) - (set_local 0x3ae (i64.load offset=0x3ae align=1 (i32.const 0))) - (set_local 0x3af (i64.load offset=0x3af align=1 (i32.const 0))) - (set_local 0x3b0 (i64.load offset=0x3b0 align=1 (i32.const 0))) - (set_local 0x3b1 (i64.load offset=0x3b1 align=1 (i32.const 0))) - (set_local 0x3b2 (i64.load offset=0x3b2 align=1 (i32.const 0))) - (set_local 0x3b3 (i64.load offset=0x3b3 align=1 (i32.const 0))) - (set_local 0x3b4 (i64.load offset=0x3b4 align=1 (i32.const 0))) - (set_local 0x3b5 (i64.load offset=0x3b5 align=1 (i32.const 0))) - (set_local 0x3b6 (i64.load offset=0x3b6 align=1 (i32.const 0))) - (set_local 0x3b7 (i64.load offset=0x3b7 align=1 (i32.const 0))) - (set_local 0x3b8 (i64.load offset=0x3b8 align=1 (i32.const 0))) - (set_local 0x3b9 (i64.load offset=0x3b9 align=1 (i32.const 0))) - (set_local 0x3ba (i64.load offset=0x3ba align=1 (i32.const 0))) - (set_local 0x3bb (i64.load offset=0x3bb align=1 (i32.const 0))) - (set_local 0x3bc (i64.load offset=0x3bc align=1 (i32.const 0))) - (set_local 0x3bd (i64.load offset=0x3bd align=1 (i32.const 0))) - (set_local 0x3be (i64.load offset=0x3be align=1 (i32.const 0))) - (set_local 0x3bf (i64.load offset=0x3bf align=1 (i32.const 0))) - (set_local 0x3c0 (i64.load offset=0x3c0 align=1 (i32.const 0))) - (set_local 0x3c1 (i64.load offset=0x3c1 align=1 (i32.const 0))) - (set_local 0x3c2 (i64.load offset=0x3c2 align=1 (i32.const 0))) - (set_local 0x3c3 (i64.load offset=0x3c3 align=1 (i32.const 0))) - (set_local 0x3c4 (i64.load offset=0x3c4 align=1 (i32.const 0))) - (set_local 0x3c5 (i64.load offset=0x3c5 align=1 (i32.const 0))) - (set_local 0x3c6 (i64.load offset=0x3c6 align=1 (i32.const 0))) - (set_local 0x3c7 (i64.load offset=0x3c7 align=1 (i32.const 0))) - (set_local 0x3c8 (i64.load offset=0x3c8 align=1 (i32.const 0))) - (set_local 0x3c9 (i64.load offset=0x3c9 align=1 (i32.const 0))) - (set_local 0x3ca (i64.load offset=0x3ca align=1 (i32.const 0))) - (set_local 0x3cb (i64.load offset=0x3cb align=1 (i32.const 0))) - (set_local 0x3cc (i64.load offset=0x3cc align=1 (i32.const 0))) - (set_local 0x3cd (i64.load offset=0x3cd align=1 (i32.const 0))) - (set_local 0x3ce (i64.load offset=0x3ce align=1 (i32.const 0))) - (set_local 0x3cf (i64.load offset=0x3cf align=1 (i32.const 0))) - (set_local 0x3d0 (i64.load offset=0x3d0 align=1 (i32.const 0))) - (set_local 0x3d1 (i64.load offset=0x3d1 align=1 (i32.const 0))) - (set_local 0x3d2 (i64.load offset=0x3d2 align=1 (i32.const 0))) - (set_local 0x3d3 (i64.load offset=0x3d3 align=1 (i32.const 0))) - (set_local 0x3d4 (i64.load offset=0x3d4 align=1 (i32.const 0))) - (set_local 0x3d5 (i64.load offset=0x3d5 align=1 (i32.const 0))) - (set_local 0x3d6 (i64.load offset=0x3d6 align=1 (i32.const 0))) - (set_local 0x3d7 (i64.load offset=0x3d7 align=1 (i32.const 0))) - (set_local 0x3d8 (i64.load offset=0x3d8 align=1 (i32.const 0))) - (set_local 0x3d9 (i64.load offset=0x3d9 align=1 (i32.const 0))) - (set_local 0x3da (i64.load offset=0x3da align=1 (i32.const 0))) - (set_local 0x3db (i64.load offset=0x3db align=1 (i32.const 0))) - (set_local 0x3dc (i64.load offset=0x3dc align=1 (i32.const 0))) - (set_local 0x3dd (i64.load offset=0x3dd align=1 (i32.const 0))) - (set_local 0x3de (i64.load offset=0x3de align=1 (i32.const 0))) - (set_local 0x3df (i64.load offset=0x3df align=1 (i32.const 0))) - (set_local 0x3e0 (i64.load offset=0x3e0 align=1 (i32.const 0))) - (set_local 0x3e1 (i64.load offset=0x3e1 align=1 (i32.const 0))) - (set_local 0x3e2 (i64.load offset=0x3e2 align=1 (i32.const 0))) - (set_local 0x3e3 (i64.load offset=0x3e3 align=1 (i32.const 0))) - (set_local 0x3e4 (i64.load offset=0x3e4 align=1 (i32.const 0))) - (set_local 0x3e5 (i64.load offset=0x3e5 align=1 (i32.const 0))) - (set_local 0x3e6 (i64.load offset=0x3e6 align=1 (i32.const 0))) - (set_local 0x3e7 (i64.load offset=0x3e7 align=1 (i32.const 0))) - (set_local 0x3e8 (i64.load offset=0x3e8 align=1 (i32.const 0))) - (set_local 0x3e9 (i64.load offset=0x3e9 align=1 (i32.const 0))) - (set_local 0x3ea (i64.load offset=0x3ea align=1 (i32.const 0))) - (set_local 0x3eb (i64.load offset=0x3eb align=1 (i32.const 0))) - (set_local 0x3ec (i64.load offset=0x3ec align=1 (i32.const 0))) - (set_local 0x3ed (i64.load offset=0x3ed align=1 (i32.const 0))) - (set_local 0x3ee (i64.load offset=0x3ee align=1 (i32.const 0))) - (set_local 0x3ef (i64.load offset=0x3ef align=1 (i32.const 0))) - (set_local 0x3f0 (i64.load offset=0x3f0 align=1 (i32.const 0))) - (set_local 0x3f1 (i64.load offset=0x3f1 align=1 (i32.const 0))) - (set_local 0x3f2 (i64.load offset=0x3f2 align=1 (i32.const 0))) - (set_local 0x3f3 (i64.load offset=0x3f3 align=1 (i32.const 0))) - (set_local 0x3f4 (i64.load offset=0x3f4 align=1 (i32.const 0))) - (set_local 0x3f5 (i64.load offset=0x3f5 align=1 (i32.const 0))) - (set_local 0x3f6 (i64.load offset=0x3f6 align=1 (i32.const 0))) - (set_local 0x3f7 (i64.load offset=0x3f7 align=1 (i32.const 0))) - (set_local 0x3f8 (i64.load offset=0x3f8 align=1 (i32.const 0))) - (set_local 0x3f9 (i64.load offset=0x3f9 align=1 (i32.const 0))) - (set_local 0x3fa (i64.load offset=0x3fa align=1 (i32.const 0))) - (set_local 0x3fb (i64.load offset=0x3fb align=1 (i32.const 0))) - (set_local 0x3fc (i64.load offset=0x3fc align=1 (i32.const 0))) - (set_local 0x3fd (i64.load offset=0x3fd align=1 (i32.const 0))) - (set_local 0x3fe (i64.load offset=0x3fe align=1 (i32.const 0))) - (set_local 0x3ff (i64.load offset=0x3ff align=1 (i32.const 0))) - (set_local 0x400 (i64.load offset=0x400 align=1 (i32.const 0))) - (set_local 0x401 (i64.load offset=0x401 align=1 (i32.const 0))) - (set_local 0x402 (i64.load offset=0x402 align=1 (i32.const 0))) - (set_local 0x403 (i64.load offset=0x403 align=1 (i32.const 0))) - (set_local 0x404 (i64.load offset=0x404 align=1 (i32.const 0))) - (set_local 0x405 (i64.load offset=0x405 align=1 (i32.const 0))) - (set_local 0x406 (i64.load offset=0x406 align=1 (i32.const 0))) - (set_local 0x407 (i64.load offset=0x407 align=1 (i32.const 0))) - (set_local 0x408 (i64.load offset=0x408 align=1 (i32.const 0))) - (set_local 0x409 (i64.load offset=0x409 align=1 (i32.const 0))) - (set_local 0x40a (i64.load offset=0x40a align=1 (i32.const 0))) - (set_local 0x40b (i64.load offset=0x40b align=1 (i32.const 0))) - (set_local 0x40c (i64.load offset=0x40c align=1 (i32.const 0))) - (set_local 0x40d (i64.load offset=0x40d align=1 (i32.const 0))) - (set_local 0x40e (i64.load offset=0x40e align=1 (i32.const 0))) - (set_local 0x40f (i64.load offset=0x40f align=1 (i32.const 0))) - (set_local 0x410 (i64.load offset=0x410 align=1 (i32.const 0))) - (set_local 0x411 (i64.load offset=0x411 align=1 (i32.const 0))) - (set_local 0x412 (i64.load offset=0x412 align=1 (i32.const 0))) - (set_local 0x413 (i64.load offset=0x413 align=1 (i32.const 0))) - (set_local 0x414 (i64.load offset=0x414 align=1 (i32.const 0))) - (set_local 0x415 (i64.load offset=0x415 align=1 (i32.const 0))) - (set_local 0x416 (i64.load offset=0x416 align=1 (i32.const 0))) - (set_local 0x417 (i64.load offset=0x417 align=1 (i32.const 0))) - (set_local 0x418 (i64.load offset=0x418 align=1 (i32.const 0))) - (set_local 0x419 (i64.load offset=0x419 align=1 (i32.const 0))) - (set_local 0x41a (i64.load offset=0x41a align=1 (i32.const 0))) - (set_local 0x41b (i64.load offset=0x41b align=1 (i32.const 0))) - (set_local 0x41c (i64.load offset=0x41c align=1 (i32.const 0))) - (set_local 0x41d (i64.load offset=0x41d align=1 (i32.const 0))) - (set_local 0x41e (i64.load offset=0x41e align=1 (i32.const 0))) - (set_local 0x41f (i64.load offset=0x41f align=1 (i32.const 0))) - - (i64.store offset=0x000 align=1 (i32.const 0) (get_local 0x000)) - (i64.store offset=0x001 align=1 (i32.const 0) (get_local 0x001)) - (i64.store offset=0x002 align=1 (i32.const 0) (get_local 0x002)) - (i64.store offset=0x003 align=1 (i32.const 0) (get_local 0x003)) - (i64.store offset=0x004 align=1 (i32.const 0) (get_local 0x004)) - (i64.store offset=0x005 align=1 (i32.const 0) (get_local 0x005)) - (i64.store offset=0x006 align=1 (i32.const 0) (get_local 0x006)) - (i64.store offset=0x007 align=1 (i32.const 0) (get_local 0x007)) - (i64.store offset=0x008 align=1 (i32.const 0) (get_local 0x008)) - (i64.store offset=0x009 align=1 (i32.const 0) (get_local 0x009)) - (i64.store offset=0x00a align=1 (i32.const 0) (get_local 0x00a)) - (i64.store offset=0x00b align=1 (i32.const 0) (get_local 0x00b)) - (i64.store offset=0x00c align=1 (i32.const 0) (get_local 0x00c)) - (i64.store offset=0x00d align=1 (i32.const 0) (get_local 0x00d)) - (i64.store offset=0x00e align=1 (i32.const 0) (get_local 0x00e)) - (i64.store offset=0x00f align=1 (i32.const 0) (get_local 0x00f)) - (i64.store offset=0x010 align=1 (i32.const 0) (get_local 0x010)) - (i64.store offset=0x011 align=1 (i32.const 0) (get_local 0x011)) - (i64.store offset=0x012 align=1 (i32.const 0) (get_local 0x012)) - (i64.store offset=0x013 align=1 (i32.const 0) (get_local 0x013)) - (i64.store offset=0x014 align=1 (i32.const 0) (get_local 0x014)) - (i64.store offset=0x015 align=1 (i32.const 0) (get_local 0x015)) - (i64.store offset=0x016 align=1 (i32.const 0) (get_local 0x016)) - (i64.store offset=0x017 align=1 (i32.const 0) (get_local 0x017)) - (i64.store offset=0x018 align=1 (i32.const 0) (get_local 0x018)) - (i64.store offset=0x019 align=1 (i32.const 0) (get_local 0x019)) - (i64.store offset=0x01a align=1 (i32.const 0) (get_local 0x01a)) - (i64.store offset=0x01b align=1 (i32.const 0) (get_local 0x01b)) - (i64.store offset=0x01c align=1 (i32.const 0) (get_local 0x01c)) - (i64.store offset=0x01d align=1 (i32.const 0) (get_local 0x01d)) - (i64.store offset=0x01e align=1 (i32.const 0) (get_local 0x01e)) - (i64.store offset=0x01f align=1 (i32.const 0) (get_local 0x01f)) - (i64.store offset=0x020 align=1 (i32.const 0) (get_local 0x020)) - (i64.store offset=0x021 align=1 (i32.const 0) (get_local 0x021)) - (i64.store offset=0x022 align=1 (i32.const 0) (get_local 0x022)) - (i64.store offset=0x023 align=1 (i32.const 0) (get_local 0x023)) - (i64.store offset=0x024 align=1 (i32.const 0) (get_local 0x024)) - (i64.store offset=0x025 align=1 (i32.const 0) (get_local 0x025)) - (i64.store offset=0x026 align=1 (i32.const 0) (get_local 0x026)) - (i64.store offset=0x027 align=1 (i32.const 0) (get_local 0x027)) - (i64.store offset=0x028 align=1 (i32.const 0) (get_local 0x028)) - (i64.store offset=0x029 align=1 (i32.const 0) (get_local 0x029)) - (i64.store offset=0x02a align=1 (i32.const 0) (get_local 0x02a)) - (i64.store offset=0x02b align=1 (i32.const 0) (get_local 0x02b)) - (i64.store offset=0x02c align=1 (i32.const 0) (get_local 0x02c)) - (i64.store offset=0x02d align=1 (i32.const 0) (get_local 0x02d)) - (i64.store offset=0x02e align=1 (i32.const 0) (get_local 0x02e)) - (i64.store offset=0x02f align=1 (i32.const 0) (get_local 0x02f)) - (i64.store offset=0x030 align=1 (i32.const 0) (get_local 0x030)) - (i64.store offset=0x031 align=1 (i32.const 0) (get_local 0x031)) - (i64.store offset=0x032 align=1 (i32.const 0) (get_local 0x032)) - (i64.store offset=0x033 align=1 (i32.const 0) (get_local 0x033)) - (i64.store offset=0x034 align=1 (i32.const 0) (get_local 0x034)) - (i64.store offset=0x035 align=1 (i32.const 0) (get_local 0x035)) - (i64.store offset=0x036 align=1 (i32.const 0) (get_local 0x036)) - (i64.store offset=0x037 align=1 (i32.const 0) (get_local 0x037)) - (i64.store offset=0x038 align=1 (i32.const 0) (get_local 0x038)) - (i64.store offset=0x039 align=1 (i32.const 0) (get_local 0x039)) - (i64.store offset=0x03a align=1 (i32.const 0) (get_local 0x03a)) - (i64.store offset=0x03b align=1 (i32.const 0) (get_local 0x03b)) - (i64.store offset=0x03c align=1 (i32.const 0) (get_local 0x03c)) - (i64.store offset=0x03d align=1 (i32.const 0) (get_local 0x03d)) - (i64.store offset=0x03e align=1 (i32.const 0) (get_local 0x03e)) - (i64.store offset=0x03f align=1 (i32.const 0) (get_local 0x03f)) - (i64.store offset=0x040 align=1 (i32.const 0) (get_local 0x040)) - (i64.store offset=0x041 align=1 (i32.const 0) (get_local 0x041)) - (i64.store offset=0x042 align=1 (i32.const 0) (get_local 0x042)) - (i64.store offset=0x043 align=1 (i32.const 0) (get_local 0x043)) - (i64.store offset=0x044 align=1 (i32.const 0) (get_local 0x044)) - (i64.store offset=0x045 align=1 (i32.const 0) (get_local 0x045)) - (i64.store offset=0x046 align=1 (i32.const 0) (get_local 0x046)) - (i64.store offset=0x047 align=1 (i32.const 0) (get_local 0x047)) - (i64.store offset=0x048 align=1 (i32.const 0) (get_local 0x048)) - (i64.store offset=0x049 align=1 (i32.const 0) (get_local 0x049)) - (i64.store offset=0x04a align=1 (i32.const 0) (get_local 0x04a)) - (i64.store offset=0x04b align=1 (i32.const 0) (get_local 0x04b)) - (i64.store offset=0x04c align=1 (i32.const 0) (get_local 0x04c)) - (i64.store offset=0x04d align=1 (i32.const 0) (get_local 0x04d)) - (i64.store offset=0x04e align=1 (i32.const 0) (get_local 0x04e)) - (i64.store offset=0x04f align=1 (i32.const 0) (get_local 0x04f)) - (i64.store offset=0x050 align=1 (i32.const 0) (get_local 0x050)) - (i64.store offset=0x051 align=1 (i32.const 0) (get_local 0x051)) - (i64.store offset=0x052 align=1 (i32.const 0) (get_local 0x052)) - (i64.store offset=0x053 align=1 (i32.const 0) (get_local 0x053)) - (i64.store offset=0x054 align=1 (i32.const 0) (get_local 0x054)) - (i64.store offset=0x055 align=1 (i32.const 0) (get_local 0x055)) - (i64.store offset=0x056 align=1 (i32.const 0) (get_local 0x056)) - (i64.store offset=0x057 align=1 (i32.const 0) (get_local 0x057)) - (i64.store offset=0x058 align=1 (i32.const 0) (get_local 0x058)) - (i64.store offset=0x059 align=1 (i32.const 0) (get_local 0x059)) - (i64.store offset=0x05a align=1 (i32.const 0) (get_local 0x05a)) - (i64.store offset=0x05b align=1 (i32.const 0) (get_local 0x05b)) - (i64.store offset=0x05c align=1 (i32.const 0) (get_local 0x05c)) - (i64.store offset=0x05d align=1 (i32.const 0) (get_local 0x05d)) - (i64.store offset=0x05e align=1 (i32.const 0) (get_local 0x05e)) - (i64.store offset=0x05f align=1 (i32.const 0) (get_local 0x05f)) - (i64.store offset=0x060 align=1 (i32.const 0) (get_local 0x060)) - (i64.store offset=0x061 align=1 (i32.const 0) (get_local 0x061)) - (i64.store offset=0x062 align=1 (i32.const 0) (get_local 0x062)) - (i64.store offset=0x063 align=1 (i32.const 0) (get_local 0x063)) - (i64.store offset=0x064 align=1 (i32.const 0) (get_local 0x064)) - (i64.store offset=0x065 align=1 (i32.const 0) (get_local 0x065)) - (i64.store offset=0x066 align=1 (i32.const 0) (get_local 0x066)) - (i64.store offset=0x067 align=1 (i32.const 0) (get_local 0x067)) - (i64.store offset=0x068 align=1 (i32.const 0) (get_local 0x068)) - (i64.store offset=0x069 align=1 (i32.const 0) (get_local 0x069)) - (i64.store offset=0x06a align=1 (i32.const 0) (get_local 0x06a)) - (i64.store offset=0x06b align=1 (i32.const 0) (get_local 0x06b)) - (i64.store offset=0x06c align=1 (i32.const 0) (get_local 0x06c)) - (i64.store offset=0x06d align=1 (i32.const 0) (get_local 0x06d)) - (i64.store offset=0x06e align=1 (i32.const 0) (get_local 0x06e)) - (i64.store offset=0x06f align=1 (i32.const 0) (get_local 0x06f)) - (i64.store offset=0x070 align=1 (i32.const 0) (get_local 0x070)) - (i64.store offset=0x071 align=1 (i32.const 0) (get_local 0x071)) - (i64.store offset=0x072 align=1 (i32.const 0) (get_local 0x072)) - (i64.store offset=0x073 align=1 (i32.const 0) (get_local 0x073)) - (i64.store offset=0x074 align=1 (i32.const 0) (get_local 0x074)) - (i64.store offset=0x075 align=1 (i32.const 0) (get_local 0x075)) - (i64.store offset=0x076 align=1 (i32.const 0) (get_local 0x076)) - (i64.store offset=0x077 align=1 (i32.const 0) (get_local 0x077)) - (i64.store offset=0x078 align=1 (i32.const 0) (get_local 0x078)) - (i64.store offset=0x079 align=1 (i32.const 0) (get_local 0x079)) - (i64.store offset=0x07a align=1 (i32.const 0) (get_local 0x07a)) - (i64.store offset=0x07b align=1 (i32.const 0) (get_local 0x07b)) - (i64.store offset=0x07c align=1 (i32.const 0) (get_local 0x07c)) - (i64.store offset=0x07d align=1 (i32.const 0) (get_local 0x07d)) - (i64.store offset=0x07e align=1 (i32.const 0) (get_local 0x07e)) - (i64.store offset=0x07f align=1 (i32.const 0) (get_local 0x07f)) - (i64.store offset=0x080 align=1 (i32.const 0) (get_local 0x080)) - (i64.store offset=0x081 align=1 (i32.const 0) (get_local 0x081)) - (i64.store offset=0x082 align=1 (i32.const 0) (get_local 0x082)) - (i64.store offset=0x083 align=1 (i32.const 0) (get_local 0x083)) - (i64.store offset=0x084 align=1 (i32.const 0) (get_local 0x084)) - (i64.store offset=0x085 align=1 (i32.const 0) (get_local 0x085)) - (i64.store offset=0x086 align=1 (i32.const 0) (get_local 0x086)) - (i64.store offset=0x087 align=1 (i32.const 0) (get_local 0x087)) - (i64.store offset=0x088 align=1 (i32.const 0) (get_local 0x088)) - (i64.store offset=0x089 align=1 (i32.const 0) (get_local 0x089)) - (i64.store offset=0x08a align=1 (i32.const 0) (get_local 0x08a)) - (i64.store offset=0x08b align=1 (i32.const 0) (get_local 0x08b)) - (i64.store offset=0x08c align=1 (i32.const 0) (get_local 0x08c)) - (i64.store offset=0x08d align=1 (i32.const 0) (get_local 0x08d)) - (i64.store offset=0x08e align=1 (i32.const 0) (get_local 0x08e)) - (i64.store offset=0x08f align=1 (i32.const 0) (get_local 0x08f)) - (i64.store offset=0x090 align=1 (i32.const 0) (get_local 0x090)) - (i64.store offset=0x091 align=1 (i32.const 0) (get_local 0x091)) - (i64.store offset=0x092 align=1 (i32.const 0) (get_local 0x092)) - (i64.store offset=0x093 align=1 (i32.const 0) (get_local 0x093)) - (i64.store offset=0x094 align=1 (i32.const 0) (get_local 0x094)) - (i64.store offset=0x095 align=1 (i32.const 0) (get_local 0x095)) - (i64.store offset=0x096 align=1 (i32.const 0) (get_local 0x096)) - (i64.store offset=0x097 align=1 (i32.const 0) (get_local 0x097)) - (i64.store offset=0x098 align=1 (i32.const 0) (get_local 0x098)) - (i64.store offset=0x099 align=1 (i32.const 0) (get_local 0x099)) - (i64.store offset=0x09a align=1 (i32.const 0) (get_local 0x09a)) - (i64.store offset=0x09b align=1 (i32.const 0) (get_local 0x09b)) - (i64.store offset=0x09c align=1 (i32.const 0) (get_local 0x09c)) - (i64.store offset=0x09d align=1 (i32.const 0) (get_local 0x09d)) - (i64.store offset=0x09e align=1 (i32.const 0) (get_local 0x09e)) - (i64.store offset=0x09f align=1 (i32.const 0) (get_local 0x09f)) - (i64.store offset=0x0a0 align=1 (i32.const 0) (get_local 0x0a0)) - (i64.store offset=0x0a1 align=1 (i32.const 0) (get_local 0x0a1)) - (i64.store offset=0x0a2 align=1 (i32.const 0) (get_local 0x0a2)) - (i64.store offset=0x0a3 align=1 (i32.const 0) (get_local 0x0a3)) - (i64.store offset=0x0a4 align=1 (i32.const 0) (get_local 0x0a4)) - (i64.store offset=0x0a5 align=1 (i32.const 0) (get_local 0x0a5)) - (i64.store offset=0x0a6 align=1 (i32.const 0) (get_local 0x0a6)) - (i64.store offset=0x0a7 align=1 (i32.const 0) (get_local 0x0a7)) - (i64.store offset=0x0a8 align=1 (i32.const 0) (get_local 0x0a8)) - (i64.store offset=0x0a9 align=1 (i32.const 0) (get_local 0x0a9)) - (i64.store offset=0x0aa align=1 (i32.const 0) (get_local 0x0aa)) - (i64.store offset=0x0ab align=1 (i32.const 0) (get_local 0x0ab)) - (i64.store offset=0x0ac align=1 (i32.const 0) (get_local 0x0ac)) - (i64.store offset=0x0ad align=1 (i32.const 0) (get_local 0x0ad)) - (i64.store offset=0x0ae align=1 (i32.const 0) (get_local 0x0ae)) - (i64.store offset=0x0af align=1 (i32.const 0) (get_local 0x0af)) - (i64.store offset=0x0b0 align=1 (i32.const 0) (get_local 0x0b0)) - (i64.store offset=0x0b1 align=1 (i32.const 0) (get_local 0x0b1)) - (i64.store offset=0x0b2 align=1 (i32.const 0) (get_local 0x0b2)) - (i64.store offset=0x0b3 align=1 (i32.const 0) (get_local 0x0b3)) - (i64.store offset=0x0b4 align=1 (i32.const 0) (get_local 0x0b4)) - (i64.store offset=0x0b5 align=1 (i32.const 0) (get_local 0x0b5)) - (i64.store offset=0x0b6 align=1 (i32.const 0) (get_local 0x0b6)) - (i64.store offset=0x0b7 align=1 (i32.const 0) (get_local 0x0b7)) - (i64.store offset=0x0b8 align=1 (i32.const 0) (get_local 0x0b8)) - (i64.store offset=0x0b9 align=1 (i32.const 0) (get_local 0x0b9)) - (i64.store offset=0x0ba align=1 (i32.const 0) (get_local 0x0ba)) - (i64.store offset=0x0bb align=1 (i32.const 0) (get_local 0x0bb)) - (i64.store offset=0x0bc align=1 (i32.const 0) (get_local 0x0bc)) - (i64.store offset=0x0bd align=1 (i32.const 0) (get_local 0x0bd)) - (i64.store offset=0x0be align=1 (i32.const 0) (get_local 0x0be)) - (i64.store offset=0x0bf align=1 (i32.const 0) (get_local 0x0bf)) - (i64.store offset=0x0c0 align=1 (i32.const 0) (get_local 0x0c0)) - (i64.store offset=0x0c1 align=1 (i32.const 0) (get_local 0x0c1)) - (i64.store offset=0x0c2 align=1 (i32.const 0) (get_local 0x0c2)) - (i64.store offset=0x0c3 align=1 (i32.const 0) (get_local 0x0c3)) - (i64.store offset=0x0c4 align=1 (i32.const 0) (get_local 0x0c4)) - (i64.store offset=0x0c5 align=1 (i32.const 0) (get_local 0x0c5)) - (i64.store offset=0x0c6 align=1 (i32.const 0) (get_local 0x0c6)) - (i64.store offset=0x0c7 align=1 (i32.const 0) (get_local 0x0c7)) - (i64.store offset=0x0c8 align=1 (i32.const 0) (get_local 0x0c8)) - (i64.store offset=0x0c9 align=1 (i32.const 0) (get_local 0x0c9)) - (i64.store offset=0x0ca align=1 (i32.const 0) (get_local 0x0ca)) - (i64.store offset=0x0cb align=1 (i32.const 0) (get_local 0x0cb)) - (i64.store offset=0x0cc align=1 (i32.const 0) (get_local 0x0cc)) - (i64.store offset=0x0cd align=1 (i32.const 0) (get_local 0x0cd)) - (i64.store offset=0x0ce align=1 (i32.const 0) (get_local 0x0ce)) - (i64.store offset=0x0cf align=1 (i32.const 0) (get_local 0x0cf)) - (i64.store offset=0x0d0 align=1 (i32.const 0) (get_local 0x0d0)) - (i64.store offset=0x0d1 align=1 (i32.const 0) (get_local 0x0d1)) - (i64.store offset=0x0d2 align=1 (i32.const 0) (get_local 0x0d2)) - (i64.store offset=0x0d3 align=1 (i32.const 0) (get_local 0x0d3)) - (i64.store offset=0x0d4 align=1 (i32.const 0) (get_local 0x0d4)) - (i64.store offset=0x0d5 align=1 (i32.const 0) (get_local 0x0d5)) - (i64.store offset=0x0d6 align=1 (i32.const 0) (get_local 0x0d6)) - (i64.store offset=0x0d7 align=1 (i32.const 0) (get_local 0x0d7)) - (i64.store offset=0x0d8 align=1 (i32.const 0) (get_local 0x0d8)) - (i64.store offset=0x0d9 align=1 (i32.const 0) (get_local 0x0d9)) - (i64.store offset=0x0da align=1 (i32.const 0) (get_local 0x0da)) - (i64.store offset=0x0db align=1 (i32.const 0) (get_local 0x0db)) - (i64.store offset=0x0dc align=1 (i32.const 0) (get_local 0x0dc)) - (i64.store offset=0x0dd align=1 (i32.const 0) (get_local 0x0dd)) - (i64.store offset=0x0de align=1 (i32.const 0) (get_local 0x0de)) - (i64.store offset=0x0df align=1 (i32.const 0) (get_local 0x0df)) - (i64.store offset=0x0e0 align=1 (i32.const 0) (get_local 0x0e0)) - (i64.store offset=0x0e1 align=1 (i32.const 0) (get_local 0x0e1)) - (i64.store offset=0x0e2 align=1 (i32.const 0) (get_local 0x0e2)) - (i64.store offset=0x0e3 align=1 (i32.const 0) (get_local 0x0e3)) - (i64.store offset=0x0e4 align=1 (i32.const 0) (get_local 0x0e4)) - (i64.store offset=0x0e5 align=1 (i32.const 0) (get_local 0x0e5)) - (i64.store offset=0x0e6 align=1 (i32.const 0) (get_local 0x0e6)) - (i64.store offset=0x0e7 align=1 (i32.const 0) (get_local 0x0e7)) - (i64.store offset=0x0e8 align=1 (i32.const 0) (get_local 0x0e8)) - (i64.store offset=0x0e9 align=1 (i32.const 0) (get_local 0x0e9)) - (i64.store offset=0x0ea align=1 (i32.const 0) (get_local 0x0ea)) - (i64.store offset=0x0eb align=1 (i32.const 0) (get_local 0x0eb)) - (i64.store offset=0x0ec align=1 (i32.const 0) (get_local 0x0ec)) - (i64.store offset=0x0ed align=1 (i32.const 0) (get_local 0x0ed)) - (i64.store offset=0x0ee align=1 (i32.const 0) (get_local 0x0ee)) - (i64.store offset=0x0ef align=1 (i32.const 0) (get_local 0x0ef)) - (i64.store offset=0x0f0 align=1 (i32.const 0) (get_local 0x0f0)) - (i64.store offset=0x0f1 align=1 (i32.const 0) (get_local 0x0f1)) - (i64.store offset=0x0f2 align=1 (i32.const 0) (get_local 0x0f2)) - (i64.store offset=0x0f3 align=1 (i32.const 0) (get_local 0x0f3)) - (i64.store offset=0x0f4 align=1 (i32.const 0) (get_local 0x0f4)) - (i64.store offset=0x0f5 align=1 (i32.const 0) (get_local 0x0f5)) - (i64.store offset=0x0f6 align=1 (i32.const 0) (get_local 0x0f6)) - (i64.store offset=0x0f7 align=1 (i32.const 0) (get_local 0x0f7)) - (i64.store offset=0x0f8 align=1 (i32.const 0) (get_local 0x0f8)) - (i64.store offset=0x0f9 align=1 (i32.const 0) (get_local 0x0f9)) - (i64.store offset=0x0fa align=1 (i32.const 0) (get_local 0x0fa)) - (i64.store offset=0x0fb align=1 (i32.const 0) (get_local 0x0fb)) - (i64.store offset=0x0fc align=1 (i32.const 0) (get_local 0x0fc)) - (i64.store offset=0x0fd align=1 (i32.const 0) (get_local 0x0fd)) - (i64.store offset=0x0fe align=1 (i32.const 0) (get_local 0x0fe)) - (i64.store offset=0x0ff align=1 (i32.const 0) (get_local 0x0ff)) - (i64.store offset=0x100 align=1 (i32.const 0) (get_local 0x100)) - (i64.store offset=0x101 align=1 (i32.const 0) (get_local 0x101)) - (i64.store offset=0x102 align=1 (i32.const 0) (get_local 0x102)) - (i64.store offset=0x103 align=1 (i32.const 0) (get_local 0x103)) - (i64.store offset=0x104 align=1 (i32.const 0) (get_local 0x104)) - (i64.store offset=0x105 align=1 (i32.const 0) (get_local 0x105)) - (i64.store offset=0x106 align=1 (i32.const 0) (get_local 0x106)) - (i64.store offset=0x107 align=1 (i32.const 0) (get_local 0x107)) - (i64.store offset=0x108 align=1 (i32.const 0) (get_local 0x108)) - (i64.store offset=0x109 align=1 (i32.const 0) (get_local 0x109)) - (i64.store offset=0x10a align=1 (i32.const 0) (get_local 0x10a)) - (i64.store offset=0x10b align=1 (i32.const 0) (get_local 0x10b)) - (i64.store offset=0x10c align=1 (i32.const 0) (get_local 0x10c)) - (i64.store offset=0x10d align=1 (i32.const 0) (get_local 0x10d)) - (i64.store offset=0x10e align=1 (i32.const 0) (get_local 0x10e)) - (i64.store offset=0x10f align=1 (i32.const 0) (get_local 0x10f)) - (i64.store offset=0x110 align=1 (i32.const 0) (get_local 0x110)) - (i64.store offset=0x111 align=1 (i32.const 0) (get_local 0x111)) - (i64.store offset=0x112 align=1 (i32.const 0) (get_local 0x112)) - (i64.store offset=0x113 align=1 (i32.const 0) (get_local 0x113)) - (i64.store offset=0x114 align=1 (i32.const 0) (get_local 0x114)) - (i64.store offset=0x115 align=1 (i32.const 0) (get_local 0x115)) - (i64.store offset=0x116 align=1 (i32.const 0) (get_local 0x116)) - (i64.store offset=0x117 align=1 (i32.const 0) (get_local 0x117)) - (i64.store offset=0x118 align=1 (i32.const 0) (get_local 0x118)) - (i64.store offset=0x119 align=1 (i32.const 0) (get_local 0x119)) - (i64.store offset=0x11a align=1 (i32.const 0) (get_local 0x11a)) - (i64.store offset=0x11b align=1 (i32.const 0) (get_local 0x11b)) - (i64.store offset=0x11c align=1 (i32.const 0) (get_local 0x11c)) - (i64.store offset=0x11d align=1 (i32.const 0) (get_local 0x11d)) - (i64.store offset=0x11e align=1 (i32.const 0) (get_local 0x11e)) - (i64.store offset=0x11f align=1 (i32.const 0) (get_local 0x11f)) - (i64.store offset=0x120 align=1 (i32.const 0) (get_local 0x120)) - (i64.store offset=0x121 align=1 (i32.const 0) (get_local 0x121)) - (i64.store offset=0x122 align=1 (i32.const 0) (get_local 0x122)) - (i64.store offset=0x123 align=1 (i32.const 0) (get_local 0x123)) - (i64.store offset=0x124 align=1 (i32.const 0) (get_local 0x124)) - (i64.store offset=0x125 align=1 (i32.const 0) (get_local 0x125)) - (i64.store offset=0x126 align=1 (i32.const 0) (get_local 0x126)) - (i64.store offset=0x127 align=1 (i32.const 0) (get_local 0x127)) - (i64.store offset=0x128 align=1 (i32.const 0) (get_local 0x128)) - (i64.store offset=0x129 align=1 (i32.const 0) (get_local 0x129)) - (i64.store offset=0x12a align=1 (i32.const 0) (get_local 0x12a)) - (i64.store offset=0x12b align=1 (i32.const 0) (get_local 0x12b)) - (i64.store offset=0x12c align=1 (i32.const 0) (get_local 0x12c)) - (i64.store offset=0x12d align=1 (i32.const 0) (get_local 0x12d)) - (i64.store offset=0x12e align=1 (i32.const 0) (get_local 0x12e)) - (i64.store offset=0x12f align=1 (i32.const 0) (get_local 0x12f)) - (i64.store offset=0x130 align=1 (i32.const 0) (get_local 0x130)) - (i64.store offset=0x131 align=1 (i32.const 0) (get_local 0x131)) - (i64.store offset=0x132 align=1 (i32.const 0) (get_local 0x132)) - (i64.store offset=0x133 align=1 (i32.const 0) (get_local 0x133)) - (i64.store offset=0x134 align=1 (i32.const 0) (get_local 0x134)) - (i64.store offset=0x135 align=1 (i32.const 0) (get_local 0x135)) - (i64.store offset=0x136 align=1 (i32.const 0) (get_local 0x136)) - (i64.store offset=0x137 align=1 (i32.const 0) (get_local 0x137)) - (i64.store offset=0x138 align=1 (i32.const 0) (get_local 0x138)) - (i64.store offset=0x139 align=1 (i32.const 0) (get_local 0x139)) - (i64.store offset=0x13a align=1 (i32.const 0) (get_local 0x13a)) - (i64.store offset=0x13b align=1 (i32.const 0) (get_local 0x13b)) - (i64.store offset=0x13c align=1 (i32.const 0) (get_local 0x13c)) - (i64.store offset=0x13d align=1 (i32.const 0) (get_local 0x13d)) - (i64.store offset=0x13e align=1 (i32.const 0) (get_local 0x13e)) - (i64.store offset=0x13f align=1 (i32.const 0) (get_local 0x13f)) - (i64.store offset=0x140 align=1 (i32.const 0) (get_local 0x140)) - (i64.store offset=0x141 align=1 (i32.const 0) (get_local 0x141)) - (i64.store offset=0x142 align=1 (i32.const 0) (get_local 0x142)) - (i64.store offset=0x143 align=1 (i32.const 0) (get_local 0x143)) - (i64.store offset=0x144 align=1 (i32.const 0) (get_local 0x144)) - (i64.store offset=0x145 align=1 (i32.const 0) (get_local 0x145)) - (i64.store offset=0x146 align=1 (i32.const 0) (get_local 0x146)) - (i64.store offset=0x147 align=1 (i32.const 0) (get_local 0x147)) - (i64.store offset=0x148 align=1 (i32.const 0) (get_local 0x148)) - (i64.store offset=0x149 align=1 (i32.const 0) (get_local 0x149)) - (i64.store offset=0x14a align=1 (i32.const 0) (get_local 0x14a)) - (i64.store offset=0x14b align=1 (i32.const 0) (get_local 0x14b)) - (i64.store offset=0x14c align=1 (i32.const 0) (get_local 0x14c)) - (i64.store offset=0x14d align=1 (i32.const 0) (get_local 0x14d)) - (i64.store offset=0x14e align=1 (i32.const 0) (get_local 0x14e)) - (i64.store offset=0x14f align=1 (i32.const 0) (get_local 0x14f)) - (i64.store offset=0x150 align=1 (i32.const 0) (get_local 0x150)) - (i64.store offset=0x151 align=1 (i32.const 0) (get_local 0x151)) - (i64.store offset=0x152 align=1 (i32.const 0) (get_local 0x152)) - (i64.store offset=0x153 align=1 (i32.const 0) (get_local 0x153)) - (i64.store offset=0x154 align=1 (i32.const 0) (get_local 0x154)) - (i64.store offset=0x155 align=1 (i32.const 0) (get_local 0x155)) - (i64.store offset=0x156 align=1 (i32.const 0) (get_local 0x156)) - (i64.store offset=0x157 align=1 (i32.const 0) (get_local 0x157)) - (i64.store offset=0x158 align=1 (i32.const 0) (get_local 0x158)) - (i64.store offset=0x159 align=1 (i32.const 0) (get_local 0x159)) - (i64.store offset=0x15a align=1 (i32.const 0) (get_local 0x15a)) - (i64.store offset=0x15b align=1 (i32.const 0) (get_local 0x15b)) - (i64.store offset=0x15c align=1 (i32.const 0) (get_local 0x15c)) - (i64.store offset=0x15d align=1 (i32.const 0) (get_local 0x15d)) - (i64.store offset=0x15e align=1 (i32.const 0) (get_local 0x15e)) - (i64.store offset=0x15f align=1 (i32.const 0) (get_local 0x15f)) - (i64.store offset=0x160 align=1 (i32.const 0) (get_local 0x160)) - (i64.store offset=0x161 align=1 (i32.const 0) (get_local 0x161)) - (i64.store offset=0x162 align=1 (i32.const 0) (get_local 0x162)) - (i64.store offset=0x163 align=1 (i32.const 0) (get_local 0x163)) - (i64.store offset=0x164 align=1 (i32.const 0) (get_local 0x164)) - (i64.store offset=0x165 align=1 (i32.const 0) (get_local 0x165)) - (i64.store offset=0x166 align=1 (i32.const 0) (get_local 0x166)) - (i64.store offset=0x167 align=1 (i32.const 0) (get_local 0x167)) - (i64.store offset=0x168 align=1 (i32.const 0) (get_local 0x168)) - (i64.store offset=0x169 align=1 (i32.const 0) (get_local 0x169)) - (i64.store offset=0x16a align=1 (i32.const 0) (get_local 0x16a)) - (i64.store offset=0x16b align=1 (i32.const 0) (get_local 0x16b)) - (i64.store offset=0x16c align=1 (i32.const 0) (get_local 0x16c)) - (i64.store offset=0x16d align=1 (i32.const 0) (get_local 0x16d)) - (i64.store offset=0x16e align=1 (i32.const 0) (get_local 0x16e)) - (i64.store offset=0x16f align=1 (i32.const 0) (get_local 0x16f)) - (i64.store offset=0x170 align=1 (i32.const 0) (get_local 0x170)) - (i64.store offset=0x171 align=1 (i32.const 0) (get_local 0x171)) - (i64.store offset=0x172 align=1 (i32.const 0) (get_local 0x172)) - (i64.store offset=0x173 align=1 (i32.const 0) (get_local 0x173)) - (i64.store offset=0x174 align=1 (i32.const 0) (get_local 0x174)) - (i64.store offset=0x175 align=1 (i32.const 0) (get_local 0x175)) - (i64.store offset=0x176 align=1 (i32.const 0) (get_local 0x176)) - (i64.store offset=0x177 align=1 (i32.const 0) (get_local 0x177)) - (i64.store offset=0x178 align=1 (i32.const 0) (get_local 0x178)) - (i64.store offset=0x179 align=1 (i32.const 0) (get_local 0x179)) - (i64.store offset=0x17a align=1 (i32.const 0) (get_local 0x17a)) - (i64.store offset=0x17b align=1 (i32.const 0) (get_local 0x17b)) - (i64.store offset=0x17c align=1 (i32.const 0) (get_local 0x17c)) - (i64.store offset=0x17d align=1 (i32.const 0) (get_local 0x17d)) - (i64.store offset=0x17e align=1 (i32.const 0) (get_local 0x17e)) - (i64.store offset=0x17f align=1 (i32.const 0) (get_local 0x17f)) - (i64.store offset=0x180 align=1 (i32.const 0) (get_local 0x180)) - (i64.store offset=0x181 align=1 (i32.const 0) (get_local 0x181)) - (i64.store offset=0x182 align=1 (i32.const 0) (get_local 0x182)) - (i64.store offset=0x183 align=1 (i32.const 0) (get_local 0x183)) - (i64.store offset=0x184 align=1 (i32.const 0) (get_local 0x184)) - (i64.store offset=0x185 align=1 (i32.const 0) (get_local 0x185)) - (i64.store offset=0x186 align=1 (i32.const 0) (get_local 0x186)) - (i64.store offset=0x187 align=1 (i32.const 0) (get_local 0x187)) - (i64.store offset=0x188 align=1 (i32.const 0) (get_local 0x188)) - (i64.store offset=0x189 align=1 (i32.const 0) (get_local 0x189)) - (i64.store offset=0x18a align=1 (i32.const 0) (get_local 0x18a)) - (i64.store offset=0x18b align=1 (i32.const 0) (get_local 0x18b)) - (i64.store offset=0x18c align=1 (i32.const 0) (get_local 0x18c)) - (i64.store offset=0x18d align=1 (i32.const 0) (get_local 0x18d)) - (i64.store offset=0x18e align=1 (i32.const 0) (get_local 0x18e)) - (i64.store offset=0x18f align=1 (i32.const 0) (get_local 0x18f)) - (i64.store offset=0x190 align=1 (i32.const 0) (get_local 0x190)) - (i64.store offset=0x191 align=1 (i32.const 0) (get_local 0x191)) - (i64.store offset=0x192 align=1 (i32.const 0) (get_local 0x192)) - (i64.store offset=0x193 align=1 (i32.const 0) (get_local 0x193)) - (i64.store offset=0x194 align=1 (i32.const 0) (get_local 0x194)) - (i64.store offset=0x195 align=1 (i32.const 0) (get_local 0x195)) - (i64.store offset=0x196 align=1 (i32.const 0) (get_local 0x196)) - (i64.store offset=0x197 align=1 (i32.const 0) (get_local 0x197)) - (i64.store offset=0x198 align=1 (i32.const 0) (get_local 0x198)) - (i64.store offset=0x199 align=1 (i32.const 0) (get_local 0x199)) - (i64.store offset=0x19a align=1 (i32.const 0) (get_local 0x19a)) - (i64.store offset=0x19b align=1 (i32.const 0) (get_local 0x19b)) - (i64.store offset=0x19c align=1 (i32.const 0) (get_local 0x19c)) - (i64.store offset=0x19d align=1 (i32.const 0) (get_local 0x19d)) - (i64.store offset=0x19e align=1 (i32.const 0) (get_local 0x19e)) - (i64.store offset=0x19f align=1 (i32.const 0) (get_local 0x19f)) - (i64.store offset=0x1a0 align=1 (i32.const 0) (get_local 0x1a0)) - (i64.store offset=0x1a1 align=1 (i32.const 0) (get_local 0x1a1)) - (i64.store offset=0x1a2 align=1 (i32.const 0) (get_local 0x1a2)) - (i64.store offset=0x1a3 align=1 (i32.const 0) (get_local 0x1a3)) - (i64.store offset=0x1a4 align=1 (i32.const 0) (get_local 0x1a4)) - (i64.store offset=0x1a5 align=1 (i32.const 0) (get_local 0x1a5)) - (i64.store offset=0x1a6 align=1 (i32.const 0) (get_local 0x1a6)) - (i64.store offset=0x1a7 align=1 (i32.const 0) (get_local 0x1a7)) - (i64.store offset=0x1a8 align=1 (i32.const 0) (get_local 0x1a8)) - (i64.store offset=0x1a9 align=1 (i32.const 0) (get_local 0x1a9)) - (i64.store offset=0x1aa align=1 (i32.const 0) (get_local 0x1aa)) - (i64.store offset=0x1ab align=1 (i32.const 0) (get_local 0x1ab)) - (i64.store offset=0x1ac align=1 (i32.const 0) (get_local 0x1ac)) - (i64.store offset=0x1ad align=1 (i32.const 0) (get_local 0x1ad)) - (i64.store offset=0x1ae align=1 (i32.const 0) (get_local 0x1ae)) - (i64.store offset=0x1af align=1 (i32.const 0) (get_local 0x1af)) - (i64.store offset=0x1b0 align=1 (i32.const 0) (get_local 0x1b0)) - (i64.store offset=0x1b1 align=1 (i32.const 0) (get_local 0x1b1)) - (i64.store offset=0x1b2 align=1 (i32.const 0) (get_local 0x1b2)) - (i64.store offset=0x1b3 align=1 (i32.const 0) (get_local 0x1b3)) - (i64.store offset=0x1b4 align=1 (i32.const 0) (get_local 0x1b4)) - (i64.store offset=0x1b5 align=1 (i32.const 0) (get_local 0x1b5)) - (i64.store offset=0x1b6 align=1 (i32.const 0) (get_local 0x1b6)) - (i64.store offset=0x1b7 align=1 (i32.const 0) (get_local 0x1b7)) - (i64.store offset=0x1b8 align=1 (i32.const 0) (get_local 0x1b8)) - (i64.store offset=0x1b9 align=1 (i32.const 0) (get_local 0x1b9)) - (i64.store offset=0x1ba align=1 (i32.const 0) (get_local 0x1ba)) - (i64.store offset=0x1bb align=1 (i32.const 0) (get_local 0x1bb)) - (i64.store offset=0x1bc align=1 (i32.const 0) (get_local 0x1bc)) - (i64.store offset=0x1bd align=1 (i32.const 0) (get_local 0x1bd)) - (i64.store offset=0x1be align=1 (i32.const 0) (get_local 0x1be)) - (i64.store offset=0x1bf align=1 (i32.const 0) (get_local 0x1bf)) - (i64.store offset=0x1c0 align=1 (i32.const 0) (get_local 0x1c0)) - (i64.store offset=0x1c1 align=1 (i32.const 0) (get_local 0x1c1)) - (i64.store offset=0x1c2 align=1 (i32.const 0) (get_local 0x1c2)) - (i64.store offset=0x1c3 align=1 (i32.const 0) (get_local 0x1c3)) - (i64.store offset=0x1c4 align=1 (i32.const 0) (get_local 0x1c4)) - (i64.store offset=0x1c5 align=1 (i32.const 0) (get_local 0x1c5)) - (i64.store offset=0x1c6 align=1 (i32.const 0) (get_local 0x1c6)) - (i64.store offset=0x1c7 align=1 (i32.const 0) (get_local 0x1c7)) - (i64.store offset=0x1c8 align=1 (i32.const 0) (get_local 0x1c8)) - (i64.store offset=0x1c9 align=1 (i32.const 0) (get_local 0x1c9)) - (i64.store offset=0x1ca align=1 (i32.const 0) (get_local 0x1ca)) - (i64.store offset=0x1cb align=1 (i32.const 0) (get_local 0x1cb)) - (i64.store offset=0x1cc align=1 (i32.const 0) (get_local 0x1cc)) - (i64.store offset=0x1cd align=1 (i32.const 0) (get_local 0x1cd)) - (i64.store offset=0x1ce align=1 (i32.const 0) (get_local 0x1ce)) - (i64.store offset=0x1cf align=1 (i32.const 0) (get_local 0x1cf)) - (i64.store offset=0x1d0 align=1 (i32.const 0) (get_local 0x1d0)) - (i64.store offset=0x1d1 align=1 (i32.const 0) (get_local 0x1d1)) - (i64.store offset=0x1d2 align=1 (i32.const 0) (get_local 0x1d2)) - (i64.store offset=0x1d3 align=1 (i32.const 0) (get_local 0x1d3)) - (i64.store offset=0x1d4 align=1 (i32.const 0) (get_local 0x1d4)) - (i64.store offset=0x1d5 align=1 (i32.const 0) (get_local 0x1d5)) - (i64.store offset=0x1d6 align=1 (i32.const 0) (get_local 0x1d6)) - (i64.store offset=0x1d7 align=1 (i32.const 0) (get_local 0x1d7)) - (i64.store offset=0x1d8 align=1 (i32.const 0) (get_local 0x1d8)) - (i64.store offset=0x1d9 align=1 (i32.const 0) (get_local 0x1d9)) - (i64.store offset=0x1da align=1 (i32.const 0) (get_local 0x1da)) - (i64.store offset=0x1db align=1 (i32.const 0) (get_local 0x1db)) - (i64.store offset=0x1dc align=1 (i32.const 0) (get_local 0x1dc)) - (i64.store offset=0x1dd align=1 (i32.const 0) (get_local 0x1dd)) - (i64.store offset=0x1de align=1 (i32.const 0) (get_local 0x1de)) - (i64.store offset=0x1df align=1 (i32.const 0) (get_local 0x1df)) - (i64.store offset=0x1e0 align=1 (i32.const 0) (get_local 0x1e0)) - (i64.store offset=0x1e1 align=1 (i32.const 0) (get_local 0x1e1)) - (i64.store offset=0x1e2 align=1 (i32.const 0) (get_local 0x1e2)) - (i64.store offset=0x1e3 align=1 (i32.const 0) (get_local 0x1e3)) - (i64.store offset=0x1e4 align=1 (i32.const 0) (get_local 0x1e4)) - (i64.store offset=0x1e5 align=1 (i32.const 0) (get_local 0x1e5)) - (i64.store offset=0x1e6 align=1 (i32.const 0) (get_local 0x1e6)) - (i64.store offset=0x1e7 align=1 (i32.const 0) (get_local 0x1e7)) - (i64.store offset=0x1e8 align=1 (i32.const 0) (get_local 0x1e8)) - (i64.store offset=0x1e9 align=1 (i32.const 0) (get_local 0x1e9)) - (i64.store offset=0x1ea align=1 (i32.const 0) (get_local 0x1ea)) - (i64.store offset=0x1eb align=1 (i32.const 0) (get_local 0x1eb)) - (i64.store offset=0x1ec align=1 (i32.const 0) (get_local 0x1ec)) - (i64.store offset=0x1ed align=1 (i32.const 0) (get_local 0x1ed)) - (i64.store offset=0x1ee align=1 (i32.const 0) (get_local 0x1ee)) - (i64.store offset=0x1ef align=1 (i32.const 0) (get_local 0x1ef)) - (i64.store offset=0x1f0 align=1 (i32.const 0) (get_local 0x1f0)) - (i64.store offset=0x1f1 align=1 (i32.const 0) (get_local 0x1f1)) - (i64.store offset=0x1f2 align=1 (i32.const 0) (get_local 0x1f2)) - (i64.store offset=0x1f3 align=1 (i32.const 0) (get_local 0x1f3)) - (i64.store offset=0x1f4 align=1 (i32.const 0) (get_local 0x1f4)) - (i64.store offset=0x1f5 align=1 (i32.const 0) (get_local 0x1f5)) - (i64.store offset=0x1f6 align=1 (i32.const 0) (get_local 0x1f6)) - (i64.store offset=0x1f7 align=1 (i32.const 0) (get_local 0x1f7)) - (i64.store offset=0x1f8 align=1 (i32.const 0) (get_local 0x1f8)) - (i64.store offset=0x1f9 align=1 (i32.const 0) (get_local 0x1f9)) - (i64.store offset=0x1fa align=1 (i32.const 0) (get_local 0x1fa)) - (i64.store offset=0x1fb align=1 (i32.const 0) (get_local 0x1fb)) - (i64.store offset=0x1fc align=1 (i32.const 0) (get_local 0x1fc)) - (i64.store offset=0x1fd align=1 (i32.const 0) (get_local 0x1fd)) - (i64.store offset=0x1fe align=1 (i32.const 0) (get_local 0x1fe)) - (i64.store offset=0x1ff align=1 (i32.const 0) (get_local 0x1ff)) - (i64.store offset=0x200 align=1 (i32.const 0) (get_local 0x200)) - (i64.store offset=0x201 align=1 (i32.const 0) (get_local 0x201)) - (i64.store offset=0x202 align=1 (i32.const 0) (get_local 0x202)) - (i64.store offset=0x203 align=1 (i32.const 0) (get_local 0x203)) - (i64.store offset=0x204 align=1 (i32.const 0) (get_local 0x204)) - (i64.store offset=0x205 align=1 (i32.const 0) (get_local 0x205)) - (i64.store offset=0x206 align=1 (i32.const 0) (get_local 0x206)) - (i64.store offset=0x207 align=1 (i32.const 0) (get_local 0x207)) - (i64.store offset=0x208 align=1 (i32.const 0) (get_local 0x208)) - (i64.store offset=0x209 align=1 (i32.const 0) (get_local 0x209)) - (i64.store offset=0x20a align=1 (i32.const 0) (get_local 0x20a)) - (i64.store offset=0x20b align=1 (i32.const 0) (get_local 0x20b)) - (i64.store offset=0x20c align=1 (i32.const 0) (get_local 0x20c)) - (i64.store offset=0x20d align=1 (i32.const 0) (get_local 0x20d)) - (i64.store offset=0x20e align=1 (i32.const 0) (get_local 0x20e)) - (i64.store offset=0x20f align=1 (i32.const 0) (get_local 0x20f)) - (i64.store offset=0x210 align=1 (i32.const 0) (get_local 0x210)) - (i64.store offset=0x211 align=1 (i32.const 0) (get_local 0x211)) - (i64.store offset=0x212 align=1 (i32.const 0) (get_local 0x212)) - (i64.store offset=0x213 align=1 (i32.const 0) (get_local 0x213)) - (i64.store offset=0x214 align=1 (i32.const 0) (get_local 0x214)) - (i64.store offset=0x215 align=1 (i32.const 0) (get_local 0x215)) - (i64.store offset=0x216 align=1 (i32.const 0) (get_local 0x216)) - (i64.store offset=0x217 align=1 (i32.const 0) (get_local 0x217)) - (i64.store offset=0x218 align=1 (i32.const 0) (get_local 0x218)) - (i64.store offset=0x219 align=1 (i32.const 0) (get_local 0x219)) - (i64.store offset=0x21a align=1 (i32.const 0) (get_local 0x21a)) - (i64.store offset=0x21b align=1 (i32.const 0) (get_local 0x21b)) - (i64.store offset=0x21c align=1 (i32.const 0) (get_local 0x21c)) - (i64.store offset=0x21d align=1 (i32.const 0) (get_local 0x21d)) - (i64.store offset=0x21e align=1 (i32.const 0) (get_local 0x21e)) - (i64.store offset=0x21f align=1 (i32.const 0) (get_local 0x21f)) - (i64.store offset=0x220 align=1 (i32.const 0) (get_local 0x220)) - (i64.store offset=0x221 align=1 (i32.const 0) (get_local 0x221)) - (i64.store offset=0x222 align=1 (i32.const 0) (get_local 0x222)) - (i64.store offset=0x223 align=1 (i32.const 0) (get_local 0x223)) - (i64.store offset=0x224 align=1 (i32.const 0) (get_local 0x224)) - (i64.store offset=0x225 align=1 (i32.const 0) (get_local 0x225)) - (i64.store offset=0x226 align=1 (i32.const 0) (get_local 0x226)) - (i64.store offset=0x227 align=1 (i32.const 0) (get_local 0x227)) - (i64.store offset=0x228 align=1 (i32.const 0) (get_local 0x228)) - (i64.store offset=0x229 align=1 (i32.const 0) (get_local 0x229)) - (i64.store offset=0x22a align=1 (i32.const 0) (get_local 0x22a)) - (i64.store offset=0x22b align=1 (i32.const 0) (get_local 0x22b)) - (i64.store offset=0x22c align=1 (i32.const 0) (get_local 0x22c)) - (i64.store offset=0x22d align=1 (i32.const 0) (get_local 0x22d)) - (i64.store offset=0x22e align=1 (i32.const 0) (get_local 0x22e)) - (i64.store offset=0x22f align=1 (i32.const 0) (get_local 0x22f)) - (i64.store offset=0x230 align=1 (i32.const 0) (get_local 0x230)) - (i64.store offset=0x231 align=1 (i32.const 0) (get_local 0x231)) - (i64.store offset=0x232 align=1 (i32.const 0) (get_local 0x232)) - (i64.store offset=0x233 align=1 (i32.const 0) (get_local 0x233)) - (i64.store offset=0x234 align=1 (i32.const 0) (get_local 0x234)) - (i64.store offset=0x235 align=1 (i32.const 0) (get_local 0x235)) - (i64.store offset=0x236 align=1 (i32.const 0) (get_local 0x236)) - (i64.store offset=0x237 align=1 (i32.const 0) (get_local 0x237)) - (i64.store offset=0x238 align=1 (i32.const 0) (get_local 0x238)) - (i64.store offset=0x239 align=1 (i32.const 0) (get_local 0x239)) - (i64.store offset=0x23a align=1 (i32.const 0) (get_local 0x23a)) - (i64.store offset=0x23b align=1 (i32.const 0) (get_local 0x23b)) - (i64.store offset=0x23c align=1 (i32.const 0) (get_local 0x23c)) - (i64.store offset=0x23d align=1 (i32.const 0) (get_local 0x23d)) - (i64.store offset=0x23e align=1 (i32.const 0) (get_local 0x23e)) - (i64.store offset=0x23f align=1 (i32.const 0) (get_local 0x23f)) - (i64.store offset=0x240 align=1 (i32.const 0) (get_local 0x240)) - (i64.store offset=0x241 align=1 (i32.const 0) (get_local 0x241)) - (i64.store offset=0x242 align=1 (i32.const 0) (get_local 0x242)) - (i64.store offset=0x243 align=1 (i32.const 0) (get_local 0x243)) - (i64.store offset=0x244 align=1 (i32.const 0) (get_local 0x244)) - (i64.store offset=0x245 align=1 (i32.const 0) (get_local 0x245)) - (i64.store offset=0x246 align=1 (i32.const 0) (get_local 0x246)) - (i64.store offset=0x247 align=1 (i32.const 0) (get_local 0x247)) - (i64.store offset=0x248 align=1 (i32.const 0) (get_local 0x248)) - (i64.store offset=0x249 align=1 (i32.const 0) (get_local 0x249)) - (i64.store offset=0x24a align=1 (i32.const 0) (get_local 0x24a)) - (i64.store offset=0x24b align=1 (i32.const 0) (get_local 0x24b)) - (i64.store offset=0x24c align=1 (i32.const 0) (get_local 0x24c)) - (i64.store offset=0x24d align=1 (i32.const 0) (get_local 0x24d)) - (i64.store offset=0x24e align=1 (i32.const 0) (get_local 0x24e)) - (i64.store offset=0x24f align=1 (i32.const 0) (get_local 0x24f)) - (i64.store offset=0x250 align=1 (i32.const 0) (get_local 0x250)) - (i64.store offset=0x251 align=1 (i32.const 0) (get_local 0x251)) - (i64.store offset=0x252 align=1 (i32.const 0) (get_local 0x252)) - (i64.store offset=0x253 align=1 (i32.const 0) (get_local 0x253)) - (i64.store offset=0x254 align=1 (i32.const 0) (get_local 0x254)) - (i64.store offset=0x255 align=1 (i32.const 0) (get_local 0x255)) - (i64.store offset=0x256 align=1 (i32.const 0) (get_local 0x256)) - (i64.store offset=0x257 align=1 (i32.const 0) (get_local 0x257)) - (i64.store offset=0x258 align=1 (i32.const 0) (get_local 0x258)) - (i64.store offset=0x259 align=1 (i32.const 0) (get_local 0x259)) - (i64.store offset=0x25a align=1 (i32.const 0) (get_local 0x25a)) - (i64.store offset=0x25b align=1 (i32.const 0) (get_local 0x25b)) - (i64.store offset=0x25c align=1 (i32.const 0) (get_local 0x25c)) - (i64.store offset=0x25d align=1 (i32.const 0) (get_local 0x25d)) - (i64.store offset=0x25e align=1 (i32.const 0) (get_local 0x25e)) - (i64.store offset=0x25f align=1 (i32.const 0) (get_local 0x25f)) - (i64.store offset=0x260 align=1 (i32.const 0) (get_local 0x260)) - (i64.store offset=0x261 align=1 (i32.const 0) (get_local 0x261)) - (i64.store offset=0x262 align=1 (i32.const 0) (get_local 0x262)) - (i64.store offset=0x263 align=1 (i32.const 0) (get_local 0x263)) - (i64.store offset=0x264 align=1 (i32.const 0) (get_local 0x264)) - (i64.store offset=0x265 align=1 (i32.const 0) (get_local 0x265)) - (i64.store offset=0x266 align=1 (i32.const 0) (get_local 0x266)) - (i64.store offset=0x267 align=1 (i32.const 0) (get_local 0x267)) - (i64.store offset=0x268 align=1 (i32.const 0) (get_local 0x268)) - (i64.store offset=0x269 align=1 (i32.const 0) (get_local 0x269)) - (i64.store offset=0x26a align=1 (i32.const 0) (get_local 0x26a)) - (i64.store offset=0x26b align=1 (i32.const 0) (get_local 0x26b)) - (i64.store offset=0x26c align=1 (i32.const 0) (get_local 0x26c)) - (i64.store offset=0x26d align=1 (i32.const 0) (get_local 0x26d)) - (i64.store offset=0x26e align=1 (i32.const 0) (get_local 0x26e)) - (i64.store offset=0x26f align=1 (i32.const 0) (get_local 0x26f)) - (i64.store offset=0x270 align=1 (i32.const 0) (get_local 0x270)) - (i64.store offset=0x271 align=1 (i32.const 0) (get_local 0x271)) - (i64.store offset=0x272 align=1 (i32.const 0) (get_local 0x272)) - (i64.store offset=0x273 align=1 (i32.const 0) (get_local 0x273)) - (i64.store offset=0x274 align=1 (i32.const 0) (get_local 0x274)) - (i64.store offset=0x275 align=1 (i32.const 0) (get_local 0x275)) - (i64.store offset=0x276 align=1 (i32.const 0) (get_local 0x276)) - (i64.store offset=0x277 align=1 (i32.const 0) (get_local 0x277)) - (i64.store offset=0x278 align=1 (i32.const 0) (get_local 0x278)) - (i64.store offset=0x279 align=1 (i32.const 0) (get_local 0x279)) - (i64.store offset=0x27a align=1 (i32.const 0) (get_local 0x27a)) - (i64.store offset=0x27b align=1 (i32.const 0) (get_local 0x27b)) - (i64.store offset=0x27c align=1 (i32.const 0) (get_local 0x27c)) - (i64.store offset=0x27d align=1 (i32.const 0) (get_local 0x27d)) - (i64.store offset=0x27e align=1 (i32.const 0) (get_local 0x27e)) - (i64.store offset=0x27f align=1 (i32.const 0) (get_local 0x27f)) - (i64.store offset=0x280 align=1 (i32.const 0) (get_local 0x280)) - (i64.store offset=0x281 align=1 (i32.const 0) (get_local 0x281)) - (i64.store offset=0x282 align=1 (i32.const 0) (get_local 0x282)) - (i64.store offset=0x283 align=1 (i32.const 0) (get_local 0x283)) - (i64.store offset=0x284 align=1 (i32.const 0) (get_local 0x284)) - (i64.store offset=0x285 align=1 (i32.const 0) (get_local 0x285)) - (i64.store offset=0x286 align=1 (i32.const 0) (get_local 0x286)) - (i64.store offset=0x287 align=1 (i32.const 0) (get_local 0x287)) - (i64.store offset=0x288 align=1 (i32.const 0) (get_local 0x288)) - (i64.store offset=0x289 align=1 (i32.const 0) (get_local 0x289)) - (i64.store offset=0x28a align=1 (i32.const 0) (get_local 0x28a)) - (i64.store offset=0x28b align=1 (i32.const 0) (get_local 0x28b)) - (i64.store offset=0x28c align=1 (i32.const 0) (get_local 0x28c)) - (i64.store offset=0x28d align=1 (i32.const 0) (get_local 0x28d)) - (i64.store offset=0x28e align=1 (i32.const 0) (get_local 0x28e)) - (i64.store offset=0x28f align=1 (i32.const 0) (get_local 0x28f)) - (i64.store offset=0x290 align=1 (i32.const 0) (get_local 0x290)) - (i64.store offset=0x291 align=1 (i32.const 0) (get_local 0x291)) - (i64.store offset=0x292 align=1 (i32.const 0) (get_local 0x292)) - (i64.store offset=0x293 align=1 (i32.const 0) (get_local 0x293)) - (i64.store offset=0x294 align=1 (i32.const 0) (get_local 0x294)) - (i64.store offset=0x295 align=1 (i32.const 0) (get_local 0x295)) - (i64.store offset=0x296 align=1 (i32.const 0) (get_local 0x296)) - (i64.store offset=0x297 align=1 (i32.const 0) (get_local 0x297)) - (i64.store offset=0x298 align=1 (i32.const 0) (get_local 0x298)) - (i64.store offset=0x299 align=1 (i32.const 0) (get_local 0x299)) - (i64.store offset=0x29a align=1 (i32.const 0) (get_local 0x29a)) - (i64.store offset=0x29b align=1 (i32.const 0) (get_local 0x29b)) - (i64.store offset=0x29c align=1 (i32.const 0) (get_local 0x29c)) - (i64.store offset=0x29d align=1 (i32.const 0) (get_local 0x29d)) - (i64.store offset=0x29e align=1 (i32.const 0) (get_local 0x29e)) - (i64.store offset=0x29f align=1 (i32.const 0) (get_local 0x29f)) - (i64.store offset=0x2a0 align=1 (i32.const 0) (get_local 0x2a0)) - (i64.store offset=0x2a1 align=1 (i32.const 0) (get_local 0x2a1)) - (i64.store offset=0x2a2 align=1 (i32.const 0) (get_local 0x2a2)) - (i64.store offset=0x2a3 align=1 (i32.const 0) (get_local 0x2a3)) - (i64.store offset=0x2a4 align=1 (i32.const 0) (get_local 0x2a4)) - (i64.store offset=0x2a5 align=1 (i32.const 0) (get_local 0x2a5)) - (i64.store offset=0x2a6 align=1 (i32.const 0) (get_local 0x2a6)) - (i64.store offset=0x2a7 align=1 (i32.const 0) (get_local 0x2a7)) - (i64.store offset=0x2a8 align=1 (i32.const 0) (get_local 0x2a8)) - (i64.store offset=0x2a9 align=1 (i32.const 0) (get_local 0x2a9)) - (i64.store offset=0x2aa align=1 (i32.const 0) (get_local 0x2aa)) - (i64.store offset=0x2ab align=1 (i32.const 0) (get_local 0x2ab)) - (i64.store offset=0x2ac align=1 (i32.const 0) (get_local 0x2ac)) - (i64.store offset=0x2ad align=1 (i32.const 0) (get_local 0x2ad)) - (i64.store offset=0x2ae align=1 (i32.const 0) (get_local 0x2ae)) - (i64.store offset=0x2af align=1 (i32.const 0) (get_local 0x2af)) - (i64.store offset=0x2b0 align=1 (i32.const 0) (get_local 0x2b0)) - (i64.store offset=0x2b1 align=1 (i32.const 0) (get_local 0x2b1)) - (i64.store offset=0x2b2 align=1 (i32.const 0) (get_local 0x2b2)) - (i64.store offset=0x2b3 align=1 (i32.const 0) (get_local 0x2b3)) - (i64.store offset=0x2b4 align=1 (i32.const 0) (get_local 0x2b4)) - (i64.store offset=0x2b5 align=1 (i32.const 0) (get_local 0x2b5)) - (i64.store offset=0x2b6 align=1 (i32.const 0) (get_local 0x2b6)) - (i64.store offset=0x2b7 align=1 (i32.const 0) (get_local 0x2b7)) - (i64.store offset=0x2b8 align=1 (i32.const 0) (get_local 0x2b8)) - (i64.store offset=0x2b9 align=1 (i32.const 0) (get_local 0x2b9)) - (i64.store offset=0x2ba align=1 (i32.const 0) (get_local 0x2ba)) - (i64.store offset=0x2bb align=1 (i32.const 0) (get_local 0x2bb)) - (i64.store offset=0x2bc align=1 (i32.const 0) (get_local 0x2bc)) - (i64.store offset=0x2bd align=1 (i32.const 0) (get_local 0x2bd)) - (i64.store offset=0x2be align=1 (i32.const 0) (get_local 0x2be)) - (i64.store offset=0x2bf align=1 (i32.const 0) (get_local 0x2bf)) - (i64.store offset=0x2c0 align=1 (i32.const 0) (get_local 0x2c0)) - (i64.store offset=0x2c1 align=1 (i32.const 0) (get_local 0x2c1)) - (i64.store offset=0x2c2 align=1 (i32.const 0) (get_local 0x2c2)) - (i64.store offset=0x2c3 align=1 (i32.const 0) (get_local 0x2c3)) - (i64.store offset=0x2c4 align=1 (i32.const 0) (get_local 0x2c4)) - (i64.store offset=0x2c5 align=1 (i32.const 0) (get_local 0x2c5)) - (i64.store offset=0x2c6 align=1 (i32.const 0) (get_local 0x2c6)) - (i64.store offset=0x2c7 align=1 (i32.const 0) (get_local 0x2c7)) - (i64.store offset=0x2c8 align=1 (i32.const 0) (get_local 0x2c8)) - (i64.store offset=0x2c9 align=1 (i32.const 0) (get_local 0x2c9)) - (i64.store offset=0x2ca align=1 (i32.const 0) (get_local 0x2ca)) - (i64.store offset=0x2cb align=1 (i32.const 0) (get_local 0x2cb)) - (i64.store offset=0x2cc align=1 (i32.const 0) (get_local 0x2cc)) - (i64.store offset=0x2cd align=1 (i32.const 0) (get_local 0x2cd)) - (i64.store offset=0x2ce align=1 (i32.const 0) (get_local 0x2ce)) - (i64.store offset=0x2cf align=1 (i32.const 0) (get_local 0x2cf)) - (i64.store offset=0x2d0 align=1 (i32.const 0) (get_local 0x2d0)) - (i64.store offset=0x2d1 align=1 (i32.const 0) (get_local 0x2d1)) - (i64.store offset=0x2d2 align=1 (i32.const 0) (get_local 0x2d2)) - (i64.store offset=0x2d3 align=1 (i32.const 0) (get_local 0x2d3)) - (i64.store offset=0x2d4 align=1 (i32.const 0) (get_local 0x2d4)) - (i64.store offset=0x2d5 align=1 (i32.const 0) (get_local 0x2d5)) - (i64.store offset=0x2d6 align=1 (i32.const 0) (get_local 0x2d6)) - (i64.store offset=0x2d7 align=1 (i32.const 0) (get_local 0x2d7)) - (i64.store offset=0x2d8 align=1 (i32.const 0) (get_local 0x2d8)) - (i64.store offset=0x2d9 align=1 (i32.const 0) (get_local 0x2d9)) - (i64.store offset=0x2da align=1 (i32.const 0) (get_local 0x2da)) - (i64.store offset=0x2db align=1 (i32.const 0) (get_local 0x2db)) - (i64.store offset=0x2dc align=1 (i32.const 0) (get_local 0x2dc)) - (i64.store offset=0x2dd align=1 (i32.const 0) (get_local 0x2dd)) - (i64.store offset=0x2de align=1 (i32.const 0) (get_local 0x2de)) - (i64.store offset=0x2df align=1 (i32.const 0) (get_local 0x2df)) - (i64.store offset=0x2e0 align=1 (i32.const 0) (get_local 0x2e0)) - (i64.store offset=0x2e1 align=1 (i32.const 0) (get_local 0x2e1)) - (i64.store offset=0x2e2 align=1 (i32.const 0) (get_local 0x2e2)) - (i64.store offset=0x2e3 align=1 (i32.const 0) (get_local 0x2e3)) - (i64.store offset=0x2e4 align=1 (i32.const 0) (get_local 0x2e4)) - (i64.store offset=0x2e5 align=1 (i32.const 0) (get_local 0x2e5)) - (i64.store offset=0x2e6 align=1 (i32.const 0) (get_local 0x2e6)) - (i64.store offset=0x2e7 align=1 (i32.const 0) (get_local 0x2e7)) - (i64.store offset=0x2e8 align=1 (i32.const 0) (get_local 0x2e8)) - (i64.store offset=0x2e9 align=1 (i32.const 0) (get_local 0x2e9)) - (i64.store offset=0x2ea align=1 (i32.const 0) (get_local 0x2ea)) - (i64.store offset=0x2eb align=1 (i32.const 0) (get_local 0x2eb)) - (i64.store offset=0x2ec align=1 (i32.const 0) (get_local 0x2ec)) - (i64.store offset=0x2ed align=1 (i32.const 0) (get_local 0x2ed)) - (i64.store offset=0x2ee align=1 (i32.const 0) (get_local 0x2ee)) - (i64.store offset=0x2ef align=1 (i32.const 0) (get_local 0x2ef)) - (i64.store offset=0x2f0 align=1 (i32.const 0) (get_local 0x2f0)) - (i64.store offset=0x2f1 align=1 (i32.const 0) (get_local 0x2f1)) - (i64.store offset=0x2f2 align=1 (i32.const 0) (get_local 0x2f2)) - (i64.store offset=0x2f3 align=1 (i32.const 0) (get_local 0x2f3)) - (i64.store offset=0x2f4 align=1 (i32.const 0) (get_local 0x2f4)) - (i64.store offset=0x2f5 align=1 (i32.const 0) (get_local 0x2f5)) - (i64.store offset=0x2f6 align=1 (i32.const 0) (get_local 0x2f6)) - (i64.store offset=0x2f7 align=1 (i32.const 0) (get_local 0x2f7)) - (i64.store offset=0x2f8 align=1 (i32.const 0) (get_local 0x2f8)) - (i64.store offset=0x2f9 align=1 (i32.const 0) (get_local 0x2f9)) - (i64.store offset=0x2fa align=1 (i32.const 0) (get_local 0x2fa)) - (i64.store offset=0x2fb align=1 (i32.const 0) (get_local 0x2fb)) - (i64.store offset=0x2fc align=1 (i32.const 0) (get_local 0x2fc)) - (i64.store offset=0x2fd align=1 (i32.const 0) (get_local 0x2fd)) - (i64.store offset=0x2fe align=1 (i32.const 0) (get_local 0x2fe)) - (i64.store offset=0x2ff align=1 (i32.const 0) (get_local 0x2ff)) - (i64.store offset=0x300 align=1 (i32.const 0) (get_local 0x300)) - (i64.store offset=0x301 align=1 (i32.const 0) (get_local 0x301)) - (i64.store offset=0x302 align=1 (i32.const 0) (get_local 0x302)) - (i64.store offset=0x303 align=1 (i32.const 0) (get_local 0x303)) - (i64.store offset=0x304 align=1 (i32.const 0) (get_local 0x304)) - (i64.store offset=0x305 align=1 (i32.const 0) (get_local 0x305)) - (i64.store offset=0x306 align=1 (i32.const 0) (get_local 0x306)) - (i64.store offset=0x307 align=1 (i32.const 0) (get_local 0x307)) - (i64.store offset=0x308 align=1 (i32.const 0) (get_local 0x308)) - (i64.store offset=0x309 align=1 (i32.const 0) (get_local 0x309)) - (i64.store offset=0x30a align=1 (i32.const 0) (get_local 0x30a)) - (i64.store offset=0x30b align=1 (i32.const 0) (get_local 0x30b)) - (i64.store offset=0x30c align=1 (i32.const 0) (get_local 0x30c)) - (i64.store offset=0x30d align=1 (i32.const 0) (get_local 0x30d)) - (i64.store offset=0x30e align=1 (i32.const 0) (get_local 0x30e)) - (i64.store offset=0x30f align=1 (i32.const 0) (get_local 0x30f)) - (i64.store offset=0x310 align=1 (i32.const 0) (get_local 0x310)) - (i64.store offset=0x311 align=1 (i32.const 0) (get_local 0x311)) - (i64.store offset=0x312 align=1 (i32.const 0) (get_local 0x312)) - (i64.store offset=0x313 align=1 (i32.const 0) (get_local 0x313)) - (i64.store offset=0x314 align=1 (i32.const 0) (get_local 0x314)) - (i64.store offset=0x315 align=1 (i32.const 0) (get_local 0x315)) - (i64.store offset=0x316 align=1 (i32.const 0) (get_local 0x316)) - (i64.store offset=0x317 align=1 (i32.const 0) (get_local 0x317)) - (i64.store offset=0x318 align=1 (i32.const 0) (get_local 0x318)) - (i64.store offset=0x319 align=1 (i32.const 0) (get_local 0x319)) - (i64.store offset=0x31a align=1 (i32.const 0) (get_local 0x31a)) - (i64.store offset=0x31b align=1 (i32.const 0) (get_local 0x31b)) - (i64.store offset=0x31c align=1 (i32.const 0) (get_local 0x31c)) - (i64.store offset=0x31d align=1 (i32.const 0) (get_local 0x31d)) - (i64.store offset=0x31e align=1 (i32.const 0) (get_local 0x31e)) - (i64.store offset=0x31f align=1 (i32.const 0) (get_local 0x31f)) - (i64.store offset=0x320 align=1 (i32.const 0) (get_local 0x320)) - (i64.store offset=0x321 align=1 (i32.const 0) (get_local 0x321)) - (i64.store offset=0x322 align=1 (i32.const 0) (get_local 0x322)) - (i64.store offset=0x323 align=1 (i32.const 0) (get_local 0x323)) - (i64.store offset=0x324 align=1 (i32.const 0) (get_local 0x324)) - (i64.store offset=0x325 align=1 (i32.const 0) (get_local 0x325)) - (i64.store offset=0x326 align=1 (i32.const 0) (get_local 0x326)) - (i64.store offset=0x327 align=1 (i32.const 0) (get_local 0x327)) - (i64.store offset=0x328 align=1 (i32.const 0) (get_local 0x328)) - (i64.store offset=0x329 align=1 (i32.const 0) (get_local 0x329)) - (i64.store offset=0x32a align=1 (i32.const 0) (get_local 0x32a)) - (i64.store offset=0x32b align=1 (i32.const 0) (get_local 0x32b)) - (i64.store offset=0x32c align=1 (i32.const 0) (get_local 0x32c)) - (i64.store offset=0x32d align=1 (i32.const 0) (get_local 0x32d)) - (i64.store offset=0x32e align=1 (i32.const 0) (get_local 0x32e)) - (i64.store offset=0x32f align=1 (i32.const 0) (get_local 0x32f)) - (i64.store offset=0x330 align=1 (i32.const 0) (get_local 0x330)) - (i64.store offset=0x331 align=1 (i32.const 0) (get_local 0x331)) - (i64.store offset=0x332 align=1 (i32.const 0) (get_local 0x332)) - (i64.store offset=0x333 align=1 (i32.const 0) (get_local 0x333)) - (i64.store offset=0x334 align=1 (i32.const 0) (get_local 0x334)) - (i64.store offset=0x335 align=1 (i32.const 0) (get_local 0x335)) - (i64.store offset=0x336 align=1 (i32.const 0) (get_local 0x336)) - (i64.store offset=0x337 align=1 (i32.const 0) (get_local 0x337)) - (i64.store offset=0x338 align=1 (i32.const 0) (get_local 0x338)) - (i64.store offset=0x339 align=1 (i32.const 0) (get_local 0x339)) - (i64.store offset=0x33a align=1 (i32.const 0) (get_local 0x33a)) - (i64.store offset=0x33b align=1 (i32.const 0) (get_local 0x33b)) - (i64.store offset=0x33c align=1 (i32.const 0) (get_local 0x33c)) - (i64.store offset=0x33d align=1 (i32.const 0) (get_local 0x33d)) - (i64.store offset=0x33e align=1 (i32.const 0) (get_local 0x33e)) - (i64.store offset=0x33f align=1 (i32.const 0) (get_local 0x33f)) - (i64.store offset=0x340 align=1 (i32.const 0) (get_local 0x340)) - (i64.store offset=0x341 align=1 (i32.const 0) (get_local 0x341)) - (i64.store offset=0x342 align=1 (i32.const 0) (get_local 0x342)) - (i64.store offset=0x343 align=1 (i32.const 0) (get_local 0x343)) - (i64.store offset=0x344 align=1 (i32.const 0) (get_local 0x344)) - (i64.store offset=0x345 align=1 (i32.const 0) (get_local 0x345)) - (i64.store offset=0x346 align=1 (i32.const 0) (get_local 0x346)) - (i64.store offset=0x347 align=1 (i32.const 0) (get_local 0x347)) - (i64.store offset=0x348 align=1 (i32.const 0) (get_local 0x348)) - (i64.store offset=0x349 align=1 (i32.const 0) (get_local 0x349)) - (i64.store offset=0x34a align=1 (i32.const 0) (get_local 0x34a)) - (i64.store offset=0x34b align=1 (i32.const 0) (get_local 0x34b)) - (i64.store offset=0x34c align=1 (i32.const 0) (get_local 0x34c)) - (i64.store offset=0x34d align=1 (i32.const 0) (get_local 0x34d)) - (i64.store offset=0x34e align=1 (i32.const 0) (get_local 0x34e)) - (i64.store offset=0x34f align=1 (i32.const 0) (get_local 0x34f)) - (i64.store offset=0x350 align=1 (i32.const 0) (get_local 0x350)) - (i64.store offset=0x351 align=1 (i32.const 0) (get_local 0x351)) - (i64.store offset=0x352 align=1 (i32.const 0) (get_local 0x352)) - (i64.store offset=0x353 align=1 (i32.const 0) (get_local 0x353)) - (i64.store offset=0x354 align=1 (i32.const 0) (get_local 0x354)) - (i64.store offset=0x355 align=1 (i32.const 0) (get_local 0x355)) - (i64.store offset=0x356 align=1 (i32.const 0) (get_local 0x356)) - (i64.store offset=0x357 align=1 (i32.const 0) (get_local 0x357)) - (i64.store offset=0x358 align=1 (i32.const 0) (get_local 0x358)) - (i64.store offset=0x359 align=1 (i32.const 0) (get_local 0x359)) - (i64.store offset=0x35a align=1 (i32.const 0) (get_local 0x35a)) - (i64.store offset=0x35b align=1 (i32.const 0) (get_local 0x35b)) - (i64.store offset=0x35c align=1 (i32.const 0) (get_local 0x35c)) - (i64.store offset=0x35d align=1 (i32.const 0) (get_local 0x35d)) - (i64.store offset=0x35e align=1 (i32.const 0) (get_local 0x35e)) - (i64.store offset=0x35f align=1 (i32.const 0) (get_local 0x35f)) - (i64.store offset=0x360 align=1 (i32.const 0) (get_local 0x360)) - (i64.store offset=0x361 align=1 (i32.const 0) (get_local 0x361)) - (i64.store offset=0x362 align=1 (i32.const 0) (get_local 0x362)) - (i64.store offset=0x363 align=1 (i32.const 0) (get_local 0x363)) - (i64.store offset=0x364 align=1 (i32.const 0) (get_local 0x364)) - (i64.store offset=0x365 align=1 (i32.const 0) (get_local 0x365)) - (i64.store offset=0x366 align=1 (i32.const 0) (get_local 0x366)) - (i64.store offset=0x367 align=1 (i32.const 0) (get_local 0x367)) - (i64.store offset=0x368 align=1 (i32.const 0) (get_local 0x368)) - (i64.store offset=0x369 align=1 (i32.const 0) (get_local 0x369)) - (i64.store offset=0x36a align=1 (i32.const 0) (get_local 0x36a)) - (i64.store offset=0x36b align=1 (i32.const 0) (get_local 0x36b)) - (i64.store offset=0x36c align=1 (i32.const 0) (get_local 0x36c)) - (i64.store offset=0x36d align=1 (i32.const 0) (get_local 0x36d)) - (i64.store offset=0x36e align=1 (i32.const 0) (get_local 0x36e)) - (i64.store offset=0x36f align=1 (i32.const 0) (get_local 0x36f)) - (i64.store offset=0x370 align=1 (i32.const 0) (get_local 0x370)) - (i64.store offset=0x371 align=1 (i32.const 0) (get_local 0x371)) - (i64.store offset=0x372 align=1 (i32.const 0) (get_local 0x372)) - (i64.store offset=0x373 align=1 (i32.const 0) (get_local 0x373)) - (i64.store offset=0x374 align=1 (i32.const 0) (get_local 0x374)) - (i64.store offset=0x375 align=1 (i32.const 0) (get_local 0x375)) - (i64.store offset=0x376 align=1 (i32.const 0) (get_local 0x376)) - (i64.store offset=0x377 align=1 (i32.const 0) (get_local 0x377)) - (i64.store offset=0x378 align=1 (i32.const 0) (get_local 0x378)) - (i64.store offset=0x379 align=1 (i32.const 0) (get_local 0x379)) - (i64.store offset=0x37a align=1 (i32.const 0) (get_local 0x37a)) - (i64.store offset=0x37b align=1 (i32.const 0) (get_local 0x37b)) - (i64.store offset=0x37c align=1 (i32.const 0) (get_local 0x37c)) - (i64.store offset=0x37d align=1 (i32.const 0) (get_local 0x37d)) - (i64.store offset=0x37e align=1 (i32.const 0) (get_local 0x37e)) - (i64.store offset=0x37f align=1 (i32.const 0) (get_local 0x37f)) - (i64.store offset=0x380 align=1 (i32.const 0) (get_local 0x380)) - (i64.store offset=0x381 align=1 (i32.const 0) (get_local 0x381)) - (i64.store offset=0x382 align=1 (i32.const 0) (get_local 0x382)) - (i64.store offset=0x383 align=1 (i32.const 0) (get_local 0x383)) - (i64.store offset=0x384 align=1 (i32.const 0) (get_local 0x384)) - (i64.store offset=0x385 align=1 (i32.const 0) (get_local 0x385)) - (i64.store offset=0x386 align=1 (i32.const 0) (get_local 0x386)) - (i64.store offset=0x387 align=1 (i32.const 0) (get_local 0x387)) - (i64.store offset=0x388 align=1 (i32.const 0) (get_local 0x388)) - (i64.store offset=0x389 align=1 (i32.const 0) (get_local 0x389)) - (i64.store offset=0x38a align=1 (i32.const 0) (get_local 0x38a)) - (i64.store offset=0x38b align=1 (i32.const 0) (get_local 0x38b)) - (i64.store offset=0x38c align=1 (i32.const 0) (get_local 0x38c)) - (i64.store offset=0x38d align=1 (i32.const 0) (get_local 0x38d)) - (i64.store offset=0x38e align=1 (i32.const 0) (get_local 0x38e)) - (i64.store offset=0x38f align=1 (i32.const 0) (get_local 0x38f)) - (i64.store offset=0x390 align=1 (i32.const 0) (get_local 0x390)) - (i64.store offset=0x391 align=1 (i32.const 0) (get_local 0x391)) - (i64.store offset=0x392 align=1 (i32.const 0) (get_local 0x392)) - (i64.store offset=0x393 align=1 (i32.const 0) (get_local 0x393)) - (i64.store offset=0x394 align=1 (i32.const 0) (get_local 0x394)) - (i64.store offset=0x395 align=1 (i32.const 0) (get_local 0x395)) - (i64.store offset=0x396 align=1 (i32.const 0) (get_local 0x396)) - (i64.store offset=0x397 align=1 (i32.const 0) (get_local 0x397)) - (i64.store offset=0x398 align=1 (i32.const 0) (get_local 0x398)) - (i64.store offset=0x399 align=1 (i32.const 0) (get_local 0x399)) - (i64.store offset=0x39a align=1 (i32.const 0) (get_local 0x39a)) - (i64.store offset=0x39b align=1 (i32.const 0) (get_local 0x39b)) - (i64.store offset=0x39c align=1 (i32.const 0) (get_local 0x39c)) - (i64.store offset=0x39d align=1 (i32.const 0) (get_local 0x39d)) - (i64.store offset=0x39e align=1 (i32.const 0) (get_local 0x39e)) - (i64.store offset=0x39f align=1 (i32.const 0) (get_local 0x39f)) - (i64.store offset=0x3a0 align=1 (i32.const 0) (get_local 0x3a0)) - (i64.store offset=0x3a1 align=1 (i32.const 0) (get_local 0x3a1)) - (i64.store offset=0x3a2 align=1 (i32.const 0) (get_local 0x3a2)) - (i64.store offset=0x3a3 align=1 (i32.const 0) (get_local 0x3a3)) - (i64.store offset=0x3a4 align=1 (i32.const 0) (get_local 0x3a4)) - (i64.store offset=0x3a5 align=1 (i32.const 0) (get_local 0x3a5)) - (i64.store offset=0x3a6 align=1 (i32.const 0) (get_local 0x3a6)) - (i64.store offset=0x3a7 align=1 (i32.const 0) (get_local 0x3a7)) - (i64.store offset=0x3a8 align=1 (i32.const 0) (get_local 0x3a8)) - (i64.store offset=0x3a9 align=1 (i32.const 0) (get_local 0x3a9)) - (i64.store offset=0x3aa align=1 (i32.const 0) (get_local 0x3aa)) - (i64.store offset=0x3ab align=1 (i32.const 0) (get_local 0x3ab)) - (i64.store offset=0x3ac align=1 (i32.const 0) (get_local 0x3ac)) - (i64.store offset=0x3ad align=1 (i32.const 0) (get_local 0x3ad)) - (i64.store offset=0x3ae align=1 (i32.const 0) (get_local 0x3ae)) - (i64.store offset=0x3af align=1 (i32.const 0) (get_local 0x3af)) - (i64.store offset=0x3b0 align=1 (i32.const 0) (get_local 0x3b0)) - (i64.store offset=0x3b1 align=1 (i32.const 0) (get_local 0x3b1)) - (i64.store offset=0x3b2 align=1 (i32.const 0) (get_local 0x3b2)) - (i64.store offset=0x3b3 align=1 (i32.const 0) (get_local 0x3b3)) - (i64.store offset=0x3b4 align=1 (i32.const 0) (get_local 0x3b4)) - (i64.store offset=0x3b5 align=1 (i32.const 0) (get_local 0x3b5)) - (i64.store offset=0x3b6 align=1 (i32.const 0) (get_local 0x3b6)) - (i64.store offset=0x3b7 align=1 (i32.const 0) (get_local 0x3b7)) - (i64.store offset=0x3b8 align=1 (i32.const 0) (get_local 0x3b8)) - (i64.store offset=0x3b9 align=1 (i32.const 0) (get_local 0x3b9)) - (i64.store offset=0x3ba align=1 (i32.const 0) (get_local 0x3ba)) - (i64.store offset=0x3bb align=1 (i32.const 0) (get_local 0x3bb)) - (i64.store offset=0x3bc align=1 (i32.const 0) (get_local 0x3bc)) - (i64.store offset=0x3bd align=1 (i32.const 0) (get_local 0x3bd)) - (i64.store offset=0x3be align=1 (i32.const 0) (get_local 0x3be)) - (i64.store offset=0x3bf align=1 (i32.const 0) (get_local 0x3bf)) - (i64.store offset=0x3c0 align=1 (i32.const 0) (get_local 0x3c0)) - (i64.store offset=0x3c1 align=1 (i32.const 0) (get_local 0x3c1)) - (i64.store offset=0x3c2 align=1 (i32.const 0) (get_local 0x3c2)) - (i64.store offset=0x3c3 align=1 (i32.const 0) (get_local 0x3c3)) - (i64.store offset=0x3c4 align=1 (i32.const 0) (get_local 0x3c4)) - (i64.store offset=0x3c5 align=1 (i32.const 0) (get_local 0x3c5)) - (i64.store offset=0x3c6 align=1 (i32.const 0) (get_local 0x3c6)) - (i64.store offset=0x3c7 align=1 (i32.const 0) (get_local 0x3c7)) - (i64.store offset=0x3c8 align=1 (i32.const 0) (get_local 0x3c8)) - (i64.store offset=0x3c9 align=1 (i32.const 0) (get_local 0x3c9)) - (i64.store offset=0x3ca align=1 (i32.const 0) (get_local 0x3ca)) - (i64.store offset=0x3cb align=1 (i32.const 0) (get_local 0x3cb)) - (i64.store offset=0x3cc align=1 (i32.const 0) (get_local 0x3cc)) - (i64.store offset=0x3cd align=1 (i32.const 0) (get_local 0x3cd)) - (i64.store offset=0x3ce align=1 (i32.const 0) (get_local 0x3ce)) - (i64.store offset=0x3cf align=1 (i32.const 0) (get_local 0x3cf)) - (i64.store offset=0x3d0 align=1 (i32.const 0) (get_local 0x3d0)) - (i64.store offset=0x3d1 align=1 (i32.const 0) (get_local 0x3d1)) - (i64.store offset=0x3d2 align=1 (i32.const 0) (get_local 0x3d2)) - (i64.store offset=0x3d3 align=1 (i32.const 0) (get_local 0x3d3)) - (i64.store offset=0x3d4 align=1 (i32.const 0) (get_local 0x3d4)) - (i64.store offset=0x3d5 align=1 (i32.const 0) (get_local 0x3d5)) - (i64.store offset=0x3d6 align=1 (i32.const 0) (get_local 0x3d6)) - (i64.store offset=0x3d7 align=1 (i32.const 0) (get_local 0x3d7)) - (i64.store offset=0x3d8 align=1 (i32.const 0) (get_local 0x3d8)) - (i64.store offset=0x3d9 align=1 (i32.const 0) (get_local 0x3d9)) - (i64.store offset=0x3da align=1 (i32.const 0) (get_local 0x3da)) - (i64.store offset=0x3db align=1 (i32.const 0) (get_local 0x3db)) - (i64.store offset=0x3dc align=1 (i32.const 0) (get_local 0x3dc)) - (i64.store offset=0x3dd align=1 (i32.const 0) (get_local 0x3dd)) - (i64.store offset=0x3de align=1 (i32.const 0) (get_local 0x3de)) - (i64.store offset=0x3df align=1 (i32.const 0) (get_local 0x3df)) - (i64.store offset=0x3e0 align=1 (i32.const 0) (get_local 0x3e0)) - (i64.store offset=0x3e1 align=1 (i32.const 0) (get_local 0x3e1)) - (i64.store offset=0x3e2 align=1 (i32.const 0) (get_local 0x3e2)) - (i64.store offset=0x3e3 align=1 (i32.const 0) (get_local 0x3e3)) - (i64.store offset=0x3e4 align=1 (i32.const 0) (get_local 0x3e4)) - (i64.store offset=0x3e5 align=1 (i32.const 0) (get_local 0x3e5)) - (i64.store offset=0x3e6 align=1 (i32.const 0) (get_local 0x3e6)) - (i64.store offset=0x3e7 align=1 (i32.const 0) (get_local 0x3e7)) - (i64.store offset=0x3e8 align=1 (i32.const 0) (get_local 0x3e8)) - (i64.store offset=0x3e9 align=1 (i32.const 0) (get_local 0x3e9)) - (i64.store offset=0x3ea align=1 (i32.const 0) (get_local 0x3ea)) - (i64.store offset=0x3eb align=1 (i32.const 0) (get_local 0x3eb)) - (i64.store offset=0x3ec align=1 (i32.const 0) (get_local 0x3ec)) - (i64.store offset=0x3ed align=1 (i32.const 0) (get_local 0x3ed)) - (i64.store offset=0x3ee align=1 (i32.const 0) (get_local 0x3ee)) - (i64.store offset=0x3ef align=1 (i32.const 0) (get_local 0x3ef)) - (i64.store offset=0x3f0 align=1 (i32.const 0) (get_local 0x3f0)) - (i64.store offset=0x3f1 align=1 (i32.const 0) (get_local 0x3f1)) - (i64.store offset=0x3f2 align=1 (i32.const 0) (get_local 0x3f2)) - (i64.store offset=0x3f3 align=1 (i32.const 0) (get_local 0x3f3)) - (i64.store offset=0x3f4 align=1 (i32.const 0) (get_local 0x3f4)) - (i64.store offset=0x3f5 align=1 (i32.const 0) (get_local 0x3f5)) - (i64.store offset=0x3f6 align=1 (i32.const 0) (get_local 0x3f6)) - (i64.store offset=0x3f7 align=1 (i32.const 0) (get_local 0x3f7)) - (i64.store offset=0x3f8 align=1 (i32.const 0) (get_local 0x3f8)) - (i64.store offset=0x3f9 align=1 (i32.const 0) (get_local 0x3f9)) - (i64.store offset=0x3fa align=1 (i32.const 0) (get_local 0x3fa)) - (i64.store offset=0x3fb align=1 (i32.const 0) (get_local 0x3fb)) - (i64.store offset=0x3fc align=1 (i32.const 0) (get_local 0x3fc)) - (i64.store offset=0x3fd align=1 (i32.const 0) (get_local 0x3fd)) - (i64.store offset=0x3fe align=1 (i32.const 0) (get_local 0x3fe)) - (i64.store offset=0x3ff align=1 (i32.const 0) (get_local 0x3ff)) - (i64.store offset=0x400 align=1 (i32.const 0) (get_local 0x400)) - (i64.store offset=0x401 align=1 (i32.const 0) (get_local 0x401)) - (i64.store offset=0x402 align=1 (i32.const 0) (get_local 0x402)) - (i64.store offset=0x403 align=1 (i32.const 0) (get_local 0x403)) - (i64.store offset=0x404 align=1 (i32.const 0) (get_local 0x404)) - (i64.store offset=0x405 align=1 (i32.const 0) (get_local 0x405)) - (i64.store offset=0x406 align=1 (i32.const 0) (get_local 0x406)) - (i64.store offset=0x407 align=1 (i32.const 0) (get_local 0x407)) - (i64.store offset=0x408 align=1 (i32.const 0) (get_local 0x408)) - (i64.store offset=0x409 align=1 (i32.const 0) (get_local 0x409)) - (i64.store offset=0x40a align=1 (i32.const 0) (get_local 0x40a)) - (i64.store offset=0x40b align=1 (i32.const 0) (get_local 0x40b)) - (i64.store offset=0x40c align=1 (i32.const 0) (get_local 0x40c)) - (i64.store offset=0x40d align=1 (i32.const 0) (get_local 0x40d)) - (i64.store offset=0x40e align=1 (i32.const 0) (get_local 0x40e)) - (i64.store offset=0x40f align=1 (i32.const 0) (get_local 0x40f)) - (i64.store offset=0x410 align=1 (i32.const 0) (get_local 0x410)) - (i64.store offset=0x411 align=1 (i32.const 0) (get_local 0x411)) - (i64.store offset=0x412 align=1 (i32.const 0) (get_local 0x412)) - (i64.store offset=0x413 align=1 (i32.const 0) (get_local 0x413)) - (i64.store offset=0x414 align=1 (i32.const 0) (get_local 0x414)) - (i64.store offset=0x415 align=1 (i32.const 0) (get_local 0x415)) - (i64.store offset=0x416 align=1 (i32.const 0) (get_local 0x416)) - (i64.store offset=0x417 align=1 (i32.const 0) (get_local 0x417)) - (i64.store offset=0x418 align=1 (i32.const 0) (get_local 0x418)) - (i64.store offset=0x419 align=1 (i32.const 0) (get_local 0x419)) - (i64.store offset=0x41a align=1 (i32.const 0) (get_local 0x41a)) - (i64.store offset=0x41b align=1 (i32.const 0) (get_local 0x41b)) - (i64.store offset=0x41c align=1 (i32.const 0) (get_local 0x41c)) - (i64.store offset=0x41d align=1 (i32.const 0) (get_local 0x41d)) - (i64.store offset=0x41e align=1 (i32.const 0) (get_local 0x41e)) - (i64.store offset=0x41f align=1 (i32.const 0) (get_local 0x41f)) - ) -) - -(assert_trap (invoke "test-guard-page-skip" (i32.const 0)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 100)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 200)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 300)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 400)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 500)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 600)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 700)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 800)) "call stack exhausted") -(assert_trap (invoke "test-guard-page-skip" (i32.const 900)) "call stack exhausted") \ No newline at end of file diff --git a/libraries/wasm-jit/Test/wast/tee.wast b/libraries/wasm-jit/Test/wast/tee.wast deleted file mode 100644 index bc5a1abab0b..00000000000 --- a/libraries/wasm-jit/Test/wast/tee.wast +++ /dev/null @@ -1,33 +0,0 @@ -;; poor man's tee -;; Outputs to stderr and stdout whatever comes in stdin - -(module - - (import "env" "memory" (memory 1)) - (import "env" "_fwrite" (func $__fwrite (param i32 i32 i32 i32) (result i32))) - (import "env" "_fread" (func $__fread (param i32 i32 i32 i32) (result i32))) - (import "env" "_stdin" (global $stdinPtr i32)) - (import "env" "_stdout" (global $stdoutPtr i32)) - (import "env" "_stderr" (global $stderrPtr i32)) - (export "main" (func $main)) - - (func $main - (local $stdin i32) - (local $stdout i32) - (local $stderr i32) - (local $nmemb i32) - (set_local $stdin (i32.load align=4 (get_global $stdinPtr))) - (set_local $stdout (i32.load align=4 (get_global $stdoutPtr))) - (set_local $stderr (i32.load align=4 (get_global $stderrPtr))) - - (loop $loop - (block $done - (set_local $nmemb (call $__fread (i32.const 0) (i32.const 1) (i32.const 32) (get_local $stdin))) - (br_if $done (i32.eq (i32.const 0) (get_local $nmemb))) - (drop (call $__fwrite (i32.const 0) (i32.const 1) (get_local $nmemb) (get_local $stdout))) - (drop (call $__fwrite (i32.const 0) (i32.const 1) (get_local $nmemb) (get_local $stderr))) - (br $loop) - ) - ) - ) -) diff --git a/libraries/wasm-jit/Test/zlib/zlib.wast b/libraries/wasm-jit/Test/zlib/zlib.wast deleted file mode 100644 index ce72ced8f12..00000000000 --- a/libraries/wasm-jit/Test/zlib/zlib.wast +++ /dev/null @@ -1,48532 +0,0 @@ -(module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___assert_fail" (func $___assert_fail (param i32 i32 i32 i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256)) - (import "env" "table" (table 18 anyfunc)) - (import "env" "memoryBase" (global $memoryBase i32)) - (import "env" "tableBase" (global $tableBase i32)) - (global $STACKTOP (mut i32) (get_global $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (get_global $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (get_global $tempDoublePtr$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (elem (get_global $tableBase) $b0 $___stdio_close $b1 $___stdout_write $___stdio_seek $_zcalloc $___stdio_write $b1 $b1 $b1 $b2 $_zcfree $b3 $_deflate_stored $_deflate_fast $_deflate_slow $b4 $_cleanup_522) - (data (get_global $memoryBase) "\00\00\00\00\960\07w,a\0e\ee\baQ\t\99\19\c4m\07\8f\f4jp5\a5c\e9\a3\95d\9e2\88\db\0e\a4\b8\dcy\1e\e9\d5\e0\88\d9\d2\97+L\b6\t\bd|\b1~\07-\b8\e7\91\1d\bf\90d\10\b7\1d\f2 \b0jHq\b9\f3\deA\be\84}\d4\da\1a\eb\e4\ddmQ\b5\d4\f4\c7\85\d3\83V\98l\13\c0\a8kdz\f9b\fd\ec\c9e\8aO\\\01\14\d9l\06cc=\0f\fa\f5\0d\08\8d\c8 n;^\10iL\e4A`\d5rqg\a2\d1\e4\03jm\0d\a8Zjz\0b\cf\0e\e4\9d\ff\t\93\'\ae\00\n\b1\9e\07}D\93\0f\f0\d2\a3\08\87h\f2\01\1e\fe\c2\06i]Wb\f7\cbge\80q6l\19\e7\06knv\1b\d4\fe\e0+\d3\89Zz\da\10\ccJ\ddgo\df\b9\f9\f9\ef\be\8eC\be\b7\17\d5\8e\b0`\e8\a3\d6\d6~\93\d1\a1\c4\c2\d88R\f2\dfO\f1g\bb\d1gW\bc\a6\dd\06\b5?K6\b2H\da+\0d\d8L\1b\n\af\f6J\036`z\04A\c3\ef`\dfU\dfg\a8\ef\8en1y\beiF\8c\b3a\cb\1a\83f\bc\a0\d2o%6\e2hR\95w\0c\cc\03G\0b\bb\b9\16\02\"/&\05U\be;\ba\c5(\0b\bd\b2\92Z\b4+\04j\b3\\\a7\ff\d7\c21\cf\d0\b5\8b\9e\d9,\1d\ae\de[\b0\c2d\9b&\f2c\ec\9c\a3ju\n\93m\02\a9\06\t\9c?6\0e\eb\85g\07r\13W\00\05\82J\bf\95\14z\b8\e2\ae+\b1{8\1b\b6\0c\9b\8e\d2\92\0d\be\d5\e5\b7\ef\dc|!\df\db\0b\d4\d2\d3\86B\e2\d4\f1\f8\b3\ddhn\83\da\1f\cd\16\be\81[&\b9\f6\e1w\b0owG\b7\18\e6Z\08\88pj\0f\ff\ca;\06f\\\0b\01\11\ff\9ee\8fi\aeb\f8\d3\ffkaE\cfl\16x\e2\n\a0\ee\d2\0d\d7T\83\04N\c2\b3\039a&g\a7\f7\16`\d0MGiI\dbwn>Jj\d1\ae\dcZ\d6\d9f\0b\df@\f0;\d87S\ae\bc\a9\c5\9e\bb\de\7f\cf\b2G\e9\ff\b50\1c\f2\bd\bd\8a\c2\ba\ca0\93\b3S\a6\a3\b4$\056\d0\ba\93\06\d7\cd)W\deT\bfg\d9#.zf\b3\b8Ja\c4\02\1bh]\94+o*7\be\0b\b4\a1\8e\0c\c3\1b\df\05Z\8d\ef\02-\00\00\00\00A1\1b\19\82b62\c3S-+\04\c5ldE\f4w}\86\a7ZV\c7\96AO\08\8a\d9\c8I\bb\c2\d1\8a\e8\ef\fa\cb\d9\f4\e3\0cO\b5\acM~\ae\b5\8e-\83\9e\cf\1c\98\87Q\12\c2J\10#\d9S\d3p\f4x\92A\efaU\d7\ae.\14\e6\b57\d7\b5\98\1c\96\84\83\05Y\98\1b\82\18\a9\00\9b\db\fa-\b0\9a\cb6\a9]]w\e6\1cll\ff\df?A\d4\9e\0eZ\cd\a2$\84\95\e3\15\9f\8c F\b2\a7aw\a9\be\a6\e1\e8\f1\e7\d0\f3\e8$\83\de\c3e\b2\c5\da\aa\ae]]\eb\9fFD(\cckoi\fdpv\aek19\efZ* ,\t\07\0bm8\1c\12\f36F\df\b2\07]\c6qTp\ed0ek\f4\f7\f3*\bb\b6\c21\a2u\91\1c\894\a0\07\90\fb\bc\9f\17\ba\8d\84\0ey\de\a9%8\ef\b2<\ffy\f3s\beH\e8j}\1b\c5A<*\deX\05Oy\f0D~b\e9\87-O\c2\c6\1cT\db\01\8a\15\94@\bb\0e\8d\83\e8#\a6\c2\d98\bf\0d\c5\a08L\f4\bb!\8f\a7\96\n\ce\96\8d\13\t\00\cc\\H1\d7E\8bb\fan\caS\e1wT]\bb\ba\15l\a0\a3\d6?\8d\88\97\0e\96\91P\98\d7\de\11\a9\cc\c7\d2\fa\e1\ec\93\cb\fa\f5\\\d7br\1d\e6yk\de\b5T@\9f\84OYX\12\0e\16\19#\15\0f\dap8$\9bA#=\a7k\fde\e6Z\e6|%\t\cbWd8\d0N\a3\ae\91\01\e2\9f\8a\18!\cc\a73`\fd\bc*\af\e1$\ad\ee\d0?\b4-\83\12\9fl\b2\t\86\ab$H\c9\ea\15S\d0)F~\fbhwe\e2\f6y?/\b7H$6t\1b\t\1d5*\12\04\f2\bcSK\b3\8dHRp\deey1\ef~`\fe\f3\e6\e7\bf\c2\fd\fe|\91\d0\d5=\a0\cb\cc\fa6\8a\83\bb\07\91\9axT\bc\b19e\a7\a8K\98\83;\n\a9\98\"\c9\fa\b5\t\88\cb\ae\10O]\ef_\0el\f4F\cd?\d9m\8c\0e\c2tC\12Z\f3\02#A\ea\c1pl\c1\80Aw\d8G\d76\97\06\e6-\8e\c5\b5\00\a5\84\84\1b\bc\1a\8aAq[\bbZh\98\e8wC\d9\d9lZ\1eO-\15_~6\0c\9c-\1b\'\dd\1c\00>\12\00\98\b9S1\83\a0\90b\ae\8b\d1S\b5\92\16\c5\f4\ddW\f4\ef\c4\94\a7\c2\ef\d5\96\d9\f6\e9\bc\07\ae\a8\8d\1c\b7k\de1\9c*\ef*\85\edyk\ca\acHp\d3o\1b]\f8.*F\e1\e16\def\a0\07\c5\7fcT\e8T\"e\f3M\e5\f3\b2\02\a4\c2\a9\1bg\91\840&\a0\9f)\b8\ae\c5\e4\f9\9f\de\fd:\cc\f3\d6{\fd\e8\cf\bck\a9\80\fdZ\b2\99>\t\9f\b2\7f8\84\ab\b0$\1c,\f1\15\0752F*\1esw1\07\b4\e1pH\f5\d0kQ6\83Fzw\b2]cN\d7\fa\cb\0f\e6\e1\d2\cc\b5\cc\f9\8d\84\d7\e0J\12\96\af\0b#\8d\b6\c8p\a0\9d\89A\bb\84F]#\03\07l8\1a\c4?\151\85\0e\0e(B\98Og\03\a9T~\c0\fayU\81\cbbL\1f\c58\81^\f4#\98\9d\a7\0e\b3\dc\96\15\aa\1b\00T\e5Z1O\fc\99bb\d7\d8Sy\ce\17O\e1IV~\faP\95-\d7{\d4\1c\ccb\13\8a\8d-R\bb\964\91\e8\bb\1f\d0\d9\a0\06\ec\f3~^\ad\c2eGn\91Hl/\a0Su\e86\12:\a9\07\t#jT$\08+e?\11\e4y\a7\96\a5H\bc\8ff\1b\91\a4\'*\8a\bd\e0\bc\cb\f2\a1\8d\d0\ebb\de\fd\c0#\ef\e6\d9\bd\e1\bc\14\fc\d0\a7\0d?\83\8a&~\b2\91?\b9$\d0p\f8\15\cbi;F\e6Bzw\fd[\b5ke\dc\f4Z~\c57\tS\eev8H\f7\b1\ae\t\b8\f0\9f\12\a13\cc?\8ar\fd$\93\00\00\00\007j\c2\01n\d4\84\03Y\beF\02\dc\a8\t\07\eb\c2\cb\06\b2|\8d\04\85\16O\05\b8Q\13\0e\8f;\d1\0f\d6\85\97\0d\e1\efU\0cd\f9\1a\tS\93\d8\08\n-\9e\n=G\\\0bp\a3&\1cG\c9\e4\1d\1ew\a2\1f)\1d`\1e\ac\0b/\1b\9ba\ed\1a\c2\df\ab\18\f5\b5i\19\c8\f25\12\ff\98\f7\13\a6&\b1\11\91Ls\10\14Z<\15#0\fe\14z\8e\b8\16M\e4z\17\e0FM8\d7,\8f9\8e\92\c9;\b9\f8\0b:<\eeD?\0b\84\86>R:\c0(\f4\1cq-\c3v\b3,\9a\c8\f5.\ad\a27/\c0\8d\9ap\f7\e7Xq\aeY\1es\993\dcr\1c%\93w+OQvr\f1\17tE\9b\d5ux\dc\89~O\b6K\7f\16\08\0d}!b\cf|\a4t\80y\93\1eBx\ca\a0\04z\fd\ca\c6{\b0.\bcl\87D~m\de\fa8o\e9\90\fanl\86\b5k[\ecwj\02R1h58\f3i\08\7f\afb?\15mcf\ab+aQ\c1\e9`\d4\d7\a6e\e3\bddd\ba\03\"f\8di\e0g \cb\d7H\17\a1\15IN\1fSKyu\91J\fcc\deO\cb\t\1cN\92\b7ZL\a5\dd\98M\98\9a\c4F\af\f0\06G\f6N@E\c1$\82DD2\cdAsX\0f@*\e6IB\1d\8c\8bCPh\f1Tg\023U>\bcuW\t\d6\b7V\8c\c0\f8S\bb\aa:R\e2\14|P\d5~\beQ\e89\e2Z\dfS [\86\edfY\b1\87\a4X4\91\eb]\03\fb)\\ZEo^m/\ad_\80\1b5\e1\b7q\f7\e0\ee\cf\b1\e2\d9\a5s\e3\\\b3<\e6k\d9\fe\e72g\b8\e5\05\0dz\e48J&\ef\0f \e4\eeV\9e\a2\eca\f4`\ed\e4\e2/\e8\d3\88\ed\e9\8a6\ab\eb\bd\\i\ea\f0\b8\13\fd\c7\d2\d1\fc\9el\97\fe\a9\06U\ff,\10\1a\fa\1bz\d8\fbB\c4\9e\f9u\ae\\\f8H\e9\00\f3\7f\83\c2\f2&=\84\f0\11WF\f1\94A\t\f4\a3+\cb\f5\fa\95\8d\f7\cd\ffO\f6`]x\d9W7\ba\d8\0e\89\fc\da9\e3>\db\bc\f5q\de\8b\9f\b3\df\d2!\f5\dd\e5K7\dc\d8\0ck\d7\eff\a9\d6\b6\d8\ef\d4\81\b2-\d5\04\a4b\d03\ce\a0\d1jp\e6\d3]\1a$\d2\10\fe^\c5\'\94\9c\c4~*\da\c6I@\18\c7\ccVW\c2\fb<\95\c3\a2\82\d3\c1\95\e8\11\c0\a8\afM\cb\9f\c5\8f\ca\c6{\c9\c8\f1\11\0b\c9t\07D\ccCm\86\cd\1a\d3\c0\cf-\b9\02\ce@\96\af\91w\fcm\90.B+\92\19(\e9\93\9c>\a6\96\abTd\97\f2\ea\"\95\c5\80\e0\94\f8\c7\bc\9f\cf\ad~\9e\96\138\9c\a1y\fa\9d$o\b5\98\13\05w\99J\bb1\9b}\d1\f3\9a05\89\8d\07_K\8c^\e1\0d\8ei\8b\cf\8f\ec\9d\80\8a\db\f7B\8b\82I\04\89\b5#\c6\88\88d\9a\83\bf\0eX\82\e6\b0\1e\80\d1\da\dc\81T\cc\93\84c\a6Q\85:\18\17\87\0dr\d5\86\a0\d0\e2\a9\97\ba \a8\ce\04f\aa\f9n\a4\ab|x\eb\aeK\12)\af\12\aco\ad%\c6\ad\ac\18\81\f1\a7/\eb3\a6vUu\a4A?\b7\a5\c4)\f8\a0\f3C:\a1\aa\fd|\a3\9d\97\be\a2\d0s\c4\b5\e7\19\06\b4\be\a7@\b6\89\cd\82\b7\0c\db\cd\b2;\b1\0f\b3b\0fI\b1Ue\8b\b0h\"\d7\bb_H\15\ba\06\f6S\b81\9c\91\b9\b4\8a\de\bc\83\e0\1c\bd\da^Z\bf\ed4\98\be\00\00\00\00eg\bc\b8\8b\c8\t\aa\ee\af\b5\12W\97b\8f2\f0\de7\dc_k%\b98\d7\9d\ef(\b4\c5\8aO\08}d\e0\bdo\01\87\01\d7\b8\bf\d6J\dd\d8j\f23w\df\e0V\10cX\9fW\19P\fa0\a5\e8\14\9f\10\faq\f8\acB\c8\c0{\df\ad\a7\c7gC\08ru&o\ce\cdp\7f\ad\95\15\18\11-\fb\b7\a4?\9e\d0\18\87\'\e8\cf\1aB\8fs\a2\ac \c6\b0\c9Gz\08>\af2\a0[\c8\8e\18\b5g;\n\d0\00\87\b2i8P/\0c_\ec\97\e2\f0Y\85\87\97\e5=\d1\87\86e\b4\e0:\ddZO\8f\cf?(3w\86\10\e4\ea\e3wXR\0d\d8\ed@h\bfQ\f8\a1\f8+\f0\c4\9f\97H*0\"ZOW\9e\e2\f6oI\7f\93\08\f5\c7}\a7@\d5\18\c0\fcmN\d0\9f5+\b7#\8d\c5\18\96\9f\a0\7f*\'\19G\fd\ba| A\02\92\8f\f4\10\f7\e8H\a8=X\14\9bX?\a8#\b6\90\1d1\d3\f7\a1\89j\cfv\14\0f\a8\ca\ac\e1\07\7f\be\84`\c3\06\d2p\a0^\b7\17\1c\e6Y\b8\a9\f4<\df\15L\85\e7\c2\d1\e0\80~i\0e/\cb{kHw\c3\a2\0f\0d\cb\c7h\b1s)\c7\04aL\a0\b8\d9\f5\98oD\90\ff\d3\fc~Pf\ee\1b7\daVM\'\b9\0e(@\05\b6\c6\ef\b0\a4\a3\88\0c\1c\1a\b0\db\81\7f\d7g9\91x\d2+\f4\1fn\93\03\f7&;f\90\9a\83\88?/\91\edX\93)T`D\b41\07\f8\0c\df\a8M\1e\ba\cf\f1\a6\ec\df\92\fe\89\b8.Fg\17\9bT\02p\'\ec\bbH\f0q\de/L\c90\80\f9\dbU\e7Ec\9c\a0?k\f9\c7\83\d3\17h6\c1r\0f\8ay\cb7]\e4\aeP\e1\\@\ffTN%\98\e8\f6s\88\8b\ae\16\ef7\16\f8@\82\04\9d\'>\bc$\1f\e9!AxU\99\af\d7\e0\8b\ca\b0\\3;\b6Y\ed^\d1\e5U\b0~PG\d5\19\ec\ffl!;b\tF\87\da\e7\e92\c8\82\8e\8ep\d4\9e\ed(\b1\f9Q\90_V\e4\82:1X:\83\t\8f\a7\e6n3\1f\08\c1\86\0dm\a6:\b5\a4\e1@\bd\c1\86\fc\05/)I\17JN\f5\af\f3v\"2\96\11\9e\8ax\be+\98\1d\d9\97 K\c9\f4x.\aeH\c0\c0\01\fd\d2\a5fAj\1c^\96\f7y9*O\97\96\9f]\f2\f1#\e5\05\19kM`~\d7\f5\8e\d1b\e7\eb\b6\de_R\8e\t\c27\e9\b5z\d9F\00h\bc!\bc\d0\ea1\df\88\8fVc0a\f9\d6\"\04\9ej\9a\bd\a6\bd\07\d8\c1\01\bf6n\b4\adS\t\08\15\9aNr\1d\ff)\ce\a5\11\86{\b7t\e1\c7\0f\cd\d9\10\92\a8\be\ac*F\11\198#v\a5\80uf\c6\d8\10\01z`\fe\ae\cfr\9b\c9s\ca\"\f1\a4WG\96\18\ef\a99\ad\fd\cc^\11E\06\eeMvc\89\f1\ce\8d&D\dc\e8A\f8dQy/\f94\1e\93A\da\b1&S\bf\d6\9a\eb\e9\c6\f9\b3\8c\a1E\0bb\0e\f0\19\07iL\a1\beQ\9b<\db6\'\845\99\92\96P\fe..\99\b9T&\fc\de\e8\9e\12q]\8cw\16\e14\ce.6\a9\abI\8a\11E\e6?\03 \81\83\bbv\91\e0\e3\13\f6\\[\fdY\e9I\98>U\f1!\06\82lDa>\d4\aa\ce\8b\c6\cf\a97~8A\7f\d6]&\c3n\b3\89v|\d6\ee\ca\c4o\d6\1dY\n\b1\a1\e1\e4\1e\14\f3\81y\a8K\d7i\cb\13\b2\0ew\ab\\\a1\c2\b99\c6~\01\80\fe\a9\9c\e5\99\15$\0b6\a06nQ\1c\8e\a7\16f\86\c2q\da>,\deo,I\b9\d3\94\f0\81\04\t\95\e6\b8\b1{I\0d\a3\1e.\b1\1bH>\d2C-Yn\fb\c3\f6\db\e9\a6\91gQ\1f\a9\b0\ccz\ce\0ct\94a\b9f\f1\06\05\de\00\00\00\00w\070\96\ee\0ea,\99\tQ\ba\07m\c4\19pj\f4\8f\e9c\a55\9ed\95\a3\0e\db\882y\dc\b8\a4\e0\d5\e9\1e\97\d2\d9\88\t\b6L+~\b1|\bd\e7\b8-\07\90\bf\1d\91\1d\b7\10dj\b0 \f2\f3\b9qH\84\beA\de\1a\da\d4}m\dd\e4\eb\f4\d4\b5Q\83\d3\85\c7\13l\98Vdk\a8\c0\fdb\f9z\8ae\c9\ec\14\01\\Oc\06l\d9\fa\0f=c\8d\08\0d\f5;n \c8Li\10^\d5`A\e4\a2gqr<\03\e4\d1K\04\d4G\d2\0d\85\fd\a5\n\b5k5\b5\a8\faB\b2\98l\db\bb\c9\d6\ac\bc\f9@2\d8l\e3E\df\\u\dc\d6\0d\cf\ab\d1=Y&\d90\acQ\de\00:\c8\d7Q\80\bf\d0a\16!\b4\f4\b5V\b3\c4#\cf\ba\95\99\b8\bd\a5\0f(\02\b8\9e_\05\88\08\c6\0c\d9\b2\b1\0b\e9$/o|\87XhL\11\c1a\1d\ab\b6f-=v\dcA\90\01\dbq\06\98\d2 \bc\ef\d5\10*q\b1\85\89\06\b6\b5\1f\9f\bf\e4\a5\e8\b8\d43x\07\c9\a2\0f\00\f94\96\t\a8\8e\e1\0e\98\18\7fj\0d\bb\08m=-\91dl\97\e6c\\\01kkQ\f4\1clab\85e0\d8\f2b\00Nl\06\95\ed\1b\01\a5{\82\08\f4\c1\f5\0f\c4We\b0\d9\c6\12\b7\e9P\8b\be\b8\ea\fc\b9\88|b\dd\1d\df\15\da-I\8c\d3|\f3\fb\d4LeM\b2aX:\b5Q\ce\a3\bc\00t\d4\bb0\e2J\df\a5A=\d8\95\d7\a4\d1\c4m\d3\d6\f4\fbCi\e9j4n\d9\fc\adg\88F\da`\b8\d0D\04-s3\03\1d\e5\aa\nL_\dd\0d|\c9P\05q<\'\02A\aa\be\0b\10\10\c9\0c \86Wh\b5% o\85\b3\b9f\d4\t\cea\e4\9f^\de\f9\0e)\d9\c9\98\b0\d0\98\"\c7\d7\a8\b4Y\b3=\17.\b4\0d\81\b7\bd\\;\c0\bal\ad\ed\b8\83 \9a\bf\b3\b6\03\b6\e2\0ct\b1\d2\9a\ea\d5G9\9d\d2w\af\04\db&\15s\dc\16\83\e3c\0b\12\94d;\84\0dmj>zjZ\a8\e4\0e\cf\0b\93\t\ff\9d\n\00\ae\'}\07\9e\b1\f0\0f\93D\87\08\a3\d2\1e\01\f2hi\06\c2\fe\f7bW]\80eg\cb\19l6qnk\06\e7\fe\d4\1bv\89\d3+\e0\10\dazZg\ddJ\cc\f9\b9\dfo\8e\be\ef\f9\17\b7\beC`\b0\8e\d5\d6\d6\a3\e8\a1\d1\93~8\d8\c2\c4O\df\f2R\d1\bbg\f1\a6\bcWg?\b5\06\ddH\b26K\d8\0d+\da\af\n\1bL6\03J\f6A\04z`\df`\ef\c3\a8g\dfU1n\8e\efFi\bey\cba\b3\8c\bcf\83\1a%o\d2\a0Rh\e26\cc\0cw\95\bb\0bG\03\"\02\16\b9U\05&/\c5\ba;\be\b2\bd\0b(+\b4Z\92\\\b3j\04\c2\d7\ff\a7\b5\d0\cf1,\d9\9e\8b[\de\ae\1d\9bd\c2\b0\ecc\f2&uj\a3\9c\02m\93\n\9c\t\06\a9\eb\0e6?r\07g\85\05\00W\13\95\bfJ\82\e2\b8z\14{\b1+\ae\0c\b6\1b8\92\d2\8e\9b\e5\d5\be\0d|\dc\ef\b7\0b\db\df!\86\d3\d2\d4\f1\d4\e2Bh\dd\b3\f8\1f\da\83n\81\be\16\cd\f6\b9&[o\b0w\e1\18\b7Gw\88\08Z\e6\ff\0fjpf\06;\ca\11\01\0b\\\8fe\9e\ff\f8b\aeiak\ff\d3\16l\cfE\a0\n\e2x\d7\0d\d2\eeN\04\83T9\03\b3\c2\a7g&a\d0`\16\f7IiGM>nw\db\ae\d1jJ\d9\d6Z\dc@\df\0bf7\d8;\f0\a9\bc\aeS\de\bb\9e\c5G\b2\cf\7f0\b5\ff\e9\bd\bd\f2\1c\ca\ba\c2\8aS\b3\930$\b4\a3\a6\ba\d06\05\cd\d7\06\93T\deW)#\d9g\bf\b3fz.\c4aJ\b8]h\1b\02*o+\94\b4\0b\be7\c3\0c\8e\a1Z\05\df\1b-\02\ef\8d\00\00\00\00\19\1b1A26b\82+-S\c3dl\c5\04}w\f4EVZ\a7\86OA\96\c7\c8\d9\8a\08\d1\c2\bbI\fa\ef\e8\8a\e3\f4\d9\cb\ac\b5O\0c\b5\ae~M\9e\83-\8e\87\98\1c\cfJ\c2\12QS\d9#\10x\f4p\d3a\efA\92.\ae\d7U7\b5\e6\14\1c\98\b5\d7\05\83\84\96\82\1b\98Y\9b\00\a9\18\b0-\fa\db\a96\cb\9a\e6w]]\ffll\1c\d4A?\df\cdZ\0e\9e\95\84$\a2\8c\9f\15\e3\a7\b2F \be\a9wa\f1\e8\e1\a6\e8\f3\d0\e7\c3\de\83$\da\c5\b2e]]\ae\aaDF\9f\ebok\cc(vp\fdi91k\ae *Z\ef\0b\07\t,\12\1c8m\dfF6\f3\c6]\07\b2\edpTq\f4ke0\bb*\f3\f7\a21\c2\b6\89\1c\91u\90\07\a04\17\9f\bc\fb\0e\84\8d\ba%\a9\dey<\b2\ef8s\f3y\ffj\e8H\beA\c5\1b}X\de*<\f0yO\05\e9b~D\c2O-\87\dbT\1c\c6\94\15\8a\01\8d\0e\bb@\a6#\e8\83\bf8\d9\c28\a0\c5\0d!\bb\f4L\n\96\a7\8f\13\8d\96\ce\\\cc\00\tE\d71Hn\fab\8bw\e1S\ca\ba\bb]T\a3\a0l\15\88\8d?\d6\91\96\0e\97\de\d7\98P\c7\cc\a9\11\ec\e1\fa\d2\f5\fa\cb\93rb\d7\\ky\e6\1d@T\b5\deYO\84\9f\16\0e\12X\0f\15#\19$8p\da=#A\9be\fdk\a7|\e6Z\e6W\cb\t%N\d08d\01\91\ae\a3\18\8a\9f\e23\a7\cc!*\bc\fd`\ad$\e1\af\b4?\d0\ee\9f\12\83-\86\t\b2l\c9H$\ab\d0S\15\ea\fb~F)\e2ewh/?y\f66$H\b7\1d\t\1bt\04\12*5KS\bc\f2RH\8d\b3ye\dep`~\ef1\e7\e6\f3\fe\fe\fd\c2\bf\d5\d0\91|\cc\cb\a0=\83\8a6\fa\9a\91\07\bb\b1\bcTx\a8\a7e9;\83\98K\"\98\a9\n\t\b5\fa\c9\10\ae\cb\88_\ef]OF\f4l\0em\d9?\cdt\c2\0e\8c\f3Z\12C\eaA#\02\c1lp\c1\d8wA\80\976\d7G\8e-\e6\06\a5\00\b5\c5\bc\1b\84\84qA\8a\1ahZ\bb[Cw\e8\98Zl\d9\d9\15-O\1e\0c6~_\'\1b-\9c>\00\1c\dd\b9\98\00\12\a0\831S\8b\aeb\90\92\b5S\d1\dd\f4\c5\16\c4\ef\f4W\ef\c2\a7\94\f6\d9\96\d5\ae\07\bc\e9\b7\1c\8d\a8\9c1\dek\85*\ef*\caky\ed\d3pH\ac\f8]\1bo\e1F*.f\de6\e1\7f\c5\07\a0T\e8TcM\f3e\"\02\b2\f3\e5\1b\a9\c2\a40\84\91g)\9f\a0&\e4\c5\ae\b8\fd\de\9f\f9\d6\f3\cc:\cf\e8\fd{\80\a9k\bc\99\b2Z\fd\b2\9f\t>\ab\848\7f,\1c$\b05\07\15\f1\1e*F2\071wsHp\e1\b4Qk\d0\f5zF\836c]\b2w\cb\fa\d7N\d2\e1\e6\0f\f9\cc\b5\cc\e0\d7\84\8d\af\96\12J\b6\8d#\0b\9d\a0p\c8\84\bbA\89\03#]F\1a8l\071\15?\c4(\0e\0e\85gO\98B~T\a9\03Uy\fa\c0Lb\cb\81\818\c5\1f\98#\f4^\b3\0e\a7\9d\aa\15\96\dc\e5T\00\1b\fcO1Z\d7bb\99\ceyS\d8I\e1O\17P\fa~V{\d7-\95b\cc\1c\d4-\8d\8a\134\96\bbR\1f\bb\e8\91\06\a0\d9\d0^~\f3\ecGe\c2\adlH\91nuS\a0/:\126\e8#\t\07\a9\08$Tj\11?e+\96\a7y\e4\8f\bcH\a5\a4\91\1bf\bd\8a*\'\f2\cb\bc\e0\eb\d0\8d\a1\c0\fd\deb\d9\e6\ef#\14\bc\e1\bd\0d\a7\d0\fc&\8a\83??\91\b2~p\d0$\b9i\cb\15\f8B\e6F;[\fdwz\dcek\b5\c5~Z\f4\eeS\t7\f7H8v\b8\t\ae\b1\a1\12\9f\f0\8a?\cc3\93$\fdr\00\00\00\00\01\c2j7\03\84\d4n\02F\beY\07\t\a8\dc\06\cb\c2\eb\04\8d|\b2\05O\16\85\0e\13Q\b8\0f\d1;\8f\0d\97\85\d6\0cU\ef\e1\t\1a\f9d\08\d8\93S\n\9e-\n\0b\\G=\1c&\a3p\1d\e4\c9G\1f\a2w\1e\1e`\1d)\1b/\0b\ac\1a\eda\9b\18\ab\df\c2\19i\b5\f5\125\f2\c8\13\f7\98\ff\11\b1&\a6\10sL\91\15\86\84\0b<\c0:R=\02Pe6^\17X7\9c}o5\da\c364\18\a9\011W\bf\840\95\d5\b32\d3k\ea3\11\01\dd$k\e5\90%\a9\8f\a7\'\ef1\fe&-[\c9#bML\"\a0\'{ \e6\99\"!$\f3\15*x\b4(+\ba\de\1f)\fc`F(>\nq-q\1c\f4,\b3v\c3.\f5\c8\9a/7\a2\adp\9a\8d\c0qX\e7\f7s\1eY\aer\dc3\99w\93%\1cvQO+t\17\f1ru\d5\9bE~\89\dcx\7fK\b6O}\0d\08\16|\cfb!y\80t\a4xB\1e\93z\04\a0\ca{\c6\ca\fdl\bc.\b0m~D\87o8\fa\den\fa\90\e9k\b5\86ljw\ec[h1R\02i\f385b\af\7f\08cm\15?a+\abf`\e9\c1Qe\a6\d7\d4dd\bd\e3f\"\03\bag\e0i\8dH\d7\cb I\15\a1\17KS\1fNJ\91uyO\dec\fcN\1c\t\cbLZ\b7\92M\98\dd\a5F\c4\9a\98G\06\f0\afE@N\f6D\82$\c1A\cd2D@\0fXsBI\e6*C\8b\8c\1dT\f1hPU3\02gWu\bc>V\b7\d6\tS\f8\c0\8cR:\aa\bbP|\14\e2Q\be~\d5Z\e29\e8[ S\dfYf\ed\86X\a4\87\b1]\eb\914\\)\fb\03^oEZ_\ad/m\e15\1b\80\e0\f7q\b7\e2\b1\cf\ee\e3s\a5\d9\e6<\b3\\\e7\fe\d9k\e5\b8g2\e4z\0d\05\ef&J8\ee\e4 \0f\ec\a2\9eV\ed`\f4a\e8/\e2\e4\e9\ed\88\d3\eb\ab6\8a\eai\\\bd\fd\13\b8\f0\fc\d1\d2\c7\fe\97l\9e\ffU\06\a9\fa\1a\10,\fb\d8z\1b\f9\9e\c4B\f8\\\aeu\f3\00\e9H\f2\c2\83\7f\f0\84=&\f1FW\11\f4\tA\94\f5\cb+\a3\f7\8d\95\fa\f6O\ff\cd\d9x]`\d8\ba7W\da\fc\89\0e\db>\e39\deq\f5\bc\df\b3\9f\8b\dd\f5!\d2\dc7K\e5\d7k\0c\d8\d6\a9f\ef\d4\ef\d8\b6\d5-\b2\81\d0b\a4\04\d1\a0\ce3\d3\e6pj\d2$\1a]\c5^\fe\10\c4\9c\94\'\c6\da*~\c7\18@I\c2WV\cc\c3\95<\fb\c1\d3\82\a2\c0\11\e8\95\cbM\af\a8\ca\8f\c5\9f\c8\c9{\c6\c9\0b\11\f1\ccD\07t\cd\86mC\cf\c0\d3\1a\ce\02\b9-\91\af\96@\90m\fcw\92+B.\93\e9(\19\96\a6>\9c\97dT\ab\95\"\ea\f2\94\e0\80\c5\9f\bc\c7\f8\9e~\ad\cf\9c8\13\96\9d\fay\a1\98\b5o$\99w\05\13\9b1\bbJ\9a\f3\d1}\8d\8950\8cK_\07\8e\0d\e1^\8f\cf\8bi\8a\80\9d\ec\8bB\f7\db\89\04I\82\88\c6#\b5\83\9ad\88\82X\0e\bf\80\1e\b0\e6\81\dc\da\d1\84\93\ccT\85Q\a6c\87\17\18:\86\d5r\0d\a9\e2\d0\a0\a8 \ba\97\aaf\04\ce\ab\a4n\f9\ae\ebx|\af)\12K\ado\ac\12\ac\ad\c6%\a7\f1\81\18\a63\eb/\a4uUv\a5\b7?A\a0\f8)\c4\a1:C\f3\a3|\fd\aa\a2\be\97\9d\b5\c4s\d0\b4\06\19\e7\b6@\a7\be\b7\82\cd\89\b2\cd\db\0c\b3\0f\b1;\b1I\0fb\b0\8beU\bb\d7\"h\ba\15H_\b8S\f6\06\b9\91\9c1\bc\de\8a\b4\bd\1c\e0\83\bfZ^\da\be\984\ed\00\00\00\00\b8\bcge\aa\t\c8\8b\12\b5\af\ee\8fb\97W7\de\f02%k_\dc\9d\d78\b9\c5\b4(\ef}\08O\8ao\bd\e0d\d7\01\87\01J\d6\bf\b8\f2j\d8\dd\e0\dfw3Xc\10VP\19W\9f\e8\a50\fa\fa\10\9f\14B\ac\f8q\df{\c0\c8g\c7\a7\adur\08C\cd\ceo&\95\ad\7fp-\11\18\15?\a4\b7\fb\87\18\d0\9e\1a\cf\e8\'\a2s\8fB\b0\c6 \ac\08zG\c9\a02\af>\18\8e\c8[\n;g\b5\b2\87\00\d0/P8i\97\ec_\0c\85Y\f0\e2=\e5\97\87e\86\87\d1\dd:\e0\b4\cf\8fOZw3(?\ea\e4\10\86RXw\e3@\ed\d8\0d\f8Q\bfh\f0+\f8\a1H\97\9f\c4Z\"0*\e2\9eWO\7fIo\f6\c7\f5\08\93\d5@\a7}m\fc\c0\185\9f\d0N\8d#\b7+\9f\96\18\c5\'*\7f\a0\ba\fdG\19\02A |\10\f4\8f\92\a8H\e8\f7\9b\14X=#\a8?X1\1d\90\b6\89\a1\f7\d3\14v\cfj\ac\ca\a8\0f\be\7f\07\e1\06\c3`\84^\a0p\d2\e6\1c\17\b7\f4\a9\b8YL\15\df<\d1\c2\e7\85i~\80\e0{\cb/\0e\c3wHk\cb\0d\0f\a2s\b1h\c7a\04\c7)\d9\b8\a0LDo\98\f5\fc\d3\ff\90\eefP~V\da7\1b\0e\b9\'M\b6\05@(\a4\b0\ef\c6\1c\0c\88\a3\81\db\b0\1a9g\d7\7f+\d2x\91\93n\1f\f4;&\f7\03\83\9a\90f\91/?\88)\93X\ed\b4D`T\0c\f8\071\1eM\a8\df\a6\f1\cf\ba\fe\92\df\ecF.\b8\89T\9b\17g\ec\'p\02q\f0H\bb\c9L/\de\db\f9\800cE\e7Uk?\a0\9c\d3\83\c7\f9\c16h\17y\8a\0fr\e4]7\cb\\\e1P\aeNT\ff@\f6\e8\98%\ae\8b\88s\167\ef\16\04\82@\f8\bc>\'\9d!\e9\1f$\99UxA\8b\e0\d7\af3\\\b0\ca\edY\b6;U\e5\d1^GP~\b0\ff\ec\19\d5b;!l\da\87F\t\c82\e9\e7p\8e\8e\82(\ed\9e\d4\90Q\f9\b1\82\e4V_:X1:\a7\8f\t\83\1f3n\e6\0d\86\c1\08\b5:\a6m\bd@\e1\a4\05\fc\86\c1\17I)/\af\f5NJ2\"v\f3\8a\9e\11\96\98+\bex \97\d9\1dx\f4\c9K\c0H\ae.\d2\fd\01\c0jAf\a5\f7\96^\1cO*9y]\9f\96\97\e5#\f1\f2Mk\19\05\f5\d7~`\e7b\d1\8e_\de\b6\eb\c2\t\8eRz\b5\e97h\00F\d9\d0\bc!\bc\88\df1\ea0cV\8f\"\d6\f9a\9aj\9e\04\07\bd\a6\bd\bf\01\c1\d8\ad\b4n6\15\08\tS\1drN\9a\a5\ce)\ff\b7{\86\11\0f\c7\e1t\92\10\d9\cd*\ac\be\a88\19\11F\80\a5v#\d8\c6fu`z\01\10r\cf\ae\fe\cas\c9\9bW\a4\f1\"\ef\18\96G\fd\ad9\a9E\11^\ccvM\ee\06\ce\f1\89c\dcD&\8dd\f8A\e8\f9/yQA\93\1e4S&\b1\da\eb\9a\d6\bf\b3\f9\c6\e9\0bE\a1\8c\19\f0\0eb\a1Li\07<\9bQ\be\84\'6\db\96\92\995..\feP&T\b9\99\9e\e8\de\fc\8c]q\124\e1\16w\a96.\ce\11\8aI\ab\03?\e6E\bb\83\81 \e3\e0\91v[\\\f6\13I\e9Y\fd\f1U>\98l\82\06!\d4>aD\c6\8b\ce\aa~7\a9\cf\d6\7fA8n\c3&]|v\89\b3\c4\ca\ee\d6Y\1d\d6o\e1\a1\b1\n\f3\14\1e\e4K\a8y\81\13\cbi\d7\abw\0e\b2\b9\c2\a1\\\01~\c69\9c\a9\fe\80$\15\99\e56\a06\0b\8e\1cQn\86f\16\a7>\daq\c2,o\de,\94\d3\b9I\t\04\81\f0\b1\b8\e6\95\a3\0dI{\1b\b1.\1eC\d2>H\fbnY-\e9\db\f6\c3Qg\91\a6\cc\b0\a9\1ft\0c\cezf\b9a\94\de\05\06\f1\00\00\00\00\00\00\00\00\01\00\00\00\04\00\04\00\08\00\04\00\02\00\00\00\04\00\05\00\10\00\08\00\02\00\00\00\04\00\06\00 \00 \00\02\00\00\00\04\00\04\00\10\00\10\00\03\00\00\00\08\00\10\00 \00 \00\03\00\00\00\08\00\10\00\80\00\80\00\03\00\00\00\08\00 \00\80\00\00\01\03\00\00\00 \00\80\00\02\01\00\04\03\00\00\00 \00\02\01\02\01\00\10\03\00\00\00\1a1\00\00\8c$\00\00\01\01\00\00\1e\01\00\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\02\00\00\00\02\00\00\00\02\00\00\00\03\00\00\00\03\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\9a5\00\00\14%\00\00\00\00\00\00\1e\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\02\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\06\00\00\00\06\00\00\00\07\00\00\00\07\00\00\00\08\00\00\00\08\00\00\00\t\00\00\00\t\00\00\00\n\00\00\00\n\00\00\00\0b\00\00\00\0b\00\00\00\0c\00\00\00\0c\00\00\00\0d\00\00\00\0d\00\00\00\00\00\00\00\a0%\00\00\00\00\00\00\13\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\00\00\00\07\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00\10\00\00\00\14\00\00\00\18\00\00\00\1c\00\00\00 \00\00\00(\00\00\000\00\00\008\00\00\00@\00\00\00P\00\00\00`\00\00\00p\00\00\00\80\00\00\00\a0\00\00\00\c0\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\06\00\00\00\08\00\00\00\0c\00\00\00\10\00\00\00\18\00\00\00 \00\00\000\00\00\00@\00\00\00`\00\00\00\80\00\00\00\c0\00\00\00\00\01\00\00\80\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\06\00\00\00\08\00\00\00\0c\00\00\00\10\00\00\00\18\00\00\00 \00\00\000\00\00\00@\00\00\00`\00\00\f8:\00\00\08;\00\00tG\00\00\13;\00\00\1e;\00\00+;\00\006;\00\00J;\00\00W;\00\00tG\00\00\04\'\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00}G\00\00\00\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\'\00\00`\07\00\00\00\08P\00\00\08\10\00\14\08s\00\12\07\1f\00\00\08p\00\00\080\00\00\t\c0\00\10\07\n\00\00\08`\00\00\08 \00\00\t\a0\00\00\08\00\00\00\08\80\00\00\08@\00\00\t\e0\00\10\07\06\00\00\08X\00\00\08\18\00\00\t\90\00\13\07;\00\00\08x\00\00\088\00\00\t\d0\00\11\07\11\00\00\08h\00\00\08(\00\00\t\b0\00\00\08\08\00\00\08\88\00\00\08H\00\00\t\f0\00\10\07\04\00\00\08T\00\00\08\14\00\15\08\e3\00\13\07+\00\00\08t\00\00\084\00\00\t\c8\00\11\07\0d\00\00\08d\00\00\08$\00\00\t\a8\00\00\08\04\00\00\08\84\00\00\08D\00\00\t\e8\00\10\07\08\00\00\08\\\00\00\08\1c\00\00\t\98\00\14\07S\00\00\08|\00\00\08<\00\00\t\d8\00\12\07\17\00\00\08l\00\00\08,\00\00\t\b8\00\00\08\0c\00\00\08\8c\00\00\08L\00\00\t\f8\00\10\07\03\00\00\08R\00\00\08\12\00\15\08\a3\00\13\07#\00\00\08r\00\00\082\00\00\t\c4\00\11\07\0b\00\00\08b\00\00\08\"\00\00\t\a4\00\00\08\02\00\00\08\82\00\00\08B\00\00\t\e4\00\10\07\07\00\00\08Z\00\00\08\1a\00\00\t\94\00\14\07C\00\00\08z\00\00\08:\00\00\t\d4\00\12\07\13\00\00\08j\00\00\08*\00\00\t\b4\00\00\08\n\00\00\08\8a\00\00\08J\00\00\t\f4\00\10\07\05\00\00\08V\00\00\08\16\00@\08\00\00\13\073\00\00\08v\00\00\086\00\00\t\cc\00\11\07\0f\00\00\08f\00\00\08&\00\00\t\ac\00\00\08\06\00\00\08\86\00\00\08F\00\00\t\ec\00\10\07\t\00\00\08^\00\00\08\1e\00\00\t\9c\00\14\07c\00\00\08~\00\00\08>\00\00\t\dc\00\12\07\1b\00\00\08n\00\00\08.\00\00\t\bc\00\00\08\0e\00\00\08\8e\00\00\08N\00\00\t\fc\00`\07\00\00\00\08Q\00\00\08\11\00\15\08\83\00\12\07\1f\00\00\08q\00\00\081\00\00\t\c2\00\10\07\n\00\00\08a\00\00\08!\00\00\t\a2\00\00\08\01\00\00\08\81\00\00\08A\00\00\t\e2\00\10\07\06\00\00\08Y\00\00\08\19\00\00\t\92\00\13\07;\00\00\08y\00\00\089\00\00\t\d2\00\11\07\11\00\00\08i\00\00\08)\00\00\t\b2\00\00\08\t\00\00\08\89\00\00\08I\00\00\t\f2\00\10\07\04\00\00\08U\00\00\08\15\00\10\08\02\01\13\07+\00\00\08u\00\00\085\00\00\t\ca\00\11\07\0d\00\00\08e\00\00\08%\00\00\t\aa\00\00\08\05\00\00\08\85\00\00\08E\00\00\t\ea\00\10\07\08\00\00\08]\00\00\08\1d\00\00\t\9a\00\14\07S\00\00\08}\00\00\08=\00\00\t\da\00\12\07\17\00\00\08m\00\00\08-\00\00\t\ba\00\00\08\0d\00\00\08\8d\00\00\08M\00\00\t\fa\00\10\07\03\00\00\08S\00\00\08\13\00\15\08\c3\00\13\07#\00\00\08s\00\00\083\00\00\t\c6\00\11\07\0b\00\00\08c\00\00\08#\00\00\t\a6\00\00\08\03\00\00\08\83\00\00\08C\00\00\t\e6\00\10\07\07\00\00\08[\00\00\08\1b\00\00\t\96\00\14\07C\00\00\08{\00\00\08;\00\00\t\d6\00\12\07\13\00\00\08k\00\00\08+\00\00\t\b6\00\00\08\0b\00\00\08\8b\00\00\08K\00\00\t\f6\00\10\07\05\00\00\08W\00\00\08\17\00@\08\00\00\13\073\00\00\08w\00\00\087\00\00\t\ce\00\11\07\0f\00\00\08g\00\00\08\'\00\00\t\ae\00\00\08\07\00\00\08\87\00\00\08G\00\00\t\ee\00\10\07\t\00\00\08_\00\00\08\1f\00\00\t\9e\00\14\07c\00\00\08\7f\00\00\08?\00\00\t\de\00\12\07\1b\00\00\08o\00\00\08/\00\00\t\be\00\00\08\0f\00\00\08\8f\00\00\08O\00\00\t\fe\00`\07\00\00\00\08P\00\00\08\10\00\14\08s\00\12\07\1f\00\00\08p\00\00\080\00\00\t\c1\00\10\07\n\00\00\08`\00\00\08 \00\00\t\a1\00\00\08\00\00\00\08\80\00\00\08@\00\00\t\e1\00\10\07\06\00\00\08X\00\00\08\18\00\00\t\91\00\13\07;\00\00\08x\00\00\088\00\00\t\d1\00\11\07\11\00\00\08h\00\00\08(\00\00\t\b1\00\00\08\08\00\00\08\88\00\00\08H\00\00\t\f1\00\10\07\04\00\00\08T\00\00\08\14\00\15\08\e3\00\13\07+\00\00\08t\00\00\084\00\00\t\c9\00\11\07\0d\00\00\08d\00\00\08$\00\00\t\a9\00\00\08\04\00\00\08\84\00\00\08D\00\00\t\e9\00\10\07\08\00\00\08\\\00\00\08\1c\00\00\t\99\00\14\07S\00\00\08|\00\00\08<\00\00\t\d9\00\12\07\17\00\00\08l\00\00\08,\00\00\t\b9\00\00\08\0c\00\00\08\8c\00\00\08L\00\00\t\f9\00\10\07\03\00\00\08R\00\00\08\12\00\15\08\a3\00\13\07#\00\00\08r\00\00\082\00\00\t\c5\00\11\07\0b\00\00\08b\00\00\08\"\00\00\t\a5\00\00\08\02\00\00\08\82\00\00\08B\00\00\t\e5\00\10\07\07\00\00\08Z\00\00\08\1a\00\00\t\95\00\14\07C\00\00\08z\00\00\08:\00\00\t\d5\00\12\07\13\00\00\08j\00\00\08*\00\00\t\b5\00\00\08\n\00\00\08\8a\00\00\08J\00\00\t\f5\00\10\07\05\00\00\08V\00\00\08\16\00@\08\00\00\13\073\00\00\08v\00\00\086\00\00\t\cd\00\11\07\0f\00\00\08f\00\00\08&\00\00\t\ad\00\00\08\06\00\00\08\86\00\00\08F\00\00\t\ed\00\10\07\t\00\00\08^\00\00\08\1e\00\00\t\9d\00\14\07c\00\00\08~\00\00\08>\00\00\t\dd\00\12\07\1b\00\00\08n\00\00\08.\00\00\t\bd\00\00\08\0e\00\00\08\8e\00\00\08N\00\00\t\fd\00`\07\00\00\00\08Q\00\00\08\11\00\15\08\83\00\12\07\1f\00\00\08q\00\00\081\00\00\t\c3\00\10\07\n\00\00\08a\00\00\08!\00\00\t\a3\00\00\08\01\00\00\08\81\00\00\08A\00\00\t\e3\00\10\07\06\00\00\08Y\00\00\08\19\00\00\t\93\00\13\07;\00\00\08y\00\00\089\00\00\t\d3\00\11\07\11\00\00\08i\00\00\08)\00\00\t\b3\00\00\08\t\00\00\08\89\00\00\08I\00\00\t\f3\00\10\07\04\00\00\08U\00\00\08\15\00\10\08\02\01\13\07+\00\00\08u\00\00\085\00\00\t\cb\00\11\07\0d\00\00\08e\00\00\08%\00\00\t\ab\00\00\08\05\00\00\08\85\00\00\08E\00\00\t\eb\00\10\07\08\00\00\08]\00\00\08\1d\00\00\t\9b\00\14\07S\00\00\08}\00\00\08=\00\00\t\db\00\12\07\17\00\00\08m\00\00\08-\00\00\t\bb\00\00\08\0d\00\00\08\8d\00\00\08M\00\00\t\fb\00\10\07\03\00\00\08S\00\00\08\13\00\15\08\c3\00\13\07#\00\00\08s\00\00\083\00\00\t\c7\00\11\07\0b\00\00\08c\00\00\08#\00\00\t\a7\00\00\08\03\00\00\08\83\00\00\08C\00\00\t\e7\00\10\07\07\00\00\08[\00\00\08\1b\00\00\t\97\00\14\07C\00\00\08{\00\00\08;\00\00\t\d7\00\12\07\13\00\00\08k\00\00\08+\00\00\t\b7\00\00\08\0b\00\00\08\8b\00\00\08K\00\00\t\f7\00\10\07\05\00\00\08W\00\00\08\17\00@\08\00\00\13\073\00\00\08w\00\00\087\00\00\t\cf\00\11\07\0f\00\00\08g\00\00\08\'\00\00\t\af\00\00\08\07\00\00\08\87\00\00\08G\00\00\t\ef\00\10\07\t\00\00\08_\00\00\08\1f\00\00\t\9f\00\14\07c\00\00\08\7f\00\00\08?\00\00\t\df\00\12\07\1b\00\00\08o\00\00\08/\00\00\t\bf\00\00\08\0f\00\00\08\8f\00\00\08O\00\00\t\ff\00\10\05\01\00\17\05\01\01\13\05\11\00\1b\05\01\10\11\05\05\00\19\05\01\04\15\05A\00\1d\05\01@\10\05\03\00\18\05\01\02\14\05!\00\1c\05\01 \12\05\t\00\1a\05\01\08\16\05\81\00@\05\00\00\10\05\02\00\17\05\81\01\13\05\19\00\1b\05\01\18\11\05\07\00\19\05\01\06\15\05a\00\1d\05\01`\10\05\04\00\18\05\01\03\14\051\00\1c\05\010\12\05\0d\00\1a\05\01\0c\16\05\c1\00@\05\00\00\10\00\11\00\12\00\00\00\08\00\07\00\t\00\06\00\n\00\05\00\0b\00\04\00\0c\00\03\00\0d\00\02\00\0e\00\01\00\0f\00\01\00\02\00\03\00\04\00\05\00\07\00\t\00\0d\00\11\00\19\00!\001\00A\00a\00\81\00\c1\00\01\01\81\01\01\02\01\03\01\04\01\06\01\08\01\0c\01\10\01\18\01 \010\01@\01`\00\00\00\00\03\00\04\00\05\00\06\00\07\00\08\00\t\00\n\00\0b\00\0d\00\0f\00\11\00\13\00\17\00\1b\00\1f\00#\00+\003\00;\00C\00S\00c\00s\00\83\00\a3\00\c3\00\e3\00\02\01\00\00\00\00\10\00\10\00\10\00\10\00\11\00\11\00\12\00\12\00\13\00\13\00\14\00\14\00\15\00\15\00\16\00\16\00\17\00\17\00\18\00\18\00\19\00\19\00\1a\00\1a\00\1b\00\1b\00\1c\00\1c\00\1d\00\1d\00@\00@\00\10\00\10\00\10\00\10\00\10\00\10\00\10\00\10\00\11\00\11\00\11\00\11\00\12\00\12\00\12\00\12\00\13\00\13\00\13\00\13\00\14\00\14\00\14\00\14\00\15\00\15\00\15\00\15\00\10\00I\00\c3\00\0c\00\08\00\8c\00\08\00L\00\08\00\cc\00\08\00,\00\08\00\ac\00\08\00l\00\08\00\ec\00\08\00\1c\00\08\00\9c\00\08\00\\\00\08\00\dc\00\08\00<\00\08\00\bc\00\08\00|\00\08\00\fc\00\08\00\02\00\08\00\82\00\08\00B\00\08\00\c2\00\08\00\"\00\08\00\a2\00\08\00b\00\08\00\e2\00\08\00\12\00\08\00\92\00\08\00R\00\08\00\d2\00\08\002\00\08\00\b2\00\08\00r\00\08\00\f2\00\08\00\n\00\08\00\8a\00\08\00J\00\08\00\ca\00\08\00*\00\08\00\aa\00\08\00j\00\08\00\ea\00\08\00\1a\00\08\00\9a\00\08\00Z\00\08\00\da\00\08\00:\00\08\00\ba\00\08\00z\00\08\00\fa\00\08\00\06\00\08\00\86\00\08\00F\00\08\00\c6\00\08\00&\00\08\00\a6\00\08\00f\00\08\00\e6\00\08\00\16\00\08\00\96\00\08\00V\00\08\00\d6\00\08\006\00\08\00\b6\00\08\00v\00\08\00\f6\00\08\00\0e\00\08\00\8e\00\08\00N\00\08\00\ce\00\08\00.\00\08\00\ae\00\08\00n\00\08\00\ee\00\08\00\1e\00\08\00\9e\00\08\00^\00\08\00\de\00\08\00>\00\08\00\be\00\08\00~\00\08\00\fe\00\08\00\01\00\08\00\81\00\08\00A\00\08\00\c1\00\08\00!\00\08\00\a1\00\08\00a\00\08\00\e1\00\08\00\11\00\08\00\91\00\08\00Q\00\08\00\d1\00\08\001\00\08\00\b1\00\08\00q\00\08\00\f1\00\08\00\t\00\08\00\89\00\08\00I\00\08\00\c9\00\08\00)\00\08\00\a9\00\08\00i\00\08\00\e9\00\08\00\19\00\08\00\99\00\08\00Y\00\08\00\d9\00\08\009\00\08\00\b9\00\08\00y\00\08\00\f9\00\08\00\05\00\08\00\85\00\08\00E\00\08\00\c5\00\08\00%\00\08\00\a5\00\08\00e\00\08\00\e5\00\08\00\15\00\08\00\95\00\08\00U\00\08\00\d5\00\08\005\00\08\00\b5\00\08\00u\00\08\00\f5\00\08\00\0d\00\08\00\8d\00\08\00M\00\08\00\cd\00\08\00-\00\08\00\ad\00\08\00m\00\08\00\ed\00\08\00\1d\00\08\00\9d\00\08\00]\00\08\00\dd\00\08\00=\00\08\00\bd\00\08\00}\00\08\00\fd\00\08\00\13\00\t\00\13\01\t\00\93\00\t\00\93\01\t\00S\00\t\00S\01\t\00\d3\00\t\00\d3\01\t\003\00\t\003\01\t\00\b3\00\t\00\b3\01\t\00s\00\t\00s\01\t\00\f3\00\t\00\f3\01\t\00\0b\00\t\00\0b\01\t\00\8b\00\t\00\8b\01\t\00K\00\t\00K\01\t\00\cb\00\t\00\cb\01\t\00+\00\t\00+\01\t\00\ab\00\t\00\ab\01\t\00k\00\t\00k\01\t\00\eb\00\t\00\eb\01\t\00\1b\00\t\00\1b\01\t\00\9b\00\t\00\9b\01\t\00[\00\t\00[\01\t\00\db\00\t\00\db\01\t\00;\00\t\00;\01\t\00\bb\00\t\00\bb\01\t\00{\00\t\00{\01\t\00\fb\00\t\00\fb\01\t\00\07\00\t\00\07\01\t\00\87\00\t\00\87\01\t\00G\00\t\00G\01\t\00\c7\00\t\00\c7\01\t\00\'\00\t\00\'\01\t\00\a7\00\t\00\a7\01\t\00g\00\t\00g\01\t\00\e7\00\t\00\e7\01\t\00\17\00\t\00\17\01\t\00\97\00\t\00\97\01\t\00W\00\t\00W\01\t\00\d7\00\t\00\d7\01\t\007\00\t\007\01\t\00\b7\00\t\00\b7\01\t\00w\00\t\00w\01\t\00\f7\00\t\00\f7\01\t\00\0f\00\t\00\0f\01\t\00\8f\00\t\00\8f\01\t\00O\00\t\00O\01\t\00\cf\00\t\00\cf\01\t\00/\00\t\00/\01\t\00\af\00\t\00\af\01\t\00o\00\t\00o\01\t\00\ef\00\t\00\ef\01\t\00\1f\00\t\00\1f\01\t\00\9f\00\t\00\9f\01\t\00_\00\t\00_\01\t\00\df\00\t\00\df\01\t\00?\00\t\00?\01\t\00\bf\00\t\00\bf\01\t\00\7f\00\t\00\7f\01\t\00\ff\00\t\00\ff\01\t\00\00\00\07\00@\00\07\00 \00\07\00`\00\07\00\10\00\07\00P\00\07\000\00\07\00p\00\07\00\08\00\07\00H\00\07\00(\00\07\00h\00\07\00\18\00\07\00X\00\07\008\00\07\00x\00\07\00\04\00\07\00D\00\07\00$\00\07\00d\00\07\00\14\00\07\00T\00\07\004\00\07\00t\00\07\00\03\00\08\00\83\00\08\00C\00\08\00\c3\00\08\00#\00\08\00\a3\00\08\00c\00\08\00\e3\00\08\00\00\00\05\00\10\00\05\00\08\00\05\00\18\00\05\00\04\00\05\00\14\00\05\00\0c\00\05\00\1c\00\05\00\02\00\05\00\12\00\05\00\n\00\05\00\1a\00\05\00\06\00\05\00\16\00\05\00\0e\00\05\00\1e\00\05\00\01\00\05\00\11\00\05\00\t\00\05\00\19\00\05\00\05\00\05\00\15\00\05\00\0d\00\05\00\1d\00\05\00\03\00\05\00\13\00\05\00\0b\00\05\00\1b\00\05\00\07\00\05\00\17\00\05\00incorrect header check\00unknown compression method\00invalid window size\00unknown header flags set\00header crc mismatch\00invalid block type\00invalid stored block lengths\00too many length or distance symbols\00invalid code lengths set\00invalid bit length repeat\00invalid code -- missing end-of-block\00invalid literal/lengths set\00invalid distances set\00incorrect data check\00incorrect length check\00invalid distance too far back\00invalid distance code\00invalid literal/length code\00\00\01\02\03\04\04\05\05\06\06\06\06\07\07\07\07\08\08\08\08\08\08\08\08\t\t\t\t\t\t\t\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0b\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0d\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\0f\00\00\10\11\12\12\13\13\14\14\14\14\15\15\15\15\16\16\16\16\16\16\16\16\17\17\17\17\17\17\17\17\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\1d\00\01\02\03\04\05\06\07\08\08\t\t\n\n\0b\0b\0c\0c\0c\0c\0d\0d\0d\0d\0e\0e\0e\0e\0f\0f\0f\0f\10\10\10\10\10\10\10\10\11\11\11\11\11\11\11\11\12\12\12\12\12\12\12\12\13\13\13\13\13\13\13\13\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\14\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\16\16\16\16\16\16\16\16\16\16\16\16\16\16\16\16\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\17\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\19\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1a\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1b\1c\10\11\12\00\08\07\t\06\n\05\0b\04\0c\03\0d\02\0e\01\0f1.2.5\00need dictionary\00stream end\00file error\00stream error\00data error\00insufficient memory\00buffer error\00incompatible version\00sizes: %d,%d\n\00decompressedSize == size\00benchmark.c\00doit\00strcmp(buffer, buffer3) == 0\00error: %d\\n\00ok.\00\11\00\n\00\11\11\11\00\00\00\00\05\00\00\00\00\00\00\t\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\0f\n\11\11\11\03\n\07\00\01\13\t\0b\0b\00\00\t\06\0b\00\00\0b\00\06\11\00\00\00\11\11\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\n\n\11\11\11\00\n\00\00\02\00\t\0b\00\00\00\t\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\04\0d\00\00\00\00\t\0e\00\00\00\00\00\0e\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\00\0f\00\00\00\00\t\10\00\00\00\00\00\10\00\00\10\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\n\00\00\00\00\t\0b\00\00\00\00\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\000123456789ABCDEF-+ 0X0x\00T!\"\19\0d\01\02\03\11K\1c\0c\10\04\0b\1d\12\1e\'hnopqb \05\06\0f\13\14\15\1a\08\16\07($\17\18\t\n\0e\1b\1f%#\83\82}&*+<=>?CGJMXYZ[\\]^_`acdefgijklrstyz{|\00Illegal byte sequence\00Domain error\00Result not representable\00Not a tty\00Permission denied\00Operation not permitted\00No such file or directory\00No such process\00File exists\00Value too large for data type\00No space left on device\00Out of memory\00Resource busy\00Interrupted system call\00Resource temporarily unavailable\00Invalid seek\00Cross-device link\00Read-only file system\00Directory not empty\00Connection reset by peer\00Operation timed out\00Connection refused\00Host is down\00Host is unreachable\00Address in use\00Broken pipe\00I/O error\00No such device or address\00Block device required\00No such device\00Not a directory\00Is a directory\00Text file busy\00Exec format error\00Invalid argument\00Argument list too long\00Symbolic link loop\00Filename too long\00Too many open files in system\00No file descriptors available\00Bad file descriptor\00No child process\00Bad address\00File too large\00Too many links\00No locks available\00Resource deadlock would occur\00State not recoverable\00Previous owner died\00Operation canceled\00Function not implemented\00No message of desired type\00Identifier removed\00Device not a stream\00No data available\00Device timeout\00Out of streams resources\00Link has been severed\00Protocol error\00Bad message\00File descriptor in bad state\00Not a socket\00Destination address required\00Message too large\00Protocol wrong type for socket\00Protocol not available\00Protocol not supported\00Socket type not supported\00Not supported\00Protocol family not supported\00Address family not supported by protocol\00Address not available\00Network is down\00Network unreachable\00Connection reset by network\00Connection aborted\00No buffer space available\00Socket is connected\00Socket not connected\00Cannot send after socket shutdown\00Operation already in progress\00Operation in progress\00Stale file handle\00Remote I/O error\00Quota exceeded\00No medium found\00Wrong medium type\00No error information\00\00(null)\00-0X+0X 0X-0x+0x 0x\00inf\00INF\00nan\00NAN\00.") - (export "_i64Subtract" (func $_i64Subtract)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_i64Add" (func $_i64Add)) - (export "_pthread_self" (func $_pthread_self)) - (export "_memset" (func $_memset)) - (export "___udivdi3" (func $___udivdi3)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_llvm_bswap_i32" (func $_llvm_bswap_i32)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_fflush" (func $_fflush)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "___uremdi3" (func $___uremdi3)) - (export "___errno_location" (func $___errno_location)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vii" (func $dynCall_vii)) - (export "dynCall_iii" (func $dynCall_iii)) - (export "dynCall_vi" (func $dynCall_vi)) - (func $_inflate (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (set_local $34 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.eqz - (get_local $0) - ) - (block - (set_global $STACKTOP - (get_local $34) - ) - (return - (i32.const -2) - ) - ) - ) - (if - (i32.eqz - (tee_local $8 - (i32.load offset=28 - (get_local $0) - ) - ) - ) - (block - (set_global $STACKTOP - (get_local $34) - ) - (return - (i32.const -2) - ) - ) - ) - (if - (i32.eqz - (tee_local $14 - (i32.load - (tee_local $38 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - ) - ) - (block - (set_global $STACKTOP - (get_local $34) - ) - (return - (i32.const -2) - ) - ) - ) - (if - (i32.eqz - (tee_local $5 - (i32.load - (get_local $0) - ) - ) - ) - (if - (i32.load offset=4 - (get_local $0) - ) - (block - (set_global $STACKTOP - (get_local $34) - ) - (return - (i32.const -2) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $12 - (i32.load - (get_local $8) - ) - ) - (i32.const 11) - ) - (block - (i32.store - (get_local $8) - (i32.const 12) - ) - (set_local $12 - (i32.const 12) - ) - ) - ) - (set_local $45 - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - (set_local $20 - (i32.add - (get_local $8) - (i32.const 24) - ) - ) - (set_local $39 - (i32.add - (tee_local $30 - (get_local $34) - ) - (i32.const 1) - ) - ) - (set_local $28 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - (set_local $31 - (i32.add - (get_local $8) - (i32.const 32) - ) - ) - (set_local $27 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (set_local $58 - (i32.add - (get_local $8) - (i32.const 36) - ) - ) - (set_local $65 - (i32.add - (get_local $8) - (i32.const 20) - ) - ) - (set_local $36 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (set_local $26 - (i32.add - (get_local $8) - (i32.const 64) - ) - ) - (set_local $66 - (i32.add - (get_local $8) - (i32.const 12) - ) - ) - (set_local $67 - (i32.lt_u - (i32.add - (get_local $1) - (i32.const -5) - ) - (i32.const 2) - ) - ) - (set_local $54 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (set_local $40 - (i32.add - (get_local $8) - (i32.const 76) - ) - ) - (set_local $35 - (i32.add - (get_local $8) - (i32.const 84) - ) - ) - (set_local $55 - (i32.add - (get_local $8) - (i32.const 80) - ) - ) - (set_local $46 - (i32.add - (get_local $8) - (i32.const 88) - ) - ) - (set_local $56 - (i32.eq - (get_local $1) - (i32.const 6) - ) - ) - (set_local $29 - (i32.add - (get_local $8) - (i32.const 7108) - ) - ) - (set_local $47 - (i32.add - (get_local $8) - (i32.const 72) - ) - ) - (set_local $68 - (i32.add - (get_local $8) - (i32.const 7112) - ) - ) - (set_local $48 - (i32.add - (get_local $8) - (i32.const 68) - ) - ) - (set_local $69 - (i32.add - (get_local $8) - (i32.const 44) - ) - ) - (set_local $70 - (i32.add - (get_local $8) - (i32.const 7104) - ) - ) - (set_local $71 - (i32.add - (get_local $8) - (i32.const 48) - ) - ) - (set_local $59 - (i32.add - (get_local $8) - (i32.const 52) - ) - ) - (set_local $60 - (i32.add - (get_local $8) - (i32.const 40) - ) - ) - (set_local $49 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (set_local $41 - (i32.add - (get_local $8) - (i32.const 28) - ) - ) - (set_local $72 - (i32.add - (get_local $30) - (i32.const 2) - ) - ) - (set_local $73 - (i32.add - (get_local $30) - (i32.const 3) - ) - ) - (set_local $33 - (i32.add - (get_local $8) - (i32.const 104) - ) - ) - (set_local $50 - (i32.add - (get_local $8) - (i32.const 96) - ) - ) - (set_local $51 - (i32.add - (get_local $8) - (i32.const 100) - ) - ) - (set_local $74 - (i32.add - (get_local $8) - (i32.const 624) - ) - ) - (set_local $52 - (i32.add - (get_local $8) - (i32.const 1328) - ) - ) - (set_local $37 - (i32.add - (get_local $8) - (i32.const 108) - ) - ) - (set_local $61 - (i32.add - (get_local $8) - (i32.const 112) - ) - ) - (set_local $57 - (i32.add - (get_local $8) - (i32.const 752) - ) - ) - (set_local $62 - (i32.add - (get_local $8) - (i32.const 92) - ) - ) - (set_local $7 - (get_local $12) - ) - (set_local $4 - (i32.load - (tee_local $42 - (i32.add - (get_local $8) - (i32.const 60) - ) - ) - ) - ) - (set_local $6 - (tee_local $63 - (i32.load - (tee_local $43 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - ) - (set_local $3 - (i32.load - (tee_local $53 - (i32.add - (get_local $8) - (i32.const 56) - ) - ) - ) - ) - (set_local $10 - (tee_local $12 - (i32.load - (tee_local $44 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - ) - (set_local $11 - (i32.const 0) - ) - (block $__rjto$33 - (block $__rjti$33 - (block $__rjti$32 - (block $__rjti$31 - (block $__rjti$30 - (block $__rjti$28 - (block $__rjti$27 - (loop $label$continue$L17 - (block $label$break$L17 - (block $do-once96 - (block $__rjti$26 - (block $__rjti$25 - (block $__rjti$24 - (block $__rjti$23 - (block $__rjti$22 - (block $__rjti$21 - (block $__rjti$20 - (block $__rjti$19 - (block $__rjti$18 - (block $__rjti$17 - (block $__rjti$16 - (block $__rjti$15 - (block $__rjti$14 - (block $__rjti$13 - (block $__rjti$12 - (block $__rjti$11 - (block $__rjti$10 - (block $__rjti$9 - (block $__rjti$8 - (block $__rjti$7 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $switch-default - (block $switch-case39 - (block $switch-case38 - (block $switch-case35 - (block $switch-case34 - (block $switch-case33 - (block $switch-case32 - (block $switch-case31 - (block $switch-case30 - (block $switch-case29 - (block $switch-case28 - (block $switch-case27 - (block $switch-case26 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case18 - (block $switch-case17 - (block $switch-case16 - (block $switch-case15 - (block $switch-case12 - (block $switch-case11 - (block $switch-case10 - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case2 - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case2 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $switch-case10 $switch-case11 $switch-case12 $switch-case15 $switch-case16 $switch-case17 $switch-case18 $switch-case21 $switch-case22 $switch-case23 $switch-case26 $switch-case27 $switch-case28 $switch-case29 $switch-case30 $switch-case31 $switch-case32 $switch-case33 $switch-case34 $switch-case35 $switch-case38 $switch-case39 $switch-case $switch-case0 $switch-case1 $switch-default - (get_local $7) - ) - ) - (set_local $11 - (i32.const 1) - ) - (br $__rjti$31) - ) - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (get_local $6) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (i32.const -3) - ) - (br $label$break$L17) - ) - (br $__rjti$32) - ) - (if - (i32.eqz - (tee_local $7 - (i32.load - (get_local $45) - ) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 12) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 16) - ) - (loop $while-in - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (i32.const 16) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (if - (i32.and - (i32.eq - (get_local $3) - (i32.const 35615) - ) - (i32.ne - (i32.and - (get_local $7) - (i32.const 2) - ) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $20) - (call $_crc32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - (i32.store8 - (get_local $30) - (i32.const 31) - ) - (i32.store8 - (get_local $39) - (i32.const -117) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $30) - (i32.const 2) - ) - ) - (i32.store - (get_local $8) - (i32.const 1) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (i32.store - (get_local $28) - (i32.const 0) - ) - (if - (tee_local $2 - (i32.load - (get_local $31) - ) - ) - (i32.store offset=48 - (get_local $2) - (i32.const -1) - ) - ) - (if - (i32.and - (get_local $7) - (i32.const 1) - ) - (if - (i32.eqz - (i32.rem_u - (i32.add - (i32.and - (i32.shl - (get_local $3) - (i32.const 8) - ) - (i32.const 65280) - ) - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (i32.const 31) - ) - ) - (block - (if - (i32.ne - (i32.and - (get_local $3) - (i32.const 15) - ) - (i32.const 8) - ) - (block - (i32.store - (get_local $27) - (i32.const 13865) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const -4) - ) - ) - (set_local $9 - (i32.add - (i32.and - (tee_local $2 - (i32.shr_u - (get_local $3) - (i32.const 4) - ) - ) - (i32.const 15) - ) - (i32.const 8) - ) - ) - (if - (tee_local $7 - (i32.load - (get_local $58) - ) - ) - (if - (i32.gt_u - (get_local $9) - (get_local $7) - ) - (block - (i32.store - (get_local $27) - (i32.const 13892) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $3 - (get_local $2) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (i32.store - (get_local $58) - (get_local $9) - ) - ) - (i32.store - (get_local $65) - (i32.shl - (i32.const 1) - (get_local $9) - ) - ) - (i32.store - (get_local $20) - (tee_local $4 - (call $_adler32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $36) - (get_local $4) - ) - (i32.store - (get_local $8) - (i32.xor - (i32.and - (i32.shr_u - (get_local $3) - (i32.const 12) - ) - (i32.const 2) - ) - (i32.const 11) - ) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - ) - (i32.store - (get_local $27) - (i32.const 13842) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 16) - ) - (loop $while-in4 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (i32.const 16) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in4) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $28) - (get_local $3) - ) - (if - (i32.ne - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 8) - ) - (block - (i32.store - (get_local $27) - (i32.const 13865) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (if - (i32.and - (get_local $3) - (i32.const 57344) - ) - (block - (i32.store - (get_local $27) - (i32.const 13912) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (if - (tee_local $4 - (i32.load - (get_local $31) - ) - ) - (i32.store - (get_local $4) - (i32.and - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - (i32.const 1) - ) - ) - ) - (if - (i32.and - (get_local $3) - (i32.const 512) - ) - (block - (i32.store8 - (get_local $30) - (get_local $3) - ) - (i32.store8 - (get_local $39) - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $30) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 2) - ) - (set_local $2 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$3) - ) - (br_if $__rjti$8 - (i32.ge_u - (get_local $4) - (i32.const 32) - ) - ) - (set_local $2 - (get_local $4) - ) - (br $__rjti$3) - ) - (br_if $__rjti$15 - (i32.ge_u - (get_local $4) - (i32.const 16) - ) - ) - (set_local $2 - (get_local $4) - ) - (br $__rjti$12) - ) - (br $__rjti$17) - ) - (br $__rjti$19) - ) - (br $__rjti$21) - ) - (br $__rjti$23) - ) - (br $__rjti$25) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 32) - ) - (block - (set_local $2 - (get_local $4) - ) - (loop $while-in14 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $2) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $2) - ) - (get_local $3) - ) - ) - (if - (i32.ge_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (i32.const 32) - ) - (set_local $5 - (get_local $4) - ) - (block - (set_local $5 - (get_local $4) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (i32.store - (get_local $20) - (tee_local $3 - (call $_llvm_bswap_i32 - (get_local $3) - ) - ) - ) - (i32.store - (get_local $36) - (get_local $3) - ) - (i32.store - (get_local $8) - (i32.const 10) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$4) - ) - (br $__rjti$4) - ) - (br $__rjti$9) - ) - (br $__rjti$13) - ) - (set_local $2 - (i32.shr_u - (get_local $3) - (tee_local $3 - (i32.and - (get_local $4) - (i32.const 7) - ) - ) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.sub - (get_local $4) - (get_local $3) - ) - ) - (i32.const 32) - ) - (block - (set_local $7 - (get_local $6) - ) - (set_local $6 - (get_local $2) - ) - (loop $while-in20 - (if - (i32.eqz - (get_local $7) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $3) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $6) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $5 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $3) - ) - (get_local $6) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (i32.const 32) - ) - (block - (set_local $6 - (get_local $5) - ) - (set_local $5 - (get_local $2) - ) - (br $while-in20) - ) - (block - (set_local $4 - (get_local $3) - ) - (set_local $6 - (get_local $7) - ) - (set_local $3 - (get_local $5) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - ) - (block - (set_local $4 - (get_local $3) - ) - (set_local $3 - (get_local $2) - ) - ) - ) - (if - (i32.eq - (tee_local $2 - (i32.and - (get_local $3) - (i32.const 65535) - ) - ) - (i32.xor - (i32.shr_u - (get_local $3) - (i32.const 16) - ) - (i32.const 65535) - ) - ) - (block - (i32.store - (get_local $26) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.const 14) - ) - (if - (get_local $56) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$31) - ) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$5) - ) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 13976) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - ) - (br $__rjti$5) - ) - (br $__rjti$10) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 14) - ) - (loop $while-in25 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (i32.const 14) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in25) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $50) - (tee_local $7 - (i32.add - (i32.and - (get_local $3) - (i32.const 31) - ) - (i32.const 257) - ) - ) - ) - (i32.store - (get_local $51) - (tee_local $2 - (i32.add - (i32.and - (i32.shr_u - (get_local $3) - (i32.const 5) - ) - (i32.const 31) - ) - (i32.const 1) - ) - ) - ) - (i32.store - (get_local $62) - (tee_local $13 - (i32.add - (i32.and - (i32.shr_u - (get_local $3) - (i32.const 10) - ) - (i32.const 15) - ) - (i32.const 4) - ) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (i32.const 14) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const -14) - ) - ) - (if - (i32.or - (i32.gt_u - (get_local $7) - (i32.const 286) - ) - (i32.gt_u - (get_local $2) - (i32.const 30) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 14005) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - (block - (i32.store - (get_local $33) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.const 17) - ) - (set_local $9 - (i32.const 0) - ) - (set_local $2 - (get_local $4) - ) - (set_local $7 - (get_local $6) - ) - (set_local $4 - (get_local $3) - ) - (set_local $6 - (get_local $5) - ) - (br $__rjti$6) - ) - ) - ) - (if - (i32.lt_u - (tee_local $2 - (i32.load - (get_local $33) - ) - ) - (tee_local $13 - (i32.load - (get_local $62) - ) - ) - ) - (block - (set_local $9 - (get_local $2) - ) - (set_local $2 - (get_local $4) - ) - (set_local $7 - (get_local $6) - ) - (set_local $4 - (get_local $3) - ) - (set_local $6 - (get_local $5) - ) - (br $__rjti$6) - ) - (block - (set_local $11 - (get_local $2) - ) - (br $__rjti$11) - ) - ) - ) - (set_local $13 - (i32.load - (get_local $33) - ) - ) - (set_local $9 - (get_local $3) - ) - (set_local $2 - (get_local $5) - ) - (set_local $7 - (get_local $11) - ) - (br $__rjti$14) - ) - (br $__rjti$16) - ) - (br $__rjti$18) - ) - (set_local $7 - (i32.load - (get_local $47) - ) - ) - (br $__rjti$20) - ) - (br $__rjti$22) - ) - (set_local $7 - (i32.load - (get_local $47) - ) - ) - (br $__rjti$24) - ) - (br $__rjti$26) - ) - (if - (i32.eqz - (get_local $10) - ) - (block - (set_local $10 - (i32.const 0) - ) - (br $__rjti$31) - ) - ) - (i32.store8 - (get_local $14) - (i32.load - (get_local $26) - ) - ) - (i32.store - (get_local $8) - (i32.const 20) - ) - (set_local $2 - (i32.add - (get_local $10) - (i32.const -1) - ) - ) - (set_local $14 - (i32.add - (get_local $14) - (i32.const 1) - ) - ) - (br $do-once96) - ) - (if - (i32.load - (get_local $45) - ) - (block - (if - (i32.lt_u - (get_local $4) - (i32.const 32) - ) - (loop $while-in37 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (i32.const 32) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in37) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $49) - (i32.add - (i32.load - (get_local $49) - ) - (tee_local $7 - (i32.sub - (get_local $12) - (get_local $10) - ) - ) - ) - ) - (i32.store - (get_local $41) - (i32.add - (i32.load - (get_local $41) - ) - (get_local $7) - ) - ) - (if - (i32.eq - (get_local $12) - (get_local $10) - ) - (set_local $12 - (i32.load - (get_local $20) - ) - ) - (block - (set_local $2 - (i32.load - (get_local $20) - ) - ) - (set_local $12 - (i32.add - (get_local $14) - (i32.sub - (i32.const 0) - (get_local $7) - ) - ) - ) - (i32.store - (get_local $20) - (tee_local $12 - (if i32 - (i32.load - (get_local $28) - ) - (call $_crc32 - (get_local $2) - (get_local $12) - (get_local $7) - ) - (call $_adler32 - (get_local $2) - (get_local $12) - (get_local $7) - ) - ) - ) - ) - (i32.store - (get_local $36) - (get_local $12) - ) - ) - ) - (set_local $7 - (i32.eqz - (i32.load - (get_local $28) - ) - ) - ) - (set_local $2 - (call $_llvm_bswap_i32 - (get_local $3) - ) - ) - (if - (i32.eq - (if i32 - (get_local $7) - (get_local $2) - (get_local $3) - ) - (get_local $12) - ) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (set_local $12 - (get_local $10) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 14179) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (set_local $12 - (get_local $10) - ) - (br $do-once96) - ) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 27) - ) - (br $__rjti$7) - ) - (br $__rjti$7) - ) - (set_local $19 - (i32.const -2) - ) - (br $__rjti$33) - ) - (loop $while-in41 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $2) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $2) - ) - (get_local $3) - ) - ) - (if - (i32.ge_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (i32.const 32) - ) - (block - (set_local $5 - (get_local $4) - ) - (br $__rjti$8) - ) - (block - (set_local $5 - (get_local $4) - ) - (br $while-in41) - ) - ) - ) - (br $do-once96) - ) - (br_if $__rjti$27 - (i32.eqz - (i32.load - (get_local $66) - ) - ) - ) - (i32.store - (get_local $20) - (tee_local $2 - (call $_adler32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $36) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.const 11) - ) - (br $__rjti$9) - ) - (i32.store - (get_local $8) - (i32.const 15) - ) - (br $__rjti$10) - ) - (set_local $3 - (get_local $2) - ) - (set_local $5 - (get_local $4) - ) - (loop $while-in43 - (set_local $4 - (if i32 - (i32.lt_u - (get_local $3) - (i32.const 3) - ) - (block i32 - (if - (i32.eqz - (get_local $7) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $3) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $5) - ) - (set_local $23 - (get_local $6) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const -1) - ) - ) - (set_local $5 - (i32.add - (i32.shl - (i32.load8_u - (get_local $6) - ) - (get_local $3) - ) - (get_local $5) - ) - ) - (set_local $2 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (block i32 - (set_local $2 - (get_local $6) - ) - (get_local $3) - ) - ) - ) - (i32.store - (get_local $33) - (tee_local $6 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - ) - (i32.store16 - (i32.add - (i32.add - (get_local $8) - (i32.const 112) - ) - (i32.shl - (i32.load16_u - (i32.add - (i32.shl - (get_local $9) - (i32.const 1) - ) - (i32.const 12280) - ) - ) - (i32.const 1) - ) - ) - (i32.and - (get_local $5) - (i32.const 7) - ) - ) - (set_local $5 - (i32.shr_u - (get_local $5) - (i32.const 3) - ) - ) - (set_local $3 - (i32.add - (get_local $4) - (i32.const -3) - ) - ) - (if - (i32.lt_u - (get_local $6) - (get_local $13) - ) - (block - (set_local $9 - (get_local $6) - ) - (set_local $6 - (get_local $2) - ) - (br $while-in43) - ) - (block - (set_local $11 - (get_local $6) - ) - (set_local $4 - (get_local $3) - ) - (set_local $6 - (get_local $7) - ) - (set_local $3 - (get_local $5) - ) - (set_local $5 - (get_local $2) - ) - (br $__rjti$11) - ) - ) - ) - (br $do-once96) - ) - (br_if $__rjti$30 - (i32.eqz - (i32.load - (get_local $45) - ) - ) - ) - (br_if $__rjti$30 - (i32.eqz - (i32.load - (get_local $28) - ) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.const 32) - ) - (loop $while-in45 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (i32.const 32) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in45) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (i32.load - (get_local $41) - ) - ) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$30) - ) - ) - (i32.store - (get_local $27) - (i32.const 14200) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - (if - (tee_local $4 - (i32.load - (get_local $31) - ) - ) - (i32.store offset=4 - (get_local $4) - (get_local $3) - ) - ) - (if - (i32.and - (i32.load - (get_local $28) - ) - (i32.const 512) - ) - (block - (i32.store8 - (get_local $30) - (get_local $3) - ) - (i32.store8 - (get_local $39) - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (i32.store8 - (get_local $72) - (i32.shr_u - (get_local $3) - (i32.const 16) - ) - ) - (i32.store8 - (get_local $73) - (i32.shr_u - (get_local $3) - (i32.const 24) - ) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $30) - (i32.const 4) - ) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 3) - ) - (set_local $2 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$12) - ) - (br_if $__rjti$31 - (get_local $67) - ) - (br $__rjti$13) - ) - (if - (i32.eqz - (tee_local $2 - (i32.load - (get_local $26) - ) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 11) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (br_if $__rjti$31 - (i32.eqz - (tee_local $7 - (if i32 - (i32.gt_u - (if i32 - (i32.gt_u - (get_local $2) - (get_local $6) - ) - (tee_local $2 - (get_local $6) - ) - (get_local $2) - ) - (get_local $10) - ) - (get_local $10) - (get_local $2) - ) - ) - ) - ) - (drop - (call $_memcpy - (get_local $14) - (get_local $5) - (get_local $7) - ) - ) - (i32.store - (get_local $26) - (i32.sub - (i32.load - (get_local $26) - ) - (get_local $7) - ) - ) - (set_local $6 - (i32.sub - (get_local $6) - (get_local $7) - ) - ) - (set_local $2 - (i32.sub - (get_local $10) - (get_local $7) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (get_local $7) - ) - ) - (set_local $14 - (i32.add - (get_local $14) - (get_local $7) - ) - ) - (br $do-once96) - ) - (if - (i32.lt_u - (get_local $11) - (i32.const 19) - ) - (block - (loop $do-in - (i32.store16 - (i32.add - (i32.add - (get_local $8) - (i32.const 112) - ) - (i32.shl - (i32.load16_u - (i32.add - (i32.shl - (get_local $11) - (i32.const 1) - ) - (i32.const 12280) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (br_if $do-in - (i32.ne - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (i32.const 19) - ) - ) - ) - (i32.store - (get_local $33) - (i32.const 19) - ) - ) - ) - (i32.store - (get_local $37) - (get_local $52) - ) - (i32.store - (get_local $40) - (get_local $52) - ) - (i32.store - (get_local $35) - (i32.const 7) - ) - (if - (tee_local $11 - (call $_inflate_table - (i32.const 0) - (get_local $61) - (i32.const 19) - (get_local $37) - (get_local $35) - (get_local $57) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 14041) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - ) - (block - (i32.store - (get_local $33) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.const 18) - ) - (set_local $13 - (i32.const 0) - ) - (set_local $9 - (get_local $3) - ) - (set_local $2 - (get_local $5) - ) - (set_local $7 - (i32.const 0) - ) - (br $__rjti$14) - ) - ) - (br $do-once96) - ) - (loop $while-in49 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $2) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $2) - ) - (get_local $3) - ) - ) - (if - (i32.ge_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (i32.const 16) - ) - (block - (set_local $5 - (get_local $4) - ) - (br $__rjti$15) - ) - (block - (set_local $5 - (get_local $4) - ) - (br $while-in49) - ) - ) - ) - (br $do-once96) - ) - (if - (i32.load - (get_local $54) - ) - (block - (i32.store - (get_local $8) - (i32.const 26) - ) - (set_local $4 - (i32.sub - (get_local $4) - (tee_local $2 - (i32.and - (get_local $4) - (i32.const 7) - ) - ) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (set_local $2 - (if i32 - (i32.lt_u - (get_local $4) - (i32.const 3) - ) - (block i32 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $__rjti$31) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (get_local $4) - ) - ) - (i32.store - (get_local $54) - (i32.and - (get_local $3) - (i32.const 1) - ) - ) - (block $switch50 - (block $switch-default55 - (block $switch-case54 - (block $switch-case53 - (block $switch-case52 - (block $switch-case51 - (br_table $switch-case51 $switch-case52 $switch-case53 $switch-case54 $switch-default55 - (i32.and - (i32.shr_u - (get_local $3) - (i32.const 1) - ) - (i32.const 3) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 13) - ) - (br $switch50) - ) - (i32.store - (get_local $40) - (i32.const 10104) - ) - (i32.store - (get_local $35) - (i32.const 9) - ) - (i32.store - (get_local $55) - (i32.const 12152) - ) - (i32.store - (get_local $46) - (i32.const 5) - ) - (i32.store - (get_local $8) - (i32.const 19) - ) - (br_if $__rjti$28 - (get_local $56) - ) - (br $switch50) - ) - (i32.store - (get_local $8) - (i32.const 16) - ) - (br $switch50) - ) - (i32.store - (get_local $27) - (i32.const 13957) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (br $switch50) - ) - (br $__rjto$33) - ) - (set_local $4 - (i32.add - (get_local $2) - (i32.const -3) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - (if - (i32.lt_u - (get_local $13) - (i32.add - (tee_local $5 - (i32.load - (get_local $51) - ) - ) - (tee_local $11 - (i32.load - (get_local $50) - ) - ) - ) - ) - (block - (set_local $25 - (get_local $13) - ) - (set_local $32 - (get_local $5) - ) - (set_local $13 - (get_local $11) - ) - (set_local $3 - (get_local $4) - ) - (set_local $5 - (get_local $6) - ) - (set_local $4 - (get_local $9) - ) - (set_local $11 - (get_local $2) - ) - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (loop $label$continue$L181 - (if - (i32.gt_u - (tee_local $15 - (i32.load8_u offset=1 - (i32.add - (tee_local $64 - (i32.load - (get_local $40) - ) - ) - (i32.shl - (tee_local $9 - (i32.and - (tee_local $75 - (i32.add - (i32.shl - (i32.const 1) - (i32.load - (get_local $35) - ) - ) - (i32.const -1) - ) - ) - (get_local $4) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (get_local $3) - ) - (block - (set_local $6 - (get_local $5) - ) - (loop $while-in59 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $3) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $4) - ) - (set_local $23 - (get_local $11) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $7) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (if - (i32.gt_u - (tee_local $15 - (i32.load8_u offset=1 - (i32.add - (get_local $64) - (i32.shl - (tee_local $9 - (i32.and - (get_local $75) - (tee_local $4 - (i32.add - (i32.shl - (i32.load8_u - (get_local $11) - ) - (get_local $3) - ) - (get_local $4) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - (block - (set_local $11 - (get_local $2) - ) - (br $while-in59) - ) - (block - (set_local $5 - (get_local $4) - ) - (set_local $11 - (get_local $2) - ) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $5) - ) - (set_local $5 - (get_local $4) - ) - ) - ) - (if - (i32.lt_s - (i32.and - (tee_local $9 - (i32.load16_s offset=2 - (i32.add - (get_local $64) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - (i32.const 16) - ) - (block - (if - (i32.lt_u - (get_local $3) - (get_local $15) - ) - (loop $while-in61 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $3) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $5) - ) - (set_local $23 - (get_local $11) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $7) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $5 - (i32.add - (i32.shl - (i32.load8_u - (get_local $11) - ) - (get_local $3) - ) - (get_local $5) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (get_local $15) - ) - (block - (set_local $11 - (get_local $4) - ) - (br $while-in61) - ) - (block - (set_local $2 - (get_local $5) - ) - (set_local $11 - (get_local $4) - ) - ) - ) - ) - (set_local $2 - (get_local $5) - ) - ) - (i32.store - (get_local $33) - (i32.add - (get_local $25) - (i32.const 1) - ) - ) - (i32.store16 - (i32.add - (i32.add - (get_local $8) - (i32.const 112) - ) - (i32.shl - (get_local $25) - (i32.const 1) - ) - ) - (get_local $9) - ) - (set_local $3 - (i32.sub - (get_local $3) - (get_local $15) - ) - ) - (set_local $5 - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (get_local $2) - (get_local $15) - ) - ) - ) - (block - (set_local $3 - (block $switch62 i32 - (block $switch-default71 - (block $switch-case68 - (block $switch-case65 - (br_table $switch-case65 $switch-case68 $switch-default71 - (i32.sub - (get_local $9) - (i32.const 16) - ) - ) - ) - (if - (i32.lt_u - (get_local $3) - (tee_local $2 - (i32.add - (get_local $15) - (i32.const 2) - ) - ) - ) - (loop $while-in64 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $3) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $5) - ) - (set_local $23 - (get_local $11) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $7) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $5 - (i32.add - (i32.shl - (i32.load8_u - (get_local $11) - ) - (get_local $3) - ) - (get_local $5) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (get_local $2) - ) - (block - (set_local $11 - (get_local $4) - ) - (br $while-in64) - ) - (set_local $11 - (get_local $4) - ) - ) - ) - ) - (set_local $2 - (i32.shr_u - (get_local $5) - (get_local $15) - ) - ) - (set_local $4 - (i32.sub - (get_local $3) - (get_local $15) - ) - ) - (if - (i32.eqz - (get_local $25) - ) - (block - (set_local $3 - (get_local $2) - ) - (br $__rjti$0) - ) - ) - (set_local $9 - (i32.add - (i32.and - (get_local $2) - (i32.const 3) - ) - (i32.const 3) - ) - ) - (set_local $5 - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (get_local $2) - (i32.const 2) - ) - ) - (set_local $2 - (i32.load16_u offset=110 - (i32.add - (get_local $8) - (i32.shl - (get_local $25) - (i32.const 1) - ) - ) - ) - ) - (br $switch62 - (i32.add - (get_local $4) - (i32.const -2) - ) - ) - ) - (if - (i32.lt_u - (get_local $3) - (tee_local $2 - (i32.add - (get_local $15) - (i32.const 3) - ) - ) - ) - (loop $while-in67 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $3) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $5) - ) - (set_local $23 - (get_local $11) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $7) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $5 - (i32.add - (i32.shl - (i32.load8_u - (get_local $11) - ) - (get_local $3) - ) - (get_local $5) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (get_local $2) - ) - (block - (set_local $11 - (get_local $4) - ) - (br $while-in67) - ) - (set_local $11 - (get_local $4) - ) - ) - ) - ) - (set_local $9 - (i32.add - (i32.and - (tee_local $4 - (i32.shr_u - (get_local $5) - (get_local $15) - ) - ) - (i32.const 7) - ) - (i32.const 3) - ) - ) - (set_local $5 - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (get_local $4) - (i32.const 3) - ) - ) - (set_local $2 - (i32.const 0) - ) - (br $switch62 - (i32.add - (i32.sub - (i32.const -3) - (get_local $15) - ) - (get_local $3) - ) - ) - ) - (if - (i32.lt_u - (get_local $3) - (tee_local $2 - (i32.add - (get_local $15) - (i32.const 7) - ) - ) - ) - (loop $while-in70 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $3) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $5) - ) - (set_local $23 - (get_local $11) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $7) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (set_local $5 - (i32.add - (i32.shl - (i32.load8_u - (get_local $11) - ) - (get_local $3) - ) - (get_local $5) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (get_local $2) - ) - (block - (set_local $11 - (get_local $4) - ) - (br $while-in70) - ) - (set_local $11 - (get_local $4) - ) - ) - ) - ) - (set_local $9 - (i32.add - (i32.and - (tee_local $4 - (i32.shr_u - (get_local $5) - (get_local $15) - ) - ) - (i32.const 127) - ) - (i32.const 11) - ) - ) - (set_local $5 - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (get_local $4) - (i32.const 7) - ) - ) - (set_local $2 - (i32.const 0) - ) - (i32.add - (i32.sub - (i32.const -7) - (get_local $15) - ) - (get_local $3) - ) - ) - ) - (if - (i32.gt_u - (i32.add - (get_local $25) - (get_local $9) - ) - (i32.add - (get_local $32) - (get_local $13) - ) - ) - (block - (set_local $4 - (get_local $3) - ) - (set_local $3 - (get_local $6) - ) - (br $__rjti$1) - ) - ) - (i32.store - (get_local $33) - (i32.add - (get_local $25) - (i32.const 1) - ) - ) - (i32.store16 - (i32.add - (i32.add - (get_local $8) - (i32.const 112) - ) - (i32.shl - (get_local $25) - (i32.const 1) - ) - ) - (get_local $2) - ) - (if - (tee_local $4 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (loop $do-in73 - (i32.store - (get_local $33) - (i32.add - (tee_local $9 - (i32.load - (get_local $33) - ) - ) - (i32.const 1) - ) - ) - (i32.store16 - (i32.add - (i32.add - (get_local $8) - (i32.const 112) - ) - (i32.shl - (get_local $9) - (i32.const 1) - ) - ) - (get_local $2) - ) - (br_if $do-in73 - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (tee_local $25 - (i32.load - (get_local $33) - ) - ) - (i32.add - (tee_local $32 - (i32.load - (get_local $51) - ) - ) - (tee_local $4 - (i32.load - (get_local $50) - ) - ) - ) - ) - (block - (set_local $9 - (get_local $4) - ) - (set_local $4 - (get_local $3) - ) - (set_local $2 - (get_local $5) - ) - (set_local $3 - (get_local $6) - ) - (set_local $5 - (get_local $11) - ) - (br $__rjti$2) - ) - (block - (set_local $13 - (get_local $4) - ) - (set_local $4 - (get_local $6) - ) - (br $label$continue$L181) - ) - ) - ) - ) - (i32.store - (get_local $27) - (i32.const 14066) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (set_local $5 - (get_local $11) - ) - (set_local $11 - (get_local $7) - ) - (br $do-once96) - ) - (i32.store - (get_local $27) - (i32.const 14066) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $6 - (get_local $5) - ) - (set_local $2 - (get_local $10) - ) - (set_local $5 - (get_local $11) - ) - (set_local $11 - (get_local $7) - ) - (br $do-once96) - ) - (if - (i32.eq - (i32.load - (get_local $8) - ) - (i32.const 29) - ) - (block - (set_local $6 - (get_local $2) - ) - (set_local $2 - (get_local $10) - ) - (set_local $11 - (get_local $7) - ) - (br $do-once96) - ) - (block - (set_local $11 - (get_local $9) - ) - (set_local $6 - (get_local $2) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $9) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - (if - (i32.eqz - (i32.load16_s - (get_local $74) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 14092) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (set_local $11 - (get_local $7) - ) - (br $do-once96) - ) - ) - (i32.store - (get_local $37) - (get_local $52) - ) - (i32.store - (get_local $40) - (get_local $52) - ) - (i32.store - (get_local $35) - (i32.const 9) - ) - (if - (tee_local $11 - (call $_inflate_table - (i32.const 1) - (get_local $61) - (get_local $11) - (get_local $37) - (get_local $35) - (get_local $57) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 14129) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (i32.store - (get_local $55) - (i32.load - (get_local $37) - ) - ) - (i32.store - (get_local $46) - (i32.const 6) - ) - (if - (tee_local $11 - (call $_inflate_table - (i32.const 2) - (i32.add - (i32.add - (get_local $8) - (i32.const 112) - ) - (i32.shl - (i32.load - (get_local $50) - ) - (i32.const 1) - ) - ) - (i32.load - (get_local $51) - ) - (get_local $37) - (get_local $46) - (get_local $57) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 14157) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 19) - ) - (if - (get_local $56) - (block - (set_local $11 - (i32.const 0) - ) - (br $__rjti$31) - ) - (block - (set_local $11 - (i32.const 0) - ) - (br $__rjti$16) - ) - ) - ) - ) - (br $do-once96) - ) - (if - (tee_local $4 - (i32.load - (get_local $31) - ) - ) - (block - (i32.store offset=8 - (get_local $4) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.store offset=12 - (get_local $4) - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.and - (i32.load - (get_local $28) - ) - (i32.const 512) - ) - (block - (i32.store8 - (get_local $30) - (get_local $3) - ) - (i32.store8 - (get_local $39) - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $30) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 4) - ) - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - (br $__rjti$17) - ) - (i32.store - (get_local $8) - (i32.const 20) - ) - (br $__rjti$18) - ) - (if - (i32.and - (tee_local $7 - (i32.load - (get_local $28) - ) - ) - (i32.const 1024) - ) - (block - (if - (i32.lt_u - (get_local $4) - (i32.const 16) - ) - (block - (set_local $2 - (get_local $4) - ) - (loop $while-in77 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $2) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $4 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $2) - ) - (get_local $3) - ) - ) - (if - (i32.ge_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (i32.const 16) - ) - (set_local $5 - (get_local $4) - ) - (block - (set_local $5 - (get_local $4) - ) - (br $while-in77) - ) - ) - ) - ) - ) - (i32.store - (get_local $26) - (get_local $3) - ) - (if - (tee_local $4 - (i32.load - (get_local $31) - ) - ) - (i32.store offset=20 - (get_local $4) - (get_local $3) - ) - ) - (set_local $3 - (if i32 - (i32.and - (get_local $7) - (i32.const 512) - ) - (block i32 - (i32.store8 - (get_local $30) - (get_local $3) - ) - (i32.store8 - (get_local $39) - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $30) - (i32.const 2) - ) - ) - (set_local $4 - (i32.const 0) - ) - (i32.const 0) - ) - (block i32 - (set_local $4 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - (if - (tee_local $2 - (i32.load - (get_local $31) - ) - ) - (i32.store offset=16 - (get_local $2) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 5) - ) - (br $__rjti$19) - ) - (if - (i32.and - (i32.gt_u - (get_local $10) - (i32.const 257) - ) - (i32.gt_u - (get_local $6) - (i32.const 5) - ) - ) - (block - (i32.store - (get_local $38) - (get_local $14) - ) - (i32.store - (get_local $44) - (get_local $10) - ) - (i32.store - (get_local $0) - (get_local $5) - ) - (i32.store - (get_local $43) - (get_local $6) - ) - (i32.store - (get_local $53) - (get_local $3) - ) - (i32.store - (get_local $42) - (get_local $4) - ) - (call $_inflate_fast - (get_local $0) - (get_local $12) - ) - (set_local $14 - (i32.load - (get_local $38) - ) - ) - (set_local $2 - (i32.load - (get_local $44) - ) - ) - (set_local $5 - (i32.load - (get_local $0) - ) - ) - (set_local $6 - (i32.load - (get_local $43) - ) - ) - (set_local $3 - (i32.load - (get_local $53) - ) - ) - (set_local $4 - (i32.load - (get_local $42) - ) - ) - (br_if $do-once96 - (i32.ne - (i32.load - (get_local $8) - ) - (i32.const 11) - ) - ) - (i32.store - (get_local $29) - (i32.const -1) - ) - (br $do-once96) - ) - ) - (i32.store - (get_local $29) - (i32.const 0) - ) - (if - (i32.gt_u - (tee_local $7 - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (tee_local $25 - (i32.load - (get_local $40) - ) - ) - (i32.shl - (tee_local $13 - (i32.and - (tee_local $15 - (i32.add - (i32.shl - (i32.const 1) - (i32.load - (get_local $35) - ) - ) - (i32.const -1) - ) - ) - (get_local $3) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (get_local $4) - ) - (loop $while-in79 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $9 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (if - (i32.gt_u - (tee_local $7 - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (get_local $25) - (i32.shl - (tee_local $13 - (i32.and - (get_local $15) - (tee_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (block - (set_local $5 - (get_local $9) - ) - (br $while-in79) - ) - (set_local $5 - (get_local $9) - ) - ) - ) - ) - (set_local $15 - (i32.load16_s offset=2 - (i32.add - (get_local $25) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - ) - ) - (set_local $13 - (i32.and - (tee_local $9 - (i32.load8_s - (i32.add - (get_local $25) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (set_local $2 - (if i32 - (i32.and - (i32.ne - (get_local $9) - (i32.const 0) - ) - (i32.eqz - (i32.and - (get_local $13) - (i32.const 240) - ) - ) - ) - (block i32 - (if - (i32.gt_u - (i32.add - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (get_local $25) - (i32.shl - (tee_local $13 - (i32.add - (i32.shr_u - (i32.and - (get_local $3) - (tee_local $32 - (i32.add - (i32.shl - (i32.const 1) - (i32.add - (get_local $7) - (get_local $13) - ) - ) - (i32.const -1) - ) - ) - ) - (get_local $7) - ) - (tee_local $15 - (i32.and - (get_local $15) - (i32.const 65535) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - (get_local $7) - ) - (get_local $4) - ) - (loop $while-in81 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $9 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (if - (i32.gt_u - (i32.add - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (get_local $25) - (i32.shl - (tee_local $13 - (i32.add - (i32.shr_u - (i32.and - (tee_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (get_local $32) - ) - (get_local $7) - ) - (get_local $15) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - (get_local $7) - ) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (block - (set_local $5 - (get_local $9) - ) - (br $while-in81) - ) - (set_local $5 - (get_local $9) - ) - ) - ) - ) - (set_local $15 - (i32.load16_s offset=2 - (i32.add - (get_local $25) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - ) - ) - (set_local $9 - (i32.load8_s - (i32.add - (get_local $25) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $29) - (get_local $7) - ) - (set_local $32 - (get_local $7) - ) - (set_local $13 - (i32.sub - (get_local $4) - (get_local $7) - ) - ) - (set_local $4 - (get_local $2) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (get_local $7) - ) - ) - (get_local $15) - ) - (block i32 - (set_local $32 - (i32.const 0) - ) - (set_local $13 - (get_local $4) - ) - (set_local $4 - (get_local $2) - ) - (get_local $15) - ) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (tee_local $7 - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - ) - (set_local $4 - (i32.sub - (get_local $13) - (get_local $7) - ) - ) - (i32.store - (get_local $29) - (i32.add - (get_local $32) - (get_local $7) - ) - ) - (i32.store - (get_local $26) - (i32.and - (get_local $2) - (i32.const 65535) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $9) - (i32.const 255) - ) - ) - (block - (i32.store - (get_local $8) - (i32.const 25) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (if - (i32.and - (tee_local $2 - (i32.and - (get_local $9) - (i32.const 255) - ) - ) - (i32.const 32) - ) - (block - (i32.store - (get_local $29) - (i32.const -1) - ) - (i32.store - (get_local $8) - (i32.const 11) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 64) - ) - (block - (i32.store - (get_local $27) - (i32.const 14275) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - ) - (block - (i32.store - (get_local $47) - (tee_local $2 - (i32.and - (get_local $2) - (i32.const 15) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 21) - ) - (set_local $7 - (get_local $2) - ) - (br $__rjti$20) - ) - ) - (br $do-once96) - ) - (if - (i32.and - (tee_local $2 - (i32.load - (get_local $28) - ) - ) - (i32.const 1024) - ) - (block - (if - (tee_local $9 - (if i32 - (i32.gt_u - (tee_local $7 - (i32.load - (get_local $26) - ) - ) - (get_local $6) - ) - (get_local $6) - (get_local $7) - ) - ) - (block - (if - (tee_local $15 - (i32.load - (get_local $31) - ) - ) - (if - (tee_local $13 - (i32.load offset=16 - (get_local $15) - ) - ) - (block - (drop - (call $_memcpy - (i32.add - (get_local $13) - (tee_local $7 - (i32.sub - (i32.load offset=20 - (get_local $15) - ) - (get_local $7) - ) - ) - ) - (get_local $5) - (if i32 - (i32.gt_u - (i32.add - (get_local $7) - (get_local $9) - ) - (tee_local $2 - (i32.load offset=24 - (get_local $15) - ) - ) - ) - (i32.sub - (get_local $2) - (get_local $7) - ) - (get_local $9) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $28) - ) - ) - ) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 512) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $5) - (get_local $9) - ) - ) - ) - (i32.store - (get_local $26) - (tee_local $2 - (i32.sub - (i32.load - (get_local $26) - ) - (get_local $9) - ) - ) - ) - (set_local $6 - (i32.sub - (get_local $6) - (get_local $9) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (get_local $9) - ) - ) - ) - (set_local $2 - (get_local $7) - ) - ) - (br_if $__rjti$31 - (get_local $2) - ) - ) - ) - (i32.store - (get_local $26) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.const 6) - ) - (br $__rjti$21) - ) - (if - (get_local $7) - (block - (if - (i32.lt_u - (get_local $4) - (get_local $7) - ) - (loop $while-in83 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (get_local $7) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in83) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $26) - (tee_local $2 - (i32.add - (i32.load - (get_local $26) - ) - (i32.and - (i32.add - (i32.shl - (i32.const 1) - (get_local $7) - ) - (i32.const -1) - ) - (get_local $3) - ) - ) - ) - ) - (i32.store - (get_local $29) - (i32.add - (i32.load - (get_local $29) - ) - (get_local $7) - ) - ) - (set_local $4 - (i32.sub - (get_local $4) - (get_local $7) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (get_local $7) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $26) - ) - ) - ) - (i32.store - (get_local $68) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.const 22) - ) - (br $__rjti$22) - ) - (if - (i32.and - (i32.load - (get_local $28) - ) - (i32.const 2048) - ) - (block - (if - (get_local $6) - (set_local $2 - (i32.const 0) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $__rjti$31) - ) - ) - (loop $while-in87 - (set_local $15 - (i32.load8_s - (i32.add - (get_local $5) - (get_local $2) - ) - ) - ) - (if - (tee_local $13 - (i32.load - (get_local $31) - ) - ) - (if - (tee_local $7 - (i32.load offset=28 - (get_local $13) - ) - ) - (if - (i32.lt_u - (tee_local $9 - (i32.load - (get_local $26) - ) - ) - (i32.load offset=32 - (get_local $13) - ) - ) - (block - (i32.store - (get_local $26) - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (get_local $7) - (get_local $9) - ) - (get_local $15) - ) - ) - ) - ) - ) - (br_if $while-in87 - (i32.and - (tee_local $7 - (i32.ne - (get_local $15) - (i32.const 0) - ) - ) - (i32.gt_u - (get_local $6) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $9 - (get_local $2) - ) - (set_local $2 - (get_local $7) - ) - ) - (if - (i32.and - (i32.load - (get_local $28) - ) - (i32.const 512) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $5) - (get_local $9) - ) - ) - ) - (set_local $6 - (i32.sub - (get_local $6) - (get_local $9) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (get_local $9) - ) - ) - (br_if $__rjti$31 - (get_local $2) - ) - ) - (if - (tee_local $2 - (i32.load - (get_local $31) - ) - ) - (i32.store offset=28 - (get_local $2) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $26) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.const 7) - ) - (br $__rjti$23) - ) - (if - (i32.gt_u - (tee_local $13 - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (tee_local $25 - (i32.load - (get_local $55) - ) - ) - (i32.shl - (tee_local $9 - (i32.and - (tee_local $15 - (i32.add - (i32.shl - (i32.const 1) - (i32.load - (get_local $46) - ) - ) - (i32.const -1) - ) - ) - (get_local $3) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (get_local $4) - ) - (loop $while-in89 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $7 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (if - (i32.gt_u - (tee_local $13 - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (get_local $25) - (i32.shl - (tee_local $9 - (i32.and - (get_local $15) - (tee_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (block - (set_local $5 - (get_local $7) - ) - (br $while-in89) - ) - (set_local $5 - (get_local $7) - ) - ) - ) - ) - (set_local $15 - (i32.load16_s offset=2 - (i32.add - (get_local $25) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (set_local $2 - (if i32 - (i32.and - (tee_local $9 - (i32.and - (tee_local $7 - (i32.load8_s - (i32.add - (get_local $25) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const 240) - ) - (block i32 - (set_local $25 - (i32.load - (get_local $29) - ) - ) - (set_local $32 - (get_local $4) - ) - (set_local $4 - (get_local $2) - ) - (get_local $15) - ) - (block i32 - (if - (i32.gt_u - (i32.add - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (get_local $25) - (i32.shl - (tee_local $9 - (i32.add - (i32.shr_u - (i32.and - (get_local $3) - (tee_local $32 - (i32.add - (i32.shl - (i32.const 1) - (i32.add - (get_local $13) - (get_local $9) - ) - ) - (i32.const -1) - ) - ) - ) - (get_local $13) - ) - (tee_local $15 - (i32.and - (get_local $15) - (i32.const 65535) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - (get_local $13) - ) - (get_local $4) - ) - (loop $while-in91 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $7 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (if - (i32.gt_u - (i32.add - (i32.and - (tee_local $2 - (i32.load8_s offset=1 - (i32.add - (get_local $25) - (i32.shl - (tee_local $9 - (i32.add - (i32.shr_u - (i32.and - (tee_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (get_local $32) - ) - (get_local $13) - ) - (get_local $15) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 255) - ) - (get_local $13) - ) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (block - (set_local $5 - (get_local $7) - ) - (br $while-in91) - ) - (set_local $5 - (get_local $7) - ) - ) - ) - ) - (set_local $15 - (i32.load16_s offset=2 - (i32.add - (get_local $25) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (set_local $9 - (i32.load8_s - (i32.add - (get_local $25) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $29) - (tee_local $7 - (i32.add - (i32.load - (get_local $29) - ) - (get_local $13) - ) - ) - ) - (set_local $25 - (get_local $7) - ) - (set_local $32 - (i32.sub - (get_local $4) - (get_local $13) - ) - ) - (set_local $7 - (get_local $9) - ) - (set_local $4 - (get_local $2) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (get_local $13) - ) - ) - (get_local $15) - ) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (tee_local $9 - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - ) - ) - (set_local $4 - (i32.sub - (get_local $32) - (get_local $9) - ) - ) - (i32.store - (get_local $29) - (i32.add - (get_local $25) - (get_local $9) - ) - ) - (if - (i32.and - (tee_local $7 - (i32.and - (get_local $7) - (i32.const 255) - ) - ) - (i32.const 64) - ) - (block - (i32.store - (get_local $27) - (i32.const 14253) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - ) - (block - (i32.store - (get_local $48) - (i32.and - (get_local $2) - (i32.const 65535) - ) - ) - (i32.store - (get_local $47) - (tee_local $2 - (i32.and - (get_local $7) - (i32.const 15) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 23) - ) - (set_local $7 - (get_local $2) - ) - (br $__rjti$24) - ) - ) - (br $do-once96) - ) - (if - (i32.and - (i32.load - (get_local $28) - ) - (i32.const 4096) - ) - (block - (if - (get_local $6) - (set_local $2 - (i32.const 0) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $__rjti$31) - ) - ) - (loop $while-in93 - (set_local $15 - (i32.load8_s - (i32.add - (get_local $5) - (get_local $2) - ) - ) - ) - (if - (tee_local $13 - (i32.load - (get_local $31) - ) - ) - (if - (tee_local $7 - (i32.load offset=36 - (get_local $13) - ) - ) - (if - (i32.lt_u - (tee_local $9 - (i32.load - (get_local $26) - ) - ) - (i32.load offset=40 - (get_local $13) - ) - ) - (block - (i32.store - (get_local $26) - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (get_local $7) - (get_local $9) - ) - (get_local $15) - ) - ) - ) - ) - ) - (br_if $while-in93 - (i32.and - (tee_local $7 - (i32.ne - (get_local $15) - (i32.const 0) - ) - ) - (i32.gt_u - (get_local $6) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $9 - (get_local $2) - ) - (set_local $2 - (get_local $7) - ) - ) - (if - (i32.and - (i32.load - (get_local $28) - ) - (i32.const 512) - ) - (i32.store - (get_local $20) - (call $_crc32 - (i32.load - (get_local $20) - ) - (get_local $5) - (get_local $9) - ) - ) - ) - (set_local $6 - (i32.sub - (get_local $6) - (get_local $9) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (get_local $9) - ) - ) - (br_if $__rjti$31 - (get_local $2) - ) - ) - (if - (tee_local $2 - (i32.load - (get_local $31) - ) - ) - (i32.store offset=36 - (get_local $2) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 8) - ) - (br $__rjti$25) - ) - (if - (get_local $7) - (block - (if - (i32.lt_u - (get_local $4) - (get_local $7) - ) - (loop $while-in95 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (get_local $7) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in95) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $48) - (i32.add - (i32.load - (get_local $48) - ) - (i32.and - (i32.add - (i32.shl - (i32.const 1) - (get_local $7) - ) - (i32.const -1) - ) - (get_local $3) - ) - ) - ) - (i32.store - (get_local $29) - (i32.add - (i32.load - (get_local $29) - ) - (get_local $7) - ) - ) - (set_local $4 - (i32.sub - (get_local $4) - (get_local $7) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (get_local $7) - ) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 24) - ) - (br $__rjti$26) - ) - (if - (i32.and - (tee_local $7 - (i32.load - (get_local $28) - ) - ) - (i32.const 512) - ) - (block - (if - (i32.lt_u - (get_local $4) - (i32.const 16) - ) - (loop $while-in99 - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (i32.const 0) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $label$break$L17) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (set_local $2 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (get_local $5) - ) - (get_local $4) - ) - (get_local $3) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (i32.const 16) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-in99) - ) - (set_local $5 - (get_local $2) - ) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (i32.and - (i32.load - (get_local $20) - ) - (i32.const 65535) - ) - ) - (block - (set_local $4 - (i32.const 0) - ) - (set_local $3 - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $27) - (i32.const 13937) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - ) - ) - (if - (tee_local $2 - (i32.load - (get_local $31) - ) - ) - (block - (i32.store offset=44 - (get_local $2) - (i32.and - (i32.shr_u - (get_local $7) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (i32.store offset=48 - (get_local $2) - (i32.const 1) - ) - ) - ) - (i32.store - (get_local $20) - (tee_local $2 - (call $_crc32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $36) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.const 11) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - (if - (i32.eqz - (get_local $10) - ) - (block - (set_local $10 - (i32.const 0) - ) - (br $__rjti$31) - ) - ) - (if - (i32.gt_u - (tee_local $9 - (i32.load - (get_local $48) - ) - ) - (tee_local $2 - (i32.sub - (get_local $12) - (get_local $10) - ) - ) - ) - (block - (if - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $9) - (get_local $2) - ) - ) - (i32.load - (get_local $69) - ) - ) - (if - (i32.load - (get_local $70) - ) - (block - (i32.store - (get_local $27) - (i32.const 14223) - ) - (i32.store - (get_local $8) - (i32.const 29) - ) - (set_local $2 - (get_local $10) - ) - (br $do-once96) - ) - ) - ) - (set_local $2 - (if i32 - (i32.gt_u - (get_local $2) - (tee_local $7 - (i32.load - (get_local $71) - ) - ) - ) - (block i32 - (set_local $9 - (tee_local $2 - (i32.sub - (get_local $2) - (get_local $7) - ) - ) - ) - (i32.add - (i32.load - (get_local $59) - ) - (i32.sub - (i32.load - (get_local $60) - ) - (get_local $2) - ) - ) - ) - (block i32 - (set_local $9 - (get_local $2) - ) - (i32.add - (i32.load - (get_local $59) - ) - (i32.sub - (get_local $7) - (get_local $2) - ) - ) - ) - ) - ) - (set_local $13 - (tee_local $7 - (i32.load - (get_local $26) - ) - ) - ) - (if - (i32.le_u - (get_local $9) - (get_local $7) - ) - (set_local $7 - (get_local $9) - ) - ) - ) - (block - (set_local $13 - (tee_local $7 - (i32.load - (get_local $26) - ) - ) - ) - (set_local $2 - (i32.add - (get_local $14) - (i32.sub - (i32.const 0) - (get_local $9) - ) - ) - ) - ) - ) - (i32.store - (get_local $26) - (i32.sub - (get_local $13) - (if i32 - (i32.gt_u - (get_local $7) - (get_local $10) - ) - (tee_local $7 - (get_local $10) - ) - (get_local $7) - ) - ) - ) - (set_local $9 - (get_local $7) - ) - (set_local $13 - (get_local $2) - ) - (set_local $2 - (get_local $14) - ) - (loop $while-in101 - (set_local $14 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $2) - (i32.load8_s - (get_local $13) - ) - ) - (if - (tee_local $9 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (block - (set_local $13 - (i32.add - (get_local $13) - (i32.const 1) - ) - ) - (set_local $2 - (get_local $14) - ) - (br $while-in101) - ) - ) - ) - (set_local $2 - (i32.sub - (get_local $10) - (get_local $7) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $26) - ) - ) - (i32.store - (get_local $8) - (i32.const 20) - ) - ) - ) - (set_local $7 - (i32.load - (get_local $8) - ) - ) - (set_local $10 - (get_local $2) - ) - (br $label$continue$L17) - ) - ) - (br $__rjto$33) - ) - (i32.store - (get_local $38) - (get_local $14) - ) - (i32.store - (get_local $44) - (get_local $10) - ) - (i32.store - (get_local $0) - (get_local $5) - ) - (i32.store - (get_local $43) - (get_local $6) - ) - (i32.store - (get_local $53) - (get_local $3) - ) - (i32.store - (get_local $42) - (get_local $4) - ) - (set_global $STACKTOP - (get_local $34) - ) - (return - (i32.const 2) - ) - (br $__rjto$33) - ) - (set_local $16 - (get_local $10) - ) - (set_local $21 - (i32.add - (get_local $2) - (i32.const -3) - ) - ) - (set_local $18 - (get_local $6) - ) - (set_local $22 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $__rjto$33) - ) - (i32.store - (get_local $8) - (i32.const 28) - ) - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (get_local $6) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (i32.const 1) - ) - (br $__rjto$33) - ) - (set_local $16 - (get_local $10) - ) - (set_local $21 - (get_local $4) - ) - (set_local $18 - (get_local $6) - ) - (set_local $22 - (get_local $3) - ) - (set_local $23 - (get_local $5) - ) - (set_local $17 - (get_local $12) - ) - (set_local $24 - (get_local $14) - ) - (set_local $19 - (get_local $11) - ) - (br $__rjto$33) - ) - (set_global $STACKTOP - (get_local $34) - ) - (return - (i32.const -4) - ) - (br $__rjto$33) - ) - (set_global $STACKTOP - (get_local $34) - ) - (return - (get_local $19) - ) - ) - (i32.store - (get_local $38) - (get_local $24) - ) - (i32.store - (get_local $44) - (get_local $16) - ) - (i32.store - (get_local $0) - (get_local $23) - ) - (i32.store - (get_local $43) - (get_local $18) - ) - (i32.store - (get_local $53) - (get_local $22) - ) - (i32.store - (get_local $42) - (get_local $21) - ) - (block $do-once102 - (block $__rjti$34 - (br_if $__rjti$34 - (i32.load - (get_local $60) - ) - ) - (br_if $__rjti$34 - (i32.eqz - (i32.or - (i32.gt_u - (i32.load - (get_local $8) - ) - (i32.const 25) - ) - (i32.eq - (get_local $17) - (get_local $16) - ) - ) - ) - ) - (br $do-once102) - ) - (if - (i32.eqz - (call $_updatewindow - (get_local $0) - (get_local $17) - ) - ) - (block - (set_local $18 - (i32.load - (get_local $43) - ) - ) - (set_local $16 - (i32.load - (get_local $44) - ) - ) - (br $do-once102) - ) - ) - (i32.store - (get_local $8) - (i32.const 30) - ) - (set_global $STACKTOP - (get_local $34) - ) - (return - (i32.const -4) - ) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (i32.add - (i32.sub - (get_local $63) - (get_local $18) - ) - (i32.load - (get_local $12) - ) - ) - ) - (i32.store - (get_local $49) - (i32.add - (i32.load - (get_local $49) - ) - (tee_local $10 - (i32.sub - (get_local $17) - (get_local $16) - ) - ) - ) - ) - (i32.store - (get_local $41) - (i32.add - (i32.load - (get_local $41) - ) - (get_local $10) - ) - ) - (if - (i32.and - (i32.ne - (get_local $17) - (get_local $16) - ) - (i32.ne - (i32.load - (get_local $45) - ) - (i32.const 0) - ) - ) - (block - (set_local $14 - (i32.load - (get_local $20) - ) - ) - (set_local $12 - (i32.add - (i32.load - (get_local $38) - ) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - ) - (i32.store - (get_local $20) - (tee_local $12 - (if i32 - (i32.load - (get_local $28) - ) - (call $_crc32 - (get_local $14) - (get_local $12) - (get_local $10) - ) - (call $_adler32 - (get_local $14) - (get_local $12) - (get_local $10) - ) - ) - ) - ) - (i32.store - (get_local $36) - (get_local $12) - ) - ) - ) - (set_local $12 - (i32.load - (get_local $8) - ) - ) - (i32.store offset=44 - (get_local $0) - (i32.add - (i32.add - (i32.add - (if i32 - (i32.load - (get_local $54) - ) - (i32.const 64) - (i32.const 0) - ) - (i32.load - (get_local $42) - ) - ) - (if i32 - (i32.eq - (get_local $12) - (i32.const 11) - ) - (i32.const 128) - (i32.const 0) - ) - ) - (if i32 - (i32.or - (i32.eq - (get_local $12) - (i32.const 19) - ) - (i32.eq - (get_local $12) - (i32.const 14) - ) - ) - (i32.const 256) - (i32.const 0) - ) - ) - ) - (set_global $STACKTOP - (get_local $34) - ) - (if i32 - (i32.and - (i32.eqz - (get_local $19) - ) - (i32.or - (i32.eq - (get_local $1) - (i32.const 4) - ) - (i32.and - (i32.eq - (get_local $63) - (get_local $18) - ) - (i32.eq - (get_local $17) - (get_local $16) - ) - ) - ) - ) - (i32.const -5) - (get_local $19) - ) - ) - (func $_malloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (set_local $13 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $18 - (get_local $13) - ) - (block $do-once - (if - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block - (if - (i32.and - (tee_local $12 - (i32.shr_u - (tee_local $6 - (i32.load - (i32.const 17796) - ) - ) - (tee_local $14 - (i32.shr_u - (tee_local $5 - (if i32 - (i32.lt_u - (get_local $0) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (set_local $7 - (i32.load - (tee_local $1 - (i32.add - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (tee_local $3 - (i32.add - (i32.shl - (tee_local $4 - (i32.add - (i32.xor - (i32.and - (get_local $12) - (i32.const 1) - ) - (i32.const 1) - ) - (get_local $14) - ) - ) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (get_local $7) - ) - (i32.store - (i32.const 17796) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - ) - (get_local $5) - ) - (block - (i32.store - (get_local $0) - (get_local $3) - ) - (i32.store - (get_local $2) - (get_local $7) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (get_local $5) - (i32.or - (tee_local $0 - (i32.shl - (get_local $4) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $5) - (get_local $0) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (get_local $1) - ) - ) - ) - (if - (i32.gt_u - (get_local $5) - (tee_local $0 - (i32.load - (i32.const 17804) - ) - ) - ) - (block - (if - (get_local $12) - (block - (set_local $9 - (i32.and - (i32.shr_u - (tee_local $2 - (i32.add - (i32.and - (tee_local $2 - (i32.and - (i32.shl - (get_local $12) - (get_local $14) - ) - (i32.or - (tee_local $2 - (i32.shl - (i32.const 2) - (get_local $14) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (set_local $8 - (i32.load - (tee_local $7 - (i32.add - (tee_local $10 - (i32.load - (tee_local $2 - (i32.add - (tee_local $9 - (i32.add - (i32.shl - (tee_local $12 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $2) - (get_local $9) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $9) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (get_local $7) - (get_local $2) - ) - ) - ) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (get_local $9) - (get_local $8) - ) - (block - (i32.store - (i32.const 17796) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $12) - ) - (i32.const -1) - ) - ) - ) - (set_local $4 - (get_local $0) - ) - ) - (block - (if - (i32.lt_u - (get_local $8) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 12) - ) - ) - ) - (get_local $10) - ) - (block - (i32.store - (get_local $0) - (get_local $9) - ) - (i32.store - (get_local $2) - (get_local $8) - ) - (set_local $4 - (i32.load - (i32.const 17804) - ) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (get_local $10) - (i32.or - (get_local $5) - (i32.const 3) - ) - ) - (i32.store offset=4 - (tee_local $9 - (i32.add - (get_local $10) - (get_local $5) - ) - ) - (i32.or - (tee_local $5 - (i32.sub - (i32.shl - (get_local $12) - (i32.const 3) - ) - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $9) - (get_local $5) - ) - (get_local $5) - ) - (if - (get_local $4) - (block - (set_local $12 - (i32.load - (i32.const 17816) - ) - ) - (set_local $4 - (i32.add - (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $4) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (if - (i32.and - (tee_local $2 - (i32.load - (i32.const 17796) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $2 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (set_local $3 - (get_local $2) - ) - (set_local $1 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17796) - (i32.or - (get_local $2) - (get_local $0) - ) - ) - (set_local $3 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (set_local $1 - (get_local $4) - ) - ) - ) - (i32.store - (get_local $3) - (get_local $12) - ) - (i32.store offset=12 - (get_local $1) - (get_local $12) - ) - (i32.store offset=8 - (get_local $12) - (get_local $1) - ) - (i32.store offset=12 - (get_local $12) - (get_local $4) - ) - ) - ) - (i32.store - (i32.const 17804) - (get_local $5) - ) - (i32.store - (i32.const 17816) - (get_local $9) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (get_local $7) - ) - ) - ) - (if - (tee_local $0 - (i32.load - (i32.const 17800) - ) - ) - (block - (set_local $3 - (i32.and - (i32.shr_u - (tee_local $0 - (i32.add - (i32.and - (get_local $0) - (i32.sub - (i32.const 0) - (get_local $0) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (set_local $4 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $1 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $0) - (get_local $3) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $3) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (get_local $1) - (get_local $0) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (set_local $3 - (get_local $1) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (tee_local $0 - (i32.load offset=16 - (get_local $3) - ) - ) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load offset=20 - (get_local $3) - ) - ) - ) - (block - (set_local $7 - (get_local $4) - ) - (set_local $9 - (get_local $1) - ) - (br $while-out) - ) - ) - ) - (if - (tee_local $7 - (i32.lt_u - (tee_local $3 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (get_local $4) - ) - ) - (set_local $4 - (get_local $3) - ) - ) - (set_local $3 - (get_local $0) - ) - (if - (get_local $7) - (set_local $1 - (get_local $0) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (get_local $9) - (tee_local $12 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (get_local $9) - (tee_local $10 - (i32.add - (get_local $9) - (get_local $5) - ) - ) - ) - (call $_abort) - ) - (set_local $6 - (i32.load offset=24 - (get_local $9) - ) - ) - (block $do-once4 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $9) - ) - ) - (get_local $9) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $9) - (i32.const 20) - ) - ) - ) - ) - ) - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - ) - ) - ) - (block - (set_local $8 - (i32.const 0) - ) - (br $do-once4) - ) - ) - ) - (loop $while-in7 - (if - (tee_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in7) - ) - ) - (if - (tee_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $3) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $12) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $8 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $4 - (i32.load offset=8 - (get_local $9) - ) - ) - (get_local $12) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - ) - (get_local $9) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $9) - ) - (block - (i32.store - (get_local $3) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $4) - ) - (set_local $8 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once8 - (if - (get_local $6) - (block - (if - (i32.eq - (get_local $9) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $9) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $8) - ) - (if - (i32.eqz - (get_local $8) - ) - (block - (i32.store - (i32.const 17800) - (i32.and - (i32.load - (i32.const 17800) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (get_local $9) - ) - (i32.store - (get_local $0) - (get_local $8) - ) - (i32.store offset=20 - (get_local $6) - (get_local $8) - ) - ) - (br_if $do-once8 - (i32.eqz - (get_local $8) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $8) - (tee_local $0 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $8) - (get_local $6) - ) - (if - (tee_local $1 - (i32.load offset=16 - (get_local $9) - ) - ) - (if - (i32.lt_u - (get_local $1) - (get_local $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $8) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $8) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load offset=20 - (get_local $9) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $8) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $8) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $9) - (i32.or - (tee_local $0 - (i32.add - (get_local $7) - (get_local $5) - ) - ) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $9) - (get_local $0) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (get_local $9) - (i32.or - (get_local $5) - (i32.const 3) - ) - ) - (i32.store offset=4 - (get_local $10) - (i32.or - (get_local $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $10) - (get_local $7) - ) - (get_local $7) - ) - (if - (tee_local $0 - (i32.load - (i32.const 17804) - ) - ) - (block - (set_local $4 - (i32.load - (i32.const 17816) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17796) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (set_local $15 - (get_local $1) - ) - (set_local $2 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17796) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (set_local $15 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $4) - ) - (i32.store offset=12 - (get_local $2) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $2) - ) - (i32.store offset=12 - (get_local $4) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17804) - (get_local $7) - ) - (i32.store - (i32.const 17816) - (get_local $10) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $9) - (i32.const 8) - ) - ) - ) - (set_local $0 - (get_local $5) - ) - ) - ) - (set_local $0 - (get_local $5) - ) - ) - ) - (if - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (set_local $0 - (i32.const -1) - ) - (block - (set_local $4 - (i32.and - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if - (tee_local $15 - (i32.load - (i32.const 17800) - ) - ) - (block - (set_local $16 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $4) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $4) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $2) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (set_local $1 - (i32.sub - (i32.const 0) - (get_local $4) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (block $__rjti$2 - (if - (tee_local $3 - (i32.load - (i32.add - (i32.shl - (get_local $16) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - (block - (set_local $2 - (i32.const 0) - ) - (set_local $17 - (i32.shl - (get_local $4) - (if i32 - (i32.eq - (get_local $16) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $16) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $5 - (i32.sub - (tee_local $8 - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const -8) - ) - ) - (get_local $4) - ) - ) - (get_local $1) - ) - (if - (i32.eq - (get_local $8) - (get_local $4) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $2 - (get_local $3) - ) - (set_local $0 - (get_local $3) - ) - (br $__rjti$3) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $0 - (get_local $3) - ) - ) - ) - ) - (if - (i32.eqz - (i32.or - (i32.eqz - (tee_local $5 - (i32.load offset=20 - (get_local $3) - ) - ) - ) - (i32.eq - (get_local $5) - (tee_local $3 - (i32.load - (i32.add - (i32.add - (get_local $3) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $17) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $2 - (get_local $5) - ) - ) - (br_if $__rjti$2 - (tee_local $5 - (i32.eqz - (get_local $3) - ) - ) - ) - (set_local $17 - (i32.shl - (get_local $17) - (i32.xor - (get_local $5) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - (block - (set_local $2 - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - ) - ) - ) - (if - (i32.and - (i32.eqz - (get_local $2) - ) - (i32.eqz - (get_local $0) - ) - ) - (block - (if - (i32.eqz - (tee_local $2 - (i32.and - (get_local $15) - (i32.or - (tee_local $2 - (i32.shl - (i32.const 2) - (get_local $16) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - ) - ) - ) - (block - (set_local $0 - (get_local $4) - ) - (br $do-once) - ) - ) - (set_local $5 - (i32.and - (i32.shr_u - (tee_local $2 - (i32.add - (i32.and - (get_local $2) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (set_local $2 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $2) - (get_local $5) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $5) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (tee_local $2 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (get_local $3) - (get_local $2) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - ) - ) - (br_if $__rjti$3 - (get_local $2) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $__rjto$3) - ) - (loop $while-in16 - (if - (tee_local $5 - (i32.lt_u - (tee_local $3 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const -8) - ) - (get_local $4) - ) - ) - (get_local $1) - ) - ) - (set_local $1 - (get_local $3) - ) - ) - (if - (get_local $5) - (set_local $0 - (get_local $2) - ) - ) - (if - (tee_local $3 - (i32.load offset=16 - (get_local $2) - ) - ) - (block - (set_local $2 - (get_local $3) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (tee_local $2 - (i32.load offset=20 - (get_local $2) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - (if - (get_local $3) - (if - (i32.lt_u - (get_local $2) - (i32.sub - (i32.load - (i32.const 17804) - ) - (get_local $4) - ) - ) - (block - (if - (i32.lt_u - (get_local $3) - (tee_local $9 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (get_local $3) - (tee_local $8 - (i32.add - (get_local $3) - (get_local $4) - ) - ) - ) - (call $_abort) - ) - (set_local $10 - (i32.load offset=24 - (get_local $3) - ) - ) - (block $do-once17 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $3) - ) - ) - (get_local $3) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 20) - ) - ) - ) - ) - ) - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $do-once17) - ) - ) - ) - (loop $while-in20 - (if - (tee_local $5 - (i32.load - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $0 - (get_local $7) - ) - (br $while-in20) - ) - ) - (if - (tee_local $5 - (i32.load - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $5) - ) - (set_local $0 - (get_local $7) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $9) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $6 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $7 - (i32.load offset=8 - (get_local $3) - ) - ) - (get_local $9) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $5 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - ) - (get_local $3) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $3) - ) - (block - (i32.store - (get_local $5) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $7) - ) - (set_local $6 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once21 - (if - (get_local $10) - (block - (if - (i32.eq - (get_local $3) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $3) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $6) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (i32.store - (i32.const 17800) - (i32.and - (i32.load - (i32.const 17800) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $10) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $10) - (i32.const 16) - ) - ) - ) - (get_local $3) - ) - (i32.store - (get_local $0) - (get_local $6) - ) - (i32.store offset=20 - (get_local $10) - (get_local $6) - ) - ) - (br_if $do-once21 - (i32.eqz - (get_local $6) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $6) - (tee_local $0 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $6) - (get_local $10) - ) - (if - (tee_local $1 - (i32.load offset=16 - (get_local $3) - ) - ) - (if - (i32.lt_u - (get_local $1) - (get_local $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $6) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $6) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load offset=20 - (get_local $3) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $6) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $6) - ) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.lt_u - (get_local $2) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $3) - (i32.or - (tee_local $0 - (i32.add - (get_local $2) - (get_local $4) - ) - ) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $3) - (get_local $0) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $8) - (get_local $2) - ) - (get_local $2) - ) - (set_local $0 - (i32.shr_u - (get_local $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.const 256) - ) - (block - (set_local $2 - (i32.add - (i32.shl - (get_local $0) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17796) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (set_local $14 - (get_local $1) - ) - (set_local $12 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17796) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (set_local $14 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (set_local $12 - (get_local $2) - ) - ) - ) - (i32.store - (get_local $14) - (get_local $8) - ) - (i32.store offset=12 - (get_local $12) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $12) - ) - (i32.store offset=12 - (get_local $8) - (get_local $2) - ) - (br $do-once25) - ) - ) - (set_local $4 - (i32.add - (i32.shl - (tee_local $5 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $2) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $2) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $2) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $4 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $4) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - (i32.store offset=28 - (get_local $8) - (get_local $5) - ) - (i32.store offset=4 - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 17800) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $5) - ) - ) - ) - ) - (block - (i32.store - (i32.const 17800) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $4) - (get_local $8) - ) - (i32.store offset=24 - (get_local $8) - (get_local $4) - ) - (i32.store offset=12 - (get_local $8) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $8) - ) - (br $do-once25) - ) - ) - (set_local $5 - (i32.shl - (get_local $2) - (if i32 - (i32.eq - (get_local $5) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $4) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $2) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.shl - (get_local $5) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in28) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $4) - (get_local $8) - ) - (i32.store offset=24 - (get_local $8) - (get_local $0) - ) - (i32.store offset=12 - (get_local $8) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $8) - ) - (br $do-once25) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (tee_local $4 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 17812) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) - ) - ) - (block - (i32.store offset=12 - (get_local $4) - (get_local $8) - ) - (i32.store - (get_local $2) - (get_local $8) - ) - (i32.store offset=8 - (get_local $8) - (get_local $4) - ) - (i32.store offset=12 - (get_local $8) - (get_local $0) - ) - (i32.store offset=24 - (get_local $8) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - (set_local $0 - (get_local $4) - ) - ) - (set_local $0 - (get_local $4) - ) - ) - ) - (set_local $0 - (get_local $4) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (tee_local $1 - (i32.load - (i32.const 17804) - ) - ) - (get_local $0) - ) - (block - (set_local $3 - (i32.load - (i32.const 17816) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 17816) - (tee_local $1 - (i32.add - (get_local $3) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 17804) - (get_local $2) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $1) - (get_local $2) - ) - (get_local $2) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 17804) - (i32.const 0) - ) - (i32.store - (i32.const 17816) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $1) - (i32.const 3) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (i32.add - (get_local $3) - (get_local $1) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $1 - (i32.load - (i32.const 17808) - ) - ) - (get_local $0) - ) - (block - (i32.store - (i32.const 17808) - (tee_local $2 - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 17820) - (tee_local $1 - (i32.add - (tee_local $3 - (i32.load - (i32.const 17820) - ) - ) - (get_local $0) - ) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 18268) - ) - ) - (block - (i32.store - (i32.const 18276) - (i32.const 4096) - ) - (i32.store - (i32.const 18272) - (i32.const 4096) - ) - (i32.store - (i32.const 18280) - (i32.const -1) - ) - (i32.store - (i32.const 18284) - (i32.const -1) - ) - (i32.store - (i32.const 18288) - (i32.const 0) - ) - (i32.store - (i32.const 18240) - (i32.const 0) - ) - (i32.store - (get_local $18) - (tee_local $1 - (i32.xor - (i32.and - (get_local $18) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - (i32.store - (i32.const 18268) - (get_local $1) - ) - ) - ) - (if - (i32.le_u - (tee_local $5 - (i32.and - (tee_local $8 - (i32.add - (tee_local $1 - (i32.load - (i32.const 18276) - ) - ) - (tee_local $14 - (i32.add - (get_local $0) - (i32.const 47) - ) - ) - ) - ) - (tee_local $6 - (i32.sub - (i32.const 0) - (get_local $1) - ) - ) - ) - ) - (get_local $0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (tee_local $3 - (i32.load - (i32.const 18236) - ) - ) - (if - (i32.or - (i32.le_u - (tee_local $1 - (i32.add - (tee_local $2 - (i32.load - (i32.const 18228) - ) - ) - (get_local $5) - ) - ) - (get_local $2) - ) - (i32.gt_u - (get_local $1) - (get_local $3) - ) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (set_local $12 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (block $__rjto$13 - (block $__rjti$13 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 18240) - ) - (i32.const 4) - ) - ) - (block - (block $label$break$L276 - (block $__rjti$5 - (block $__rjti$4 - (br_if $__rjti$4 - (i32.eqz - (tee_local $2 - (i32.load - (i32.const 17820) - ) - ) - ) - ) - (set_local $4 - (i32.const 18244) - ) - (loop $while-in32 - (block $while-out31 - (if - (i32.le_u - (tee_local $1 - (i32.load - (get_local $4) - ) - ) - (get_local $2) - ) - (br_if $while-out31 - (i32.gt_u - (i32.add - (get_local $1) - (i32.load - (tee_local $3 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - ) - ) - (get_local $2) - ) - ) - ) - (br_if $while-in32 - (tee_local $4 - (i32.load offset=8 - (get_local $4) - ) - ) - ) - (br $__rjti$4) - ) - ) - (if - (i32.lt_u - (tee_local $2 - (i32.and - (i32.sub - (get_local $8) - (i32.load - (i32.const 17808) - ) - ) - (get_local $6) - ) - ) - (i32.const 2147483647) - ) - (if - (i32.eq - (tee_local $1 - (call $_sbrk - (get_local $2) - ) - ) - (i32.add - (i32.load - (get_local $4) - ) - (i32.load - (get_local $3) - ) - ) - ) - (br_if $__rjti$13 - (i32.ne - (get_local $1) - (i32.const -1) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $2) - ) - (br $__rjti$5) - ) - ) - ) - (br $label$break$L276) - ) - (if - (i32.ne - (tee_local $1 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (set_local $2 - (if i32 - (i32.and - (tee_local $3 - (i32.add - (tee_local $4 - (i32.load - (i32.const 18272) - ) - ) - (i32.const -1) - ) - ) - (tee_local $2 - (get_local $1) - ) - ) - (i32.add - (i32.sub - (get_local $5) - (get_local $2) - ) - (i32.and - (i32.add - (get_local $3) - (get_local $2) - ) - (i32.sub - (i32.const 0) - (get_local $4) - ) - ) - ) - (get_local $5) - ) - ) - (set_local $6 - (i32.add - (tee_local $4 - (i32.load - (i32.const 18228) - ) - ) - (get_local $2) - ) - ) - (if - (i32.and - (i32.gt_u - (get_local $2) - (get_local $0) - ) - (i32.lt_u - (get_local $2) - (i32.const 2147483647) - ) - ) - (block - (if - (tee_local $3 - (i32.load - (i32.const 18236) - ) - ) - (br_if $label$break$L276 - (i32.or - (i32.le_u - (get_local $6) - (get_local $4) - ) - (i32.gt_u - (get_local $6) - (get_local $3) - ) - ) - ) - ) - (br_if $__rjti$13 - (i32.eq - (tee_local $3 - (call $_sbrk - (get_local $2) - ) - ) - (get_local $1) - ) - ) - (set_local $1 - (get_local $2) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L276) - ) - (set_local $4 - (i32.sub - (i32.const 0) - (get_local $1) - ) - ) - (if - (i32.and - (i32.gt_u - (get_local $12) - (get_local $1) - ) - (i32.and - (i32.lt_u - (get_local $1) - (i32.const 2147483647) - ) - (i32.ne - (get_local $3) - (i32.const -1) - ) - ) - ) - (if - (i32.lt_u - (tee_local $2 - (i32.and - (i32.add - (i32.sub - (get_local $14) - (get_local $1) - ) - (tee_local $2 - (i32.load - (i32.const 18276) - ) - ) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - ) - (i32.const 2147483647) - ) - (if - (i32.eq - (call $_sbrk - (get_local $2) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (get_local $4) - ) - ) - (br $label$break$L276) - ) - (set_local $2 - (i32.add - (get_local $2) - (get_local $1) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - ) - (set_local $2 - (get_local $1) - ) - ) - (if - (i32.ne - (get_local $3) - (i32.const -1) - ) - (block - (set_local $1 - (get_local $3) - ) - (br $__rjti$13) - ) - ) - ) - (i32.store - (i32.const 18240) - (i32.or - (i32.load - (i32.const 18240) - ) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $5) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.lt_u - (tee_local $1 - (call $_sbrk - (get_local $5) - ) - ) - (tee_local $2 - (call $_sbrk - (i32.const 0) - ) - ) - ) - (i32.and - (i32.ne - (get_local $1) - (i32.const -1) - ) - (i32.ne - (get_local $2) - (i32.const -1) - ) - ) - ) - (br_if $__rjti$13 - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - ) - ) - ) - (br $__rjto$13) - ) - (i32.store - (i32.const 18228) - (tee_local $3 - (i32.add - (i32.load - (i32.const 18228) - ) - (get_local $2) - ) - ) - ) - (if - (i32.gt_u - (get_local $3) - (i32.load - (i32.const 18232) - ) - ) - (i32.store - (i32.const 18232) - (get_local $3) - ) - ) - (block $do-once38 - (if - (tee_local $6 - (i32.load - (i32.const 17820) - ) - ) - (block - (set_local $3 - (i32.const 18244) - ) - (block $__rjto$10 - (block $__rjti$10 - (loop $do-in41 - (br_if $__rjti$10 - (i32.eq - (get_local $1) - (i32.add - (tee_local $12 - (i32.load - (get_local $3) - ) - ) - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - (br_if $do-in41 - (tee_local $3 - (i32.load offset=8 - (get_local $3) - ) - ) - ) - ) - (br $__rjto$10) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (get_local $3) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (get_local $6) - (get_local $1) - ) - (i32.ge_u - (get_local $6) - (get_local $12) - ) - ) - (block - (i32.store - (get_local $5) - (i32.add - (get_local $4) - (get_local $2) - ) - ) - (set_local $3 - (i32.add - (get_local $6) - (tee_local $1 - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - ) - (set_local $1 - (i32.add - (i32.sub - (get_local $2) - (get_local $1) - ) - (i32.load - (i32.const 17808) - ) - ) - ) - (i32.store - (i32.const 17820) - (get_local $3) - ) - (i32.store - (i32.const 17808) - (get_local $1) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (get_local $3) - (get_local $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 17824) - (i32.load - (i32.const 18284) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (tee_local $4 - (i32.load - (i32.const 17812) - ) - ) - ) - (block - (i32.store - (i32.const 17812) - (get_local $1) - ) - (set_local $4 - (get_local $1) - ) - ) - ) - (set_local $12 - (i32.add - (get_local $1) - (get_local $2) - ) - ) - (set_local $3 - (i32.const 18244) - ) - (block $__rjto$11 - (block $__rjti$11 - (loop $while-in43 - (if - (i32.eq - (i32.load - (get_local $3) - ) - (get_local $12) - ) - (block - (set_local $5 - (get_local $3) - ) - (br $__rjti$11) - ) - ) - (br_if $while-in43 - (tee_local $3 - (i32.load offset=8 - (get_local $3) - ) - ) - ) - (set_local $4 - (i32.const 18244) - ) - ) - (br $__rjto$11) - ) - (if - (i32.and - (i32.load offset=12 - (get_local $3) - ) - (i32.const 8) - ) - (set_local $4 - (i32.const 18244) - ) - (block - (i32.store - (get_local $5) - (get_local $1) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (set_local $11 - (i32.add - (tee_local $8 - (i32.add - (get_local $1) - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - (get_local $0) - ) - ) - (set_local $5 - (i32.sub - (i32.sub - (tee_local $7 - (i32.add - (get_local $12) - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $12) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - (get_local $8) - ) - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $8) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.eq - (get_local $7) - (get_local $6) - ) - (block - (i32.store - (i32.const 17808) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17808) - ) - (get_local $5) - ) - ) - ) - (i32.store - (i32.const 17820) - (get_local $11) - ) - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - ) - (block - (if - (i32.eq - (get_local $7) - (i32.load - (i32.const 17816) - ) - ) - (block - (i32.store - (i32.const 17804) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17804) - ) - (get_local $5) - ) - ) - ) - (i32.store - (i32.const 17816) - (get_local $11) - ) - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $11) - (get_local $0) - ) - (get_local $0) - ) - (br $do-once44) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (tee_local $0 - (if i32 - (i32.eq - (i32.and - (tee_local $0 - (i32.load offset=4 - (get_local $7) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block i32 - (set_local $12 - (i32.and - (get_local $0) - (i32.const -8) - ) - ) - (set_local $1 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (block $label$break$L328 - (if - (i32.lt_u - (get_local $0) - (i32.const 256) - ) - (block - (set_local $3 - (i32.load offset=12 - (get_local $7) - ) - ) - (block $do-once47 - (if - (i32.ne - (tee_local $2 - (i32.load offset=8 - (get_local $7) - ) - ) - (tee_local $0 - (i32.add - (i32.shl - (get_local $1) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $2) - (get_local $4) - ) - (call $_abort) - ) - (br_if $do-once47 - (i32.eq - (i32.load offset=12 - (get_local $2) - ) - (get_local $7) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $3) - (get_local $2) - ) - (block - (i32.store - (i32.const 17796) - (i32.and - (i32.load - (i32.const 17796) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L328) - ) - ) - (block $do-once49 - (if - (i32.eq - (get_local $3) - (get_local $0) - ) - (set_local $19 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $3) - (get_local $4) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (block - (set_local $19 - (get_local $0) - ) - (br $do-once49) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $2) - (get_local $3) - ) - (i32.store - (get_local $19) - (get_local $2) - ) - ) - (block - (set_local $6 - (i32.load offset=24 - (get_local $7) - ) - ) - (block $do-once51 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $7) - ) - ) - (get_local $7) - ) - (block - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (tee_local $2 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $1 - (i32.load - (get_local $2) - ) - ) - (set_local $0 - (get_local $2) - ) - (block - (set_local $10 - (i32.const 0) - ) - (br $do-once51) - ) - ) - ) - (loop $while-in54 - (if - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $2) - ) - (set_local $0 - (get_local $3) - ) - (br $while-in54) - ) - ) - (if - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $1 - (get_local $2) - ) - (set_local $0 - (get_local $3) - ) - (br $while-in54) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (get_local $4) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $10 - (get_local $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $3 - (i32.load offset=8 - (get_local $7) - ) - ) - (get_local $4) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - ) - (get_local $7) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (block - (i32.store - (get_local $2) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $3) - ) - (set_local $10 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (br_if $label$break$L328 - (i32.eqz - (get_local $6) - ) - ) - (block $do-once55 - (if - (i32.eq - (get_local $7) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $7) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $10) - ) - (br_if $do-once55 - (get_local $10) - ) - (i32.store - (i32.const 17800) - (i32.and - (i32.load - (i32.const 17800) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L328) - ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (get_local $7) - ) - (i32.store - (get_local $0) - (get_local $10) - ) - (i32.store offset=20 - (get_local $6) - (get_local $10) - ) - ) - (br_if $label$break$L328 - (i32.eqz - (get_local $10) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $10) - (tee_local $1 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $10) - (get_local $6) - ) - (if - (tee_local $2 - (i32.load - (tee_local $0 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $2) - (get_local $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $10) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $10) - ) - ) - ) - ) - (br_if $label$break$L328 - (i32.eqz - (tee_local $0 - (i32.load offset=4 - (get_local $0) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $10) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $10) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $12) - (get_local $5) - ) - ) - (i32.add - (get_local $7) - (get_local $12) - ) - ) - (get_local $7) - ) - ) - (i32.const 4) - ) - ) - (i32.and - (i32.load - (get_local $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $11) - (get_local $5) - ) - (get_local $5) - ) - (set_local $0 - (i32.shr_u - (get_local $5) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $5) - (i32.const 256) - ) - (block - (set_local $2 - (i32.add - (i32.shl - (get_local $0) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (block $do-once59 - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17796) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (block - (if - (i32.ge_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17812) - ) - ) - (block - (set_local $20 - (get_local $1) - ) - (set_local $9 - (get_local $0) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 17796) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (set_local $20 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - (set_local $9 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $20) - (get_local $11) - ) - (i32.store offset=12 - (get_local $9) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $9) - ) - (i32.store offset=12 - (get_local $11) - (get_local $2) - ) - (br $do-once44) - ) - ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $3 - (block $do-once61 i32 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $5) - (i32.const 8) - ) - ) - (block i32 - (drop - (br_if $do-once61 - (i32.const 31) - (i32.gt_u - (get_local $5) - (i32.const 16777215) - ) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (get_local $5) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $2) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - (i32.store offset=28 - (get_local $11) - (get_local $3) - ) - (i32.store offset=4 - (tee_local $0 - (i32.add - (get_local $11) - (i32.const 16) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 17800) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $3) - ) - ) - ) - ) - (block - (i32.store - (i32.const 17800) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $2) - (get_local $11) - ) - (i32.store offset=24 - (get_local $11) - (get_local $2) - ) - (i32.store offset=12 - (get_local $11) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $11) - ) - (br $do-once44) - ) - ) - (set_local $3 - (i32.shl - (get_local $5) - (if i32 - (i32.eq - (get_local $3) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $3) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $2) - ) - ) - (block $__rjto$7 - (block $__rjti$7 - (block $__rjti$6 - (loop $while-in64 - (br_if $__rjti$7 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (br_if $__rjti$6 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $3 - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in64) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $2) - (get_local $11) - ) - (i32.store offset=24 - (get_local $11) - (get_local $0) - ) - (i32.store offset=12 - (get_local $11) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $11) - ) - (br $do-once44) - ) - ) - (br $__rjto$7) - ) - (if - (i32.and - (i32.ge_u - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 17812) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) - ) - ) - (block - (i32.store offset=12 - (get_local $3) - (get_local $11) - ) - (i32.store - (get_local $2) - (get_local $11) - ) - (i32.store offset=8 - (get_local $11) - (get_local $3) - ) - (i32.store offset=12 - (get_local $11) - (get_local $0) - ) - (i32.store offset=24 - (get_local $11) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $8) - (i32.const 8) - ) - ) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (if - (i32.le_u - (tee_local $3 - (i32.load - (get_local $4) - ) - ) - (get_local $6) - ) - (br_if $while-out65 - (i32.gt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.load offset=4 - (get_local $4) - ) - ) - ) - (get_local $6) - ) - ) - ) - (set_local $4 - (i32.load offset=8 - (get_local $4) - ) - ) - (br $while-in66) - ) - ) - (set_local $5 - (i32.add - (tee_local $4 - (i32.add - (get_local $3) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - (set_local $10 - (i32.add - (if i32 - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $4) - (if i32 - (i32.and - (get_local $5) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $5) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - (tee_local $9 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (tee_local $4 - (get_local $6) - ) - (get_local $4) - ) - (i32.const 8) - ) - ) - (i32.store - (i32.const 17820) - (tee_local $12 - (i32.add - (get_local $1) - (tee_local $5 - (if i32 - (i32.and - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $5) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (i32.const 17808) - (tee_local $5 - (i32.sub - (i32.add - (get_local $2) - (i32.const -40) - ) - (get_local $5) - ) - ) - ) - (i32.store offset=4 - (get_local $12) - (i32.or - (get_local $5) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (get_local $12) - (get_local $5) - ) - (i32.const 40) - ) - (i32.store - (i32.const 17824) - (i32.load - (i32.const 18284) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (i32.const 27) - ) - (i32.store - (get_local $10) - (i32.load - (i32.const 18244) - ) - ) - (i32.store offset=4 - (get_local $10) - (i32.load - (i32.const 18248) - ) - ) - (i32.store offset=8 - (get_local $10) - (i32.load - (i32.const 18252) - ) - ) - (i32.store offset=12 - (get_local $10) - (i32.load - (i32.const 18256) - ) - ) - (i32.store - (i32.const 18244) - (get_local $1) - ) - (i32.store - (i32.const 18248) - (get_local $2) - ) - (i32.store - (i32.const 18256) - (i32.const 0) - ) - (i32.store - (i32.const 18252) - (get_local $10) - ) - (set_local $1 - (i32.add - (get_local $4) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (get_local $1) - (i32.const 4) - ) - (get_local $3) - ) - ) - ) - (if - (i32.ne - (get_local $4) - (get_local $6) - ) - (block - (i32.store - (get_local $5) - (i32.and - (i32.load - (get_local $5) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $6) - (i32.or - (tee_local $5 - (i32.sub - (get_local $4) - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $4) - (get_local $5) - ) - (set_local $1 - (i32.shr_u - (get_local $5) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $5) - (i32.const 256) - ) - (block - (set_local $3 - (i32.add - (i32.shl - (get_local $1) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (if - (i32.and - (tee_local $2 - (i32.load - (i32.const 17796) - ) - ) - (tee_local $1 - (i32.shl - (i32.const 1) - (get_local $1) - ) - ) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.load - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (set_local $11 - (get_local $2) - ) - (set_local $7 - (get_local $1) - ) - ) - ) - (block - (i32.store - (i32.const 17796) - (i32.or - (get_local $2) - (get_local $1) - ) - ) - (set_local $11 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (set_local $7 - (get_local $3) - ) - ) - ) - (i32.store - (get_local $11) - (get_local $6) - ) - (i32.store offset=12 - (get_local $7) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $7) - ) - (i32.store offset=12 - (get_local $6) - (get_local $3) - ) - (br $do-once38) - ) - ) - (set_local $3 - (i32.add - (i32.shl - (tee_local $4 - (if i32 - (tee_local $1 - (i32.shr_u - (get_local $5) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $5) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $5) - (i32.add - (tee_local $1 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $1 - (i32.and - (i32.shr_u - (i32.add - (tee_local $2 - (i32.shl - (get_local $1) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $1) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $3) - ) - (tee_local $1 - (i32.and - (i32.shr_u - (i32.add - (tee_local $2 - (i32.shl - (get_local $2) - (get_local $1) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $2) - (get_local $1) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - (i32.store offset=28 - (get_local $6) - (get_local $4) - ) - (i32.store offset=20 - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $2 - (i32.load - (i32.const 17800) - ) - ) - (tee_local $1 - (i32.shl - (i32.const 1) - (get_local $4) - ) - ) - ) - ) - (block - (i32.store - (i32.const 17800) - (i32.or - (get_local $2) - (get_local $1) - ) - ) - (i32.store - (get_local $3) - (get_local $6) - ) - (i32.store offset=24 - (get_local $6) - (get_local $3) - ) - (i32.store offset=12 - (get_local $6) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $6) - ) - (br $do-once38) - ) - ) - (set_local $4 - (i32.shl - (get_local $5) - (if i32 - (i32.eq - (get_local $4) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $4) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $3) - ) - ) - (block $__rjto$9 - (block $__rjti$9 - (block $__rjti$8 - (loop $while-in70 - (br_if $__rjti$9 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $1) - ) - (i32.const -8) - ) - (get_local $5) - ) - ) - (br_if $__rjti$8 - (i32.eqz - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (i32.add - (get_local $1) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $4 - (i32.shl - (get_local $4) - (i32.const 1) - ) - ) - (set_local $1 - (get_local $2) - ) - (br $while-in70) - ) - ) - (if - (i32.lt_u - (get_local $3) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $3) - (get_local $6) - ) - (i32.store offset=24 - (get_local $6) - (get_local $1) - ) - (i32.store offset=12 - (get_local $6) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $6) - ) - (br $do-once38) - ) - ) - (br $__rjto$9) - ) - (if - (i32.and - (i32.ge_u - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (i32.const 17812) - ) - ) - ) - (i32.ge_u - (get_local $1) - (get_local $2) - ) - ) - (block - (i32.store offset=12 - (get_local $4) - (get_local $6) - ) - (i32.store - (get_local $3) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $4) - ) - (i32.store offset=12 - (get_local $6) - (get_local $1) - ) - (i32.store offset=24 - (get_local $6) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (tee_local $3 - (i32.load - (i32.const 17812) - ) - ) - ) - (i32.lt_u - (get_local $1) - (get_local $3) - ) - ) - (i32.store - (i32.const 17812) - (get_local $1) - ) - ) - (i32.store - (i32.const 18244) - (get_local $1) - ) - (i32.store - (i32.const 18248) - (get_local $2) - ) - (i32.store - (i32.const 18256) - (i32.const 0) - ) - (i32.store - (i32.const 17832) - (i32.load - (i32.const 18268) - ) - ) - (i32.store - (i32.const 17828) - (i32.const -1) - ) - (set_local $4 - (i32.const 0) - ) - (loop $do-in - (i32.store offset=12 - (tee_local $3 - (i32.add - (i32.shl - (get_local $4) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (get_local $3) - ) - (i32.store offset=8 - (get_local $3) - (get_local $3) - ) - (br_if $do-in - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 17820) - (tee_local $3 - (i32.add - (get_local $1) - (tee_local $1 - (if i32 - (i32.and - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.and - (i32.sub - (i32.const 0) - (get_local $1) - ) - (i32.const 7) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (i32.const 17808) - (tee_local $1 - (i32.sub - (i32.add - (get_local $2) - (i32.const -40) - ) - (get_local $1) - ) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (get_local $3) - (get_local $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 17824) - (i32.load - (i32.const 18284) - ) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $1 - (i32.load - (i32.const 17808) - ) - ) - (get_local $0) - ) - (block - (i32.store - (i32.const 17808) - (tee_local $2 - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 17820) - (tee_local $1 - (i32.add - (tee_local $3 - (i32.load - (i32.const 17820) - ) - ) - (get_local $0) - ) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (set_global $STACKTOP - (get_local $13) - ) - (i32.const 0) - ) - (func $_printf_core (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 f64) - (local $20 f64) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (set_local $25 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 624) - ) - ) - (set_local $21 - (i32.add - (get_local $25) - (i32.const 16) - ) - ) - (set_local $17 - (get_local $25) - ) - (set_local $38 - (i32.add - (get_local $25) - (i32.const 528) - ) - ) - (set_local $32 - (i32.ne - (get_local $0) - (i32.const 0) - ) - ) - (set_local $40 - (tee_local $24 - (i32.add - (tee_local $16 - (i32.add - (get_local $25) - (i32.const 536) - ) - ) - (i32.const 40) - ) - ) - ) - (set_local $41 - (i32.add - (get_local $16) - (i32.const 39) - ) - ) - (set_local $44 - (i32.add - (tee_local $39 - (i32.add - (get_local $25) - (i32.const 8) - ) - ) - (i32.const 4) - ) - ) - (set_local $45 - (i32.sub - (i32.const 0) - (tee_local $30 - (tee_local $22 - (i32.add - (get_local $25) - (i32.const 588) - ) - ) - ) - ) - ) - (set_local $34 - (i32.add - (tee_local $16 - (i32.add - (get_local $25) - (i32.const 576) - ) - ) - (i32.const 12) - ) - ) - (set_local $42 - (i32.add - (get_local $16) - (i32.const 11) - ) - ) - (set_local $46 - (i32.sub - (tee_local $31 - (get_local $34) - ) - (get_local $30) - ) - ) - (set_local $47 - (i32.sub - (i32.const -2) - (get_local $30) - ) - ) - (set_local $48 - (i32.add - (get_local $31) - (i32.const 2) - ) - ) - (set_local $50 - (i32.add - (tee_local $49 - (i32.add - (get_local $25) - (i32.const 24) - ) - ) - (i32.const 288) - ) - ) - (set_local $43 - (tee_local $33 - (i32.add - (get_local $22) - (i32.const 9) - ) - ) - ) - (set_local $35 - (i32.add - (get_local $22) - (i32.const 8) - ) - ) - (set_local $15 - (i32.const 0) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $16 - (i32.const 0) - ) - (block $label$break$L345 - (block $__rjti$9 - (loop $label$continue$L1 - (block $label$break$L1 - (if - (i32.gt_s - (get_local $15) - (i32.const -1) - ) - (set_local $15 - (if i32 - (i32.gt_s - (get_local $6) - (i32.sub - (i32.const 2147483647) - (get_local $15) - ) - ) - (block i32 - (i32.store - (call $___errno_location) - (i32.const 75) - ) - (i32.const -1) - ) - (i32.add - (get_local $6) - (get_local $15) - ) - ) - ) - ) - (br_if $__rjti$9 - (i32.eqz - (tee_local $11 - (i32.load8_s - (get_local $1) - ) - ) - ) - ) - (set_local $6 - (get_local $1) - ) - (block $label$break$L12 - (block $__rjti$1 - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.shr_s - (i32.shl - (get_local $11) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (set_local $11 - (get_local $6) - ) - (br $__rjti$1) - ) - (set_local $11 - (get_local $6) - ) - (set_local $5 - (get_local $6) - ) - (br $label$break$L9) - ) - (set_local $11 - (i32.load8_s - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L9) - ) - ) - (br $label$break$L12) - ) - (loop $while-in - (if - (i32.ne - (i32.load8_s offset=1 - (get_local $11) - ) - (i32.const 37) - ) - (block - (set_local $5 - (get_local $6) - ) - (br $label$break$L12) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (br_if $while-in - (i32.eq - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 2) - ) - ) - ) - (i32.const 37) - ) - ) - (set_local $5 - (get_local $6) - ) - ) - ) - (set_local $6 - (i32.sub - (get_local $5) - (get_local $1) - ) - ) - (if - (get_local $32) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (get_local $6) - (get_local $0) - ) - ) - ) - ) - (if - (i32.ne - (get_local $5) - (get_local $1) - ) - (block - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - ) - (set_local $5 - (if i32 - (i32.lt_u - (tee_local $12 - (i32.add - (tee_local $13 - (i32.load8_s - (tee_local $10 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block i32 - (set_local $13 - (i32.load8_s - (tee_local $11 - (if i32 - (tee_local $5 - (i32.eq - (i32.load8_s offset=2 - (get_local $11) - ) - (i32.const 36) - ) - ) - (i32.add - (get_local $11) - (i32.const 3) - ) - (get_local $10) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $5) - ) - (set_local $12 - (i32.const -1) - ) - ) - (if i32 - (get_local $5) - (i32.const 1) - (get_local $16) - ) - ) - (block i32 - (set_local $12 - (i32.const -1) - ) - (set_local $11 - (get_local $10) - ) - (get_local $16) - ) - ) - ) - (block $label$break$L25 - (if - (i32.eq - (i32.and - (tee_local $7 - (i32.shr_s - (i32.shl - (get_local $13) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - (block - (set_local $16 - (get_local $13) - ) - (set_local $10 - (i32.const 0) - ) - (loop $while-in4 - (if - (i32.eqz - (i32.and - (i32.shl - (i32.const 1) - (i32.add - (get_local $7) - (i32.const -32) - ) - ) - (i32.const 75913) - ) - ) - (block - (set_local $13 - (get_local $16) - ) - (set_local $16 - (get_local $10) - ) - (br $label$break$L25) - ) - ) - (set_local $10 - (i32.or - (i32.shl - (i32.const 1) - (i32.add - (i32.shr_s - (i32.shl - (get_local $16) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -32) - ) - ) - (get_local $10) - ) - ) - (br_if $while-in4 - (i32.eq - (i32.and - (tee_local $7 - (tee_local $16 - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - ) - (set_local $13 - (get_local $16) - ) - (set_local $16 - (get_local $10) - ) - ) - ) - (set_local $16 - (i32.const 0) - ) - ) - ) - (block $do-once5 - (if - (i32.eq - (i32.and - (get_local $13) - (i32.const 255) - ) - (i32.const 42) - ) - (block - (set_local $5 - (block $__rjto$0 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.ge_u - (tee_local $10 - (i32.add - (i32.load8_s - (tee_local $13 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.load8_s offset=2 - (get_local $11) - ) - (i32.const 36) - ) - ) - (i32.store - (i32.add - (get_local $4) - (i32.shl - (get_local $10) - (i32.const 2) - ) - ) - (i32.const 10) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 3) - ) - ) - (set_local $13 - (i32.load - (i32.add - (get_local $3) - (i32.shl - (i32.add - (i32.load8_s - (get_local $13) - ) - (i32.const -48) - ) - (i32.const 3) - ) - ) - ) - ) - (br $__rjto$0 - (i32.const 1) - ) - ) - (if - (get_local $5) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (get_local $32) - ) - (block - (set_local $10 - (get_local $16) - ) - (set_local $16 - (i32.const 0) - ) - (set_local $11 - (get_local $13) - ) - (set_local $13 - (i32.const 0) - ) - (br $do-once5) - ) - ) - (set_local $10 - (i32.load - (tee_local $11 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (set_local $11 - (get_local $13) - ) - (set_local $13 - (get_local $10) - ) - (i32.const 0) - ) - ) - (set_local $16 - (if i32 - (i32.lt_s - (get_local $13) - (i32.const 0) - ) - (block i32 - (set_local $10 - (i32.or - (get_local $16) - (i32.const 8192) - ) - ) - (set_local $13 - (i32.sub - (i32.const 0) - (get_local $13) - ) - ) - (get_local $5) - ) - (block i32 - (set_local $10 - (get_local $16) - ) - (get_local $5) - ) - ) - ) - ) - (if - (i32.lt_u - (tee_local $10 - (i32.add - (i32.shr_s - (i32.shl - (get_local $13) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (set_local $13 - (i32.const 0) - ) - (loop $while-in8 - (set_local $13 - (i32.add - (i32.mul - (get_local $13) - (i32.const 10) - ) - (get_local $10) - ) - ) - (br_if $while-in8 - (i32.lt_u - (tee_local $10 - (i32.add - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - ) - (if - (i32.lt_s - (get_local $13) - (i32.const 0) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block - (set_local $10 - (get_local $16) - ) - (set_local $16 - (get_local $5) - ) - ) - ) - ) - (block - (set_local $10 - (get_local $16) - ) - (set_local $16 - (get_local $5) - ) - (set_local $13 - (i32.const 0) - ) - ) - ) - ) - ) - (block $label$break$L46 - (if - (i32.eq - (i32.load8_s - (get_local $11) - ) - (i32.const 46) - ) - (block - (if - (i32.ne - (tee_local $5 - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - ) - (i32.const 42) - ) - (block - (if - (i32.lt_u - (tee_local $8 - (i32.add - (get_local $5) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (set_local $11 - (get_local $7) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $7 - (get_local $8) - ) - ) - (block - (set_local $5 - (i32.const 0) - ) - (set_local $11 - (get_local $7) - ) - (br $label$break$L46) - ) - ) - (loop $while-in11 - (set_local $5 - (i32.add - (i32.mul - (get_local $5) - (i32.const 10) - ) - (get_local $7) - ) - ) - (br_if $while-in11 - (i32.lt_u - (tee_local $7 - (i32.add - (i32.load8_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (br $label$break$L46) - ) - ) - ) - (if - (i32.lt_u - (tee_local $5 - (i32.add - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 2) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (if - (i32.eq - (i32.load8_s offset=3 - (get_local $11) - ) - (i32.const 36) - ) - (block - (i32.store - (i32.add - (get_local $4) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - (i32.const 10) - ) - (set_local $5 - (i32.load - (i32.add - (get_local $3) - (i32.shl - (i32.add - (i32.load8_s - (get_local $7) - ) - (i32.const -48) - ) - (i32.const 3) - ) - ) - ) - ) - (set_local $11 - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (br $label$break$L46) - ) - ) - ) - (if - (get_local $16) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $11 - (if i32 - (get_local $32) - (block i32 - (set_local $5 - (i32.load - (tee_local $11 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $11) - (i32.const 4) - ) - ) - (get_local $7) - ) - (block i32 - (set_local $5 - (i32.const 0) - ) - (get_local $7) - ) - ) - ) - ) - (set_local $5 - (i32.const -1) - ) - ) - ) - (set_local $7 - (get_local $11) - ) - (set_local $8 - (i32.const 0) - ) - (loop $while-in13 - (if - (i32.gt_u - (tee_local $9 - (i32.add - (i32.load8_s - (get_local $7) - ) - (i32.const -65) - ) - ) - (i32.const 57) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $11 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (if - (i32.lt_u - (i32.add - (tee_local $9 - (i32.and - (tee_local $14 - (i32.load8_s - (i32.add - (i32.add - (i32.mul - (get_local $8) - (i32.const 58) - ) - (i32.const 15313) - ) - (get_local $9) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const -1) - ) - (i32.const 8) - ) - (block - (set_local $7 - (get_local $11) - ) - (set_local $8 - (get_local $9) - ) - (br $while-in13) - ) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $14) - (i32.const 255) - ) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (set_local $18 - (i32.gt_s - (get_local $12) - (i32.const -1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (if - (i32.eq - (i32.and - (get_local $14) - (i32.const 255) - ) - (i32.const 19) - ) - (if - (get_local $18) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - (br $__rjti$2) - ) - (block - (if - (get_local $18) - (block - (i32.store - (i32.add - (get_local $4) - (i32.shl - (get_local $12) - (i32.const 2) - ) - ) - (get_local $9) - ) - (set_local $14 - (i32.load offset=4 - (tee_local $12 - (i32.add - (get_local $3) - (i32.shl - (get_local $12) - (i32.const 3) - ) - ) - ) - ) - ) - (i32.store - (tee_local $9 - (get_local $17) - ) - (i32.load - (get_local $12) - ) - ) - (i32.store offset=4 - (get_local $9) - (get_local $14) - ) - (br $__rjti$2) - ) - ) - (if - (i32.eqz - (get_local $32) - ) - (block - (set_local $15 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg - (get_local $17) - (get_local $9) - (get_local $2) - ) - ) - ) - (br $__rjto$2) - ) - (if - (i32.eqz - (get_local $32) - ) - (block - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - ) - ) - (if - (i32.and - (i32.ne - (get_local $8) - (i32.const 0) - ) - (i32.eq - (i32.and - (tee_local $9 - (i32.load8_s - (get_local $7) - ) - ) - (i32.const 15) - ) - (i32.const 3) - ) - ) - (set_local $9 - (i32.and - (get_local $9) - (i32.const -33) - ) - ) - ) - (set_local $7 - (i32.and - (get_local $10) - (i32.const -65537) - ) - ) - (if - (i32.and - (get_local $10) - (i32.const 8192) - ) - (set_local $10 - (get_local $7) - ) - ) - (block $__rjto$8 - (block $__rjti$8 - (block $__rjti$7 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $switch-default120 - (block $switch-case42 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case34 - (block $switch-case33 - (block $switch-case29 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case42 $switch-default120 $switch-case40 $switch-default120 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case29 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case42 $switch-default120 $switch-case37 $switch-case34 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-case34 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case29 $switch-default120 - (i32.sub - (get_local $9) - (i32.const 65) - ) - ) - ) - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (get_local $8) - ) - ) - (i32.store - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (tee_local $1 - (i32.load - (get_local $17) - ) - ) - (get_local $15) - ) - (i32.store offset=4 - (get_local $1) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $15) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store16 - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store8 - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (get_local $17) - ) - (get_local $15) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (i32.store - (tee_local $1 - (i32.load - (get_local $17) - ) - ) - (get_local $15) - ) - (i32.store offset=4 - (get_local $1) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $15) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $1 - (i32.or - (get_local $10) - (i32.const 8) - ) - ) - (if - (i32.le_u - (get_local $5) - (i32.const 8) - ) - (set_local $5 - (i32.const 8) - ) - ) - (set_local $9 - (i32.const 120) - ) - (br $__rjti$3) - ) - (set_local $1 - (get_local $10) - ) - (br $__rjti$3) - ) - (if - (i32.and - (i32.eqz - (tee_local $6 - (i32.load - (tee_local $1 - (get_local $17) - ) - ) - ) - ) - (i32.eqz - (tee_local $7 - (i32.load offset=4 - (get_local $1) - ) - ) - ) - ) - (set_local $7 - (get_local $24) - ) - (block - (set_local $1 - (get_local $24) - ) - (loop $while-in32 - (i32.store8 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.or - (i32.and - (get_local $6) - (i32.const 7) - ) - (i32.const 48) - ) - ) - (br_if $while-in32 - (i32.eqz - (i32.and - (i32.eqz - (tee_local $6 - (call $_bitshift64Lshr - (get_local $6) - (get_local $7) - (i32.const 3) - ) - ) - ) - (i32.eqz - (tee_local $7 - (get_global $tempRet0) - ) - ) - ) - ) - ) - (set_local $7 - (get_local $1) - ) - ) - ) - ) - (if - (i32.and - (get_local $10) - (i32.const 8) - ) - (block - (set_local $6 - (get_local $7) - ) - (set_local $1 - (get_local $10) - ) - (if - (i32.le_s - (get_local $5) - (tee_local $10 - (i32.sub - (get_local $40) - (get_local $7) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $10) - (i32.const 1) - ) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (br $__rjti$8) - ) - (block - (set_local $6 - (get_local $7) - ) - (set_local $1 - (get_local $10) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (br $__rjti$8) - ) - ) - ) - (set_local $1 - (i32.load - (tee_local $6 - (get_local $17) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.load offset=4 - (get_local $6) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (tee_local $7 - (get_local $17) - ) - (tee_local $1 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (get_local $1) - (get_local $6) - ) - ) - ) - (i32.store offset=4 - (get_local $7) - (tee_local $6 - (get_global $tempRet0) - ) - ) - (set_local $7 - (i32.const 1) - ) - (set_local $8 - (i32.const 15793) - ) - (br $__rjti$4) - ) - ) - (if - (i32.and - (get_local $10) - (i32.const 2048) - ) - (block - (set_local $7 - (i32.const 1) - ) - (set_local $8 - (i32.const 15794) - ) - (br $__rjti$4) - ) - (block - (set_local $7 - (tee_local $8 - (i32.and - (get_local $10) - (i32.const 1) - ) - ) - ) - (set_local $8 - (if i32 - (get_local $8) - (i32.const 15795) - (i32.const 15793) - ) - ) - (br $__rjti$4) - ) - ) - ) - (set_local $1 - (i32.load - (tee_local $6 - (get_local $17) - ) - ) - ) - (set_local $6 - (i32.load offset=4 - (get_local $6) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (br $__rjti$4) - ) - (i32.store8 - (get_local $41) - (i32.load - (get_local $17) - ) - ) - (set_local $1 - (get_local $41) - ) - (set_local $10 - (get_local $7) - ) - (set_local $9 - (i32.const 1) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (set_local $6 - (get_local $24) - ) - (br $__rjto$8) - ) - (set_local $6 - (call $_strerror - (i32.load - (call $___errno_location) - ) - ) - ) - (br $__rjti$5) - ) - (if - (i32.eqz - (tee_local $6 - (i32.load - (get_local $17) - ) - ) - ) - (set_local $6 - (i32.const 17695) - ) - ) - (br $__rjti$5) - ) - (i32.store - (get_local $39) - (i32.load - (get_local $17) - ) - ) - (i32.store - (get_local $44) - (i32.const 0) - ) - (i32.store - (get_local $17) - (get_local $39) - ) - (set_local $6 - (get_local $39) - ) - (set_local $7 - (i32.const -1) - ) - (br $__rjti$6) - ) - (set_local $6 - (i32.load - (get_local $17) - ) - ) - (if - (get_local $5) - (block - (set_local $7 - (get_local $5) - ) - (br $__rjti$6) - ) - (block - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (i32.const 0) - (get_local $10) - ) - (set_local $1 - (i32.const 0) - ) - (br $__rjti$7) - ) - ) - ) - (set_local $19 - (f64.load - (get_local $17) - ) - ) - (i32.store - (get_local $21) - (i32.const 0) - ) - (f64.store - (get_global $tempDoublePtr) - (get_local $19) - ) - (set_local $28 - (if i32 - (i32.lt_s - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - (i32.const 0) - ) - (block i32 - (set_local $19 - (f64.neg - (get_local $19) - ) - ) - (set_local $26 - (i32.const 1) - ) - (i32.const 17702) - ) - (if i32 - (i32.and - (get_local $10) - (i32.const 2048) - ) - (block i32 - (set_local $26 - (i32.const 1) - ) - (i32.const 17705) - ) - (block i32 - (set_local $26 - (tee_local $1 - (i32.and - (get_local $10) - (i32.const 1) - ) - ) - ) - (if i32 - (get_local $1) - (i32.const 17708) - (i32.const 17703) - ) - ) - ) - ) - ) - (f64.store - (get_global $tempDoublePtr) - (get_local $19) - ) - (block $do-once49 - (if - (i32.or - (i32.lt_u - (tee_local $1 - (i32.and - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - (i32.const 2146435072) - ) - ) - (i32.const 2146435072) - ) - (i32.and - (i32.eq - (get_local $1) - (i32.const 2146435072) - ) - (i32.const 0) - ) - ) - (block - (if - (tee_local $1 - (f64.ne - (tee_local $20 - (f64.mul - (call $_frexpl - (get_local $19) - (get_local $21) - ) - (f64.const 2) - ) - ) - (f64.const 0) - ) - ) - (i32.store - (get_local $21) - (i32.add - (i32.load - (get_local $21) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (tee_local $23 - (i32.or - (get_local $9) - (i32.const 32) - ) - ) - (i32.const 97) - ) - (block - (if - (tee_local $12 - (i32.and - (get_local $9) - (i32.const 32) - ) - ) - (set_local $28 - (i32.add - (get_local $28) - (i32.const 9) - ) - ) - ) - (if - (i32.eqz - (i32.or - (i32.gt_u - (get_local $5) - (i32.const 11) - ) - (i32.eqz - (tee_local $1 - (i32.sub - (i32.const 12) - (get_local $5) - ) - ) - ) - ) - ) - (block - (set_local $19 - (f64.const 8) - ) - (loop $while-in54 - (set_local $19 - (f64.mul - (get_local $19) - (f64.const 16) - ) - ) - (br_if $while-in54 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - ) - (set_local $20 - (if f64 - (i32.eq - (i32.load8_s - (get_local $28) - ) - (i32.const 45) - ) - (f64.neg - (f64.add - (get_local $19) - (f64.sub - (f64.neg - (get_local $20) - ) - (get_local $19) - ) - ) - ) - (f64.sub - (f64.add - (get_local $20) - (get_local $19) - ) - (get_local $19) - ) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $1 - (call $_fmt_u - (tee_local $1 - (if i32 - (i32.lt_s - (tee_local $6 - (i32.load - (get_local $21) - ) - ) - (i32.const 0) - ) - (i32.sub - (i32.const 0) - (get_local $6) - ) - (get_local $6) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (get_local $34) - ) - ) - (get_local $34) - ) - (block - (i32.store8 - (get_local $42) - (i32.const 48) - ) - (set_local $1 - (get_local $42) - ) - ) - ) - (set_local $8 - (i32.or - (get_local $26) - (i32.const 2) - ) - ) - (i32.store8 - (i32.add - (get_local $1) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (get_local $6) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (tee_local $7 - (i32.add - (get_local $1) - (i32.const -2) - ) - ) - (i32.add - (get_local $9) - (i32.const 15) - ) - ) - (set_local $9 - (i32.lt_s - (get_local $5) - (i32.const 1) - ) - ) - (set_local $14 - (i32.eqz - (i32.and - (get_local $10) - (i32.const 8) - ) - ) - ) - (set_local $1 - (get_local $22) - ) - (loop $while-in56 - (i32.store8 - (get_local $1) - (i32.or - (i32.load8_u - (i32.add - (tee_local $6 - (i32.trunc_s/f64 - (get_local $20) - ) - ) - (i32.const 15777) - ) - ) - (get_local $12) - ) - ) - (set_local $20 - (f64.mul - (f64.sub - (get_local $20) - (f64.convert_s/i32 - (get_local $6) - ) - ) - (f64.const 16) - ) - ) - (set_local $1 - (block $do-once57 i32 - (if i32 - (i32.eq - (i32.sub - (tee_local $6 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (get_local $30) - ) - (i32.const 1) - ) - (block i32 - (drop - (br_if $do-once57 - (get_local $6) - (i32.and - (get_local $14) - (i32.and - (get_local $9) - (f64.eq - (get_local $20) - (f64.const 0) - ) - ) - ) - ) - ) - (i32.store8 - (get_local $6) - (i32.const 46) - ) - (i32.add - (get_local $1) - (i32.const 2) - ) - ) - (get_local $6) - ) - ) - ) - (br_if $while-in56 - (f64.ne - (get_local $20) - (f64.const 0) - ) - ) - ) - (set_local $6 - (get_local $7) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (tee_local $5 - (i32.add - (tee_local $9 - (if i32 - (i32.and - (i32.ne - (get_local $5) - (i32.const 0) - ) - (i32.lt_s - (i32.add - (get_local $47) - (get_local $1) - ) - (get_local $5) - ) - ) - (i32.sub - (i32.add - (get_local $48) - (get_local $5) - ) - (get_local $6) - ) - (i32.add - (i32.sub - (get_local $46) - (get_local $6) - ) - (get_local $1) - ) - ) - ) - (get_local $8) - ) - ) - (get_local $10) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $28) - (get_local $8) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $13) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 65536) - ) - ) - (set_local $1 - (i32.sub - (get_local $1) - (get_local $30) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $22) - (get_local $1) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (i32.sub - (get_local $9) - (i32.add - (get_local $1) - (tee_local $1 - (i32.sub - (get_local $31) - (get_local $6) - ) - ) - ) - ) - (i32.const 0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $7) - (get_local $1) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (if - (i32.ge_s - (get_local $5) - (get_local $13) - ) - (set_local $13 - (get_local $5) - ) - ) - (br $do-once49) - ) - ) - (if - (get_local $1) - (block - (i32.store - (get_local $21) - (tee_local $1 - (i32.add - (i32.load - (get_local $21) - ) - (i32.const -28) - ) - ) - ) - (set_local $20 - (f64.mul - (get_local $20) - (f64.const 268435456) - ) - ) - ) - (set_local $1 - (i32.load - (get_local $21) - ) - ) - ) - (set_local $7 - (tee_local $6 - (if i32 - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (get_local $49) - (get_local $50) - ) - ) - ) - (loop $while-in60 - (i32.store - (get_local $7) - (tee_local $1 - (i32.trunc_s/f64 - (get_local $20) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - (br_if $while-in60 - (f64.ne - (tee_local $20 - (f64.mul - (f64.sub - (get_local $20) - (f64.convert_u/i32 - (get_local $1) - ) - ) - (f64.const 1e9) - ) - ) - (f64.const 0) - ) - ) - ) - (if - (i32.gt_s - (tee_local $8 - (i32.load - (get_local $21) - ) - ) - (i32.const 0) - ) - (block - (set_local $1 - (get_local $6) - ) - (loop $while-in62 - (set_local $14 - (if i32 - (i32.gt_s - (get_local $8) - (i32.const 29) - ) - (i32.const 29) - (get_local $8) - ) - ) - (block $do-once63 - (if - (i32.ge_u - (tee_local $12 - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - (get_local $1) - ) - (block - (set_local $8 - (i32.const 0) - ) - (loop $while-in66 - (i32.store - (get_local $12) - (call $___uremdi3 - (tee_local $8 - (call $_i64Add - (call $_bitshift64Shl - (i32.load - (get_local $12) - ) - (i32.const 0) - (get_local $14) - ) - (get_global $tempRet0) - (get_local $8) - (i32.const 0) - ) - ) - (tee_local $18 - (get_global $tempRet0) - ) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (set_local $8 - (call $___udivdi3 - (get_local $8) - (get_local $18) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (br_if $while-in66 - (i32.ge_u - (tee_local $12 - (i32.add - (get_local $12) - (i32.const -4) - ) - ) - (get_local $1) - ) - ) - ) - (br_if $do-once63 - (i32.eqz - (get_local $8) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - (get_local $8) - ) - ) - ) - ) - (loop $while-in68 - (if - (i32.gt_u - (get_local $7) - (get_local $1) - ) - (if - (i32.eqz - (i32.load - (tee_local $8 - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - ) - ) - (block - (set_local $7 - (get_local $8) - ) - (br $while-in68) - ) - ) - ) - ) - (i32.store - (get_local $21) - (tee_local $8 - (i32.sub - (i32.load - (get_local $21) - ) - (get_local $14) - ) - ) - ) - (br_if $while-in62 - (i32.gt_s - (get_local $8) - (i32.const 0) - ) - ) - ) - ) - (set_local $1 - (get_local $6) - ) - ) - (set_local $18 - (if i32 - (i32.lt_s - (get_local $5) - (i32.const 0) - ) - (i32.const 6) - (get_local $5) - ) - ) - (if - (i32.lt_s - (get_local $8) - (i32.const 0) - ) - (block - (set_local $14 - (i32.add - (i32.div_s - (i32.add - (get_local $18) - (i32.const 25) - ) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (set_local $27 - (i32.eq - (get_local $23) - (i32.const 102) - ) - ) - (set_local $5 - (get_local $7) - ) - (loop $while-in70 - (if - (i32.gt_s - (tee_local $8 - (i32.sub - (i32.const 0) - (get_local $8) - ) - ) - (i32.const 9) - ) - (set_local $8 - (i32.const 9) - ) - ) - (block $do-once71 - (if - (i32.lt_u - (get_local $1) - (get_local $5) - ) - (block - (set_local $29 - (i32.add - (i32.shl - (i32.const 1) - (get_local $8) - ) - (i32.const -1) - ) - ) - (set_local $36 - (i32.shr_u - (i32.const 1000000000) - (get_local $8) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $12 - (get_local $1) - ) - (loop $while-in74 - (i32.store - (get_local $12) - (i32.add - (i32.shr_u - (tee_local $37 - (i32.load - (get_local $12) - ) - ) - (get_local $8) - ) - (get_local $7) - ) - ) - (set_local $7 - (i32.mul - (i32.and - (get_local $37) - (get_local $29) - ) - (get_local $36) - ) - ) - (br_if $while-in74 - (i32.lt_u - (tee_local $12 - (i32.add - (get_local $12) - (i32.const 4) - ) - ) - (get_local $5) - ) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - ) - (br_if $do-once71 - (i32.eqz - (get_local $7) - ) - ) - (i32.store - (get_local $5) - (get_local $7) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (i32.gt_s - (i32.shr_s - (i32.sub - (get_local $5) - (tee_local $7 - (if i32 - (get_local $27) - (get_local $6) - (get_local $1) - ) - ) - ) - (i32.const 2) - ) - (get_local $14) - ) - (set_local $5 - (i32.add - (get_local $7) - (i32.shl - (get_local $14) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $21) - (tee_local $8 - (i32.add - (i32.load - (get_local $21) - ) - (get_local $8) - ) - ) - ) - (br_if $while-in70 - (i32.lt_s - (get_local $8) - (i32.const 0) - ) - ) - (set_local $12 - (get_local $5) - ) - ) - ) - (set_local $12 - (get_local $7) - ) - ) - (set_local $27 - (get_local $6) - ) - (block $do-once75 - (if - (i32.lt_u - (get_local $1) - (get_local $12) - ) - (block - (set_local $5 - (i32.mul - (i32.shr_s - (i32.sub - (get_local $27) - (get_local $1) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once75 - (i32.lt_u - (tee_local $8 - (i32.load - (get_local $1) - ) - ) - (i32.const 10) - ) - ) - (set_local $7 - (i32.const 10) - ) - (loop $while-in78 - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br_if $while-in78 - (i32.ge_u - (get_local $8) - (tee_local $7 - (i32.mul - (get_local $7) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.const 0) - ) - ) - ) - (set_local $36 - (i32.eq - (get_local $23) - (i32.const 103) - ) - ) - (set_local $37 - (i32.ne - (get_local $18) - (i32.const 0) - ) - ) - (if - (i32.lt_s - (tee_local $7 - (i32.add - (i32.sub - (get_local $18) - (if i32 - (i32.ne - (get_local $23) - (i32.const 102) - ) - (get_local $5) - (i32.const 0) - ) - ) - (i32.shr_s - (i32.shl - (i32.and - (get_local $37) - (get_local $36) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (get_local $12) - (get_local $27) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (block - (set_local $7 - (i32.add - (i32.add - (get_local $6) - (i32.shl - (i32.div_s - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 9216) - ) - ) - (i32.const 9) - ) - (i32.const 2) - ) - ) - (i32.const -4092) - ) - ) - (if - (i32.lt_s - (tee_local $14 - (i32.add - (i32.rem_s - (get_local $8) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (i32.const 9) - ) - (block - (set_local $8 - (i32.const 10) - ) - (loop $while-in80 - (set_local $8 - (i32.mul - (get_local $8) - (i32.const 10) - ) - ) - (br_if $while-in80 - (i32.ne - (tee_local $14 - (i32.add - (get_local $14) - (i32.const 1) - ) - ) - (i32.const 9) - ) - ) - ) - ) - (set_local $8 - (i32.const 10) - ) - ) - (block $do-once81 - (if - (i32.eqz - (i32.and - (tee_local $29 - (i32.eq - (i32.add - (get_local $7) - (i32.const 4) - ) - (get_local $12) - ) - ) - (i32.eqz - (tee_local $14 - (i32.rem_u - (tee_local $23 - (i32.load - (get_local $7) - ) - ) - (get_local $8) - ) - ) - ) - ) - ) - (block - (set_local $20 - (if f64 - (i32.and - (i32.div_u - (get_local $23) - (get_local $8) - ) - (i32.const 1) - ) - (f64.const 9007199254740994) - (f64.const 9007199254740992) - ) - ) - (set_local $19 - (if f64 - (i32.lt_u - (get_local $14) - (tee_local $51 - (i32.div_s - (get_local $8) - (i32.const 2) - ) - ) - ) - (f64.const 0.5) - (if f64 - (i32.and - (get_local $29) - (i32.eq - (get_local $14) - (get_local $51) - ) - ) - (f64.const 1) - (f64.const 1.5) - ) - ) - ) - (block $do-once83 - (if - (get_local $26) - (block - (br_if $do-once83 - (i32.ne - (i32.load8_s - (get_local $28) - ) - (i32.const 45) - ) - ) - (set_local $20 - (f64.neg - (get_local $20) - ) - ) - (set_local $19 - (f64.neg - (get_local $19) - ) - ) - ) - ) - ) - (i32.store - (get_local $7) - (tee_local $14 - (i32.sub - (get_local $23) - (get_local $14) - ) - ) - ) - (br_if $do-once81 - (f64.eq - (f64.add - (get_local $20) - (get_local $19) - ) - (get_local $20) - ) - ) - (i32.store - (get_local $7) - (tee_local $5 - (i32.add - (get_local $14) - (get_local $8) - ) - ) - ) - (if - (i32.gt_u - (get_local $5) - (i32.const 999999999) - ) - (loop $while-in86 - (i32.store - (get_local $7) - (i32.const 0) - ) - (if - (i32.lt_u - (tee_local $7 - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - (get_local $1) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - (i32.const 0) - ) - ) - (i32.store - (get_local $7) - (tee_local $5 - (i32.add - (i32.load - (get_local $7) - ) - (i32.const 1) - ) - ) - ) - (br_if $while-in86 - (i32.gt_u - (get_local $5) - (i32.const 999999999) - ) - ) - ) - ) - (set_local $5 - (i32.mul - (i32.shr_s - (i32.sub - (get_local $27) - (get_local $1) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once81 - (i32.lt_u - (tee_local $14 - (i32.load - (get_local $1) - ) - ) - (i32.const 10) - ) - ) - (set_local $8 - (i32.const 10) - ) - (loop $while-in88 - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br_if $while-in88 - (i32.ge_u - (get_local $14) - (tee_local $8 - (i32.mul - (get_local $8) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - ) - (set_local $14 - (get_local $1) - ) - (set_local $8 - (get_local $5) - ) - (if - (i32.le_u - (get_local $12) - (tee_local $1 - (i32.add - (get_local $7) - (i32.const 4) - ) - ) - ) - (set_local $1 - (get_local $12) - ) - ) - ) - (block - (set_local $14 - (get_local $1) - ) - (set_local $8 - (get_local $5) - ) - (set_local $1 - (get_local $12) - ) - ) - ) - (set_local $23 - (i32.sub - (i32.const 0) - (get_local $8) - ) - ) - (loop $while-in90 - (block $while-out89 - (if - (i32.le_u - (get_local $1) - (get_local $14) - ) - (block - (set_local $29 - (i32.const 0) - ) - (set_local $7 - (get_local $1) - ) - (br $while-out89) - ) - ) - (if - (i32.load - (tee_local $5 - (i32.add - (get_local $1) - (i32.const -4) - ) - ) - ) - (block - (set_local $29 - (i32.const 1) - ) - (set_local $7 - (get_local $1) - ) - ) - (block - (set_local $1 - (get_local $5) - ) - (br $while-in90) - ) - ) - ) - ) - (block $do-once91 - (set_local $12 - (if i32 - (get_local $36) - (block i32 - (set_local $1 - (if i32 - (i32.and - (i32.gt_s - (tee_local $1 - (i32.add - (i32.xor - (get_local $37) - (i32.const 1) - ) - (get_local $18) - ) - ) - (get_local $8) - ) - (i32.gt_s - (get_local $8) - (i32.const -5) - ) - ) - (block i32 - (set_local $5 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (i32.sub - (i32.add - (get_local $1) - (i32.const -1) - ) - (get_local $8) - ) - ) - (block i32 - (set_local $5 - (i32.add - (get_local $9) - (i32.const -2) - ) - ) - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - ) - (br_if $do-once91 - (tee_local $12 - (i32.and - (get_local $10) - (i32.const 8) - ) - ) - ) - (block $do-once93 - (if - (get_local $29) - (block - (if - (i32.eqz - (tee_local $12 - (i32.load - (i32.add - (get_local $7) - (i32.const -4) - ) - ) - ) - ) - (block - (set_local $9 - (i32.const 9) - ) - (br $do-once93) - ) - ) - (if - (i32.rem_u - (get_local $12) - (i32.const 10) - ) - (block - (set_local $9 - (i32.const 0) - ) - (br $do-once93) - ) - (block - (set_local $18 - (i32.const 10) - ) - (set_local $9 - (i32.const 0) - ) - ) - ) - (loop $while-in96 - (set_local $9 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (br_if $while-in96 - (i32.eqz - (i32.rem_u - (get_local $12) - (tee_local $18 - (i32.mul - (get_local $18) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (set_local $9 - (i32.const 9) - ) - ) - ) - (set_local $12 - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (get_local $7) - (get_local $27) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (if i32 - (i32.eq - (i32.or - (get_local $5) - (i32.const 32) - ) - (i32.const 102) - ) - (block i32 - (if - (i32.ge_s - (get_local $1) - (if i32 - (i32.lt_s - (tee_local $9 - (i32.sub - (get_local $12) - (get_local $9) - ) - ) - (i32.const 0) - ) - (tee_local $9 - (i32.const 0) - ) - (get_local $9) - ) - ) - (set_local $1 - (get_local $9) - ) - ) - (i32.const 0) - ) - (block i32 - (if - (i32.ge_s - (get_local $1) - (if i32 - (i32.lt_s - (tee_local $9 - (i32.sub - (i32.add - (get_local $12) - (get_local $8) - ) - (get_local $9) - ) - ) - (i32.const 0) - ) - (tee_local $9 - (i32.const 0) - ) - (get_local $9) - ) - ) - (set_local $1 - (get_local $9) - ) - ) - (i32.const 0) - ) - ) - ) - (block i32 - (set_local $5 - (get_local $9) - ) - (set_local $1 - (get_local $18) - ) - (i32.and - (get_local $10) - (i32.const 8) - ) - ) - ) - ) - ) - (if - (tee_local $27 - (i32.eq - (i32.or - (get_local $5) - (i32.const 32) - ) - (i32.const 102) - ) - ) - (block - (set_local $5 - (if i32 - (i32.gt_s - (get_local $8) - (i32.const 0) - ) - (get_local $8) - (i32.const 0) - ) - ) - (set_local $8 - (i32.const 0) - ) - ) - (block - (if - (i32.lt_s - (i32.sub - (get_local $31) - (tee_local $9 - (call $_fmt_u - (if i32 - (i32.lt_s - (get_local $8) - (i32.const 0) - ) - (get_local $23) - (tee_local $23 - (get_local $8) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $23) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (get_local $34) - ) - ) - ) - (i32.const 2) - ) - (loop $while-in98 - (i32.store8 - (tee_local $9 - (i32.add - (get_local $9) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in98 - (i32.lt_s - (i32.sub - (get_local $31) - (get_local $9) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $9) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (get_local $8) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (tee_local $8 - (i32.add - (get_local $9) - (i32.const -2) - ) - ) - (get_local $5) - ) - (set_local $5 - (i32.sub - (get_local $31) - (get_local $8) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (tee_local $18 - (i32.add - (i32.add - (i32.add - (i32.add - (get_local $26) - (i32.const 1) - ) - (get_local $1) - ) - (i32.ne - (tee_local $23 - (i32.or - (get_local $1) - (get_local $12) - ) - ) - (i32.const 0) - ) - ) - (get_local $5) - ) - ) - (get_local $10) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $28) - (get_local $26) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $13) - (get_local $18) - (i32.xor - (get_local $10) - (i32.const 65536) - ) - ) - (block $do-once99 - (if - (get_local $27) - (block - (set_local $8 - (tee_local $9 - (if i32 - (i32.gt_u - (get_local $14) - (get_local $6) - ) - (get_local $6) - (get_local $14) - ) - ) - ) - (loop $while-in102 - (set_local $5 - (call $_fmt_u - (i32.load - (get_local $8) - ) - (i32.const 0) - (get_local $33) - ) - ) - (block $do-once103 - (if - (i32.eq - (get_local $8) - (get_local $9) - ) - (block - (br_if $do-once103 - (i32.ne - (get_local $5) - (get_local $33) - ) - ) - (i32.store8 - (get_local $35) - (i32.const 48) - ) - (set_local $5 - (get_local $35) - ) - ) - (block - (br_if $do-once103 - (i32.le_u - (get_local $5) - (get_local $22) - ) - ) - (drop - (call $_memset - (get_local $22) - (i32.const 48) - (i32.sub - (get_local $5) - (get_local $30) - ) - ) - ) - (loop $while-in106 - (br_if $while-in106 - (i32.gt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - (get_local $22) - ) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $5) - (i32.sub - (get_local $43) - (get_local $5) - ) - (get_local $0) - ) - ) - ) - (if - (i32.le_u - (tee_local $5 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (get_local $6) - ) - (block - (set_local $8 - (get_local $5) - ) - (br $while-in102) - ) - ) - ) - (block $do-once107 - (if - (get_local $23) - (block - (br_if $do-once107 - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (i32.const 17737) - (i32.const 1) - (get_local $0) - ) - ) - ) - ) - ) - (if - (i32.and - (i32.gt_s - (get_local $1) - (i32.const 0) - ) - (i32.lt_u - (get_local $5) - (get_local $7) - ) - ) - (loop $while-in110 - (if - (i32.gt_u - (tee_local $6 - (call $_fmt_u - (i32.load - (get_local $5) - ) - (i32.const 0) - (get_local $33) - ) - ) - (get_local $22) - ) - (block - (drop - (call $_memset - (get_local $22) - (i32.const 48) - (i32.sub - (get_local $6) - (get_local $30) - ) - ) - ) - (loop $while-in112 - (br_if $while-in112 - (i32.gt_u - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (get_local $22) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $6) - (if i32 - (i32.gt_s - (get_local $1) - (i32.const 9) - ) - (i32.const 9) - (get_local $1) - ) - (get_local $0) - ) - ) - ) - (set_local $6 - (i32.add - (get_local $1) - (i32.const -9) - ) - ) - (if - (i32.and - (i32.gt_s - (get_local $1) - (i32.const 9) - ) - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (get_local $7) - ) - ) - (block - (set_local $1 - (get_local $6) - ) - (br $while-in110) - ) - (set_local $1 - (get_local $6) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (i32.add - (get_local $1) - (i32.const 9) - ) - (i32.const 9) - (i32.const 0) - ) - ) - (block - (if - (i32.eqz - (get_local $29) - ) - (set_local $7 - (i32.add - (get_local $14) - (i32.const 4) - ) - ) - ) - (if - (i32.gt_s - (get_local $1) - (i32.const -1) - ) - (block - (set_local $12 - (i32.eqz - (get_local $12) - ) - ) - (set_local $6 - (get_local $1) - ) - (set_local $5 - (get_local $14) - ) - (loop $while-in114 - (if - (i32.eq - (tee_local $1 - (call $_fmt_u - (i32.load - (get_local $5) - ) - (i32.const 0) - (get_local $33) - ) - ) - (get_local $33) - ) - (block - (i32.store8 - (get_local $35) - (i32.const 48) - ) - (set_local $1 - (get_local $35) - ) - ) - ) - (block $do-once115 - (if - (i32.eq - (get_local $5) - (get_local $14) - ) - (block - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (i32.const 1) - (get_local $0) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br_if $do-once115 - (i32.and - (get_local $12) - (i32.lt_s - (get_local $6) - (i32.const 1) - ) - ) - ) - (br_if $do-once115 - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (i32.const 17737) - (i32.const 1) - (get_local $0) - ) - ) - ) - (block - (br_if $do-once115 - (i32.le_u - (get_local $1) - (get_local $22) - ) - ) - (drop - (call $_memset - (get_local $22) - (i32.const 48) - (i32.add - (get_local $1) - (get_local $45) - ) - ) - ) - (loop $while-in118 - (br_if $while-in118 - (i32.gt_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (get_local $22) - ) - ) - ) - ) - ) - ) - (set_local $9 - (i32.sub - (get_local $43) - (get_local $1) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (if i32 - (i32.gt_s - (get_local $6) - (get_local $9) - ) - (get_local $9) - (get_local $6) - ) - (get_local $0) - ) - ) - ) - (br_if $while-in114 - (i32.and - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 4) - ) - ) - (get_local $7) - ) - (i32.gt_s - (tee_local $6 - (i32.sub - (get_local $6) - (get_local $9) - ) - ) - (i32.const -1) - ) - ) - ) - (set_local $1 - (get_local $6) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (i32.add - (get_local $1) - (i32.const 18) - ) - (i32.const 18) - (i32.const 0) - ) - (br_if $do-once99 - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $8) - (i32.sub - (get_local $31) - (get_local $8) - ) - (get_local $0) - ) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $18) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (if - (i32.ge_s - (get_local $18) - (get_local $13) - ) - (set_local $13 - (get_local $18) - ) - ) - ) - (block - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (tee_local $6 - (i32.add - (if i32 - (tee_local $8 - (i32.or - (f64.ne - (get_local $19) - (get_local $19) - ) - (i32.const 0) - ) - ) - (tee_local $26 - (i32.const 0) - ) - (get_local $26) - ) - (i32.const 3) - ) - ) - (get_local $7) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const 32) - ) - ) - (block - (drop - (call $___fwritex - (get_local $28) - (get_local $26) - (get_local $0) - ) - ) - (set_local $1 - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $5 - (i32.ne - (i32.and - (get_local $9) - (i32.const 32) - ) - (i32.const 0) - ) - ) - (if - (i32.eqz - (i32.and - (get_local $1) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (if i32 - (get_local $8) - (if i32 - (get_local $5) - (i32.const 17729) - (i32.const 17733) - ) - (if i32 - (get_local $5) - (i32.const 17721) - (i32.const 17725) - ) - ) - (i32.const 3) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $6) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (if - (i32.ge_s - (get_local $6) - (get_local $13) - ) - (set_local $13 - (get_local $6) - ) - ) - ) - ) - ) - (set_local $6 - (get_local $13) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $9 - (get_local $5) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (set_local $6 - (get_local $24) - ) - (br $__rjto$8) - ) - (set_local $8 - (i32.and - (get_local $9) - (i32.const 32) - ) - ) - (if - (i32.and - (i32.eqz - (tee_local $10 - (i32.load - (tee_local $6 - (get_local $17) - ) - ) - ) - ) - (i32.eqz - (tee_local $7 - (i32.load offset=4 - (get_local $6) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $24) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (br $__rjti$8) - ) - (block - (set_local $6 - (get_local $24) - ) - (loop $while-in123 - (i32.store8 - (tee_local $6 - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (i32.or - (i32.load8_u - (i32.add - (i32.and - (get_local $10) - (i32.const 15) - ) - (i32.const 15777) - ) - ) - (get_local $8) - ) - ) - (br_if $while-in123 - (i32.eqz - (i32.and - (i32.eqz - (tee_local $10 - (call $_bitshift64Lshr - (get_local $10) - (get_local $7) - (i32.const 4) - ) - ) - ) - (i32.eqz - (tee_local $7 - (get_global $tempRet0) - ) - ) - ) - ) - ) - ) - (if - (i32.or - (i32.eqz - (i32.and - (get_local $1) - (i32.const 8) - ) - ) - (i32.and - (i32.eqz - (i32.load - (tee_local $10 - (get_local $17) - ) - ) - ) - (i32.eqz - (i32.load offset=4 - (get_local $10) - ) - ) - ) - ) - (block - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (br $__rjti$8) - ) - (block - (set_local $7 - (i32.const 2) - ) - (set_local $8 - (i32.add - (i32.shr_s - (get_local $9) - (i32.const 4) - ) - (i32.const 15793) - ) - ) - (br $__rjti$8) - ) - ) - ) - ) - (br $__rjto$8) - ) - (set_local $6 - (call $_fmt_u - (get_local $1) - (get_local $6) - (get_local $24) - ) - ) - (set_local $1 - (get_local $10) - ) - (br $__rjti$8) - ) - (set_local $1 - (get_local $6) - ) - (set_local $10 - (get_local $7) - ) - (set_local $9 - (if i32 - (tee_local $14 - (i32.eqz - (tee_local $12 - (call $_memchr - (get_local $6) - (i32.const 0) - (get_local $5) - ) - ) - ) - ) - (get_local $5) - (i32.sub - (get_local $12) - (get_local $6) - ) - ) - ) - (set_local $7 - (i32.const 0) - ) - (set_local $8 - (i32.const 15793) - ) - (set_local $6 - (if i32 - (get_local $14) - (i32.add - (get_local $6) - (get_local $5) - ) - (get_local $12) - ) - ) - (br $__rjto$8) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $5 - (i32.const 0) - ) - (set_local $8 - (get_local $6) - ) - (loop $while-in125 - (block $while-out124 - (br_if $while-out124 - (i32.eqz - (tee_local $9 - (i32.load - (get_local $8) - ) - ) - ) - ) - (br_if $while-out124 - (i32.or - (i32.lt_s - (tee_local $5 - (call $_wctomb - (get_local $38) - (get_local $9) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (get_local $5) - (i32.sub - (get_local $7) - (get_local $1) - ) - ) - ) - ) - (if - (i32.gt_u - (get_local $7) - (tee_local $1 - (i32.add - (get_local $5) - (get_local $1) - ) - ) - ) - (block - (set_local $8 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - (br $while-in125) - ) - ) - ) - ) - (if - (i32.lt_s - (get_local $5) - (i32.const 0) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $1) - (get_local $10) - ) - (if - (get_local $1) - (block - (set_local $5 - (i32.const 0) - ) - (loop $while-in127 - (br_if $__rjti$7 - (i32.eqz - (tee_local $7 - (i32.load - (get_local $6) - ) - ) - ) - ) - (br_if $__rjti$7 - (i32.gt_s - (tee_local $5 - (i32.add - (tee_local $7 - (call $_wctomb - (get_local $38) - (get_local $7) - ) - ) - (get_local $5) - ) - ) - (get_local $1) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $38) - (get_local $7) - (get_local $0) - ) - ) - ) - (br_if $__rjti$7 - (i32.ge_u - (get_local $5) - (get_local $1) - ) - ) - (set_local $6 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - (br $while-in127) - ) - ) - (block - (set_local $1 - (i32.const 0) - ) - (br $__rjti$7) - ) - ) - (br $__rjto$8) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $13) - (get_local $1) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (set_local $6 - (if i32 - (i32.gt_s - (get_local $13) - (get_local $1) - ) - (get_local $13) - (get_local $1) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - (set_local $10 - (if i32 - (i32.gt_s - (get_local $5) - (i32.const -1) - ) - (i32.and - (get_local $1) - (i32.const -65537) - ) - (get_local $1) - ) - ) - (set_local $6 - (if i32 - (i32.or - (get_local $5) - (tee_local $9 - (i32.or - (i32.ne - (i32.load - (tee_local $1 - (get_local $17) - ) - ) - (i32.const 0) - ) - (i32.ne - (i32.load offset=4 - (get_local $1) - ) - (i32.const 0) - ) - ) - ) - ) - (block i32 - (set_local $1 - (get_local $6) - ) - (set_local $9 - (if i32 - (i32.gt_s - (get_local $5) - (tee_local $6 - (i32.add - (i32.xor - (get_local $9) - (i32.const 1) - ) - (i32.sub - (get_local $40) - (get_local $6) - ) - ) - ) - ) - (get_local $5) - (get_local $6) - ) - ) - (get_local $24) - ) - (block i32 - (set_local $1 - (get_local $24) - ) - (set_local $9 - (i32.const 0) - ) - (get_local $24) - ) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (tee_local $6 - (if i32 - (i32.lt_s - (get_local $13) - (tee_local $5 - (i32.add - (get_local $7) - (if i32 - (i32.lt_s - (get_local $9) - (tee_local $12 - (i32.sub - (get_local $6) - (get_local $1) - ) - ) - ) - (tee_local $9 - (get_local $12) - ) - (get_local $9) - ) - ) - ) - ) - (get_local $5) - (get_local $13) - ) - ) - (get_local $5) - (get_local $10) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $8) - (get_local $7) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $6) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 65536) - ) - ) - (call $_pad - (get_local $0) - (i32.const 48) - (get_local $9) - (get_local $12) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (drop - (call $___fwritex - (get_local $1) - (get_local $12) - (get_local $0) - ) - ) - ) - (call $_pad - (get_local $0) - (i32.const 32) - (get_local $6) - (get_local $5) - (i32.xor - (get_local $10) - (i32.const 8192) - ) - ) - (set_local $1 - (get_local $11) - ) - (br $label$continue$L1) - ) - ) - (br $label$break$L345) - ) - (if - (i32.eqz - (get_local $0) - ) - (if - (get_local $16) - (block - (set_local $0 - (i32.const 1) - ) - (loop $while-in130 - (if - (tee_local $1 - (i32.load - (i32.add - (get_local $4) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - ) - ) - (block - (call $_pop_arg - (i32.add - (get_local $3) - (i32.shl - (get_local $0) - (i32.const 3) - ) - ) - (get_local $1) - (get_local $2) - ) - (br_if $while-in130 - (i32.lt_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (set_local $15 - (i32.const 1) - ) - (br $label$break$L345) - ) - ) - ) - (if - (i32.lt_s - (get_local $0) - (i32.const 10) - ) - (loop $while-in132 - (if - (i32.load - (i32.add - (get_local $4) - (i32.shl - (get_local $0) - (i32.const 2) - ) - ) - ) - (block - (set_local $15 - (i32.const -1) - ) - (br $label$break$L345) - ) - ) - (br_if $while-in132 - (i32.lt_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (set_local $15 - (i32.const 1) - ) - ) - (set_local $15 - (i32.const 1) - ) - ) - ) - (set_local $15 - (i32.const 0) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $25) - ) - (get_local $15) - ) - (func $_deflate (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (if - (i32.eqz - (get_local $0) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.or - (i32.gt_u - (get_local $1) - (i32.const 5) - ) - (i32.eqz - (tee_local $6 - (i32.load - (tee_local $19 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (return - (i32.const -2) - ) - ) - (block $do-once - (if - (i32.load - (tee_local $15 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - (block - (if - (i32.eqz - (i32.load - (get_local $0) - ) - ) - (br_if $do-once - (i32.load offset=4 - (get_local $0) - ) - ) - ) - (if - (i32.eqz - (i32.and - (tee_local $26 - (i32.ne - (get_local $1) - (i32.const 4) - ) - ) - (i32.eq - (tee_local $2 - (i32.load - (tee_local $17 - (i32.add - (get_local $6) - (i32.const 4) - ) - ) - ) - ) - (i32.const 666) - ) - ) - ) - (block - (if - (i32.eqz - (i32.load - (tee_local $14 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (block - (i32.store offset=24 - (get_local $0) - (i32.load - (i32.const 9972) - ) - ) - (return - (i32.const -5) - ) - ) - ) - (i32.store - (get_local $6) - (get_local $0) - ) - (set_local $12 - (i32.load - (tee_local $25 - (i32.add - (get_local $6) - (i32.const 40) - ) - ) - ) - ) - (i32.store - (get_local $25) - (get_local $1) - ) - (block $do-once13 - (block $__rjti$10 - (block $__rjti$9 - (block $__rjti$8 - (block $__rjti$7 - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (br_if $__rjti$3 - (i32.ne - (get_local $2) - (i32.const 42) - ) - ) - (if - (i32.ne - (i32.load offset=24 - (get_local $6) - ) - (i32.const 2) - ) - (block - (set_local $2 - (i32.add - (i32.shl - (i32.load offset=48 - (get_local $6) - ) - (i32.const 12) - ) - (i32.const -30720) - ) - ) - (set_local $2 - (i32.or - (tee_local $3 - (if i32 - (i32.gt_s - (i32.load offset=136 - (get_local $6) - ) - (i32.const 1) - ) - (i32.const 0) - (if i32 - (i32.lt_s - (tee_local $3 - (i32.load offset=132 - (get_local $6) - ) - ) - (i32.const 2) - ) - (i32.const 0) - (if i32 - (i32.lt_s - (get_local $3) - (i32.const 6) - ) - (i32.const 64) - (if i32 - (i32.eq - (get_local $3) - (i32.const 6) - ) - (i32.const 128) - (i32.const 192) - ) - ) - ) - ) - ) - (get_local $2) - ) - ) - (if - (i32.load - (tee_local $4 - (i32.add - (get_local $6) - (i32.const 108) - ) - ) - ) - (set_local $2 - (i32.or - (get_local $2) - (i32.const 32) - ) - ) - ) - (i32.store - (get_local $17) - (i32.const 113) - ) - (set_local $3 - (i32.load - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $7) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - (get_local $3) - ) - (i32.shr_u - (get_local $2) - (i32.const 8) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $3 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $3) - ) - (i32.xor - (i32.or - (i32.rem_u - (get_local $2) - (i32.const 31) - ) - (get_local $2) - ) - (i32.const 31) - ) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (if - (i32.load - (get_local $4) - ) - (block - (set_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.shr_u - (get_local $3) - (i32.const 24) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.shr_u - (get_local $3) - (i32.const 16) - ) - ) - (set_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - ) - ) - (i32.store - (get_local $5) - (call $_adler32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - (set_local $2 - (i32.load - (get_local $17) - ) - ) - (br $__rjti$3) - ) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (call $_crc32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - (set_local $2 - (i32.load - (tee_local $7 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $7) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - (get_local $2) - ) - (i32.const 31) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const -117) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const 8) - ) - (if - (i32.eqz - (tee_local $2 - (i32.load - (tee_local $5 - (i32.add - (get_local $6) - (i32.const 28) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const 0) - ) - (set_local $3 - (if i32 - (i32.eq - (tee_local $2 - (i32.load offset=132 - (get_local $6) - ) - ) - (i32.const 9) - ) - (i32.const 2) - (if i32 - (if i32 - (i32.lt_s - (get_local $2) - (i32.const 2) - ) - (i32.const 1) - (i32.gt_s - (i32.load offset=136 - (get_local $6) - ) - (i32.const 1) - ) - ) - (i32.const 4) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (i32.const 3) - ) - (i32.store - (get_local $17) - (i32.const 113) - ) - (br $do-once13) - ) - ) - (set_local $3 - (i32.and - (i32.or - (i32.or - (i32.or - (i32.or - (if i32 - (i32.load offset=44 - (get_local $2) - ) - (i32.const 2) - (i32.const 0) - ) - (i32.ne - (i32.load - (get_local $2) - ) - (i32.const 0) - ) - ) - (if i32 - (i32.load offset=16 - (get_local $2) - ) - (i32.const 4) - (i32.const 0) - ) - ) - (if i32 - (i32.load offset=28 - (get_local $2) - ) - (i32.const 8) - (i32.const 0) - ) - ) - (if i32 - (i32.load offset=36 - (get_local $2) - ) - (i32.const 16) - (i32.const 0) - ) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $3 - (i32.and - (i32.load offset=4 - (i32.load - (get_local $5) - ) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $3 - (i32.and - (i32.shr_u - (i32.load offset=4 - (i32.load - (get_local $5) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $3 - (i32.and - (i32.shr_u - (i32.load offset=4 - (i32.load - (get_local $5) - ) - ) - (i32.const 16) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $3 - (i32.shr_u - (i32.load offset=4 - (i32.load - (get_local $5) - ) - ) - (i32.const 24) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $3 - (if i32 - (i32.eq - (tee_local $2 - (i32.load offset=132 - (get_local $6) - ) - ) - (i32.const 9) - ) - (i32.const 2) - (if i32 - (if i32 - (i32.lt_s - (get_local $2) - (i32.const 2) - ) - (i32.const 1) - (i32.gt_s - (i32.load offset=136 - (get_local $6) - ) - (i32.const 1) - ) - ) - (i32.const 4) - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $3 - (i32.and - (i32.load offset=12 - (i32.load - (get_local $5) - ) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (if - (i32.load offset=16 - (tee_local $2 - (i32.load - (get_local $5) - ) - ) - ) - (block - (set_local $3 - (i32.and - (i32.load offset=20 - (get_local $2) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $3 - (i32.and - (i32.shr_u - (i32.load offset=20 - (i32.load - (get_local $5) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $7) - (i32.add - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (get_local $3) - ) - (set_local $2 - (i32.load - (get_local $5) - ) - ) - ) - ) - (if - (i32.load offset=44 - (get_local $2) - ) - (i32.store - (get_local $4) - (call $_crc32 - (i32.load - (get_local $4) - ) - (i32.load - (get_local $8) - ) - (i32.load - (get_local $7) - ) - ) - ) - ) - (i32.store offset=32 - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $17) - (i32.const 69) - ) - (br $__rjti$4) - ) - (br_if $__rjti$5 - (i32.ne - (get_local $2) - (i32.const 69) - ) - ) - (set_local $5 - (i32.add - (get_local $6) - (i32.const 28) - ) - ) - ) - (if - (i32.eqz - (i32.load offset=16 - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - ) - ) - (block - (i32.store - (get_local $17) - (i32.const 73) - ) - (set_local $3 - (get_local $5) - ) - (set_local $2 - (get_local $4) - ) - (br $__rjti$6) - ) - ) - (set_local $2 - (i32.load - (tee_local $13 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - ) - (set_local $2 - (if i32 - (i32.load offset=44 - (tee_local $3 - (block $label$break$L53 i32 - (if i32 - (i32.lt_u - (tee_local $3 - (i32.load - (tee_local $11 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - ) - ) - (i32.and - (i32.load offset=20 - (get_local $4) - ) - (i32.const 65535) - ) - ) - (block i32 - (set_local $16 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (set_local $18 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (set_local $20 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (set_local $8 - (get_local $2) - ) - (loop $while-in - (block $while-out - (set_local $3 - (if i32 - (i32.eq - (get_local $8) - (i32.load - (get_local $16) - ) - ) - (block i32 - (if - (i32.and - (i32.gt_u - (get_local $8) - (get_local $2) - ) - (i32.ne - (i32.load offset=44 - (get_local $4) - ) - (i32.const 0) - ) - ) - (i32.store - (get_local $18) - (call $_crc32 - (i32.load - (get_local $18) - ) - (i32.add - (i32.load - (get_local $20) - ) - (get_local $2) - ) - (i32.sub - (get_local $8) - (get_local $2) - ) - ) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (get_local $19) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (get_local $14) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $15) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $15) - (i32.add - (i32.load - (get_local $15) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $7 - (i32.load - (get_local $19) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $9) - (i32.add - (i32.load - (get_local $9) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $14) - (i32.sub - (i32.load - (get_local $14) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - (br_if $while-out - (i32.eq - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.load - (get_local $16) - ) - ) - ) - (set_local $7 - (i32.load - (get_local $5) - ) - ) - (set_local $4 - (i32.load - (get_local $11) - ) - ) - (get_local $2) - ) - (block i32 - (set_local $7 - (get_local $4) - ) - (set_local $4 - (get_local $3) - ) - (get_local $8) - ) - ) - ) - (set_local $4 - (i32.load8_s - (i32.add - (i32.load offset=16 - (get_local $7) - ) - (get_local $4) - ) - ) - ) - (i32.store - (get_local $13) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $20) - ) - (get_local $3) - ) - (get_local $4) - ) - (i32.store - (get_local $11) - (tee_local $3 - (i32.add - (i32.load - (get_local $11) - ) - (i32.const 1) - ) - ) - ) - (if - (i32.ge_u - (get_local $3) - (i32.and - (i32.load offset=20 - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 65535) - ) - ) - (br $label$break$L53 - (get_local $4) - ) - (block - (set_local $8 - (i32.load - (get_local $13) - ) - ) - (br $while-in) - ) - ) - ) - ) - (i32.load - (get_local $5) - ) - ) - (get_local $4) - ) - ) - ) - ) - (if i32 - (i32.gt_u - (tee_local $4 - (i32.load - (get_local $13) - ) - ) - (get_local $2) - ) - (block i32 - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (call $_crc32 - (i32.load - (get_local $3) - ) - (i32.add - (i32.load offset=8 - (get_local $6) - ) - (get_local $2) - ) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - ) - (i32.load - (get_local $5) - ) - ) - (get_local $3) - ) - (get_local $3) - ) - ) - (if - (i32.eq - (i32.load - (get_local $11) - ) - (i32.load offset=20 - (get_local $2) - ) - ) - (block - (i32.store - (get_local $11) - (i32.const 0) - ) - (i32.store - (get_local $17) - (i32.const 73) - ) - (set_local $3 - (get_local $5) - ) - (br $__rjti$6) - ) - (block - (set_local $2 - (i32.load - (get_local $17) - ) - ) - (br $__rjti$5) - ) - ) - (br $do-once13) - ) - (br_if $__rjti$7 - (i32.ne - (get_local $2) - (i32.const 73) - ) - ) - (set_local $3 - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 28) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $2) - ) - ) - ) - (if - (i32.eqz - (i32.load offset=28 - (get_local $2) - ) - ) - (block - (i32.store - (get_local $17) - (i32.const 91) - ) - (br $__rjti$8) - ) - ) - (set_local $20 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (set_local $16 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (set_local $18 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - (set_local $4 - (tee_local $2 - (i32.load - (tee_local $13 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - ) - ) - (loop $while-in8 - (block $while-out7 - (if - (i32.eq - (get_local $4) - (i32.load - (get_local $20) - ) - ) - (block - (if - (if i32 - (i32.gt_u - (get_local $4) - (get_local $2) - ) - (i32.load offset=44 - (i32.load - (get_local $3) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $11) - (call $_crc32 - (i32.load - (get_local $11) - ) - (i32.add - (i32.load - (get_local $16) - ) - (get_local $2) - ) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $4 - (i32.load offset=20 - (tee_local $5 - (i32.load - (get_local $19) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (get_local $14) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $4) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $15) - ) - (i32.load offset=16 - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $15) - (i32.add - (i32.load - (get_local $15) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $7 - (i32.load - (get_local $19) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $9) - (i32.add - (i32.load - (get_local $9) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $14) - (i32.sub - (i32.load - (get_local $14) - ) - (get_local $2) - ) - ) - (set_local $5 - (i32.load - (tee_local $4 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $5) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $5) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.load - (get_local $20) - ) - ) - (block - (set_local $5 - (i32.const 1) - ) - (br $while-out7) - ) - (set_local $4 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $18) - (i32.add - (tee_local $5 - (i32.load - (get_local $18) - ) - ) - (i32.const 1) - ) - ) - (set_local $5 - (i32.load8_s - (i32.add - (i32.load offset=28 - (i32.load - (get_local $3) - ) - ) - (get_local $5) - ) - ) - ) - (i32.store - (get_local $13) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $16) - ) - (get_local $4) - ) - (get_local $5) - ) - (if - (get_local $5) - (block - (set_local $4 - (i32.load - (get_local $13) - ) - ) - (br $while-in8) - ) - (set_local $5 - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - ) - ) - ) - (if - (i32.load offset=44 - (i32.load - (get_local $3) - ) - ) - (if - (i32.gt_u - (tee_local $4 - (i32.load - (get_local $13) - ) - ) - (get_local $2) - ) - (i32.store - (get_local $11) - (call $_crc32 - (i32.load - (get_local $11) - ) - (i32.add - (i32.load - (get_local $16) - ) - (get_local $2) - ) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - ) - ) - ) - (if - (get_local $5) - (block - (set_local $2 - (i32.load - (get_local $17) - ) - ) - (br $__rjti$7) - ) - (block - (i32.store - (get_local $18) - (i32.const 0) - ) - (i32.store - (get_local $17) - (i32.const 91) - ) - (br $__rjti$8) - ) - ) - (br $do-once13) - ) - (br_if $__rjti$9 - (i32.ne - (get_local $2) - (i32.const 91) - ) - ) - (set_local $3 - (i32.add - (get_local $6) - (i32.const 28) - ) - ) - ) - (if - (i32.eqz - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - ) - (block - (i32.store - (get_local $17) - (i32.const 103) - ) - (br $__rjti$10) - ) - ) - (set_local $18 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - (set_local $16 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (set_local $20 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 32) - ) - ) - (set_local $4 - (tee_local $2 - (i32.load - (tee_local $13 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - ) - ) - (loop $while-in12 - (block $while-out11 - (if - (i32.eq - (get_local $4) - (i32.load - (get_local $18) - ) - ) - (block - (if - (if i32 - (i32.gt_u - (get_local $4) - (get_local $2) - ) - (i32.load offset=44 - (i32.load - (get_local $3) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $11) - (call $_crc32 - (i32.load - (get_local $11) - ) - (i32.add - (i32.load - (get_local $16) - ) - (get_local $2) - ) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $4 - (i32.load offset=20 - (tee_local $5 - (i32.load - (get_local $19) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (get_local $14) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $4) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $15) - ) - (i32.load offset=16 - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $15) - (i32.add - (i32.load - (get_local $15) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $7 - (i32.load - (get_local $19) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $20) - (i32.add - (i32.load - (get_local $20) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $14) - (i32.sub - (i32.load - (get_local $14) - ) - (get_local $2) - ) - ) - (set_local $5 - (i32.load - (tee_local $4 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $5) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $5) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.load - (get_local $18) - ) - ) - (block - (set_local $5 - (i32.const 1) - ) - (br $while-out11) - ) - (set_local $4 - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (tee_local $5 - (i32.load - (get_local $9) - ) - ) - (i32.const 1) - ) - ) - (set_local $5 - (i32.load8_s - (i32.add - (i32.load offset=36 - (i32.load - (get_local $3) - ) - ) - (get_local $5) - ) - ) - ) - (i32.store - (get_local $13) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $16) - ) - (get_local $4) - ) - (get_local $5) - ) - (if - (get_local $5) - (block - (set_local $4 - (i32.load - (get_local $13) - ) - ) - (br $while-in12) - ) - (set_local $5 - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - ) - ) - ) - (if - (i32.load offset=44 - (i32.load - (get_local $3) - ) - ) - (if - (i32.gt_u - (tee_local $4 - (i32.load - (get_local $13) - ) - ) - (get_local $2) - ) - (i32.store - (get_local $11) - (call $_crc32 - (i32.load - (get_local $11) - ) - (i32.add - (i32.load - (get_local $16) - ) - (get_local $2) - ) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - ) - ) - ) - (if - (get_local $5) - (block - (set_local $2 - (i32.load - (get_local $17) - ) - ) - (br $__rjti$9) - ) - (block - (i32.store - (get_local $17) - (i32.const 103) - ) - (br $__rjti$10) - ) - ) - (br $do-once13) - ) - (if - (i32.eq - (get_local $2) - (i32.const 103) - ) - (block - (set_local $3 - (i32.add - (get_local $6) - (i32.const 28) - ) - ) - (br $__rjti$10) - ) - ) - (br $do-once13) - ) - (if - (i32.eqz - (i32.load offset=44 - (i32.load - (get_local $3) - ) - ) - ) - (block - (i32.store - (get_local $17) - (i32.const 113) - ) - (br $do-once13) - ) - ) - (if - (i32.gt_u - (i32.add - (i32.load - (tee_local $9 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - (i32.const 2) - ) - (i32.load - (tee_local $5 - (i32.add - (get_local $6) - (i32.const 12) - ) - ) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (get_local $19) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (get_local $14) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $15) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $15) - (i32.add - (i32.load - (get_local $15) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $7 - (i32.load - (get_local $19) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $14) - (i32.sub - (i32.load - (get_local $14) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - ) - (if - (i32.le_u - (i32.add - (tee_local $3 - (i32.load - (get_local $9) - ) - ) - (i32.const 2) - ) - (i32.load - (get_local $5) - ) - ) - (block - (set_local $2 - (i32.and - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - (get_local $3) - ) - (get_local $2) - ) - (set_local $3 - (i32.and - (i32.shr_u - (i32.load - (get_local $5) - ) - (i32.const 8) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $9) - (i32.add - (tee_local $2 - (i32.load - (get_local $9) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $2) - ) - (get_local $3) - ) - (i32.store - (get_local $5) - (call $_crc32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - (i32.store - (get_local $17) - (i32.const 113) - ) - ) - ) - ) - (if - (i32.load - (tee_local $10 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - (block - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (get_local $19) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (get_local $14) - ) - ) - ) - (tee_local $3 - (get_local $2) - ) - (get_local $3) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $15) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $3) - ) - ) - (i32.store - (get_local $15) - (i32.add - (i32.load - (get_local $15) - ) - (get_local $3) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $7 - (i32.load - (get_local $19) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $3) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $2) - ) - (get_local $3) - ) - ) - (i32.store - (get_local $14) - (tee_local $2 - (i32.sub - (i32.load - (get_local $14) - ) - (get_local $3) - ) - ) - ) - (set_local $5 - (i32.load - (tee_local $4 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $5) - (get_local $3) - ) - ) - (if - (i32.eq - (get_local $5) - (get_local $3) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $2) - ) - (block - (i32.store - (get_local $25) - (i32.const -1) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (if - (i32.and - (i32.and - (get_local $26) - (i32.ge_s - (get_local $12) - (get_local $1) - ) - ) - (i32.eqz - (i32.load offset=4 - (get_local $0) - ) - ) - ) - (block - (i32.store offset=24 - (get_local $0) - (i32.load - (i32.const 9972) - ) - ) - (return - (i32.const -5) - ) - ) - ) - ) - (set_local $3 - (i32.eqz - (i32.load offset=4 - (get_local $0) - ) - ) - ) - (block $do-once15 - (block $__rjti$12 - (if - (tee_local $2 - (i32.eq - (i32.load - (get_local $17) - ) - (i32.const 666) - ) - ) - (if - (i32.eqz - (get_local $3) - ) - (block - (i32.store offset=24 - (get_local $0) - (i32.load - (i32.const 9972) - ) - ) - (return - (i32.const -5) - ) - ) - ) - (br_if $__rjti$12 - (i32.eqz - (get_local $3) - ) - ) - ) - (br_if $__rjti$12 - (i32.eqz - (i32.and - (i32.eqz - (i32.load offset=116 - (get_local $6) - ) - ) - (i32.or - (i32.eqz - (get_local $1) - ) - (get_local $2) - ) - ) - ) - ) - (br $do-once15) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $switch-default - (block $switch-case24 - (block $switch-case - (br_table $switch-case $switch-case24 $switch-default - (i32.sub - (i32.load offset=136 - (get_local $6) - ) - (i32.const 2) - ) - ) - ) - (set_local $22 - (i32.add - (get_local $6) - (i32.const 116) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 96) - ) - ) - (set_local $21 - (i32.add - (get_local $6) - (i32.const 108) - ) - ) - (set_local $11 - (i32.add - (get_local $6) - (i32.const 56) - ) - ) - (set_local $13 - (i32.add - (get_local $6) - (i32.const 5792) - ) - ) - (set_local $12 - (i32.add - (get_local $6) - (i32.const 5796) - ) - ) - (set_local $7 - (i32.add - (get_local $6) - (i32.const 5784) - ) - ) - (set_local $8 - (i32.add - (get_local $6) - (i32.const 5788) - ) - ) - (set_local $23 - (i32.add - (get_local $6) - (i32.const 92) - ) - ) - (loop $while-in19 - (block $while-out18 - (if - (i32.eqz - (i32.load - (get_local $22) - ) - ) - (block - (call $_fill_window - (get_local $6) - ) - (br_if $while-out18 - (i32.eqz - (i32.load - (get_local $22) - ) - ) - ) - ) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (set_local $3 - (i32.load8_s - (i32.add - (i32.load - (get_local $11) - ) - (i32.load - (get_local $21) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $12) - ) - (i32.shl - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $7) - ) - (get_local $2) - ) - (get_local $3) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $6) - (i32.const 148) - ) - (i32.shl - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (set_local $3 - (i32.eq - (i32.load - (get_local $13) - ) - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $22) - (i32.add - (i32.load - (get_local $22) - ) - (i32.const -1) - ) - ) - (i32.store - (get_local $21) - (tee_local $2 - (i32.add - (i32.load - (get_local $21) - ) - (i32.const 1) - ) - ) - ) - (br_if $while-in19 - (i32.eqz - (get_local $3) - ) - ) - (call $__tr_flush_block - (get_local $6) - (tee_local $3 - (if i32 - (i32.gt_s - (tee_local $4 - (i32.load - (get_local $23) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (i32.const 0) - ) - ) - (i32.sub - (get_local $2) - (get_local $4) - ) - (i32.const 0) - ) - (i32.store - (get_local $23) - (i32.load - (get_local $21) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (tee_local $16 - (i32.load - (get_local $6) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $18 - (i32.add - (get_local $16) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $3 - (i32.add - (get_local $16) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (tee_local $20 - (i32.load - (get_local $5) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $16) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $18) - (i32.sub - (i32.load - (get_local $18) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $20) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $20) - ) - ) - ) - ) - ) - (br_if $while-in19 - (i32.load offset=16 - (i32.load - (get_local $6) - ) - ) - ) - (br $__rjto$2) - ) - ) - (if - (get_local $1) - (block - (call $__tr_flush_block - (get_local $6) - (tee_local $2 - (if i32 - (i32.gt_s - (tee_local $3 - (i32.load - (get_local $23) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (i32.const 0) - ) - ) - (i32.sub - (i32.load - (get_local $21) - ) - (get_local $3) - ) - (tee_local $12 - (i32.eq - (get_local $1) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $23) - (i32.load - (get_local $21) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (tee_local $9 - (i32.load - (get_local $6) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $7) - (i32.sub - (i32.load - (get_local $7) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $8) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $8) - ) - ) - ) - ) - ) - (if - (i32.load offset=16 - (i32.load - (get_local $6) - ) - ) - (block - (set_local $2 - (if i32 - (get_local $12) - (i32.const 3) - (i32.const 1) - ) - ) - (br $__rjti$2) - ) - (block - (set_local $2 - (if i32 - (get_local $12) - (i32.const 2) - (i32.const 0) - ) - ) - (br $__rjti$2) - ) - ) - ) - ) - (br $__rjto$2) - ) - (set_local $21 - (i32.add - (get_local $6) - (i32.const 116) - ) - ) - (set_local $8 - (i32.eqz - (get_local $1) - ) - ) - (set_local $23 - (i32.add - (get_local $6) - (i32.const 96) - ) - ) - (set_local $24 - (i32.add - (get_local $6) - (i32.const 108) - ) - ) - (set_local $22 - (i32.add - (get_local $6) - (i32.const 5792) - ) - ) - (set_local $18 - (i32.add - (get_local $6) - (i32.const 5796) - ) - ) - (set_local $20 - (i32.add - (get_local $6) - (i32.const 5784) - ) - ) - (set_local $9 - (i32.add - (get_local $6) - (i32.const 5788) - ) - ) - (set_local $11 - (i32.add - (get_local $6) - (i32.const 56) - ) - ) - (set_local $13 - (i32.add - (get_local $6) - (i32.const 92) - ) - ) - (loop $while-in21 - (block $while-out20 - (block $__rjto$1 - (block $__rjti$1 - (if - (i32.lt_u - (tee_local $4 - (i32.load - (get_local $21) - ) - ) - (i32.const 258) - ) - (block - (call $_fill_window - (get_local $6) - ) - (br_if $__rjto$2 - (i32.and - (get_local $8) - (i32.lt_u - (tee_local $4 - (i32.load - (get_local $21) - ) - ) - (i32.const 258) - ) - ) - ) - (br_if $while-out20 - (i32.eqz - (get_local $4) - ) - ) - (i32.store - (get_local $23) - (i32.const 0) - ) - (if - (i32.le_u - (get_local $4) - (i32.const 2) - ) - (block - (set_local $3 - (i32.load - (get_local $24) - ) - ) - (br $__rjti$1) - ) - ) - ) - (i32.store - (get_local $23) - (i32.const 0) - ) - ) - (if - (tee_local $3 - (i32.load - (get_local $24) - ) - ) - (if - (i32.eq - (tee_local $12 - (i32.load8_s - (tee_local $2 - (i32.add - (tee_local $5 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - ) - (i32.const -1) - ) - ) - ) - ) - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - (if - (i32.eq - (get_local $12) - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - (if - (i32.eq - (get_local $12) - (i32.load8_s offset=1 - (get_local $2) - ) - ) - (block - (set_local $7 - (i32.add - (get_local $5) - (i32.const 258) - ) - ) - (loop $while-in23 - (block $while-out22 - (if - (i32.ne - (get_local $12) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $while-out22) - ) - ) - (if - (i32.ne - (get_local $12) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 3) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $while-out22) - ) - ) - (if - (i32.ne - (get_local $12) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $while-out22) - ) - ) - (if - (i32.ne - (get_local $12) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 5) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $while-out22) - ) - ) - (if - (i32.ne - (get_local $12) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 6) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $while-out22) - ) - ) - (if - (i32.ne - (get_local $12) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 7) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $5) - ) - (br $while-out22) - ) - ) - (set_local $5 - (get_local $2) - ) - (br_if $while-out22 - (i32.ne - (get_local $12) - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - ) - ) - (br_if $while-in23 - (if i32 - (i32.lt_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 9) - ) - ) - (get_local $7) - ) - (i32.eq - (get_local $12) - (i32.load8_s - (get_local $5) - ) - ) - (i32.const 0) - ) - ) - (set_local $2 - (get_local $5) - ) - ) - ) - (i32.store - (get_local $23) - (if i32 - (i32.gt_u - (tee_local $2 - (i32.add - (i32.sub - (get_local $2) - (get_local $7) - ) - (i32.const 258) - ) - ) - (get_local $4) - ) - (get_local $4) - (tee_local $4 - (get_local $2) - ) - ) - ) - (br_if $__rjti$1 - (i32.le_u - (get_local $4) - (i32.const 2) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $18) - ) - (i32.shl - (tee_local $2 - (i32.load - (get_local $22) - ) - ) - (i32.const 1) - ) - ) - (i32.const 1) - ) - (i32.store - (get_local $22) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $20) - ) - (get_local $2) - ) - (tee_local $2 - (i32.add - (get_local $4) - (i32.const 253) - ) - ) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $6) - (i32.shl - (i32.or - (i32.load8_u - (i32.add - (i32.and - (get_local $2) - (i32.const 255) - ) - (i32.const 14815) - ) - ) - (i32.const 256) - ) - (i32.const 2) - ) - ) - (i32.const 152) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $6) - (i32.const 2440) - ) - (i32.shl - (i32.load8_u - (i32.const 14303) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (set_local $2 - (i32.eq - (i32.load - (get_local $22) - ) - (i32.add - (i32.load - (get_local $9) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $21) - (i32.sub - (i32.load - (get_local $21) - ) - (tee_local $3 - (i32.load - (get_local $23) - ) - ) - ) - ) - (i32.store - (get_local $24) - (tee_local $3 - (i32.add - (i32.load - (get_local $24) - ) - (get_local $3) - ) - ) - ) - (i32.store - (get_local $23) - (i32.const 0) - ) - ) - (br $__rjti$1) - ) - (br $__rjti$1) - ) - (br $__rjti$1) - ) - (block - (set_local $3 - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - (br $__rjto$1) - ) - (set_local $3 - (i32.load8_s - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $18) - ) - (i32.shl - (tee_local $2 - (i32.load - (get_local $22) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $22) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $20) - ) - (get_local $2) - ) - (get_local $3) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $6) - (i32.const 148) - ) - (i32.shl - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (set_local $2 - (i32.eq - (i32.load - (get_local $22) - ) - (i32.add - (i32.load - (get_local $9) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $21) - (i32.add - (i32.load - (get_local $21) - ) - (i32.const -1) - ) - ) - (i32.store - (get_local $24) - (tee_local $3 - (i32.add - (i32.load - (get_local $24) - ) - (i32.const 1) - ) - ) - ) - ) - (br_if $while-in21 - (i32.eqz - (get_local $2) - ) - ) - (call $__tr_flush_block - (get_local $6) - (tee_local $2 - (if i32 - (i32.gt_s - (tee_local $4 - (i32.load - (get_local $13) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (i32.const 0) - ) - ) - (i32.sub - (get_local $3) - (get_local $4) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $24) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (tee_local $16 - (i32.load - (get_local $6) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $12 - (i32.add - (get_local $16) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $3 - (i32.add - (get_local $16) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $16) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $12) - (i32.sub - (i32.load - (get_local $12) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - (br_if $while-in21 - (i32.load offset=16 - (i32.load - (get_local $6) - ) - ) - ) - (br $__rjto$2) - ) - ) - (call $__tr_flush_block - (get_local $6) - (tee_local $2 - (if i32 - (i32.gt_s - (tee_local $3 - (i32.load - (get_local $13) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (i32.const 0) - ) - ) - (i32.sub - (i32.load - (get_local $24) - ) - (get_local $3) - ) - (tee_local $12 - (i32.eq - (get_local $1) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $24) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (tee_local $9 - (i32.load - (get_local $6) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $7) - (i32.sub - (i32.load - (get_local $7) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $8) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $8) - ) - ) - ) - ) - ) - (if - (i32.load offset=16 - (i32.load - (get_local $6) - ) - ) - (block - (set_local $2 - (if i32 - (get_local $12) - (i32.const 3) - (i32.const 1) - ) - ) - (br $__rjti$2) - ) - (block - (set_local $2 - (if i32 - (get_local $12) - (i32.const 2) - (i32.const 0) - ) - ) - (br $__rjti$2) - ) - ) - ) - (set_local $2 - (call_indirect $FUNCSIG$iii - (get_local $6) - (get_local $1) - (i32.add - (i32.and - (i32.load - (i32.add - (i32.mul - (i32.load offset=132 - (get_local $6) - ) - (i32.const 12) - ) - (i32.const 9224) - ) - ) - (i32.const 3) - ) - (i32.const 12) - ) - ) - ) - ) - (if - (i32.eq - (i32.or - (get_local $2) - (i32.const 1) - ) - (i32.const 3) - ) - (i32.store - (get_local $17) - (i32.const 666) - ) - ) - (if - (i32.ne - (i32.or - (get_local $2) - (i32.const 2) - ) - (i32.const 2) - ) - (block - (br_if $do-once15 - (i32.ne - (get_local $2) - (i32.const 1) - ) - ) - (block $switch25 - (block $switch-default28 - (block $switch-case27 - (block $switch-case26 - (br_table $switch-case26 $switch-default28 $switch-default28 $switch-default28 $switch-case27 $switch-default28 - (i32.sub - (get_local $1) - (i32.const 1) - ) - ) - ) - (call $__tr_align - (get_local $6) - ) - (br $switch25) - ) - (br $switch25) - ) - (call $__tr_stored_block - (get_local $6) - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (if - (i32.eq - (get_local $1) - (i32.const 3) - ) - (block - (i32.store16 - (i32.add - (tee_local $2 - (i32.load offset=68 - (get_local $6) - ) - ) - (i32.shl - (i32.add - (tee_local $1 - (i32.load offset=76 - (get_local $6) - ) - ) - (i32.const -1) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (drop - (call $_memset - (get_local $2) - (i32.const 0) - (i32.add - (i32.shl - (get_local $1) - (i32.const 1) - ) - (i32.const -2) - ) - ) - ) - (if - (i32.eqz - (i32.load offset=116 - (get_local $6) - ) - ) - (block - (i32.store offset=108 - (get_local $6) - (i32.const 0) - ) - (i32.store offset=92 - (get_local $6) - (i32.const 0) - ) - ) - ) - ) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $2 - (i32.load offset=20 - (tee_local $3 - (i32.load - (get_local $19) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (get_local $14) - ) - ) - ) - (tee_local $2 - (get_local $1) - ) - (get_local $2) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $15) - ) - (i32.load offset=16 - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $15) - (i32.add - (i32.load - (get_local $15) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (tee_local $8 - (i32.load - (get_local $19) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $1) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $14) - (tee_local $1 - (i32.sub - (i32.load - (get_local $14) - ) - (get_local $2) - ) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $8) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $8) - ) - ) - ) - ) - ) - (br_if $do-once15 - (get_local $1) - ) - (i32.store - (get_local $25) - (i32.const -1) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (if - (i32.load - (get_local $14) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (get_local $25) - (i32.const -1) - ) - (return - (i32.const 0) - ) - ) - (if - (get_local $26) - (return - (i32.const 0) - ) - ) - (if - (i32.lt_s - (tee_local $1 - (i32.load - (tee_local $5 - (i32.add - (get_local $6) - (i32.const 24) - ) - ) - ) - ) - (i32.const 1) - ) - (return - (i32.const 1) - ) - ) - (set_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - ) - (if - (i32.eq - (get_local $1) - (i32.const 2) - ) - (block - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $8 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.and - (i32.shr_u - (i32.load - (get_local $4) - ) - (i32.const 8) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.and - (i32.shr_u - (i32.load - (get_local $4) - ) - (i32.const 16) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.shr_u - (i32.load - (get_local $4) - ) - (i32.const 24) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.and - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.and - (i32.shr_u - (i32.load - (get_local $3) - ) - (i32.const 8) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.and - (i32.shr_u - (i32.load - (get_local $3) - ) - (i32.const 16) - ) - (i32.const 255) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.shr_u - (i32.load - (get_local $3) - ) - (i32.const 24) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (get_local $2) - ) - ) - (block - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (i32.shr_u - (get_local $2) - (i32.const 24) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $3) - ) - (get_local $1) - ) - (i32.shr_u - (get_local $2) - (i32.const 16) - ) - ) - (set_local $2 - (i32.load - (get_local $4) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $3) - ) - (get_local $1) - ) - (i32.shr_u - (get_local $2) - (i32.const 8) - ) - ) - (i32.store - (get_local $10) - (i32.add - (tee_local $1 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $3) - ) - (get_local $1) - ) - (get_local $2) - ) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $2 - (i32.load offset=20 - (tee_local $3 - (i32.load - (get_local $19) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (get_local $14) - ) - ) - ) - (get_local $1) - (tee_local $1 - (get_local $2) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $15) - ) - (i32.load offset=16 - (get_local $3) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $15) - (i32.add - (i32.load - (get_local $15) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (tee_local $4 - (i32.load - (get_local $19) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $0) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $14) - (i32.sub - (i32.load - (get_local $14) - ) - (get_local $1) - ) - ) - (set_local $2 - (i32.load - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $0) - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (if - (i32.eq - (get_local $2) - (get_local $1) - ) - (i32.store - (get_local $3) - (i32.load offset=8 - (get_local $4) - ) - ) - ) - ) - ) - (if - (i32.gt_s - (tee_local $0 - (i32.load - (get_local $5) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $5) - (i32.sub - (i32.const 0) - (get_local $0) - ) - ) - ) - (return - (i32.eqz - (i32.load - (get_local $10) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=24 - (get_local $0) - (i32.load - (i32.const 9960) - ) - ) - (i32.const -2) - ) - (func $_build_tree (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (set_local $19 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (set_local $21 - (get_local $19) - ) - (set_local $9 - (i32.load - (get_local $1) - ) - ) - (set_local $5 - (i32.load - (tee_local $2 - (i32.load - (tee_local $17 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (set_local $6 - (i32.load offset=12 - (get_local $2) - ) - ) - (i32.store - (tee_local $10 - (i32.add - (get_local $0) - (i32.const 5200) - ) - ) - (i32.const 0) - ) - (i32.store - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 5204) - ) - ) - (i32.const 573) - ) - (block $__rjto$0 - (block $__rjti$0 - (if - (i32.gt_s - (get_local $6) - (i32.const 0) - ) - (block - (set_local $2 - (i32.const -1) - ) - (set_local $4 - (i32.const 0) - ) - (loop $while-in - (if - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - (block - (i32.store - (get_local $10) - (tee_local $2 - (i32.add - (i32.load - (get_local $10) - ) - (i32.const 1) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (get_local $4) - ) - (i32.store8 - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $4) - ) - (i32.const 0) - ) - (set_local $2 - (get_local $4) - ) - ) - (i32.store16 offset=2 - (i32.add - (get_local $9) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.const 0) - ) - ) - (br_if $while-in - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (get_local $6) - ) - ) - (set_local $4 - (get_local $2) - ) - ) - (br_if $__rjti$0 - (i32.lt_s - (tee_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.const 2) - ) - ) - (set_local $13 - (get_local $4) - ) - ) - (block - (set_local $2 - (i32.const 0) - ) - (set_local $4 - (i32.const -1) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 5800) - ) - ) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 5804) - ) - ) - (if - (get_local $5) - (loop $while-in3 - (set_local $3 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (if - (tee_local $11 - (i32.lt_s - (get_local $4) - (i32.const 2) - ) - ) - (set_local $4 - (get_local $3) - ) - ) - (i32.store - (get_local $10) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (if i32 - (get_local $11) - (get_local $3) - (tee_local $3 - (i32.const 0) - ) - ) - ) - (i32.store16 - (i32.add - (get_local $9) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.store8 - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $3) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.add - (i32.load - (get_local $13) - ) - (i32.const -1) - ) - ) - (i32.store - (get_local $7) - (i32.sub - (i32.load - (get_local $7) - ) - (i32.load16_u offset=2 - (i32.add - (get_local $5) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - ) - (br_if $while-in3 - (i32.lt_s - (tee_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.const 2) - ) - ) - (set_local $13 - (get_local $4) - ) - ) - (loop $while-in1 - (set_local $3 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (if - (tee_local $5 - (i32.lt_s - (get_local $4) - (i32.const 2) - ) - ) - (set_local $4 - (get_local $3) - ) - ) - (i32.store - (get_local $10) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (if i32 - (get_local $5) - (get_local $3) - (tee_local $3 - (i32.const 0) - ) - ) - ) - (i32.store16 - (i32.add - (get_local $9) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.store8 - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $3) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.add - (i32.load - (get_local $13) - ) - (i32.const -1) - ) - ) - (br_if $while-in1 - (i32.lt_s - (tee_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.const 2) - ) - ) - (set_local $13 - (get_local $4) - ) - ) - ) - ) - (i32.store - (tee_local $18 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (get_local $13) - ) - (set_local $3 - (get_local $2) - ) - (set_local $5 - (i32.div_s - (get_local $2) - (i32.const 2) - ) - ) - (loop $while-in5 - (set_local $12 - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (tee_local $11 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (block $label$break$L19 - (if - (i32.gt_s - (tee_local $2 - (i32.shl - (get_local $5) - (i32.const 1) - ) - ) - (get_local $3) - ) - (set_local $4 - (get_local $5) - ) - (block - (set_local $15 - (i32.add - (get_local $9) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - ) - (set_local $4 - (get_local $5) - ) - (set_local $7 - (get_local $3) - ) - (set_local $3 - (get_local $2) - ) - (loop $while-in7 - (block $do-once - (if - (i32.lt_s - (get_local $3) - (get_local $7) - ) - (if - (i32.ge_s - (i32.and - (tee_local $14 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $7 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (tee_local $2 - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - (i32.and - (tee_local $20 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $16 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - (block - (if - (i32.ne - (get_local $14) - (get_local $20) - ) - (block - (set_local $2 - (get_local $3) - ) - (br $do-once) - ) - ) - (if - (i32.gt_s - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $7) - ) - ) - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $16) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - (br_if $label$break$L19 - (i32.lt_s - (i32.and - (tee_local $7 - (i32.load16_s - (get_local $15) - ) - ) - (i32.const 65535) - ) - (i32.and - (tee_local $14 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $3 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (if - (i32.eq - (get_local $7) - (get_local $14) - ) - (br_if $label$break$L19 - (i32.le_s - (i32.load8_u - (get_local $12) - ) - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $3) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $3) - ) - (if - (i32.gt_s - (tee_local $3 - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - (tee_local $7 - (i32.load - (get_local $10) - ) - ) - ) - (set_local $4 - (get_local $2) - ) - (block - (set_local $4 - (get_local $2) - ) - (br $while-in7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $11) - ) - (if - (i32.gt_s - (get_local $5) - (i32.const 1) - ) - (block - (set_local $3 - (i32.load - (get_local $10) - ) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - (br $while-in5) - ) - ) - ) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 2912) - ) - ) - (set_local $2 - (i32.load - (get_local $10) - ) - ) - (set_local $5 - (get_local $6) - ) - (loop $do-in - (set_local $11 - (i32.load - (get_local $7) - ) - ) - (i32.store - (get_local $10) - (tee_local $6 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $7) - (tee_local $12 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - ) - (set_local $15 - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $12) - ) - ) - (block $label$break$L39 - (if - (i32.lt_s - (get_local $2) - (i32.const 3) - ) - (set_local $4 - (i32.const 1) - ) - (block - (set_local $14 - (i32.add - (get_local $9) - (i32.shl - (get_local $12) - (i32.const 2) - ) - ) - ) - (set_local $4 - (i32.const 1) - ) - (set_local $3 - (i32.const 2) - ) - (loop $while-in11 - (block $do-once12 - (if - (i32.lt_s - (get_local $3) - (get_local $6) - ) - (if - (i32.ge_s - (i32.and - (tee_local $16 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $6 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (tee_local $2 - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - (i32.and - (tee_local $22 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $20 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - (block - (if - (i32.ne - (get_local $16) - (get_local $22) - ) - (block - (set_local $2 - (get_local $3) - ) - (br $do-once12) - ) - ) - (if - (i32.gt_s - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $6) - ) - ) - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $20) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - (br_if $label$break$L39 - (i32.lt_s - (i32.and - (tee_local $6 - (i32.load16_s - (get_local $14) - ) - ) - (i32.const 65535) - ) - (i32.and - (tee_local $16 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $3 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (if - (i32.eq - (get_local $6) - (get_local $16) - ) - (br_if $label$break$L39 - (i32.le_s - (i32.load8_u - (get_local $15) - ) - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $3) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $3) - ) - (if - (i32.gt_s - (tee_local $3 - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - (tee_local $6 - (i32.load - (get_local $10) - ) - ) - ) - (set_local $4 - (get_local $2) - ) - (block - (set_local $4 - (get_local $2) - ) - (br $while-in11) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $12) - ) - (set_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.store - (get_local $8) - (tee_local $4 - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $11) - ) - (i32.store - (get_local $8) - (tee_local $4 - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $2) - ) - (i32.store16 - (tee_local $12 - (i32.add - (get_local $9) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_u - (i32.add - (get_local $9) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - (i32.load16_u - (i32.add - (get_local $9) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - ) - ) - ) - (i32.store8 - (tee_local $15 - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $5) - ) - ) - (i32.add - (i32.and - (if i32 - (i32.lt_s - (i32.and - (tee_local $4 - (i32.load8_s - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $11) - ) - ) - ) - (i32.const 255) - ) - (i32.and - (tee_local $3 - (i32.load8_s - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $2) - ) - ) - ) - (i32.const 255) - ) - ) - (get_local $3) - (get_local $4) - ) - (i32.const 255) - ) - (i32.const 1) - ) - ) - (i32.store16 offset=2 - (i32.add - (get_local $9) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (tee_local $2 - (i32.and - (get_local $5) - (i32.const 65535) - ) - ) - ) - (i32.store16 offset=2 - (i32.add - (get_local $9) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - (get_local $2) - ) - (i32.store - (get_local $7) - (get_local $5) - ) - (block $label$break$L55 - (if - (i32.lt_s - (tee_local $6 - (i32.load - (get_local $10) - ) - ) - (i32.const 2) - ) - (set_local $4 - (i32.const 1) - ) - (block - (set_local $4 - (i32.const 1) - ) - (set_local $3 - (i32.const 2) - ) - (loop $while-in16 - (block $do-once17 - (if - (i32.lt_s - (get_local $3) - (get_local $6) - ) - (if - (i32.ge_s - (i32.and - (tee_local $11 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $6 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (tee_local $2 - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - (i32.and - (tee_local $16 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $14 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - (block - (if - (i32.ne - (get_local $11) - (get_local $16) - ) - (block - (set_local $2 - (get_local $3) - ) - (br $do-once17) - ) - ) - (if - (i32.gt_s - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $6) - ) - ) - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $14) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - ) - ) - (br_if $label$break$L55 - (i32.lt_s - (i32.and - (tee_local $6 - (i32.load16_s - (get_local $12) - ) - ) - (i32.const 65535) - ) - (i32.and - (tee_local $11 - (i32.load16_s - (i32.add - (get_local $9) - (i32.shl - (tee_local $3 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (if - (i32.eq - (get_local $6) - (get_local $11) - ) - (br_if $label$break$L55 - (i32.le_s - (i32.load8_u - (get_local $15) - ) - (i32.load8_u - (i32.add - (i32.add - (get_local $0) - (i32.const 5208) - ) - (get_local $3) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $3) - ) - (if - (i32.gt_s - (tee_local $3 - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - (tee_local $6 - (i32.load - (get_local $10) - ) - ) - ) - (set_local $4 - (get_local $2) - ) - (block - (set_local $4 - (get_local $2) - ) - (br $while-in16) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $5) - ) - (set_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (br_if $do-in - (i32.gt_s - (tee_local $2 - (i32.load - (get_local $10) - ) - ) - (i32.const 1) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.store - (get_local $8) - (tee_local $4 - (i32.add - (i32.load - (get_local $8) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (get_local $2) - ) - (set_local $7 - (i32.load - (get_local $1) - ) - ) - (set_local $11 - (i32.load - (get_local $18) - ) - ) - (set_local $12 - (i32.load - (tee_local $1 - (i32.load - (get_local $17) - ) - ) - ) - ) - (set_local $17 - (i32.load offset=4 - (get_local $1) - ) - ) - (set_local $6 - (i32.load offset=8 - (get_local $1) - ) - ) - (set_local $1 - (i32.load offset=16 - (get_local $1) - ) - ) - (set_local $4 - (i32.add - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 2876) - ) - ) - (i32.const 32) - ) - ) - (loop $do-in20 - (i32.store16 - (get_local $2) - (i32.const 0) - ) - (br_if $do-in20 - (i32.lt_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 2) - ) - ) - (get_local $4) - ) - ) - ) - (i32.store16 offset=2 - (i32.add - (get_local $7) - (i32.shl - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (tee_local $2 - (i32.load - (get_local $8) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (block $label$break$L71 - (if - (i32.lt_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.const 573) - ) - (block - (set_local $10 - (i32.add - (get_local $0) - (i32.const 5800) - ) - ) - (set_local $18 - (i32.add - (get_local $0) - (i32.const 5804) - ) - ) - (if - (get_local $12) - (block - (set_local $4 - (get_local $2) - ) - (set_local $2 - (i32.const 0) - ) - (loop $while-in25 - (set_local $3 - (if i32 - (tee_local $15 - (i32.lt_s - (tee_local $3 - (i32.load16_u offset=2 - (i32.add - (get_local $7) - (i32.shl - (i32.load16_u - (tee_local $8 - (i32.add - (i32.add - (get_local $7) - (i32.shl - (tee_local $5 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (get_local $1) - ) - ) - (i32.add - (get_local $3) - (i32.const 1) - ) - (get_local $1) - ) - ) - (i32.store16 - (get_local $8) - (get_local $3) - ) - (if - (i32.le_s - (get_local $5) - (get_local $11) - ) - (block - (i32.store16 - (tee_local $8 - (i32.add - (i32.add - (get_local $0) - (i32.const 2876) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $8) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $10) - (i32.add - (i32.mul - (tee_local $14 - (i32.load16_u - (i32.add - (get_local $7) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - ) - (i32.add - (tee_local $8 - (if i32 - (i32.lt_s - (get_local $5) - (get_local $6) - ) - (i32.const 0) - (i32.load - (i32.add - (get_local $17) - (i32.shl - (i32.sub - (get_local $5) - (get_local $6) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (get_local $3) - ) - ) - (i32.load - (get_local $10) - ) - ) - ) - (i32.store - (get_local $18) - (i32.add - (i32.mul - (i32.add - (i32.load16_u offset=2 - (i32.add - (get_local $12) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (get_local $8) - ) - (get_local $14) - ) - (i32.load - (get_local $18) - ) - ) - ) - ) - ) - (set_local $2 - (i32.add - (i32.xor - (get_local $15) - (i32.const 1) - ) - (get_local $2) - ) - ) - (br_if $while-in25 - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.const 573) - ) - ) - ) - ) - (block - (set_local $4 - (get_local $2) - ) - (set_local $2 - (i32.const 0) - ) - (loop $while-in23 - (set_local $3 - (if i32 - (tee_local $12 - (i32.lt_s - (tee_local $3 - (i32.load16_u offset=2 - (i32.add - (get_local $7) - (i32.shl - (i32.load16_u - (tee_local $8 - (i32.add - (i32.add - (get_local $7) - (i32.shl - (tee_local $5 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - ) - (i32.const 2) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (get_local $1) - ) - ) - (i32.add - (get_local $3) - (i32.const 1) - ) - (get_local $1) - ) - ) - (i32.store16 - (get_local $8) - (get_local $3) - ) - (if - (i32.le_s - (get_local $5) - (get_local $11) - ) - (block - (i32.store16 - (tee_local $8 - (i32.add - (i32.add - (get_local $0) - (i32.const 2876) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $8) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $10) - (i32.add - (i32.mul - (i32.load16_u - (i32.add - (get_local $7) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (i32.add - (tee_local $8 - (if i32 - (i32.lt_s - (get_local $5) - (get_local $6) - ) - (i32.const 0) - (i32.load - (i32.add - (get_local $17) - (i32.shl - (i32.sub - (get_local $5) - (get_local $6) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (get_local $3) - ) - ) - (i32.load - (get_local $10) - ) - ) - ) - ) - ) - (set_local $2 - (i32.add - (i32.xor - (get_local $12) - (i32.const 1) - ) - (get_local $2) - ) - ) - (br_if $while-in23 - (i32.ne - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.const 573) - ) - ) - ) - ) - ) - (if - (get_local $2) - (block - (set_local $8 - (i32.add - (i32.add - (get_local $0) - (i32.const 2876) - ) - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (set_local $3 - (get_local $2) - ) - (loop $while-in27 - (set_local $2 - (get_local $1) - ) - (loop $while-in29 - (if - (i32.eqz - (tee_local $6 - (i32.load16_s - (tee_local $5 - (i32.add - (i32.add - (get_local $0) - (i32.const 2876) - ) - (i32.shl - (tee_local $4 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $4) - ) - (br $while-in29) - ) - ) - ) - (i32.store16 - (get_local $5) - (i32.add - (get_local $6) - (i32.const -1) - ) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 2876) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - ) - (i32.add - (i32.load16_u - (get_local $2) - ) - (i32.const 2) - ) - ) - (i32.store16 - (get_local $8) - (tee_local $2 - (i32.shr_s - (i32.shl - (i32.add - (i32.load16_s - (get_local $8) - ) - (i32.const -1) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - ) - (if - (i32.gt_s - (get_local $3) - (i32.const 2) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const -2) - ) - ) - (br $while-in27) - ) - ) - ) - (if - (get_local $1) - (block - (set_local $4 - (get_local $2) - ) - (set_local $2 - (get_local $1) - ) - (set_local $1 - (i32.const 573) - ) - (loop $while-in31 - (set_local $5 - (i32.and - (get_local $2) - (i32.const 65535) - ) - ) - (if - (i32.and - (get_local $4) - (i32.const 65535) - ) - (block - (set_local $3 - (i32.and - (get_local $4) - (i32.const 65535) - ) - ) - (loop $while-in33 - (loop $while-in35 - (br_if $while-in35 - (i32.gt_s - (tee_local $4 - (i32.load - (i32.add - (i32.add - (get_local $0) - (i32.const 2908) - ) - (i32.shl - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (get_local $11) - ) - ) - ) - (if - (i32.ne - (get_local $2) - (tee_local $8 - (i32.load16_u - (tee_local $6 - (i32.add - (i32.add - (get_local $7) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $10) - (i32.add - (i32.mul - (i32.load16_u - (i32.add - (get_local $7) - (i32.shl - (get_local $4) - (i32.const 2) - ) - ) - ) - (i32.sub - (get_local $2) - (get_local $8) - ) - ) - (i32.load - (get_local $10) - ) - ) - ) - (i32.store16 - (get_local $6) - (get_local $5) - ) - ) - ) - (br_if $while-in33 - (tee_local $3 - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - ) - ) - ) - ) - (br_if $label$break$L71 - (i32.eqz - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (set_local $4 - (i32.load16_u - (i32.add - (i32.add - (get_local $0) - (i32.const 2876) - ) - (i32.shl - (get_local $2) - (i32.const 1) - ) - ) - ) - ) - (br $while-in31) - ) - ) - ) - ) - ) - ) - ) - ) - (set_local $1 - (i32.const 1) - ) - (set_local $2 - (i32.const 0) - ) - (loop $do-in37 - (i32.store16 - (i32.add - (get_local $21) - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - (tee_local $2 - (i32.shl - (i32.add - (i32.load16_u - (i32.add - (i32.add - (get_local $0) - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - (i32.const 2874) - ) - ) - (i32.and - (get_local $2) - (i32.const 65534) - ) - ) - (i32.const 1) - ) - ) - ) - (br_if $do-in37 - (i32.ne - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.const 16) - ) - ) - ) - (if - (i32.lt_s - (get_local $13) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $19) - ) - (return) - ) - (set_local $2 - (i32.const 0) - ) - ) - (loop $while-in39 - (set_local $0 - (i32.and - (tee_local $1 - (i32.load16_s offset=2 - (i32.add - (get_local $9) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - (if - (get_local $1) - (block - (set_local $1 - (i32.load16_s - (tee_local $4 - (i32.add - (get_local $21) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.store16 - (get_local $4) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $4 - (i32.and - (get_local $1) - (i32.const 65535) - ) - ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in41 - (set_local $1 - (i32.or - (get_local $1) - (i32.and - (get_local $4) - (i32.const 1) - ) - ) - ) - (if - (i32.gt_s - (get_local $0) - (i32.const 1) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const -1) - ) - ) - (set_local $4 - (i32.shr_u - (get_local $4) - (i32.const 1) - ) - ) - (set_local $1 - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in41) - ) - ) - ) - (i32.store16 - (i32.add - (get_local $9) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - (get_local $1) - ) - ) - ) - (if - (i32.ne - (get_local $2) - (get_local $13) - ) - (block - (set_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in39) - ) - ) - ) - (set_global $STACKTOP - (get_local $19) - ) - ) - (func $_inflate_table (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (result i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (set_local $13 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (set_local $10 - (get_local $13) - ) - (set_local $9 - (i32.add - (tee_local $11 - (tee_local $7 - (i32.add - (get_local $13) - (i32.const 32) - ) - ) - ) - (i32.const 32) - ) - ) - (loop $do-in - (i32.store16 - (get_local $11) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 2) - ) - ) - (get_local $9) - ) - ) - ) - (block $label$break$L25 - (block $__rjti$1 - (if - (tee_local $15 - (i32.eqz - (get_local $2) - ) - ) - (set_local $9 - (i32.load - (get_local $4) - ) - ) - (block - (set_local $11 - (i32.const 0) - ) - (loop $do-in1 - (i32.store16 - (tee_local $9 - (i32.add - (get_local $7) - (i32.shl - (i32.load16_u - (i32.add - (get_local $1) - (i32.shl - (get_local $11) - (i32.const 1) - ) - ) - ) - (i32.const 1) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $9) - ) - (i32.const 1) - ) - ) - (br_if $do-in1 - (i32.ne - (tee_local $11 - (i32.add - (get_local $11) - (i32.const 1) - ) - ) - (get_local $2) - ) - ) - ) - (set_local $9 - (i32.load - (get_local $4) - ) - ) - (if - (tee_local $11 - (i32.load16_s offset=30 - (get_local $7) - ) - ) - (block - (set_local $14 - (i32.const 15) - ) - (br $__rjti$1) - ) - ) - ) - ) - (if - (i32.load16_s offset=28 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 14) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=26 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 13) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=24 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 12) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=22 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 11) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=20 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 10) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=18 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 9) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=16 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 8) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=14 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 7) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=12 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 6) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=10 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 5) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=8 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 4) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=6 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 3) - ) - (br $__rjti$1) - ) - (if - (i32.load16_s offset=4 - (get_local $7) - ) - (block - (set_local $11 - (i32.const 0) - ) - (set_local $14 - (i32.const 2) - ) - (br $__rjti$1) - ) - (block - (if - (i32.load16_s offset=2 - (get_local $7) - ) - (block - (set_local $12 - (i32.const 0) - ) - (set_local $11 - (if i32 - (i32.gt_u - (get_local $9) - (i32.const 1) - ) - (i32.const 1) - (get_local $9) - ) - ) - (set_local $14 - (i32.const 1) - ) - (set_local $9 - (i32.const 1) - ) - (br $label$break$L25) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $0 - (i32.load - (get_local $3) - ) - ) - (i32.const 4) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 64) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.const 1) - ) - (i32.store16 offset=2 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $0 - (i32.load - (get_local $3) - ) - ) - (i32.const 4) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 64) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.const 1) - ) - (i32.store16 offset=2 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $4) - (i32.const 1) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const 0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (br $label$break$L25) - ) - (if - (i32.gt_u - (get_local $9) - (get_local $14) - ) - (set_local $9 - (get_local $14) - ) - ) - (set_local $6 - (i32.const 1) - ) - (loop $while-in - (if - (i32.load16_s - (i32.add - (get_local $7) - (i32.shl - (get_local $6) - (i32.const 1) - ) - ) - ) - (block - (set_local $12 - (get_local $11) - ) - (set_local $11 - (get_local $9) - ) - (set_local $9 - (get_local $6) - ) - (br $label$break$L25) - ) - ) - (br_if $while-in - (i32.lt_u - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (get_local $14) - ) - ) - (set_local $12 - (get_local $11) - ) - (set_local $11 - (get_local $9) - ) - (set_local $9 - (get_local $6) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.const 2) - (i32.and - (tee_local $8 - (i32.load16_s offset=2 - (get_local $7) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=4 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=6 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=8 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=10 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=12 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=14 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=16 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=18 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=20 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=22 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=24 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=26 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.load16_u offset=28 - (get_local $7) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.lt_s - (tee_local $6 - (i32.sub - (i32.shl - (get_local $6) - (i32.const 1) - ) - (i32.and - (get_local $12) - (i32.const 65535) - ) - ) - ) - (i32.const 0) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - (if - (i32.gt_s - (get_local $6) - (i32.const 0) - ) - (if - (i32.or - (i32.eqz - (get_local $0) - ) - (i32.ne - (get_local $14) - (i32.const 1) - ) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const -1) - ) - ) - ) - ) - (i32.store16 offset=2 - (get_local $10) - (i32.const 0) - ) - (i32.store16 offset=4 - (get_local $10) - (get_local $8) - ) - (i32.store16 offset=6 - (get_local $10) - (tee_local $12 - (i32.add - (i32.load16_u offset=4 - (get_local $7) - ) - (i32.and - (get_local $8) - (i32.const 65535) - ) - ) - ) - ) - (i32.store16 offset=8 - (get_local $10) - (i32.add - (tee_local $6 - (i32.load16_u offset=6 - (get_local $7) - ) - ) - (get_local $12) - ) - ) - (i32.store16 offset=10 - (get_local $10) - (i32.add - (tee_local $8 - (i32.load16_u offset=8 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $12) - (get_local $6) - ) - ) - ) - ) - (i32.store16 offset=12 - (get_local $10) - (i32.add - (tee_local $12 - (i32.load16_u offset=10 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $8) - ) - ) - ) - ) - (i32.store16 offset=14 - (get_local $10) - (i32.add - (tee_local $8 - (i32.load16_u offset=12 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $12) - ) - ) - ) - ) - (i32.store16 offset=16 - (get_local $10) - (i32.add - (tee_local $12 - (i32.load16_u offset=14 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $8) - ) - ) - ) - ) - (i32.store16 offset=18 - (get_local $10) - (i32.add - (tee_local $8 - (i32.load16_u offset=16 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $12) - ) - ) - ) - ) - (i32.store16 offset=20 - (get_local $10) - (i32.add - (tee_local $12 - (i32.load16_u offset=18 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $8) - ) - ) - ) - ) - (i32.store16 offset=22 - (get_local $10) - (i32.add - (tee_local $8 - (i32.load16_u offset=20 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $12) - ) - ) - ) - ) - (i32.store16 offset=24 - (get_local $10) - (i32.add - (tee_local $12 - (i32.load16_u offset=22 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $8) - ) - ) - ) - ) - (i32.store16 offset=26 - (get_local $10) - (i32.add - (tee_local $8 - (i32.load16_u offset=24 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $12) - ) - ) - ) - ) - (i32.store16 offset=28 - (get_local $10) - (i32.add - (tee_local $12 - (i32.load16_u offset=26 - (get_local $7) - ) - ) - (tee_local $6 - (i32.add - (get_local $6) - (get_local $8) - ) - ) - ) - ) - (i32.store16 offset=30 - (get_local $10) - (i32.add - (i32.load16_u offset=28 - (get_local $7) - ) - (i32.add - (get_local $6) - (get_local $12) - ) - ) - ) - (if - (i32.eqz - (get_local $15) - ) - (block - (set_local $8 - (i32.const 0) - ) - (loop $do-in4 - (if - (tee_local $6 - (i32.load16_s - (i32.add - (get_local $1) - (i32.shl - (get_local $8) - (i32.const 1) - ) - ) - ) - ) - (block - (set_local $12 - (i32.load16_s - (tee_local $6 - (i32.add - (get_local $10) - (i32.shl - (i32.and - (get_local $6) - (i32.const 65535) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.store16 - (get_local $6) - (i32.add - (get_local $12) - (i32.const 1) - ) - ) - (i32.store16 - (i32.add - (get_local $5) - (i32.shl - (i32.and - (get_local $12) - (i32.const 65535) - ) - (i32.const 1) - ) - ) - (get_local $8) - ) - ) - ) - (br_if $do-in4 - (i32.ne - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - (get_local $2) - ) - ) - ) - ) - ) - (set_local $12 - (if i32 - (i32.lt_u - (get_local $11) - (get_local $9) - ) - (get_local $9) - (get_local $11) - ) - ) - (block $switch - (block $switch-default - (block $switch-case5 - (block $switch-case - (br_table $switch-case $switch-case5 $switch-default - (get_local $0) - ) - ) - (set_local $20 - (i32.const 0) - ) - (set_local $21 - (i32.const 0) - ) - (set_local $22 - (get_local $5) - ) - (set_local $19 - (i32.const 19) - ) - (set_local $23 - (get_local $5) - ) - (br $switch) - ) - (if - (i32.gt_u - (get_local $12) - (i32.const 9) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const 1) - ) - ) - (block - (set_local $20 - (i32.const 0) - ) - (set_local $21 - (i32.const 1) - ) - (set_local $22 - (i32.const 11868) - ) - (set_local $19 - (i32.const 256) - ) - (set_local $23 - (i32.const 11994) - ) - ) - ) - (br $switch) - ) - (if - (i32.and - (tee_local $0 - (i32.eq - (get_local $0) - (i32.const 2) - ) - ) - (i32.gt_u - (get_local $12) - (i32.const 9) - ) - ) - (block - (set_global $STACKTOP - (get_local $13) - ) - (return - (i32.const 1) - ) - ) - (block - (set_local $20 - (get_local $0) - ) - (set_local $21 - (i32.const 0) - ) - (set_local $22 - (i32.const 12318) - ) - (set_local $19 - (i32.const -1) - ) - (set_local $23 - (i32.const 12444) - ) - ) - ) - ) - (set_local $25 - (i32.add - (tee_local $11 - (i32.shl - (i32.const 1) - (get_local $12) - ) - ) - (i32.const -1) - ) - ) - (set_local $26 - (i32.and - (get_local $12) - (i32.const 255) - ) - ) - (set_local $15 - (get_local $12) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $8 - (i32.const 0) - ) - (set_local $0 - (get_local $9) - ) - (set_local $17 - (i32.const -1) - ) - (set_local $16 - (i32.load - (get_local $3) - ) - ) - (set_local $10 - (i32.const 0) - ) - (block $__rjto$2 - (block $__rjti$2 - (loop $label$continue$L93 - (block $label$break$L93 - (set_local $27 - (i32.shl - (i32.const 1) - (get_local $15) - ) - ) - (set_local $2 - (get_local $8) - ) - (set_local $9 - (get_local $10) - ) - (loop $while-in7 - (set_local $15 - (i32.and - (tee_local $8 - (i32.sub - (get_local $0) - (get_local $6) - ) - ) - (i32.const 255) - ) - ) - (set_local $18 - (block $do-once8 i32 - (if i32 - (i32.lt_s - (tee_local $18 - (i32.and - (tee_local $10 - (i32.load16_s - (i32.add - (get_local $5) - (i32.shl - (get_local $9) - (i32.const 1) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - (get_local $19) - ) - (block i32 - (set_local $24 - (i32.const 0) - ) - (get_local $10) - ) - (block i32 - (if - (i32.le_s - (get_local $18) - (get_local $19) - ) - (block - (set_local $24 - (i32.const 96) - ) - (br $do-once8 - (i32.const 0) - ) - ) - ) - (set_local $24 - (i32.and - (i32.load16_s - (i32.add - (get_local $23) - (i32.shl - (get_local $18) - (i32.const 1) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.load16_s - (i32.add - (get_local $22) - (i32.shl - (get_local $18) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - (set_local $28 - (i32.shl - (i32.const 1) - (get_local $8) - ) - ) - (set_local $30 - (i32.shr_u - (get_local $2) - (get_local $6) - ) - ) - (set_local $10 - (get_local $27) - ) - (loop $do-in11 - (set_local $8 - (get_local $10) - ) - (i32.store8 - (i32.add - (get_local $16) - (i32.shl - (tee_local $29 - (i32.add - (tee_local $10 - (i32.sub - (get_local $10) - (get_local $28) - ) - ) - (get_local $30) - ) - ) - (i32.const 2) - ) - ) - (get_local $24) - ) - (i32.store8 offset=1 - (i32.add - (get_local $16) - (i32.shl - (get_local $29) - (i32.const 2) - ) - ) - (get_local $15) - ) - (i32.store16 offset=2 - (i32.add - (get_local $16) - (i32.shl - (get_local $29) - (i32.const 2) - ) - ) - (get_local $18) - ) - (br_if $do-in11 - (i32.ne - (get_local $8) - (get_local $28) - ) - ) - ) - (set_local $10 - (i32.shl - (i32.const 1) - (i32.add - (get_local $0) - (i32.const -1) - ) - ) - ) - (loop $while-in13 - (if - (i32.and - (get_local $10) - (get_local $2) - ) - (block - (set_local $10 - (i32.shr_u - (get_local $10) - (i32.const 1) - ) - ) - (br $while-in13) - ) - ) - ) - (set_local $2 - (if i32 - (get_local $10) - (i32.add - (i32.and - (i32.add - (get_local $10) - (i32.const -1) - ) - (get_local $2) - ) - (get_local $10) - ) - (i32.const 0) - ) - ) - (set_local $9 - (i32.add - (get_local $9) - (i32.const 1) - ) - ) - (set_local $8 - (i32.shr_s - (i32.shl - (i32.add - (i32.load16_s - (tee_local $10 - (i32.add - (get_local $7) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const -1) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (i32.store16 - (get_local $10) - (get_local $8) - ) - (if - (i32.eqz - (get_local $8) - ) - (block - (if - (i32.eq - (get_local $0) - (get_local $14) - ) - (block - (set_local $1 - (get_local $15) - ) - (set_local $5 - (get_local $6) - ) - (set_local $9 - (get_local $2) - ) - (set_local $0 - (get_local $16) - ) - (br $label$break$L93) - ) - ) - (set_local $0 - (i32.load16_u - (i32.add - (get_local $1) - (i32.shl - (i32.load16_u - (i32.add - (get_local $5) - (i32.shl - (get_local $9) - (i32.const 1) - ) - ) - ) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (br_if $while-in7 - (i32.le_u - (get_local $0) - (get_local $12) - ) - ) - (br_if $while-in7 - (i32.eq - (tee_local $8 - (i32.and - (get_local $2) - (get_local $25) - ) - ) - (get_local $17) - ) - ) - (set_local $10 - (get_local $9) - ) - (set_local $17 - (get_local $8) - ) - (set_local $9 - (get_local $2) - ) - (set_local $2 - (get_local $0) - ) - ) - (set_local $16 - (i32.add - (get_local $16) - (i32.shl - (get_local $27) - (i32.const 2) - ) - ) - ) - (set_local $8 - (i32.sub - (get_local $2) - (if i32 - (get_local $6) - (get_local $6) - (tee_local $6 - (get_local $12) - ) - ) - ) - ) - (block $label$break$L116 - (if - (i32.lt_u - (get_local $2) - (get_local $14) - ) - (block - (set_local $15 - (get_local $2) - ) - (set_local $0 - (get_local $8) - ) - (set_local $8 - (i32.shl - (i32.const 1) - (get_local $8) - ) - ) - (loop $while-in16 - (br_if $label$break$L116 - (i32.lt_s - (tee_local $8 - (i32.sub - (get_local $8) - (i32.load16_u - (i32.add - (get_local $7) - (i32.shl - (get_local $15) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.const 1) - ) - ) - (if - (i32.lt_u - (tee_local $15 - (i32.add - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (get_local $6) - ) - ) - (get_local $14) - ) - (block - (set_local $8 - (i32.shl - (get_local $8) - (i32.const 1) - ) - ) - (br $while-in16) - ) - ) - ) - ) - (set_local $0 - (get_local $8) - ) - ) - ) - (if - (i32.or - (i32.and - (get_local $21) - (i32.gt_u - (tee_local $11 - (i32.add - (i32.shl - (i32.const 1) - (get_local $0) - ) - (get_local $11) - ) - ) - (i32.const 851) - ) - ) - (i32.and - (get_local $20) - (i32.gt_u - (get_local $11) - (i32.const 591) - ) - ) - ) - (block - (set_local $0 - (i32.const 1) - ) - (br $__rjti$2) - ) - (block - (i32.store8 - (i32.add - (tee_local $8 - (i32.load - (get_local $3) - ) - ) - (i32.shl - (get_local $17) - (i32.const 2) - ) - ) - (get_local $0) - ) - (i32.store8 offset=1 - (i32.add - (get_local $8) - (i32.shl - (get_local $17) - (i32.const 2) - ) - ) - (get_local $26) - ) - (i32.store16 offset=2 - (i32.add - (get_local $8) - (i32.shl - (get_local $17) - (i32.const 2) - ) - ) - (i32.shr_u - (i32.sub - (get_local $16) - (get_local $8) - ) - (i32.const 2) - ) - ) - (set_local $15 - (get_local $0) - ) - (set_local $8 - (get_local $9) - ) - (set_local $0 - (get_local $2) - ) - (br $label$continue$L93) - ) - ) - ) - ) - (br $__rjto$2) - ) - (set_global $STACKTOP - (get_local $13) - ) - (return - (get_local $0) - ) - ) - (block $label$break$L126 - (if - (get_local $9) - (block - (set_local $2 - (get_local $1) - ) - (set_local $6 - (get_local $9) - ) - (set_local $1 - (get_local $14) - ) - (loop $while-in19 - (if - (i32.eqz - (i32.or - (i32.eqz - (get_local $5) - ) - (i32.eq - (i32.and - (get_local $6) - (get_local $25) - ) - (get_local $17) - ) - ) - ) - (block - (set_local $5 - (i32.const 0) - ) - (set_local $2 - (get_local $26) - ) - (set_local $1 - (get_local $12) - ) - (set_local $0 - (i32.load - (get_local $3) - ) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $0) - (i32.shl - (tee_local $9 - (i32.shr_u - (get_local $6) - (get_local $5) - ) - ) - (i32.const 2) - ) - ) - (i32.const 64) - ) - (i32.store8 offset=1 - (i32.add - (get_local $0) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - (get_local $2) - ) - (i32.store16 offset=2 - (i32.add - (get_local $0) - (i32.shl - (get_local $9) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (set_local $9 - (i32.shl - (i32.const 1) - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - (loop $while-in21 - (if - (i32.and - (get_local $9) - (get_local $6) - ) - (block - (set_local $9 - (i32.shr_u - (get_local $9) - (i32.const 1) - ) - ) - (br $while-in21) - ) - ) - ) - (br_if $label$break$L126 - (i32.eqz - (get_local $9) - ) - ) - (br_if $while-in19 - (tee_local $6 - (i32.add - (i32.and - (i32.add - (get_local $9) - (i32.const -1) - ) - (get_local $6) - ) - (get_local $9) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $12) - ) - (set_global $STACKTOP - (get_local $13) - ) - (i32.const 0) - ) - (func $_inflate_fast (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (set_local $17 - (i32.add - (tee_local $8 - (i32.add - (i32.load - (get_local $0) - ) - (i32.const -1) - ) - ) - (i32.add - (i32.load - (tee_local $20 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (i32.const -5) - ) - ) - ) - (set_local $18 - (i32.add - (tee_local $4 - (i32.add - (i32.load - (tee_local $21 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - (i32.const -1) - ) - ) - (i32.add - (tee_local $3 - (i32.load - (tee_local $22 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - (i32.const -257) - ) - ) - ) - (set_local $19 - (i32.load offset=40 - (tee_local $9 - (i32.load offset=28 - (get_local $0) - ) - ) - ) - ) - (set_local $23 - (i32.load offset=44 - (get_local $9) - ) - ) - (set_local $13 - (i32.load offset=76 - (get_local $9) - ) - ) - (set_local $14 - (i32.load offset=80 - (get_local $9) - ) - ) - (set_local $24 - (i32.add - (i32.shl - (i32.const 1) - (i32.load offset=84 - (get_local $9) - ) - ) - (i32.const -1) - ) - ) - (set_local $25 - (i32.add - (i32.shl - (i32.const 1) - (i32.load offset=88 - (get_local $9) - ) - ) - (i32.const -1) - ) - ) - (set_local $26 - (i32.add - (get_local $9) - (i32.const 7104) - ) - ) - (set_local $15 - (i32.add - (i32.load offset=52 - (get_local $9) - ) - (i32.const -1) - ) - ) - (set_local $27 - (i32.eqz - (tee_local $12 - (i32.load offset=48 - (get_local $9) - ) - ) - ) - ) - (set_local $28 - (i32.add - (get_local $12) - (get_local $19) - ) - ) - (set_local $29 - (i32.sub - (tee_local $16 - (i32.add - (get_local $4) - (i32.sub - (get_local $3) - (get_local $1) - ) - ) - ) - (get_local $12) - ) - ) - (set_local $3 - (i32.load - (tee_local $30 - (i32.add - (get_local $9) - (i32.const 60) - ) - ) - ) - ) - (set_local $6 - (i32.load - (tee_local $31 - (i32.add - (get_local $9) - (i32.const 56) - ) - ) - ) - ) - (set_local $1 - (get_local $4) - ) - (block $do-once14 - (block $__rjti$4 - (block $__rjti$3 - (block $__rjti$2 - (loop $label$continue$L1 - (set_local $4 - (if i32 - (i32.lt_u - (get_local $3) - (i32.const 15) - ) - (block i32 - (set_local $6 - (i32.add - (i32.add - (i32.shl - (i32.load8_u offset=1 - (get_local $8) - ) - (get_local $3) - ) - (get_local $6) - ) - (i32.shl - (i32.load8_u - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 2) - ) - ) - ) - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - ) - ) - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (get_local $3) - ) - ) - (set_local $2 - (i32.load8_s - (i32.add - (get_local $13) - (i32.shl - (tee_local $3 - (i32.and - (get_local $6) - (get_local $24) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (set_local $5 - (i32.load16_s offset=2 - (i32.add - (get_local $13) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $6) - (tee_local $6 - (i32.load8_u offset=1 - (i32.add - (get_local $13) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (set_local $4 - (i32.sub - (get_local $4) - (get_local $6) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (if - (get_local $2) - (block - (set_local $6 - (get_local $4) - ) - (set_local $2 - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - (set_local $4 - (get_local $5) - ) - (block $__rjto$0 - (block $__rjti$0 - (loop $while-in - (block $while-out - (if - (i32.and - (get_local $2) - (i32.const 16) - ) - (block - (set_local $5 - (get_local $2) - ) - (br $while-out) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 64) - ) - (block - (set_local $4 - (get_local $3) - ) - (br $__rjti$4) - ) - ) - (set_local $5 - (i32.load8_s - (i32.add - (get_local $13) - (i32.shl - (tee_local $2 - (i32.add - (i32.and - (get_local $3) - (i32.add - (i32.shl - (i32.const 1) - (get_local $2) - ) - (i32.const -1) - ) - ) - (i32.and - (get_local $4) - (i32.const 65535) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (set_local $4 - (i32.load16_s offset=2 - (i32.add - (get_local $13) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $3) - (tee_local $2 - (i32.load8_u offset=1 - (i32.add - (get_local $13) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (set_local $6 - (i32.sub - (get_local $6) - (get_local $2) - ) - ) - (if - (get_local $5) - (block - (set_local $2 - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (br $while-in) - ) - (block - (set_local $2 - (get_local $6) - ) - (br $__rjti$0) - ) - ) - ) - ) - (br $__rjto$0) - ) - (set_local $6 - (get_local $3) - ) - (set_local $3 - (get_local $2) - ) - (set_local $4 - (i32.and - (get_local $4) - (i32.const 255) - ) - ) - (br $__rjti$1) - ) - (set_local $2 - (i32.and - (get_local $4) - (i32.const 65535) - ) - ) - (set_local $3 - (if i32 - (tee_local $5 - (i32.and - (get_local $5) - (i32.const 15) - ) - ) - (block i32 - (set_local $6 - (i32.sub - (tee_local $4 - (if i32 - (i32.lt_u - (get_local $6) - (get_local $5) - ) - (block i32 - (set_local $3 - (i32.add - (i32.shl - (i32.load8_u - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - ) - (get_local $6) - ) - (get_local $3) - ) - ) - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (get_local $6) - ) - ) - (get_local $5) - ) - ) - (set_local $4 - (i32.shr_u - (get_local $3) - (get_local $5) - ) - ) - (i32.add - (i32.and - (get_local $3) - (i32.add - (i32.shl - (i32.const 1) - (get_local $5) - ) - (i32.const -1) - ) - ) - (get_local $2) - ) - ) - (block i32 - (set_local $4 - (get_local $3) - ) - (get_local $2) - ) - ) - ) - (set_local $2 - (if i32 - (i32.lt_u - (get_local $6) - (i32.const 15) - ) - (block i32 - (set_local $4 - (i32.add - (i32.add - (i32.shl - (i32.load8_u offset=1 - (get_local $8) - ) - (get_local $6) - ) - (get_local $4) - ) - (i32.shl - (i32.load8_u - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 2) - ) - ) - ) - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - ) - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (get_local $6) - ) - ) - (set_local $5 - (i32.load16_s offset=2 - (i32.add - (get_local $14) - (i32.shl - (tee_local $11 - (i32.and - (get_local $4) - (get_local $25) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (set_local $6 - (i32.shr_u - (get_local $4) - (tee_local $4 - (i32.load8_u offset=1 - (i32.add - (get_local $14) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (set_local $7 - (i32.sub - (get_local $2) - (get_local $4) - ) - ) - (if - (i32.and - (tee_local $2 - (i32.load8_u - (i32.add - (get_local $14) - (i32.shl - (get_local $11) - (i32.const 2) - ) - ) - ) - ) - (i32.const 16) - ) - (block - (set_local $4 - (get_local $6) - ) - (set_local $6 - (get_local $7) - ) - (set_local $7 - (get_local $5) - ) - ) - (block - (set_local $4 - (get_local $7) - ) - (loop $while-in1 - (if - (i32.and - (get_local $2) - (i32.const 64) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $__rjti$3) - ) - ) - (set_local $5 - (i32.load16_s offset=2 - (i32.add - (get_local $14) - (i32.shl - (tee_local $2 - (i32.add - (i32.and - (get_local $6) - (i32.add - (i32.shl - (i32.const 1) - (get_local $2) - ) - (i32.const -1) - ) - ) - (i32.and - (get_local $5) - (i32.const 65535) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (set_local $6 - (i32.shr_u - (get_local $6) - (tee_local $7 - (i32.load8_u offset=1 - (i32.add - (get_local $14) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (set_local $7 - (i32.sub - (get_local $4) - (get_local $7) - ) - ) - (if - (i32.and - (tee_local $2 - (i32.load8_u - (i32.add - (get_local $14) - (i32.shl - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (i32.const 16) - ) - (block - (set_local $4 - (get_local $6) - ) - (set_local $6 - (get_local $7) - ) - (set_local $7 - (get_local $5) - ) - ) - (block - (set_local $4 - (get_local $7) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (set_local $5 - (if i32 - (i32.lt_u - (get_local $6) - (tee_local $10 - (i32.and - (get_local $2) - (i32.const 15) - ) - ) - ) - (block i32 - (set_local $2 - (i32.add - (i32.shl - (i32.load8_u - (tee_local $11 - (i32.add - (get_local $8) - (i32.const 1) - ) - ) - ) - (get_local $6) - ) - (get_local $4) - ) - ) - (if i32 - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (get_local $10) - ) - (block i32 - (set_local $2 - (i32.add - (i32.shl - (i32.load8_u - (tee_local $8 - (i32.add - (get_local $8) - (i32.const 2) - ) - ) - ) - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - (block i32 - (set_local $8 - (get_local $11) - ) - (get_local $4) - ) - ) - ) - (block i32 - (set_local $2 - (get_local $4) - ) - (get_local $6) - ) - ) - ) - (set_local $6 - (i32.shr_u - (get_local $2) - (get_local $10) - ) - ) - (set_local $4 - (i32.sub - (get_local $5) - (get_local $10) - ) - ) - (if - (i32.le_u - (tee_local $10 - (i32.add - (i32.and - (get_local $2) - (i32.add - (i32.shl - (i32.const 1) - (get_local $10) - ) - (i32.const -1) - ) - ) - (i32.and - (get_local $7) - (i32.const 65535) - ) - ) - ) - (tee_local $2 - (i32.sub - (tee_local $7 - (get_local $1) - ) - (get_local $16) - ) - ) - ) - (block - (set_local $2 - (i32.add - (get_local $1) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - ) - (loop $while-in3 - (i32.store8 offset=1 - (get_local $1) - (i32.load8_s offset=1 - (get_local $2) - ) - ) - (i32.store8 offset=2 - (get_local $1) - (i32.load8_s offset=2 - (get_local $2) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 3) - ) - ) - (i32.load8_s - (tee_local $7 - (i32.add - (get_local $2) - (i32.const 3) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.const -3) - ) - ) - (i32.const 2) - ) - (block - (set_local $2 - (get_local $7) - ) - (set_local $1 - (get_local $5) - ) - (br $while-in3) - ) - ) - ) - (if - (i32.eqz - (get_local $3) - ) - (block - (set_local $3 - (get_local $4) - ) - (set_local $1 - (get_local $5) - ) - (br $__rjto$1) - ) - ) - (i32.store8 - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.load8_s offset=4 - (get_local $2) - ) - ) - (if - (i32.le_u - (get_local $3) - (i32.const 1) - ) - (block - (set_local $3 - (get_local $4) - ) - (set_local $1 - (get_local $5) - ) - (br $__rjto$1) - ) - ) - (i32.store8 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 5) - ) - ) - (i32.load8_s offset=5 - (get_local $2) - ) - ) - (set_local $3 - (get_local $4) - ) - (br $__rjto$1) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $10) - (get_local $2) - ) - ) - (get_local $23) - ) - (if - (i32.load - (get_local $26) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $__rjti$2) - ) - ) - ) - (set_local $2 - (block $do-once4 i32 - (if i32 - (get_local $27) - (block i32 - (set_local $5 - (i32.add - (get_local $15) - (i32.sub - (get_local $19) - (get_local $2) - ) - ) - ) - (if i32 - (i32.gt_u - (get_local $3) - (get_local $2) - ) - (block i32 - (set_local $11 - (i32.sub - (get_local $3) - (get_local $2) - ) - ) - (set_local $7 - (i32.sub - (get_local $10) - (get_local $7) - ) - ) - (set_local $3 - (get_local $1) - ) - (loop $do-in - (i32.store8 - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - (br_if $do-in - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (set_local $3 - (get_local $11) - ) - (i32.add - (tee_local $1 - (i32.add - (i32.add - (get_local $1) - (get_local $16) - ) - (get_local $7) - ) - ) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - ) - (get_local $5) - ) - ) - (block i32 - (if - (i32.ge_u - (get_local $12) - (get_local $2) - ) - (block - (set_local $5 - (i32.add - (get_local $15) - (i32.sub - (get_local $12) - (get_local $2) - ) - ) - ) - (drop - (br_if $do-once4 - (get_local $5) - (i32.le_u - (get_local $3) - (get_local $2) - ) - ) - ) - (set_local $11 - (i32.sub - (get_local $3) - (get_local $2) - ) - ) - (set_local $7 - (i32.sub - (get_local $10) - (get_local $7) - ) - ) - (set_local $3 - (get_local $1) - ) - (loop $do-in7 - (i32.store8 - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - (br_if $do-in7 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (set_local $3 - (get_local $11) - ) - (br $do-once4 - (i32.add - (tee_local $1 - (i32.add - (i32.add - (get_local $1) - (get_local $16) - ) - (get_local $7) - ) - ) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - ) - ) - ) - (set_local $5 - (i32.add - (get_local $15) - (i32.sub - (get_local $28) - (get_local $2) - ) - ) - ) - (if i32 - (i32.gt_u - (get_local $3) - (tee_local $2 - (i32.sub - (get_local $2) - (get_local $12) - ) - ) - ) - (block i32 - (set_local $3 - (i32.sub - (get_local $3) - (get_local $2) - ) - ) - (set_local $11 - (i32.sub - (get_local $10) - (get_local $7) - ) - ) - (set_local $7 - (get_local $1) - ) - (loop $do-in9 - (i32.store8 - (tee_local $7 - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (i32.load8_s - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - (br_if $do-in9 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (set_local $5 - (i32.add - (i32.add - (get_local $1) - (get_local $29) - ) - (get_local $11) - ) - ) - (if i32 - (i32.gt_u - (get_local $3) - (get_local $12) - ) - (block i32 - (set_local $7 - (i32.sub - (get_local $3) - (get_local $12) - ) - ) - (set_local $3 - (get_local $15) - ) - (set_local $2 - (get_local $12) - ) - (loop $do-in11 - (i32.store8 - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.load8_s - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - ) - ) - (br_if $do-in11 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (set_local $3 - (get_local $7) - ) - (i32.add - (tee_local $1 - (i32.add - (i32.add - (get_local $1) - (get_local $16) - ) - (get_local $11) - ) - ) - (i32.sub - (i32.const 0) - (get_local $10) - ) - ) - ) - (block i32 - (set_local $1 - (get_local $5) - ) - (get_local $15) - ) - ) - ) - (get_local $5) - ) - ) - ) - ) - ) - (if - (i32.gt_u - (get_local $3) - (i32.const 2) - ) - (loop $while-in13 - (i32.store8 offset=1 - (get_local $1) - (i32.load8_s offset=1 - (get_local $2) - ) - ) - (i32.store8 offset=2 - (get_local $1) - (i32.load8_s offset=2 - (get_local $2) - ) - ) - (i32.store8 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 3) - ) - ) - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 3) - ) - ) - ) - ) - (br_if $while-in13 - (i32.gt_u - (tee_local $3 - (i32.add - (get_local $3) - (i32.const -3) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (set_local $3 - (if i32 - (get_local $3) - (block i32 - (i32.store8 - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.load8_s offset=1 - (get_local $2) - ) - ) - (if i32 - (i32.gt_u - (get_local $3) - (i32.const 1) - ) - (block i32 - (i32.store8 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 2) - ) - ) - (i32.load8_s offset=2 - (get_local $2) - ) - ) - (get_local $4) - ) - (block i32 - (set_local $1 - (get_local $5) - ) - (get_local $4) - ) - ) - ) - (get_local $4) - ) - ) - ) - (block - (set_local $6 - (get_local $3) - ) - (set_local $3 - (get_local $4) - ) - (set_local $4 - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (br $__rjti$1) - ) - ) - (br $__rjto$1) - ) - (i32.store8 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (get_local $4) - ) - ) - (br_if $label$continue$L1 - (i32.and - (i32.lt_u - (get_local $1) - (get_local $18) - ) - (i32.lt_u - (get_local $8) - (get_local $17) - ) - ) - ) - ) - (br $do-once14) - ) - (i32.store offset=24 - (get_local $0) - (i32.const 14223) - ) - (i32.store - (get_local $9) - (i32.const 29) - ) - (br $do-once14) - ) - (i32.store offset=24 - (get_local $0) - (i32.const 14253) - ) - (i32.store - (get_local $9) - (i32.const 29) - ) - (br $do-once14) - ) - (set_local $6 - (if i32 - (i32.and - (get_local $2) - (i32.const 32) - ) - (block i32 - (i32.store - (get_local $9) - (i32.const 11) - ) - (set_local $3 - (get_local $6) - ) - (get_local $4) - ) - (block i32 - (i32.store offset=24 - (get_local $0) - (i32.const 14275) - ) - (i32.store - (get_local $9) - (i32.const 29) - ) - (set_local $3 - (get_local $6) - ) - (get_local $4) - ) - ) - ) - ) - (i32.store - (get_local $0) - (i32.add - (tee_local $8 - (i32.add - (get_local $8) - (i32.sub - (i32.const 0) - (tee_local $0 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - ) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $21) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store - (get_local $20) - (i32.sub - (i32.add - (get_local $17) - (i32.const 5) - ) - (get_local $8) - ) - ) - (i32.store - (get_local $22) - (i32.sub - (i32.add - (get_local $18) - (i32.const 257) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $31) - (i32.and - (i32.add - (i32.shl - (i32.const 1) - (tee_local $0 - (i32.sub - (get_local $3) - (i32.shl - (get_local $0) - (i32.const 3) - ) - ) - ) - ) - (i32.const -1) - ) - (get_local $6) - ) - ) - (i32.store - (get_local $30) - (get_local $0) - ) - ) - (func $__tr_flush_block (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (if - (i32.gt_s - (i32.load offset=132 - (get_local $0) - ) - (i32.const 0) - ) - (block - (if - (i32.eq - (i32.load - (tee_local $4 - (i32.add - (i32.load - (get_local $0) - ) - (i32.const 44) - ) - ) - ) - (i32.const 2) - ) - (block - (set_local $6 - (i32.const -201342849) - ) - (set_local $5 - (i32.const 0) - ) - (block $label$break$L9 - (block $__rjti$0 - (loop $while-in - (block $while-out - (if - (i32.and - (get_local $6) - (i32.const 1) - ) - (if - (i32.load16_s - (i32.add - (i32.add - (get_local $0) - (i32.const 148) - ) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (block - (set_local $5 - (i32.const 0) - ) - (br $while-out) - ) - ) - ) - (br_if $__rjti$0 - (i32.ge_s - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - (set_local $6 - (i32.shr_u - (get_local $6) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - (br $label$break$L9) - ) - (if - (i32.load16_s offset=184 - (get_local $0) - ) - (set_local $5 - (i32.const 1) - ) - (if - (i32.load16_s offset=188 - (get_local $0) - ) - (set_local $5 - (i32.const 1) - ) - (if - (i32.load16_s offset=200 - (get_local $0) - ) - (set_local $5 - (i32.const 1) - ) - (block - (set_local $5 - (i32.const 32) - ) - (loop $while-in1 - (if - (i32.load16_s - (i32.add - (i32.add - (get_local $0) - (i32.const 148) - ) - (i32.shl - (get_local $5) - (i32.const 2) - ) - ) - ) - (block - (set_local $5 - (i32.const 1) - ) - (br $label$break$L9) - ) - ) - (br_if $while-in1 - (i32.lt_s - (tee_local $5 - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.const 256) - ) - ) - (set_local $5 - (i32.const 0) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $5) - ) - ) - ) - (call $_build_tree - (get_local $0) - (i32.add - (get_local $0) - (i32.const 2840) - ) - ) - (call $_build_tree - (get_local $0) - (i32.add - (get_local $0) - (i32.const 2852) - ) - ) - (set_local $5 - (i32.eqz - (tee_local $4 - (i32.load16_s offset=150 - (get_local $0) - ) - ) - ) - ) - (i32.store16 offset=154 - (i32.add - (get_local $0) - (i32.shl - (tee_local $9 - (i32.load - (i32.add - (get_local $0) - (i32.const 2844) - ) - ) - ) - (i32.const 2) - ) - ) - (i32.const -1) - ) - (set_local $14 - (i32.add - (get_local $0) - (i32.const 2752) - ) - ) - (set_local $15 - (i32.add - (get_local $0) - (i32.const 2756) - ) - ) - (set_local $16 - (i32.add - (get_local $0) - (i32.const 2748) - ) - ) - (set_local $13 - (if i32 - (get_local $5) - (i32.const 138) - (i32.const 7) - ) - ) - (set_local $8 - (if i32 - (get_local $5) - (i32.const 3) - (i32.const 4) - ) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $7 - (i32.and - (get_local $4) - (i32.const 65535) - ) - ) - (set_local $10 - (i32.const -1) - ) - (loop $label$continue$L18 - (block $label$break$L18 - (set_local $4 - (i32.const 0) - ) - (loop $while-in3 - (br_if $label$break$L18 - (i32.gt_s - (get_local $6) - (get_local $9) - ) - ) - (br_if $while-in3 - (i32.and - (i32.lt_s - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (get_local $13) - ) - (tee_local $12 - (i32.eq - (get_local $7) - (tee_local $5 - (i32.and - (tee_local $11 - (i32.load16_s offset=150 - (i32.add - (get_local $0) - (i32.shl - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_s - (get_local $4) - (get_local $8) - ) - (i32.store16 - (tee_local $10 - (i32.add - (i32.add - (get_local $0) - (i32.const 2684) - ) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_u - (get_local $10) - ) - (get_local $4) - ) - ) - (if - (get_local $7) - (block - (if - (i32.ne - (get_local $7) - (get_local $10) - ) - (i32.store16 - (tee_local $4 - (i32.add - (i32.add - (get_local $0) - (i32.const 2684) - ) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $4) - ) - (i32.const 1) - ) - ) - ) - (i32.store16 - (get_local $16) - (i32.add - (i32.load16_s - (get_local $16) - ) - (i32.const 1) - ) - ) - ) - (if - (i32.lt_s - (get_local $4) - (i32.const 11) - ) - (i32.store16 - (get_local $14) - (i32.add - (i32.load16_s - (get_local $14) - ) - (i32.const 1) - ) - ) - (i32.store16 - (get_local $15) - (i32.add - (i32.load16_s - (get_local $15) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $4 - (get_local $7) - ) - (set_local $13 - (if i32 - (tee_local $7 - (i32.eqz - (i32.and - (get_local $11) - (i32.const 65535) - ) - ) - ) - (i32.const 138) - (if i32 - (get_local $12) - (i32.const 6) - (i32.const 7) - ) - ) - ) - (set_local $8 - (if i32 - (i32.or - (get_local $7) - (get_local $12) - ) - (i32.const 3) - (i32.const 4) - ) - ) - (set_local $7 - (get_local $5) - ) - (set_local $10 - (get_local $4) - ) - (br $label$continue$L18) - ) - ) - (set_local $5 - (i32.eqz - (tee_local $4 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2442) - ) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.add - (get_local $0) - (i32.shl - (tee_local $9 - (i32.load - (i32.add - (get_local $0) - (i32.const 2856) - ) - ) - ) - (i32.const 2) - ) - ) - (i32.const 2446) - ) - (i32.const -1) - ) - (set_local $13 - (if i32 - (get_local $5) - (i32.const 138) - (i32.const 7) - ) - ) - (set_local $8 - (if i32 - (get_local $5) - (i32.const 3) - (i32.const 4) - ) - ) - (set_local $6 - (i32.const 0) - ) - (set_local $7 - (i32.and - (get_local $4) - (i32.const 65535) - ) - ) - (set_local $10 - (i32.const -1) - ) - (loop $label$continue$L38 - (block $label$break$L38 - (set_local $4 - (i32.const 0) - ) - (loop $while-in6 - (br_if $label$break$L38 - (i32.gt_s - (get_local $6) - (get_local $9) - ) - ) - (br_if $while-in6 - (i32.and - (i32.lt_s - (tee_local $4 - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (get_local $13) - ) - (tee_local $12 - (i32.eq - (get_local $7) - (tee_local $5 - (i32.and - (tee_local $11 - (i32.load16_s - (i32.add - (i32.add - (get_local $0) - (i32.shl - (tee_local $6 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - (i32.const 2442) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_s - (get_local $4) - (get_local $8) - ) - (i32.store16 - (tee_local $10 - (i32.add - (i32.add - (get_local $0) - (i32.const 2684) - ) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_u - (get_local $10) - ) - (get_local $4) - ) - ) - (if - (get_local $7) - (block - (if - (i32.ne - (get_local $7) - (get_local $10) - ) - (i32.store16 - (tee_local $4 - (i32.add - (i32.add - (get_local $0) - (i32.const 2684) - ) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $4) - ) - (i32.const 1) - ) - ) - ) - (i32.store16 - (get_local $16) - (i32.add - (i32.load16_s - (get_local $16) - ) - (i32.const 1) - ) - ) - ) - (if - (i32.lt_s - (get_local $4) - (i32.const 11) - ) - (i32.store16 - (get_local $14) - (i32.add - (i32.load16_s - (get_local $14) - ) - (i32.const 1) - ) - ) - (i32.store16 - (get_local $15) - (i32.add - (i32.load16_s - (get_local $15) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $4 - (get_local $7) - ) - (set_local $13 - (if i32 - (tee_local $7 - (i32.eqz - (i32.and - (get_local $11) - (i32.const 65535) - ) - ) - ) - (i32.const 138) - (if i32 - (get_local $12) - (i32.const 6) - (i32.const 7) - ) - ) - ) - (set_local $8 - (if i32 - (i32.or - (get_local $7) - (get_local $12) - ) - (i32.const 3) - (i32.const 4) - ) - ) - (set_local $7 - (get_local $5) - ) - (set_local $10 - (get_local $4) - ) - (br $label$continue$L38) - ) - ) - (call $_build_tree - (get_local $0) - (i32.add - (get_local $0) - (i32.const 2864) - ) - ) - (set_local $6 - (i32.add - (i32.add - (i32.mul - (tee_local $7 - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2746) - ) - ) - (i32.const 18) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2690) - ) - ) - (i32.const 17) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2742) - ) - ) - (i32.const 16) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2694) - ) - ) - (i32.const 15) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2738) - ) - ) - (i32.const 14) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2698) - ) - ) - (i32.const 13) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2734) - ) - ) - (i32.const 12) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2702) - ) - ) - (i32.const 11) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2730) - ) - ) - (i32.const 10) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2706) - ) - ) - (i32.const 9) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2726) - ) - ) - (i32.const 8) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2710) - ) - ) - (i32.const 7) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2722) - ) - ) - (i32.const 6) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2714) - ) - ) - (i32.const 5) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2718) - ) - ) - (i32.const 4) - (if i32 - (i32.load16_s - (i32.add - (get_local $0) - (i32.const 2686) - ) - ) - (i32.const 3) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.const 3) - ) - (i32.const 17) - ) - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 5800) - ) - ) - ) - ) - ) - (i32.store - (get_local $4) - (get_local $6) - ) - (set_local $6 - (if i32 - (i32.gt_u - (tee_local $5 - (i32.shr_u - (i32.add - (i32.load - (i32.add - (get_local $0) - (i32.const 5804) - ) - ) - (i32.const 10) - ) - (i32.const 3) - ) - ) - (tee_local $4 - (i32.shr_u - (i32.add - (get_local $6) - (i32.const 10) - ) - (i32.const 3) - ) - ) - ) - (get_local $4) - (get_local $5) - ) - ) - (set_local $4 - (get_local $5) - ) - ) - (block - (set_local $7 - (i32.const 0) - ) - (set_local $6 - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 5) - ) - ) - ) - ) - ) - (block $do-once9 - (if - (i32.and - (i32.ne - (get_local $1) - (i32.const 0) - ) - (i32.le_u - (i32.add - (get_local $2) - (i32.const 4) - ) - (get_local $6) - ) - ) - (call $__tr_stored_block - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $3) - ) - (block - (set_local $10 - (i32.gt_s - (tee_local $11 - (i32.load - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 5820) - ) - ) - ) - ) - (i32.const 13) - ) - ) - (if - (if i32 - (i32.eq - (get_local $4) - (get_local $6) - ) - (i32.const 1) - (i32.eq - (i32.load offset=136 - (get_local $0) - ) - (i32.const 4) - ) - ) - (block - (set_local $2 - (i32.or - (i32.load16_u - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - ) - (i32.shl - (tee_local $5 - (i32.and - (i32.add - (get_local $3) - (i32.const 2) - ) - (i32.const 65535) - ) - ) - (get_local $11) - ) - ) - ) - (i32.store16 - (get_local $7) - (get_local $2) - ) - (i32.store - (get_local $9) - (tee_local $1 - (if i32 - (get_local $10) - (block i32 - (set_local $1 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $2 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $6) - (i32.add - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $1) - ) - (get_local $2) - ) - (i32.store16 - (get_local $7) - (i32.shr_u - (get_local $5) - (i32.sub - (i32.const 16) - (tee_local $1 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.add - (get_local $1) - (i32.const -13) - ) - ) - (i32.add - (get_local $11) - (i32.const 3) - ) - ) - ) - ) - (call $_compress_block - (get_local $0) - (i32.const 12570) - (i32.const 13722) - ) - (br $do-once9) - ) - ) - (set_local $1 - (i32.or - (i32.load16_u - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - ) - (i32.shl - (tee_local $5 - (i32.and - (i32.add - (get_local $3) - (i32.const 4) - ) - (i32.const 65535) - ) - ) - (get_local $11) - ) - ) - ) - (i32.store16 - (get_local $8) - (get_local $1) - ) - (i32.store - (get_local $9) - (tee_local $2 - (if i32 - (get_local $10) - (block i32 - (set_local $2 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $2) - ) - (get_local $1) - ) - (set_local $2 - (i32.shr_u - (i32.load16_u - (get_local $8) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $6) - (i32.add - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $1) - ) - (get_local $2) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.shr_u - (get_local $5) - (i32.sub - (i32.const 16) - (tee_local $2 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.add - (get_local $2) - (i32.const -13) - ) - ) - (i32.add - (get_local $11) - (i32.const 3) - ) - ) - ) - ) - (set_local $11 - (i32.load - (i32.add - (get_local $0) - (i32.const 2856) - ) - ) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.or - (i32.and - (get_local $1) - (i32.const 65535) - ) - (i32.shl - (tee_local $5 - (i32.and - (i32.add - (tee_local $10 - (i32.load - (i32.add - (get_local $0) - (i32.const 2844) - ) - ) - ) - (i32.const 65280) - ) - (i32.const 65535) - ) - ) - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $2 - (if i32 - (i32.gt_s - (get_local $2) - (i32.const 11) - ) - (block i32 - (set_local $2 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $2) - ) - (get_local $1) - ) - (set_local $2 - (i32.shr_u - (i32.load16_u - (get_local $8) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $6) - (i32.add - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $1) - ) - (get_local $2) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.shr_u - (get_local $5) - (i32.sub - (i32.const 16) - (tee_local $2 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.add - (get_local $2) - (i32.const -11) - ) - ) - (i32.add - (get_local $2) - (i32.const 5) - ) - ) - ) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.or - (i32.shl - (tee_local $5 - (i32.and - (get_local $11) - (i32.const 65535) - ) - ) - (get_local $2) - ) - (i32.and - (get_local $1) - (i32.const 65535) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $2 - (if i32 - (i32.gt_s - (get_local $2) - (i32.const 11) - ) - (block i32 - (set_local $2 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $2) - ) - (get_local $1) - ) - (set_local $2 - (i32.shr_u - (i32.load16_u - (get_local $8) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $6) - (i32.add - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $1) - ) - (get_local $2) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.shr_u - (get_local $5) - (i32.sub - (i32.const 16) - (tee_local $2 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.add - (get_local $2) - (i32.const -11) - ) - ) - (i32.add - (get_local $2) - (i32.const 5) - ) - ) - ) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.or - (i32.shl - (tee_local $6 - (i32.and - (i32.add - (get_local $7) - (i32.const 65533) - ) - (i32.const 65535) - ) - ) - (get_local $2) - ) - (i32.and - (get_local $1) - (i32.const 65535) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $2 - (if i32 - (i32.gt_s - (get_local $2) - (i32.const 12) - ) - (block i32 - (set_local $4 - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $4) - ) - (get_local $1) - ) - (set_local $4 - (i32.shr_u - (i32.load16_u - (get_local $8) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $1 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $2) - ) - (get_local $1) - ) - (get_local $4) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.shr_u - (get_local $6) - (i32.sub - (i32.const 16) - (tee_local $6 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (set_local $4 - (get_local $2) - ) - (i32.add - (get_local $6) - (i32.const -12) - ) - ) - (block i32 - (set_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (i32.add - (get_local $2) - (i32.const 4) - ) - ) - ) - ) - ) - (set_local $12 - (i32.const 0) - ) - (loop $while-in12 - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.or - (i32.shl - (tee_local $6 - (i32.load16_u - (i32.add - (i32.add - (get_local $0) - (i32.shl - (i32.load8_u - (i32.add - (get_local $12) - (i32.const 15071) - ) - ) - (i32.const 2) - ) - ) - (i32.const 2686) - ) - ) - ) - (get_local $2) - ) - (i32.and - (get_local $1) - (i32.const 65535) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $2 - (if i32 - (i32.gt_s - (get_local $2) - (i32.const 13) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $2 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $2) - ) - (get_local $1) - ) - (set_local $2 - (i32.shr_u - (i32.load16_u - (get_local $8) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $1 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $1) - ) - (get_local $2) - ) - (i32.store16 - (get_local $8) - (tee_local $1 - (i32.shr_u - (get_local $6) - (i32.sub - (i32.const 16) - (tee_local $2 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.add - (get_local $2) - (i32.const -13) - ) - ) - (i32.add - (get_local $2) - (i32.const 3) - ) - ) - ) - ) - (if - (i32.ne - (get_local $12) - (get_local $7) - ) - (block - (set_local $12 - (i32.add - (get_local $12) - (i32.const 1) - ) - ) - (br $while-in12) - ) - ) - ) - (call $_send_tree - (get_local $0) - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 148) - ) - ) - (get_local $10) - ) - (call $_send_tree - (get_local $0) - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 2440) - ) - ) - (get_local $11) - ) - (call $_compress_block - (get_local $0) - (get_local $2) - (get_local $1) - ) - ) - ) - ) - (call $_init_block - (get_local $0) - ) - (if - (i32.eqz - (get_local $3) - ) - (return) - ) - (i32.store16 - (tee_local $0 - (if i32 - (i32.gt_s - (tee_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 5820) - ) - ) - ) - ) - (i32.const 8) - ) - (block i32 - (set_local $2 - (i32.and - (i32.load16_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - ) - (i32.const 255) - ) - ) - (set_local $5 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $6) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $5) - ) - (get_local $2) - ) - (set_local $2 - (i32.shr_u - (i32.load16_u - (get_local $1) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $6) - (i32.add - (tee_local $0 - (i32.load - (get_local $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $3) - ) - (get_local $0) - ) - (get_local $2) - ) - (get_local $1) - ) - (block i32 - (set_local $1 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - (if i32 - (i32.gt_s - (get_local $2) - (i32.const 0) - ) - (block i32 - (set_local $3 - (i32.and - (i32.load16_s - (get_local $1) - ) - (i32.const 255) - ) - ) - (set_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $5) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load offset=8 - (get_local $0) - ) - (get_local $5) - ) - (get_local $3) - ) - (get_local $1) - ) - (get_local $1) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $4) - (i32.const 0) - ) - ) - (func $_free (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (if - (i32.eqz - (get_local $0) - ) - (return) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.add - (get_local $0) - (i32.const -8) - ) - ) - (tee_local $11 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (tee_local $5 - (i32.and - (tee_local $7 - (i32.load - (i32.add - (get_local $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (set_local $8 - (i32.add - (get_local $1) - (tee_local $0 - (i32.and - (get_local $7) - (i32.const -8) - ) - ) - ) - ) - (block $do-once - (if - (i32.and - (get_local $7) - (i32.const 1) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - (block - (set_local $7 - (i32.load - (get_local $1) - ) - ) - (if - (i32.eqz - (get_local $5) - ) - (return) - ) - (if - (i32.lt_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.sub - (i32.const 0) - (get_local $7) - ) - ) - ) - (get_local $11) - ) - (call $_abort) - ) - (set_local $0 - (i32.add - (get_local $7) - (get_local $0) - ) - ) - (if - (i32.eq - (get_local $1) - (i32.load - (i32.const 17816) - ) - ) - (block - (if - (i32.ne - (i32.and - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 17804) - (get_local $0) - ) - (i32.store - (get_local $2) - (i32.and - (get_local $3) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $1) - (get_local $0) - ) - (get_local $0) - ) - (return) - ) - ) - (set_local $5 - (i32.shr_u - (get_local $7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $7) - (i32.const 256) - ) - (block - (set_local $6 - (i32.load offset=12 - (get_local $1) - ) - ) - (if - (i32.ne - (tee_local $2 - (i32.load offset=8 - (get_local $1) - ) - ) - (tee_local $3 - (i32.add - (i32.shl - (get_local $5) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $2) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $2) - ) - (get_local $1) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $6) - (get_local $2) - ) - (block - (i32.store - (i32.const 17796) - (i32.and - (i32.load - (i32.const 17796) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $5) - ) - (i32.const -1) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (get_local $6) - (get_local $3) - ) - (set_local $4 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $6) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (set_local $4 - (get_local $3) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $2) - (get_local $6) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - (set_local $12 - (i32.load offset=24 - (get_local $1) - ) - ) - (block $do-once0 - (if - (i32.eq - (tee_local $4 - (i32.load offset=12 - (get_local $1) - ) - ) - (get_local $1) - ) - (block - (if - (i32.eqz - (tee_local $5 - (i32.load - (tee_local $4 - (i32.add - (tee_local $7 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (set_local $4 - (get_local $7) - ) - (block - (set_local $6 - (i32.const 0) - ) - (br $do-once0) - ) - ) - ) - (loop $while-in - (if - (tee_local $7 - (i32.load - (tee_local $10 - (i32.add - (get_local $5) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $7) - ) - (set_local $4 - (get_local $10) - ) - (br $while-in) - ) - ) - (if - (tee_local $7 - (i32.load - (tee_local $10 - (i32.add - (get_local $5) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $5 - (get_local $7) - ) - (set_local $4 - (get_local $10) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (get_local $4) - (get_local $11) - ) - (call $_abort) - (block - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $6 - (get_local $5) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $10 - (i32.load offset=8 - (get_local $1) - ) - ) - (get_local $11) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $10) - (i32.const 12) - ) - ) - ) - (get_local $1) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $5 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (block - (i32.store - (get_local $7) - (get_local $4) - ) - (i32.store - (get_local $5) - (get_local $10) - ) - (set_local $6 - (get_local $4) - ) - ) - (call $_abort) - ) - ) - ) - ) - (if - (get_local $12) - (block - (if - (i32.eq - (get_local $1) - (i32.load - (tee_local $4 - (i32.add - (i32.shl - (tee_local $5 - (i32.load offset=28 - (get_local $1) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - ) - (block - (i32.store - (get_local $4) - (get_local $6) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (i32.store - (i32.const 17800) - (i32.and - (i32.load - (i32.const 17800) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $5) - ) - (i32.const -1) - ) - ) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $12) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $4 - (i32.add - (get_local $12) - (i32.const 16) - ) - ) - ) - (get_local $1) - ) - (i32.store - (get_local $4) - (get_local $6) - ) - (i32.store offset=20 - (get_local $12) - (get_local $6) - ) - ) - (if - (i32.eqz - (get_local $6) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $6) - (tee_local $5 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $6) - (get_local $12) - ) - (if - (tee_local $7 - (i32.load - (tee_local $4 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $7) - (get_local $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $6) - (get_local $7) - ) - (i32.store offset=24 - (get_local $7) - (get_local $6) - ) - ) - ) - ) - (if - (tee_local $4 - (i32.load offset=4 - (get_local $4) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $6) - (get_local $4) - ) - (i32.store offset=24 - (get_local $4) - (get_local $6) - ) - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - ) - (block - (set_local $2 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (get_local $2) - (get_local $8) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 4) - ) - ) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (get_local $1) - (i32.const 2) - ) - (block - (i32.store - (get_local $0) - (i32.and - (get_local $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $2) - (get_local $3) - ) - (get_local $3) - ) - ) - (block - (if - (i32.eq - (get_local $8) - (i32.load - (i32.const 17820) - ) - ) - (block - (i32.store - (i32.const 17808) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17808) - ) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17820) - (get_local $2) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (get_local $2) - (i32.load - (i32.const 17816) - ) - ) - (return) - ) - (i32.store - (i32.const 17816) - (i32.const 0) - ) - (i32.store - (i32.const 17804) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (get_local $8) - (i32.load - (i32.const 17816) - ) - ) - (block - (i32.store - (i32.const 17804) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17804) - ) - (get_local $3) - ) - ) - ) - (i32.store - (i32.const 17816) - (get_local $2) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $2) - (get_local $0) - ) - (get_local $0) - ) - (return) - ) - ) - (set_local $5 - (i32.add - (i32.and - (get_local $1) - (i32.const -8) - ) - (get_local $3) - ) - ) - (set_local $3 - (i32.shr_u - (get_local $1) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (get_local $1) - (i32.const 256) - ) - (block - (set_local $4 - (i32.load offset=12 - (get_local $8) - ) - ) - (if - (i32.ne - (tee_local $1 - (i32.load offset=8 - (get_local $8) - ) - ) - (tee_local $0 - (i32.add - (i32.shl - (get_local $3) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $1) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load offset=12 - (get_local $1) - ) - (get_local $8) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $1) - ) - (block - (i32.store - (i32.const 17796) - (i32.and - (i32.load - (i32.const 17796) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $0) - ) - (set_local $14 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 8) - ) - ) - ) - (get_local $8) - ) - (set_local $14 - (get_local $0) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (get_local $1) - (get_local $4) - ) - (i32.store - (get_local $14) - (get_local $1) - ) - ) - (block - (set_local $6 - (i32.load offset=24 - (get_local $8) - ) - ) - (block $do-once6 - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $8) - ) - ) - (get_local $8) - ) - (block - (if - (i32.eqz - (tee_local $3 - (i32.load - (tee_local $0 - (i32.add - (tee_local $1 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (if - (tee_local $3 - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (get_local $1) - ) - (block - (set_local $9 - (i32.const 0) - ) - (br $do-once6) - ) - ) - ) - (loop $while-in9 - (if - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in9) - ) - ) - (if - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $0 - (get_local $4) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $9 - (get_local $3) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (tee_local $4 - (i32.load offset=8 - (get_local $8) - ) - ) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (tee_local $1 - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - ) - (get_local $8) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $8) - ) - (block - (i32.store - (get_local $1) - (get_local $0) - ) - (i32.store - (get_local $3) - (get_local $4) - ) - (set_local $9 - (get_local $0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (if - (get_local $6) - (block - (if - (i32.eq - (get_local $8) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $3 - (i32.load offset=28 - (get_local $8) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - ) - ) - (block - (i32.store - (get_local $0) - (get_local $9) - ) - (if - (i32.eqz - (get_local $9) - ) - (block - (i32.store - (i32.const 17800) - (i32.and - (i32.load - (i32.const 17800) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $6) - (i32.const 16) - ) - ) - ) - (get_local $8) - ) - (i32.store - (get_local $0) - (get_local $9) - ) - (i32.store offset=20 - (get_local $6) - (get_local $9) - ) - ) - (br_if $do-once4 - (i32.eqz - (get_local $9) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $9) - (tee_local $3 - (i32.load - (i32.const 17812) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (get_local $9) - (get_local $6) - ) - (if - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (get_local $3) - ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $9) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $9) - ) - ) - ) - ) - (if - (tee_local $0 - (i32.load offset=4 - (get_local $0) - ) - ) - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $9) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $2) - (get_local $5) - ) - (get_local $5) - ) - (if - (i32.eq - (get_local $2) - (i32.load - (i32.const 17816) - ) - ) - (block - (i32.store - (i32.const 17804) - (get_local $5) - ) - (return) - ) - (set_local $3 - (get_local $5) - ) - ) - ) - ) - (set_local $0 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (get_local $3) - (i32.const 256) - ) - (block - (set_local $1 - (i32.add - (i32.shl - (get_local $0) - (i32.const 3) - ) - (i32.const 17836) - ) - ) - (if - (i32.and - (tee_local $3 - (i32.load - (i32.const 17796) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (set_local $15 - (get_local $3) - ) - (set_local $13 - (get_local $0) - ) - ) - ) - (block - (i32.store - (i32.const 17796) - (i32.or - (get_local $3) - (get_local $0) - ) - ) - (set_local $15 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (set_local $13 - (get_local $1) - ) - ) - ) - (i32.store - (get_local $15) - (get_local $2) - ) - (i32.store offset=12 - (get_local $13) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $13) - ) - (i32.store offset=12 - (get_local $2) - (get_local $1) - ) - (return) - ) - ) - (set_local $4 - (i32.add - (i32.shl - (tee_local $5 - (if i32 - (tee_local $0 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) - ) - (if i32 - (i32.gt_u - (get_local $3) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $3) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $4 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (get_local $4) - ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 18100) - ) - ) - (i32.store offset=28 - (get_local $2) - (get_local $5) - ) - (i32.store offset=20 - (get_local $2) - (i32.const 0) - ) - (i32.store offset=16 - (get_local $2) - (i32.const 0) - ) - (block $do-once12 - (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 17800) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $5) - ) - ) - ) - (block - (set_local $5 - (i32.shl - (get_local $3) - (if i32 - (i32.eq - (get_local $5) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $5) - (i32.const 1) - ) - ) - ) - ) - ) - (set_local $0 - (i32.load - (get_local $4) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in15 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) - ) - (get_local $3) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - (set_local $5 - (i32.shl - (get_local $5) - (i32.const 1) - ) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in15) - ) - ) - (if - (i32.lt_u - (get_local $4) - (i32.load - (i32.const 17812) - ) - ) - (call $_abort) - (block - (i32.store - (get_local $4) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $0) - ) - (i32.store offset=12 - (get_local $2) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $2) - ) - (br $do-once12) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (tee_local $4 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $3 - (i32.load - (i32.const 17812) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $3) - ) - ) - (block - (i32.store offset=12 - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $1) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $4) - ) - (i32.store offset=12 - (get_local $2) - (get_local $0) - ) - (i32.store offset=24 - (get_local $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - (block - (i32.store - (i32.const 17800) - (i32.or - (get_local $1) - (get_local $0) - ) - ) - (i32.store - (get_local $4) - (get_local $2) - ) - (i32.store offset=24 - (get_local $2) - (get_local $4) - ) - (i32.store offset=12 - (get_local $2) - (get_local $2) - ) - (i32.store offset=8 - (get_local $2) - (get_local $2) - ) - ) - ) - ) - (i32.store - (i32.const 17828) - (tee_local $0 - (i32.add - (i32.load - (i32.const 17828) - ) - (i32.const -1) - ) - ) - ) - (if - (get_local $0) - (return) - (set_local $0 - (i32.const 18252) - ) - ) - (loop $while-in17 - (if - (tee_local $0 - (i32.load - (get_local $0) - ) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 17828) - (i32.const -1) - ) - ) - (func $_deflate_slow (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 116) - ) - ) - (set_local $28 - (i32.eqz - (get_local $1) - ) - ) - (set_local $16 - (i32.add - (get_local $0) - (i32.const 72) - ) - ) - (set_local $22 - (i32.add - (get_local $0) - (i32.const 88) - ) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 108) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 56) - ) - ) - (set_local $23 - (i32.add - (get_local $0) - (i32.const 84) - ) - ) - (set_local $24 - (i32.add - (get_local $0) - (i32.const 68) - ) - ) - (set_local $25 - (i32.add - (get_local $0) - (i32.const 52) - ) - ) - (set_local $26 - (i32.add - (get_local $0) - (i32.const 64) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 96) - ) - ) - (set_local $12 - (i32.add - (get_local $0) - (i32.const 120) - ) - ) - (set_local $17 - (i32.add - (get_local $0) - (i32.const 112) - ) - ) - (set_local $18 - (i32.add - (get_local $0) - (i32.const 100) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 5792) - ) - ) - (set_local $19 - (i32.add - (get_local $0) - (i32.const 5796) - ) - ) - (set_local $20 - (i32.add - (get_local $0) - (i32.const 5784) - ) - ) - (set_local $27 - (i32.add - (get_local $0) - (i32.const 5788) - ) - ) - (set_local $14 - (i32.add - (get_local $0) - (i32.const 104) - ) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 92) - ) - ) - (set_local $29 - (i32.add - (get_local $0) - (i32.const 128) - ) - ) - (set_local $30 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (set_local $31 - (i32.add - (get_local $0) - (i32.const 136) - ) - ) - (block $__rjti$3 - (block $__rjti$2 - (loop $label$continue$L1 - (set_local $2 - (i32.load - (get_local $7) - ) - ) - (loop $while-in - (block $while-out - (block $__rjto$1 - (block $__rjti$1 - (if - (i32.lt_u - (get_local $2) - (i32.const 262) - ) - (block - (call $_fill_window - (get_local $0) - ) - (if - (i32.and - (get_local $28) - (i32.lt_u - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 262) - ) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $2) - ) - ) - (if - (i32.le_u - (get_local $2) - (i32.const 2) - ) - (block - (i32.store - (get_local $12) - (i32.load - (get_local $11) - ) - ) - (i32.store - (get_local $18) - (i32.load - (get_local $17) - ) - ) - (i32.store - (get_local $11) - (i32.const 2) - ) - (set_local $2 - (i32.const 2) - ) - (br $__rjti$1) - ) - ) - ) - ) - (i32.store - (get_local $16) - (tee_local $3 - (i32.and - (i32.xor - (i32.load8_u - (i32.add - (i32.load - (get_local $10) - ) - (i32.add - (tee_local $2 - (i32.load - (get_local $5) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.shl - (i32.load - (get_local $16) - ) - (i32.load - (get_local $22) - ) - ) - ) - (i32.load - (get_local $23) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $26) - ) - (i32.shl - (i32.and - (i32.load - (get_local $25) - ) - (get_local $2) - ) - (i32.const 1) - ) - ) - (tee_local $4 - (i32.load16_s - (tee_local $3 - (i32.add - (i32.load - (get_local $24) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (set_local $6 - (i32.and - (get_local $4) - (i32.const 65535) - ) - ) - (i32.store16 - (get_local $3) - (get_local $2) - ) - (i32.store - (get_local $12) - (tee_local $3 - (i32.load - (get_local $11) - ) - ) - ) - (i32.store - (get_local $18) - (i32.load - (get_local $17) - ) - ) - (i32.store - (get_local $11) - (i32.const 2) - ) - (if - (get_local $4) - (if - (i32.lt_u - (get_local $3) - (i32.load - (get_local $29) - ) - ) - (if - (i32.gt_u - (i32.sub - (i32.load - (get_local $5) - ) - (get_local $6) - ) - (i32.add - (i32.load - (get_local $30) - ) - (i32.const -262) - ) - ) - (block - (set_local $2 - (i32.const 2) - ) - (br $__rjti$1) - ) - (block - (i32.store - (get_local $11) - (tee_local $2 - (call $_longest_match - (get_local $0) - (get_local $6) - ) - ) - ) - (br_if $__rjti$1 - (i32.ge_u - (get_local $2) - (i32.const 6) - ) - ) - (if - (i32.ne - (i32.load - (get_local $31) - ) - (i32.const 1) - ) - (block - (br_if $__rjti$1 - (i32.ne - (get_local $2) - (i32.const 3) - ) - ) - (if - (i32.le_u - (i32.sub - (i32.load - (get_local $5) - ) - (i32.load - (get_local $17) - ) - ) - (i32.const 4096) - ) - (block - (set_local $2 - (i32.const 3) - ) - (br $__rjti$1) - ) - ) - ) - ) - (i32.store - (get_local $11) - (i32.const 2) - ) - (set_local $2 - (i32.const 2) - ) - (br $__rjti$1) - ) - ) - (set_local $2 - (i32.const 2) - ) - ) - (block - (set_local $2 - (i32.const 2) - ) - (br $__rjti$1) - ) - ) - (br $__rjto$1) - ) - (set_local $3 - (i32.load - (get_local $12) - ) - ) - ) - (br_if $while-out - (i32.eqz - (i32.or - (i32.lt_u - (get_local $3) - (i32.const 3) - ) - (i32.gt_u - (get_local $2) - (get_local $3) - ) - ) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $14) - ) - ) - (block - (i32.store - (get_local $14) - (i32.const 1) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $7) - (tee_local $2 - (i32.add - (i32.load - (get_local $7) - ) - (i32.const -1) - ) - ) - ) - (br $while-in) - ) - ) - (set_local $2 - (i32.load8_s - (i32.add - (i32.load - (get_local $10) - ) - (i32.add - (i32.load - (get_local $5) - ) - (i32.const -1) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $19) - ) - (i32.shl - (tee_local $3 - (i32.load - (get_local $9) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $20) - ) - (get_local $3) - ) - (get_local $2) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 148) - ) - (i32.shl - (i32.and - (get_local $2) - (i32.const 255) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (if - (i32.eq - (i32.load - (get_local $9) - ) - (i32.add - (i32.load - (get_local $27) - ) - (i32.const -1) - ) - ) - (block - (call $__tr_flush_block - (get_local $0) - (tee_local $3 - (if i32 - (i32.gt_s - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $10) - ) - (get_local $2) - ) - (i32.const 0) - ) - ) - (i32.sub - (i32.load - (get_local $5) - ) - (get_local $2) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $5) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $6 - (i32.load offset=20 - (tee_local $15 - (i32.load - (tee_local $8 - (i32.add - (tee_local $3 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $6) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $6 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $15) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (i32.load - (get_local $4) - ) - (get_local $2) - ) - ) - (set_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $3) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $3) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $6) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $7) - (tee_local $2 - (i32.add - (i32.load - (get_local $7) - ) - (i32.const -1) - ) - ) - ) - (br_if $while-in - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - (set_local $6 - (i32.add - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const -3) - ) - (i32.load - (get_local $7) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $19) - ) - (i32.shl - (tee_local $2 - (i32.load - (get_local $9) - ) - ) - (i32.const 1) - ) - ) - (tee_local $4 - (i32.sub - (i32.add - (get_local $4) - (i32.const 65535) - ) - (i32.load - (get_local $18) - ) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $20) - ) - (get_local $2) - ) - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 253) - ) - ) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.shl - (i32.or - (i32.load8_u - (i32.add - (i32.and - (get_local $2) - (i32.const 255) - ) - (i32.const 14815) - ) - ) - (i32.const 256) - ) - (i32.const 2) - ) - ) - (i32.const 152) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 2440) - ) - (i32.shl - (i32.load8_u - (i32.add - (if i32 - (i32.lt_u - (tee_local $2 - (i32.and - (i32.add - (get_local $4) - (i32.const 65535) - ) - (i32.const 65535) - ) - ) - (i32.const 256) - ) - (get_local $2) - (i32.add - (i32.shr_u - (get_local $2) - (i32.const 7) - ) - (i32.const 256) - ) - ) - (i32.const 14303) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (set_local $8 - (i32.load - (get_local $9) - ) - ) - (set_local $15 - (i32.add - (i32.load - (get_local $27) - ) - (i32.const -1) - ) - ) - (i32.store - (get_local $7) - (i32.add - (i32.sub - (i32.const 1) - (tee_local $2 - (i32.load - (get_local $12) - ) - ) - ) - (i32.load - (get_local $7) - ) - ) - ) - (i32.store - (get_local $12) - (tee_local $4 - (i32.add - (get_local $2) - (i32.const -2) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $5) - ) - ) - (loop $while-in1 - (i32.store - (get_local $5) - (tee_local $3 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - (if - (i32.le_u - (get_local $3) - (get_local $6) - ) - (block - (i32.store - (get_local $16) - (tee_local $21 - (i32.and - (i32.xor - (i32.load8_u - (i32.add - (i32.load - (get_local $10) - ) - (i32.add - (get_local $2) - (i32.const 3) - ) - ) - ) - (i32.shl - (i32.load - (get_local $16) - ) - (i32.load - (get_local $22) - ) - ) - ) - (i32.load - (get_local $23) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $26) - ) - (i32.shl - (i32.and - (i32.load - (get_local $25) - ) - (get_local $3) - ) - (i32.const 1) - ) - ) - (i32.load16_s - (tee_local $21 - (i32.add - (i32.load - (get_local $24) - ) - (i32.shl - (get_local $21) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.store16 - (get_local $21) - (get_local $3) - ) - ) - ) - (i32.store - (get_local $12) - (tee_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - ) - (if - (get_local $4) - (block - (set_local $2 - (get_local $3) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $14) - (i32.const 0) - ) - (i32.store - (get_local $11) - (i32.const 2) - ) - (i32.store - (get_local $5) - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 2) - ) - ) - ) - (br_if $label$continue$L1 - (i32.ne - (get_local $8) - (get_local $15) - ) - ) - (call $__tr_flush_block - (get_local $0) - (tee_local $3 - (if i32 - (i32.gt_s - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $10) - ) - (get_local $2) - ) - (i32.const 0) - ) - ) - (i32.sub - (get_local $4) - (get_local $2) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $5) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $6 - (i32.load offset=20 - (tee_local $15 - (i32.load - (tee_local $8 - (i32.add - (tee_local $3 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $6) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $6 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $15) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $6 - (i32.load - (get_local $8) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (i32.load - (get_local $4) - ) - (get_local $2) - ) - ) - (set_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $6) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $3) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $3) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $6) - ) - ) - ) - ) - ) - (br_if $label$continue$L1 - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - (if - (i32.load - (get_local $14) - ) - (block - (set_local $2 - (i32.load8_s - (i32.add - (i32.load - (get_local $10) - ) - (i32.add - (i32.load - (get_local $5) - ) - (i32.const -1) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $19) - ) - (i32.shl - (tee_local $3 - (i32.load - (get_local $9) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $9) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $20) - ) - (get_local $3) - ) - (get_local $2) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 148) - ) - (i32.shl - (i32.and - (get_local $2) - (i32.const 255) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (i32.store - (get_local $14) - (i32.const 0) - ) - ) - ) - (call $__tr_flush_block - (get_local $0) - (tee_local $3 - (if i32 - (i32.gt_s - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $10) - ) - (get_local $2) - ) - (i32.const 0) - ) - ) - (i32.sub - (i32.load - (get_local $5) - ) - (get_local $2) - ) - (tee_local $3 - (i32.eq - (get_local $1) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $5) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $5 - (i32.load offset=20 - (tee_local $9 - (i32.load - (tee_local $7 - (i32.add - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $1) - (tee_local $1 - (get_local $5) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $9) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (tee_local $5 - (i32.load - (get_local $7) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $7) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $2) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (i32.load - (get_local $4) - ) - (get_local $1) - ) - ) - (set_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $5) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (if - (i32.eq - (get_local $2) - (get_local $1) - ) - (i32.store - (get_local $7) - (i32.load offset=8 - (get_local $5) - ) - ) - ) - ) - ) - (if - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - (return - (if i32 - (get_local $3) - (i32.const 3) - (i32.const 1) - ) - ) - (return - (if i32 - (get_local $3) - (i32.const 2) - (i32.const 0) - ) - ) - ) - ) - (get_local $0) - ) - (func $_send_tree (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (set_local $18 - (i32.add - (get_local $0) - (i32.const 2754) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 5820) - ) - ) - (set_local $19 - (i32.add - (get_local $0) - (i32.const 2752) - ) - ) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $20 - (i32.add - (get_local $0) - (i32.const 2758) - ) - ) - (set_local $21 - (i32.add - (get_local $0) - (i32.const 2756) - ) - ) - (set_local $22 - (i32.add - (get_local $0) - (i32.const 2750) - ) - ) - (set_local $23 - (i32.add - (get_local $0) - (i32.const 2748) - ) - ) - (set_local $12 - (if i32 - (tee_local $3 - (i32.eqz - (tee_local $14 - (i32.load16_s offset=2 - (get_local $1) - ) - ) - ) - ) - (i32.const 138) - (i32.const 7) - ) - ) - (set_local $10 - (if i32 - (get_local $3) - (i32.const 3) - (i32.const 4) - ) - ) - (set_local $15 - (i32.const 0) - ) - (set_local $13 - (i32.and - (get_local $14) - (i32.const 65535) - ) - ) - (set_local $4 - (i32.const -1) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (set_local $6 - (i32.const 0) - ) - (loop $while-in - (br_if $label$break$L1 - (i32.gt_s - (get_local $15) - (get_local $2) - ) - ) - (if - (i32.and - (i32.lt_s - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (get_local $12) - ) - (tee_local $8 - (i32.eq - (get_local $13) - (tee_local $14 - (i32.and - (tee_local $24 - (i32.load16_s offset=2 - (i32.add - (get_local $1) - (i32.shl - (tee_local $15 - (i32.add - (get_local $15) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - ) - ) - (block - (set_local $6 - (get_local $3) - ) - (br $while-in) - ) - (set_local $17 - (get_local $8) - ) - ) - ) - (block $do-once - (if - (i32.lt_s - (get_local $3) - (get_local $10) - ) - (block - (set_local $25 - (i32.add - (i32.add - (get_local $0) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - (i32.const 2686) - ) - ) - (set_local $12 - (i32.add - (i32.add - (get_local $0) - (i32.const 2684) - ) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - ) - (set_local $4 - (i32.load - (get_local $9) - ) - ) - (set_local $6 - (i32.load16_u - (get_local $7) - ) - ) - (set_local $8 - (get_local $3) - ) - (loop $while-in1 - (set_local $16 - (i32.load16_u - (get_local $25) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.and - (tee_local $6 - (i32.or - (i32.and - (get_local $6) - (i32.const 65535) - ) - (i32.shl - (tee_local $10 - (i32.load16_u - (get_local $12) - ) - ) - (get_local $4) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $6 - (if i32 - (i32.gt_s - (get_local $4) - (i32.sub - (i32.const 16) - (get_local $16) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.and - (i32.shr_u - (get_local $10) - (i32.sub - (i32.const 16) - (tee_local $6 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.add - (get_local $16) - (i32.const -16) - ) - (get_local $6) - ) - ) - (i32.add - (get_local $4) - (get_local $16) - ) - ) - ) - ) - (if - (tee_local $8 - (i32.add - (get_local $8) - (i32.const -1) - ) - ) - (block - (set_local $4 - (get_local $6) - ) - (set_local $6 - (get_local $3) - ) - (br $while-in1) - ) - ) - ) - ) - (block - (if - (get_local $13) - (block - (set_local $4 - (if i32 - (i32.eq - (get_local $13) - (get_local $4) - ) - (block i32 - (set_local $8 - (i32.load - (get_local $9) - ) - ) - (set_local $6 - (get_local $3) - ) - (i32.load16_u - (get_local $7) - ) - ) - (block i32 - (set_local $12 - (i32.load16_u - (i32.add - (i32.add - (get_local $0) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - (i32.const 2686) - ) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.and - (tee_local $4 - (i32.or - (i32.load16_u - (get_local $7) - ) - (i32.shl - (tee_local $8 - (i32.load16_u - (i32.add - (i32.add - (get_local $0) - (i32.const 2684) - ) - (i32.shl - (get_local $13) - (i32.const 2) - ) - ) - ) - ) - (tee_local $10 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $8 - (if i32 - (i32.gt_s - (get_local $10) - (i32.sub - (i32.const 16) - (get_local $12) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $4) - ) - (set_local $4 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $4) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.and - (i32.shr_u - (get_local $8) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.add - (get_local $12) - (i32.const -16) - ) - (get_local $4) - ) - ) - (i32.add - (get_local $10) - (get_local $12) - ) - ) - ) - ) - (get_local $3) - ) - ) - ) - (set_local $12 - (i32.load16_u - (get_local $22) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.or - (i32.and - (get_local $4) - (i32.const 65535) - ) - (i32.shl - (tee_local $10 - (i32.load16_u - (get_local $23) - ) - ) - (get_local $8) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $8 - (if i32 - (i32.gt_s - (get_local $8) - (i32.sub - (i32.const 16) - (get_local $12) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (get_local $3) - ) - (set_local $4 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $4) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.shr_u - (get_local $10) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.add - (i32.add - (get_local $12) - (i32.const -16) - ) - (get_local $4) - ) - ) - (i32.add - (get_local $8) - (get_local $12) - ) - ) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $6 - (i32.or - (i32.and - (get_local $3) - (i32.const 65535) - ) - (i32.shl - (tee_local $4 - (i32.and - (i32.add - (get_local $6) - (i32.const 65533) - ) - (i32.const 65535) - ) - ) - (get_local $8) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $3 - (if i32 - (i32.gt_s - (get_local $8) - (i32.const 14) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (i32.store16 - (get_local $7) - (i32.shr_u - (get_local $4) - (i32.sub - (i32.const 16) - (tee_local $3 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.add - (get_local $3) - (i32.const -14) - ) - ) - (i32.add - (get_local $8) - (i32.const 2) - ) - ) - ) - ) - (br $do-once) - ) - ) - (if - (i32.lt_s - (get_local $3) - (i32.const 11) - ) - (block - (set_local $10 - (i32.load16_u - (get_local $18) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.or - (i32.load16_u - (get_local $7) - ) - (i32.shl - (tee_local $8 - (i32.load16_u - (get_local $19) - ) - ) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $8 - (if i32 - (i32.gt_s - (get_local $4) - (i32.sub - (i32.const 16) - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (get_local $3) - ) - (set_local $4 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $4) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.shr_u - (get_local $8) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.add - (i32.add - (get_local $10) - (i32.const -16) - ) - (get_local $4) - ) - ) - (i32.add - (get_local $4) - (get_local $10) - ) - ) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $6 - (i32.or - (i32.and - (get_local $3) - (i32.const 65535) - ) - (i32.shl - (tee_local $4 - (i32.and - (i32.add - (get_local $6) - (i32.const 65534) - ) - (i32.const 65535) - ) - ) - (get_local $8) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $3 - (if i32 - (i32.gt_s - (get_local $8) - (i32.const 13) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (i32.store16 - (get_local $7) - (i32.shr_u - (get_local $4) - (i32.sub - (i32.const 16) - (tee_local $3 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.add - (get_local $3) - (i32.const -13) - ) - ) - (i32.add - (get_local $8) - (i32.const 3) - ) - ) - ) - ) - ) - (block - (set_local $10 - (i32.load16_u - (get_local $20) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.or - (i32.load16_u - (get_local $7) - ) - (i32.shl - (tee_local $8 - (i32.load16_u - (get_local $21) - ) - ) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $8 - (if i32 - (i32.gt_s - (get_local $4) - (i32.sub - (i32.const 16) - (get_local $10) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (get_local $3) - ) - (set_local $4 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $4) - ) - (i32.store16 - (get_local $7) - (tee_local $3 - (i32.shr_u - (get_local $8) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - ) - (i32.add - (i32.add - (get_local $10) - (i32.const -16) - ) - (get_local $4) - ) - ) - (i32.add - (get_local $4) - (get_local $10) - ) - ) - ) - ) - (i32.store16 - (get_local $7) - (tee_local $6 - (i32.or - (i32.and - (get_local $3) - (i32.const 65535) - ) - (i32.shl - (tee_local $4 - (i32.and - (i32.add - (get_local $6) - (i32.const 65526) - ) - (i32.const 65535) - ) - ) - (get_local $8) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $3 - (if i32 - (i32.gt_s - (get_local $8) - (i32.const 9) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (set_local $6 - (i32.shr_u - (i32.load16_u - (get_local $7) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $6) - ) - (i32.store16 - (get_local $7) - (i32.shr_u - (get_local $4) - (i32.sub - (i32.const 16) - (tee_local $3 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.add - (get_local $3) - (i32.const -9) - ) - ) - (i32.add - (get_local $8) - (i32.const 7) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (set_local $3 - (get_local $13) - ) - (set_local $12 - (if i32 - (tee_local $6 - (i32.eqz - (i32.and - (get_local $24) - (i32.const 65535) - ) - ) - ) - (i32.const 138) - (if i32 - (get_local $17) - (i32.const 6) - (i32.const 7) - ) - ) - ) - (set_local $10 - (if i32 - (i32.or - (get_local $6) - (get_local $17) - ) - (i32.const 3) - (i32.const 4) - ) - ) - (set_local $13 - (get_local $14) - ) - (set_local $4 - (get_local $3) - ) - (br $label$continue$L1) - ) - ) - ) - (func $___udivmoddi4 (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (set_local $x64 - (i64.or - (i64.extend_u/i32 - (get_local $xl) - ) - (i64.shl - (i64.extend_u/i32 - (get_local $xh) - ) - (i64.const 32) - ) - ) - ) - (set_local $y64 - (i64.or - (i64.extend_u/i32 - (get_local $yl) - ) - (i64.shl - (i64.extend_u/i32 - (get_local $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (get_local $r) - (i64.store - (get_local $r) - (i64.rem_u - (get_local $x64) - (get_local $y64) - ) - ) - ) - (set_local $x64 - (i64.div_u - (get_local $x64) - (get_local $y64) - ) - ) - (set_global $tempRet0 - (i32.wrap/i64 - (i64.shr_u - (get_local $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap/i64 - (get_local $x64) - ) - ) - (func $_deflate_fast (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 116) - ) - ) - (set_local $23 - (i32.eqz - (get_local $1) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 72) - ) - ) - (set_local $14 - (i32.add - (get_local $0) - (i32.const 88) - ) - ) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 108) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 56) - ) - ) - (set_local $15 - (i32.add - (get_local $0) - (i32.const 84) - ) - ) - (set_local $17 - (i32.add - (get_local $0) - (i32.const 68) - ) - ) - (set_local $18 - (i32.add - (get_local $0) - (i32.const 52) - ) - ) - (set_local $19 - (i32.add - (get_local $0) - (i32.const 64) - ) - ) - (set_local $24 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 96) - ) - ) - (set_local $25 - (i32.add - (get_local $0) - (i32.const 112) - ) - ) - (set_local $12 - (i32.add - (get_local $0) - (i32.const 5792) - ) - ) - (set_local $20 - (i32.add - (get_local $0) - (i32.const 5796) - ) - ) - (set_local $21 - (i32.add - (get_local $0) - (i32.const 5784) - ) - ) - (set_local $22 - (i32.add - (get_local $0) - (i32.const 5788) - ) - ) - (set_local $26 - (i32.add - (get_local $0) - (i32.const 128) - ) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 92) - ) - ) - (block $__rjti$3 - (block $__rjti$2 - (loop $while-in - (block $__rjto$1 - (block $__rjti$1 - (if - (i32.lt_u - (i32.load - (get_local $7) - ) - (i32.const 262) - ) - (block - (call $_fill_window - (get_local $0) - ) - (if - (i32.and - (get_local $23) - (i32.lt_u - (tee_local $2 - (i32.load - (get_local $7) - ) - ) - (i32.const 262) - ) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (get_local $2) - ) - ) - (br_if $__rjti$1 - (i32.le_u - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $3 - (i32.and - (i32.xor - (i32.load8_u - (i32.add - (i32.load - (get_local $10) - ) - (i32.add - (tee_local $2 - (i32.load - (get_local $6) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.shl - (i32.load - (get_local $9) - ) - (i32.load - (get_local $14) - ) - ) - ) - (i32.load - (get_local $15) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $19) - ) - (i32.shl - (i32.and - (i32.load - (get_local $18) - ) - (get_local $2) - ) - (i32.const 1) - ) - ) - (tee_local $3 - (i32.load16_s - (tee_local $4 - (i32.add - (i32.load - (get_local $17) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (i32.store16 - (get_local $4) - (get_local $2) - ) - (br_if $__rjti$1 - (i32.eqz - (get_local $3) - ) - ) - (br_if $__rjti$1 - (i32.gt_u - (i32.sub - (get_local $2) - (tee_local $2 - (i32.and - (get_local $3) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.load - (get_local $24) - ) - (i32.const -262) - ) - ) - ) - (i32.store - (get_local $11) - (tee_local $2 - (call $_longest_match - (get_local $0) - (get_local $2) - ) - ) - ) - (br $__rjto$1) - ) - (set_local $2 - (i32.load - (get_local $11) - ) - ) - ) - (block $do-once - (if - (i32.gt_u - (get_local $2) - (i32.const 2) - ) - (block - (i32.store16 - (i32.add - (i32.load - (get_local $20) - ) - (i32.shl - (tee_local $3 - (i32.load - (get_local $12) - ) - ) - (i32.const 1) - ) - ) - (tee_local $4 - (i32.sub - (i32.load - (get_local $6) - ) - (i32.load - (get_local $25) - ) - ) - ) - ) - (i32.store - (get_local $12) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $21) - ) - (get_local $3) - ) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 253) - ) - ) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.shl - (i32.or - (i32.load8_u - (i32.add - (i32.and - (get_local $2) - (i32.const 255) - ) - (i32.const 14815) - ) - ) - (i32.const 256) - ) - (i32.const 2) - ) - ) - (i32.const 152) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 2440) - ) - (i32.shl - (i32.load8_u - (i32.add - (if i32 - (i32.lt_u - (tee_local $2 - (i32.and - (i32.add - (get_local $4) - (i32.const 65535) - ) - (i32.const 65535) - ) - ) - (i32.const 256) - ) - (get_local $2) - (i32.add - (i32.shr_u - (get_local $2) - (i32.const 7) - ) - (i32.const 256) - ) - ) - (i32.const 14303) - ) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (set_local $3 - (i32.eq - (i32.load - (get_local $12) - ) - (i32.add - (i32.load - (get_local $22) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $7) - (tee_local $4 - (i32.sub - (i32.load - (get_local $7) - ) - (tee_local $2 - (i32.load - (get_local $11) - ) - ) - ) - ) - ) - (if - (i32.eqz - (if i32 - (i32.gt_u - (get_local $4) - (i32.const 2) - ) - (i32.le_u - (get_local $2) - (i32.load - (get_local $26) - ) - ) - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $6) - (tee_local $2 - (i32.add - (i32.load - (get_local $6) - ) - (get_local $2) - ) - ) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (i32.store - (get_local $9) - (tee_local $5 - (i32.load8_u - (i32.add - (tee_local $4 - (i32.load - (get_local $10) - ) - ) - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $9) - (i32.and - (i32.xor - (i32.load8_u - (i32.add - (get_local $4) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - (i32.shl - (get_local $5) - (i32.load - (get_local $14) - ) - ) - ) - (i32.load - (get_local $15) - ) - ) - ) - (br $do-once) - ) - ) - (i32.store - (get_local $11) - (tee_local $5 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - (set_local $16 - (i32.load - (get_local $14) - ) - ) - (set_local $27 - (i32.load - (get_local $10) - ) - ) - (set_local $28 - (i32.load - (get_local $15) - ) - ) - (set_local $29 - (i32.load - (get_local $17) - ) - ) - (set_local $30 - (i32.load - (get_local $18) - ) - ) - (set_local $31 - (i32.load - (get_local $19) - ) - ) - (set_local $2 - (i32.load - (get_local $6) - ) - ) - (set_local $8 - (i32.load - (get_local $9) - ) - ) - (loop $while-in1 - (i32.store - (get_local $6) - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $8 - (i32.and - (i32.xor - (i32.load8_u - (i32.add - (get_local $27) - (i32.add - (get_local $2) - (i32.const 3) - ) - ) - ) - (i32.shl - (get_local $8) - (get_local $16) - ) - ) - (get_local $28) - ) - ) - ) - (i32.store16 - (i32.add - (get_local $31) - (i32.shl - (i32.and - (get_local $30) - (get_local $4) - ) - (i32.const 1) - ) - ) - (i32.load16_s - (tee_local $32 - (i32.add - (get_local $29) - (i32.shl - (get_local $8) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.store16 - (get_local $32) - (get_local $4) - ) - (i32.store - (get_local $11) - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - ) - (if - (get_local $5) - (block - (set_local $2 - (get_local $4) - ) - (br $while-in1) - ) - ) - ) - (i32.store - (get_local $6) - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 2) - ) - ) - ) - ) - (block - (set_local $2 - (i32.load8_s - (i32.add - (i32.load - (get_local $10) - ) - (i32.load - (get_local $6) - ) - ) - ) - ) - (i32.store16 - (i32.add - (i32.load - (get_local $20) - ) - (i32.shl - (tee_local $3 - (i32.load - (get_local $12) - ) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $12) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $21) - ) - (get_local $3) - ) - (get_local $2) - ) - (i32.store16 - (tee_local $2 - (i32.add - (i32.add - (get_local $0) - (i32.const 148) - ) - (i32.shl - (i32.and - (get_local $2) - (i32.const 255) - ) - (i32.const 2) - ) - ) - ) - (i32.add - (i32.load16_s - (get_local $2) - ) - (i32.const 1) - ) - ) - (set_local $3 - (i32.eq - (i32.load - (get_local $12) - ) - (i32.add - (i32.load - (get_local $22) - ) - (i32.const -1) - ) - ) - ) - (i32.store - (get_local $7) - (i32.add - (i32.load - (get_local $7) - ) - (i32.const -1) - ) - ) - (i32.store - (get_local $6) - (tee_local $2 - (i32.add - (i32.load - (get_local $6) - ) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (br_if $while-in - (i32.eqz - (get_local $3) - ) - ) - (call $__tr_flush_block - (get_local $0) - (tee_local $4 - (if i32 - (i32.gt_s - (tee_local $3 - (i32.load - (get_local $13) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $10) - ) - (get_local $3) - ) - (i32.const 0) - ) - ) - (i32.sub - (get_local $2) - (get_local $3) - ) - (i32.const 0) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $6) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $5 - (i32.load offset=20 - (tee_local $16 - (i32.load - (tee_local $8 - (i32.add - (tee_local $3 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $5) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $16) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $8 - (i32.add - (tee_local $5 - (i32.load - (get_local $8) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (i32.load - (get_local $4) - ) - (get_local $2) - ) - ) - (set_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $5) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $3) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $3) - (get_local $2) - ) - (i32.store - (get_local $8) - (i32.load offset=8 - (get_local $5) - ) - ) - ) - ) - ) - (br_if $while-in - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - (br $__rjti$3) - ) - ) - (call $__tr_flush_block - (get_local $0) - (tee_local $3 - (if i32 - (i32.gt_s - (tee_local $2 - (i32.load - (get_local $13) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $10) - ) - (get_local $2) - ) - (i32.const 0) - ) - ) - (i32.sub - (i32.load - (get_local $6) - ) - (get_local $2) - ) - (tee_local $3 - (i32.eq - (get_local $1) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $13) - (i32.load - (get_local $6) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $5 - (i32.load offset=20 - (tee_local $7 - (i32.load - (tee_local $6 - (i32.add - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $1) - (tee_local $1 - (get_local $5) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $7) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $6 - (i32.add - (tee_local $5 - (i32.load - (get_local $6) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $6) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $2) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (i32.load - (get_local $4) - ) - (get_local $1) - ) - ) - (set_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $5) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.sub - (get_local $2) - (get_local $1) - ) - ) - (if - (i32.eq - (get_local $2) - (get_local $1) - ) - (i32.store - (get_local $6) - (i32.load offset=8 - (get_local $5) - ) - ) - ) - ) - ) - (if - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - (return - (if i32 - (get_local $3) - (i32.const 3) - (i32.const 1) - ) - ) - (return - (if i32 - (get_local $3) - (i32.const 2) - (i32.const 0) - ) - ) - ) - ) - (get_local $0) - ) - (func $_compress_block (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (if - (i32.load - (tee_local $15 - (i32.add - (get_local $0) - (i32.const 5792) - ) - ) - ) - (block - (set_local $16 - (i32.add - (get_local $0) - (i32.const 5796) - ) - ) - (set_local $17 - (i32.add - (get_local $0) - (i32.const 5784) - ) - ) - (set_local $9 - (i32.add - (get_local $0) - (i32.const 5820) - ) - ) - (set_local $6 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - (set_local $5 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (set_local $12 - (i32.const 0) - ) - (loop $do-in - (set_local $13 - (i32.and - (tee_local $3 - (i32.load16_s - (i32.add - (i32.load - (get_local $16) - ) - (i32.shl - (get_local $12) - (i32.const 1) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - (set_local $7 - (i32.load8_u - (i32.add - (i32.load - (get_local $17) - ) - (get_local $12) - ) - ) - ) - (set_local $12 - (i32.add - (get_local $12) - (i32.const 1) - ) - ) - (if - (get_local $3) - (block - (set_local $4 - (i32.load16_u offset=2 - (i32.add - (get_local $1) - (i32.shl - (tee_local $3 - (i32.add - (i32.or - (tee_local $10 - (i32.load8_u - (i32.add - (get_local $7) - (i32.const 14815) - ) - ) - ) - (i32.const 256) - ) - (i32.const 1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (tee_local $18 - (i32.or - (i32.load16_u - (get_local $6) - ) - (i32.shl - (tee_local $14 - (i32.load16_u - (i32.add - (get_local $1) - (i32.shl - (get_local $3) - (i32.const 2) - ) - ) - ) - ) - (tee_local $8 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $4 - (if i32 - (i32.gt_s - (get_local $8) - (i32.sub - (i32.const 16) - (get_local $4) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $18) - ) - (set_local $3 - (i32.shr_u - (i32.load16_u - (get_local $6) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $8 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $8) - ) - (get_local $3) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (get_local $14) - (i32.sub - (i32.const 16) - (tee_local $8 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.add - (get_local $4) - (i32.const -16) - ) - (get_local $8) - ) - ) - (i32.add - (get_local $8) - (get_local $4) - ) - ) - ) - ) - (set_local $8 - (i32.load - (i32.add - (i32.shl - (get_local $10) - (i32.const 2) - ) - (i32.const 9356) - ) - ) - ) - (if - (i32.lt_u - (i32.add - (get_local $10) - (i32.const -8) - ) - (i32.const 20) - ) - (block - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (tee_local $10 - (i32.or - (i32.shl - (tee_local $7 - (i32.and - (i32.sub - (get_local $7) - (i32.load - (i32.add - (i32.shl - (get_local $10) - (i32.const 2) - ) - (i32.const 9708) - ) - ) - ) - (i32.const 65535) - ) - ) - (get_local $4) - ) - (i32.and - (get_local $3) - (i32.const 65535) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $4 - (if i32 - (i32.gt_s - (get_local $4) - (i32.sub - (i32.const 16) - (get_local $8) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $10) - ) - (set_local $3 - (i32.shr_u - (i32.load16_u - (get_local $6) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (get_local $3) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (get_local $7) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.add - (get_local $8) - (i32.const -16) - ) - (get_local $4) - ) - ) - (i32.add - (get_local $4) - (get_local $8) - ) - ) - ) - ) - ) - ) - (set_local $8 - (i32.load16_u offset=2 - (i32.add - (get_local $2) - (i32.shl - (tee_local $7 - (i32.load8_u - (i32.add - (if i32 - (i32.lt_u - (tee_local $10 - (i32.add - (get_local $13) - (i32.const -1) - ) - ) - (i32.const 256) - ) - (get_local $10) - (i32.add - (i32.shr_u - (get_local $10) - (i32.const 7) - ) - (i32.const 256) - ) - ) - (i32.const 14303) - ) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (tee_local $14 - (i32.or - (i32.and - (get_local $3) - (i32.const 65535) - ) - (i32.shl - (tee_local $13 - (i32.load16_u - (i32.add - (get_local $2) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - ) - (get_local $4) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $4 - (if i32 - (i32.gt_s - (get_local $4) - (i32.sub - (i32.const 16) - (get_local $8) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $14) - ) - (set_local $3 - (i32.shr_u - (i32.load16_u - (get_local $6) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (get_local $3) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (get_local $13) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.add - (get_local $8) - (i32.const -16) - ) - (get_local $4) - ) - ) - (i32.add - (get_local $4) - (get_local $8) - ) - ) - ) - ) - (set_local $8 - (i32.load - (i32.add - (i32.shl - (get_local $7) - (i32.const 2) - ) - (i32.const 9492) - ) - ) - ) - (if - (i32.lt_u - (i32.add - (get_local $7) - (i32.const -4) - ) - (i32.const 26) - ) - (block - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (tee_local $10 - (i32.or - (i32.shl - (tee_local $7 - (i32.and - (i32.sub - (get_local $10) - (i32.load - (i32.add - (i32.shl - (get_local $7) - (i32.const 2) - ) - (i32.const 9824) - ) - ) - ) - (i32.const 65535) - ) - ) - (get_local $4) - ) - (i32.and - (get_local $3) - (i32.const 65535) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $4 - (if i32 - (i32.gt_s - (get_local $4) - (i32.sub - (i32.const 16) - (get_local $8) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $10) - ) - (set_local $3 - (i32.shr_u - (i32.load16_u - (get_local $6) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $4 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $4) - ) - (get_local $3) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (get_local $7) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.add - (get_local $8) - (i32.const -16) - ) - (get_local $4) - ) - ) - (i32.add - (get_local $4) - (get_local $8) - ) - ) - ) - ) - ) - ) - ) - (block - (set_local $4 - (i32.load16_u offset=2 - (i32.add - (get_local $1) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (tee_local $8 - (i32.or - (i32.load16_u - (get_local $6) - ) - (i32.shl - (tee_local $10 - (i32.load16_u - (i32.add - (get_local $1) - (i32.shl - (get_local $7) - (i32.const 2) - ) - ) - ) - ) - (tee_local $7 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $4 - (if i32 - (i32.gt_s - (get_local $7) - (i32.sub - (i32.const 16) - (get_local $4) - ) - ) - (block i32 - (i32.store - (get_local $5) - (i32.add - (tee_local $3 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $3) - ) - (get_local $8) - ) - (set_local $3 - (i32.shr_u - (i32.load16_u - (get_local $6) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $5) - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $11) - ) - (get_local $7) - ) - (get_local $3) - ) - (i32.store16 - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (get_local $10) - (i32.sub - (i32.const 16) - (tee_local $7 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (i32.add - (get_local $4) - (i32.const -16) - ) - (get_local $7) - ) - ) - (i32.add - (get_local $7) - (get_local $4) - ) - ) - ) - ) - ) - ) - (br_if $do-in - (i32.lt_u - (get_local $12) - (i32.load - (get_local $15) - ) - ) - ) - ) - ) - (block - (set_local $6 - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - ) - (set_local $9 - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 5820) - ) - ) - ) - (set_local $4 - (i32.load - (get_local $3) - ) - ) - (set_local $3 - (i32.load16_u - (get_local $2) - ) - ) - ) - ) - (set_local $2 - (i32.load16_u - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 1026) - ) - ) - ) - ) - (i32.store16 - (get_local $6) - (tee_local $12 - (i32.or - (i32.and - (get_local $3) - (i32.const 65535) - ) - (i32.shl - (tee_local $11 - (i32.load16_u - (i32.add - (get_local $1) - (i32.const 1024) - ) - ) - ) - (get_local $4) - ) - ) - ) - ) - (if - (i32.gt_s - (get_local $4) - (i32.sub - (i32.const 16) - (get_local $2) - ) - ) - (block - (set_local $3 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $3) - ) - (get_local $12) - ) - (set_local $3 - (i32.shr_u - (i32.load16_u - (get_local $6) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $1) - (i32.add - (tee_local $1 - (i32.load - (get_local $1) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $1) - ) - (get_local $3) - ) - (i32.store16 - (get_local $6) - (i32.shr_u - (get_local $11) - (i32.sub - (i32.const 16) - (tee_local $1 - (i32.load - (get_local $9) - ) - ) - ) - ) - ) - (i32.store - (get_local $9) - (i32.add - (i32.add - (get_local $2) - (i32.const -16) - ) - (get_local $1) - ) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5812) - ) - (i32.load16_u - (get_local $5) - ) - ) - ) - (block - (i32.store - (get_local $9) - (i32.add - (get_local $4) - (get_local $2) - ) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5812) - ) - (i32.load16_u - (get_local $5) - ) - ) - ) - ) - ) - (func $_adler32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (set_local $4 - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - ) - (set_local $0 - (i32.and - (get_local $0) - (i32.const 65535) - ) - ) - (if - (i32.eq - (get_local $2) - (i32.const 1) - ) - (return - (i32.or - (i32.shl - (if i32 - (i32.gt_u - (tee_local $1 - (i32.add - (if i32 - (i32.gt_u - (tee_local $0 - (i32.add - (i32.load8_u - (get_local $1) - ) - (get_local $0) - ) - ) - (i32.const 65520) - ) - (tee_local $0 - (i32.add - (get_local $0) - (i32.const -65521) - ) - ) - (get_local $0) - ) - (get_local $4) - ) - ) - (i32.const 65520) - ) - (i32.add - (get_local $1) - (i32.const 15) - ) - (get_local $1) - ) - (i32.const 16) - ) - (get_local $0) - ) - ) - ) - (if - (i32.eqz - (get_local $1) - ) - (return - (i32.const 1) - ) - ) - (if - (i32.lt_u - (get_local $2) - (i32.const 16) - ) - (block - (if - (get_local $2) - (loop $while-in - (set_local $4 - (i32.add - (tee_local $0 - (i32.add - (i32.load8_u - (get_local $1) - ) - (get_local $0) - ) - ) - (get_local $4) - ) - ) - (if - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (block - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (return - (i32.or - (i32.shl - (i32.rem_u - (get_local $4) - (i32.const 65521) - ) - (i32.const 16) - ) - (if i32 - (i32.gt_u - (get_local $0) - (i32.const 65520) - ) - (i32.add - (get_local $0) - (i32.const -65521) - ) - (get_local $0) - ) - ) - ) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (block $__rjti$1 - (block $__rjti$0 - (if - (i32.gt_u - (get_local $2) - (i32.const 5551) - ) - (block - (loop $while-in1 - (set_local $2 - (i32.add - (get_local $2) - (i32.const -5552) - ) - ) - (set_local $3 - (get_local $1) - ) - (set_local $5 - (i32.const 347) - ) - (loop $while-in3 - (set_local $0 - (i32.add - (tee_local $20 - (i32.add - (tee_local $19 - (i32.add - (tee_local $18 - (i32.add - (tee_local $17 - (i32.add - (tee_local $16 - (i32.add - (tee_local $15 - (i32.add - (tee_local $14 - (i32.add - (tee_local $13 - (i32.add - (tee_local $12 - (i32.add - (tee_local $11 - (i32.add - (tee_local $10 - (i32.add - (tee_local $9 - (i32.add - (tee_local $8 - (i32.add - (tee_local $7 - (i32.add - (tee_local $6 - (i32.add - (i32.load8_u - (get_local $3) - ) - (get_local $0) - ) - ) - (i32.load8_u offset=1 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=2 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=3 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=4 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=5 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=6 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=7 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=8 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=9 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=10 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=11 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=12 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=13 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=14 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=15 - (get_local $3) - ) - ) - ) - (set_local $4 - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (get_local $6) - (get_local $4) - ) - (get_local $7) - ) - (get_local $8) - ) - (get_local $9) - ) - (get_local $10) - ) - (get_local $11) - ) - (get_local $12) - ) - (get_local $13) - ) - (get_local $14) - ) - (get_local $15) - ) - (get_local $16) - ) - (get_local $17) - ) - (get_local $18) - ) - (get_local $19) - ) - (get_local $20) - ) - (get_local $0) - ) - ) - (if - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (br $while-in3) - ) - ) - ) - (set_local $3 - (i32.add - (get_local $1) - (i32.const 5552) - ) - ) - (set_local $0 - (i32.rem_u - (get_local $0) - (i32.const 65521) - ) - ) - (set_local $4 - (i32.rem_u - (get_local $4) - (i32.const 65521) - ) - ) - (if - (i32.gt_u - (get_local $2) - (i32.const 5551) - ) - (block - (set_local $1 - (get_local $3) - ) - (br $while-in1) - ) - (set_local $1 - (get_local $4) - ) - ) - ) - (if - (get_local $2) - (if - (i32.gt_u - (get_local $2) - (i32.const 15) - ) - (br $__rjti$0) - (br $__rjti$1) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (set_local $1 - (get_local $4) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$2) - ) - (set_local $4 - (i32.add - (get_local $3) - (i32.add - (tee_local $6 - (i32.and - (tee_local $5 - (i32.add - (get_local $2) - (i32.const -16) - ) - ) - (i32.const -16) - ) - ) - (i32.const 16) - ) - ) - ) - (loop $while-in5 - (set_local $0 - (i32.add - (tee_local $21 - (i32.add - (tee_local $20 - (i32.add - (tee_local $19 - (i32.add - (tee_local $18 - (i32.add - (tee_local $17 - (i32.add - (tee_local $16 - (i32.add - (tee_local $15 - (i32.add - (tee_local $14 - (i32.add - (tee_local $13 - (i32.add - (tee_local $12 - (i32.add - (tee_local $11 - (i32.add - (tee_local $10 - (i32.add - (tee_local $9 - (i32.add - (tee_local $8 - (i32.add - (tee_local $7 - (i32.add - (i32.load8_u - (get_local $3) - ) - (get_local $0) - ) - ) - (i32.load8_u offset=1 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=2 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=3 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=4 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=5 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=6 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=7 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=8 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=9 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=10 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=11 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=12 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=13 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=14 - (get_local $3) - ) - ) - ) - (i32.load8_u offset=15 - (get_local $3) - ) - ) - ) - (set_local $1 - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (i32.add - (get_local $7) - (get_local $1) - ) - (get_local $8) - ) - (get_local $9) - ) - (get_local $10) - ) - (get_local $11) - ) - (get_local $12) - ) - (get_local $13) - ) - (get_local $14) - ) - (get_local $15) - ) - (get_local $16) - ) - (get_local $17) - ) - (get_local $18) - ) - (get_local $19) - ) - (get_local $20) - ) - (get_local $21) - ) - (get_local $0) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -16) - ) - ) - (i32.const 15) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 16) - ) - ) - (br $while-in5) - ) - ) - ) - (br_if $__rjti$2 - (i32.eq - (get_local $5) - (get_local $6) - ) - ) - (set_local $2 - (i32.sub - (get_local $5) - (get_local $6) - ) - ) - (set_local $3 - (get_local $4) - ) - ) - (loop $while-in7 - (set_local $1 - (i32.add - (tee_local $0 - (i32.add - (i32.load8_u - (get_local $3) - ) - (get_local $0) - ) - ) - (get_local $1) - ) - ) - (br_if $__rjti$2 - (i32.eqz - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const 1) - ) - ) - (br $while-in7) - ) - (br $__rjto$2) - ) - (set_local $0 - (i32.rem_u - (get_local $0) - (i32.const 65521) - ) - ) - (set_local $1 - (i32.rem_u - (get_local $1) - (i32.const 65521) - ) - ) - ) - (i32.or - (i32.shl - (get_local $1) - (i32.const 16) - ) - (get_local $0) - ) - ) - (func $_deflate_stored (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $6 - (if i32 - (i32.lt_u - (tee_local $2 - (i32.add - (i32.load offset=12 - (get_local $0) - ) - (i32.const -5) - ) - ) - (i32.const 65535) - ) - (get_local $2) - (i32.const 65535) - ) - ) - (set_local $12 - (i32.add - (get_local $0) - (i32.const 116) - ) - ) - (set_local $8 - (i32.add - (get_local $0) - (i32.const 108) - ) - ) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 92) - ) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (set_local $14 - (i32.add - (get_local $0) - (i32.const 56) - ) - ) - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (if - (i32.lt_u - (tee_local $2 - (i32.load - (get_local $12) - ) - ) - (i32.const 2) - ) - (block - (call $_fill_window - (get_local $0) - ) - (if - (i32.eqz - (i32.or - (tee_local $2 - (i32.load - (get_local $12) - ) - ) - (get_local $1) - ) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (get_local $2) - ) - ) - ) - ) - (i32.store - (get_local $8) - (tee_local $2 - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - ) - ) - (i32.store - (get_local $12) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.ne - (get_local $2) - (i32.const 0) - ) - (i32.lt_u - (get_local $2) - (tee_local $4 - (i32.add - (tee_local $3 - (i32.load - (get_local $10) - ) - ) - (get_local $6) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $12) - (i32.sub - (get_local $2) - (get_local $4) - ) - ) - (i32.store - (get_local $8) - (get_local $4) - ) - (call $__tr_flush_block - (get_local $0) - (tee_local $2 - (if i32 - (i32.gt_s - (get_local $3) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $14) - ) - (get_local $3) - ) - (i32.const 0) - ) - ) - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $8) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (tee_local $9 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $11 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $11) - (i32.sub - (i32.load - (get_local $11) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - ) - (block - (set_local $0 - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - (set_local $2 - (i32.load - (get_local $8) - ) - ) - (set_local $3 - (i32.load - (get_local $10) - ) - ) - ) - ) - (br_if $while-in - (i32.lt_u - (tee_local $2 - (i32.sub - (get_local $2) - (get_local $3) - ) - ) - (i32.add - (i32.load - (get_local $13) - ) - (i32.const -262) - ) - ) - ) - (call $__tr_flush_block - (get_local $0) - (tee_local $3 - (if i32 - (i32.gt_s - (get_local $3) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $14) - ) - (get_local $3) - ) - (i32.const 0) - ) - ) - (get_local $2) - (i32.const 0) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $8) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $3 - (i32.load offset=20 - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (tee_local $9 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $2 - (i32.load - (tee_local $11 - (i32.add - (get_local $9) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $2) - (tee_local $2 - (get_local $3) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $4) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $3) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (tee_local $7 - (i32.load - (get_local $5) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $2) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $9) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $2) - ) - ) - (i32.store - (get_local $11) - (i32.sub - (i32.load - (get_local $11) - ) - (get_local $2) - ) - ) - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.sub - (get_local $4) - (get_local $2) - ) - ) - (if - (i32.eq - (get_local $4) - (get_local $2) - ) - (i32.store - (get_local $5) - (i32.load offset=8 - (get_local $7) - ) - ) - ) - ) - ) - (br_if $while-in - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - ) - (set_local $0 - (i32.const 0) - ) - (br $__rjti$1) - ) - ) - (call $__tr_flush_block - (get_local $0) - (tee_local $2 - (if i32 - (i32.gt_s - (tee_local $6 - (i32.load - (get_local $10) - ) - ) - (i32.const -1) - ) - (i32.add - (i32.load - (get_local $14) - ) - (get_local $6) - ) - (i32.const 0) - ) - ) - (i32.sub - (i32.load - (get_local $8) - ) - (get_local $6) - ) - (tee_local $13 - (i32.eq - (get_local $1) - (i32.const 4) - ) - ) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $8) - ) - ) - (if - (if i32 - (i32.gt_u - (tee_local $2 - (i32.load offset=20 - (tee_local $6 - (i32.load - (tee_local $3 - (i32.add - (tee_local $7 - (i32.load - (get_local $0) - ) - ) - (i32.const 28) - ) - ) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (tee_local $5 - (i32.add - (get_local $7) - (i32.const 16) - ) - ) - ) - ) - ) - (get_local $1) - (tee_local $1 - (get_local $2) - ) - ) - (block - (drop - (call $_memcpy - (i32.load - (tee_local $2 - (i32.add - (get_local $7) - (i32.const 12) - ) - ) - ) - (i32.load offset=16 - (get_local $6) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $2) - (i32.add - (i32.load - (get_local $2) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $3 - (i32.add - (tee_local $4 - (i32.load - (get_local $3) - ) - ) - (i32.const 16) - ) - ) - (i32.add - (i32.load - (get_local $3) - ) - (get_local $1) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $7) - (i32.const 20) - ) - ) - (i32.add - (i32.load - (get_local $2) - ) - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.sub - (i32.load - (get_local $5) - ) - (get_local $1) - ) - ) - (set_local $6 - (i32.load - (tee_local $2 - (i32.add - (get_local $4) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.sub - (get_local $6) - (get_local $1) - ) - ) - (if - (i32.eq - (get_local $6) - (get_local $1) - ) - (i32.store - (get_local $3) - (i32.load offset=8 - (get_local $4) - ) - ) - ) - ) - ) - (if - (i32.load offset=16 - (i32.load - (get_local $0) - ) - ) - (return - (if i32 - (get_local $13) - (i32.const 3) - (i32.const 1) - ) - ) - (return - (if i32 - (get_local $13) - (i32.const 2) - (i32.const 0) - ) - ) - ) - ) - (get_local $0) - ) - (func $_crc32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.eqz - (get_local $1) - ) - (return - (i32.const 0) - ) - ) - (set_local $0 - (i32.xor - (get_local $0) - (i32.const -1) - ) - ) - (block $label$break$L4 - (if - (get_local $2) - (block - (loop $while-in - (if - (i32.and - (get_local $1) - (i32.const 3) - ) - (block - (set_local $0 - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.xor - (i32.load8_u - (get_local $1) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - (i32.shr_u - (get_local $0) - (i32.const 8) - ) - ) - ) - (br_if $label$break$L4 - (i32.eqz - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (if - (i32.gt_u - (get_local $2) - (i32.const 31) - ) - (block - (set_local $6 - (i32.add - (tee_local $5 - (i32.and - (tee_local $4 - (i32.add - (get_local $2) - (i32.const -32) - ) - ) - (i32.const -32) - ) - ) - (i32.const 32) - ) - ) - (set_local $3 - (get_local $1) - ) - (loop $while-in1 - (set_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.load - (get_local $3) - ) - (get_local $0) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - (i32.load offset=4 - (get_local $3) - ) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - (i32.load offset=8 - (get_local $3) - ) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - (i32.load offset=12 - (get_local $3) - ) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - (i32.load offset=16 - (get_local $3) - ) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - (i32.load offset=20 - (get_local $3) - ) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - (i32.load offset=24 - (get_local $3) - ) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - (i32.load offset=28 - (get_local $3) - ) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -32) - ) - ) - (i32.const 31) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 32) - ) - ) - (br $while-in1) - ) - ) - ) - (set_local $2 - (i32.sub - (get_local $4) - (get_local $5) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (get_local $6) - ) - ) - ) - ) - (if - (i32.gt_u - (get_local $2) - (i32.const 3) - ) - (block - (set_local $6 - (i32.shl - (tee_local $5 - (i32.shr_u - (tee_local $4 - (i32.add - (get_local $2) - (i32.const -4) - ) - ) - (i32.const 2) - ) - ) - (i32.const 2) - ) - ) - (set_local $3 - (get_local $1) - ) - (loop $while-in3 - (set_local $0 - (i32.xor - (i32.xor - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (tee_local $0 - (i32.xor - (i32.load - (get_local $3) - ) - (get_local $0) - ) - ) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 3072) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 4096) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.and - (i32.shr_u - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 2) - ) - (i32.const 2048) - ) - ) - ) - (i32.load - (i32.add - (i32.shl - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -4) - ) - ) - (i32.const 3) - ) - (block - (set_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (br $while-in3) - ) - ) - ) - (set_local $2 - (i32.sub - (get_local $4) - (get_local $6) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.shl - (i32.add - (get_local $5) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (if - (get_local $2) - (loop $while-in5 - (set_local $0 - (i32.xor - (i32.load - (i32.add - (i32.shl - (i32.xor - (i32.load8_u - (get_local $1) - ) - (i32.and - (get_local $0) - (i32.const 255) - ) - ) - (i32.const 2) - ) - (i32.const 1024) - ) - ) - (i32.shr_u - (get_local $0) - (i32.const 8) - ) - ) - ) - (if - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (block - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in5) - ) - ) - ) - ) - ) - ) - ) - (i32.xor - (get_local $0) - (i32.const -1) - ) - ) - (func $__tr_align (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $2 - (i32.and - (tee_local $1 - (i32.or - (i32.load16_u - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - ) - (i32.shl - (i32.const 2) - (tee_local $4 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 5820) - ) - ) - ) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - (i32.store16 - (get_local $5) - (get_local $2) - ) - (i32.store - (get_local $6) - (tee_local $1 - (if i32 - (i32.gt_s - (get_local $4) - (i32.const 13) - ) - (block i32 - (set_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $2) - ) - (get_local $1) - ) - (set_local $1 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $2) - ) - (get_local $1) - ) - (i32.store16 - (get_local $5) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.const 2) - (i32.sub - (i32.const 16) - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - ) - ) - (i32.const 65535) - ) - ) - ) - (i32.add - (get_local $1) - (i32.const -13) - ) - ) - (i32.add - (get_local $4) - (i32.const 3) - ) - ) - ) - ) - (i32.store - (get_local $6) - (tee_local $1 - (if i32 - (i32.gt_s - (get_local $1) - (i32.const 9) - ) - (block i32 - (set_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $1 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $2) - ) - (get_local $1) - ) - (i32.store16 - (get_local $5) - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -9) - ) - ) - (i32.add - (get_local $1) - (i32.const 7) - ) - ) - ) - ) - (if - (i32.eq - (get_local $1) - (i32.const 16) - ) - (block - (set_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $1 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $2) - ) - (get_local $1) - ) - (i32.store16 - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $6) - (i32.const 0) - ) - (set_local $1 - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - ) - (if - (i32.gt_s - (get_local $1) - (i32.const 7) - ) - (block - (set_local $4 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load offset=8 - (get_local $0) - ) - (get_local $4) - ) - (get_local $2) - ) - (i32.store16 - (get_local $5) - (tee_local $2 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - ) - (i32.store - (get_local $6) - (tee_local $1 - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -8) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_s - (i32.add - (i32.sub - (i32.const 11) - (get_local $1) - ) - (i32.load - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 5812) - ) - ) - ) - ) - (i32.const 9) - ) - (block - (i32.store - (get_local $7) - (i32.const 7) - ) - (return) - ) - ) - (i32.store16 - (get_local $5) - (tee_local $2 - (i32.or - (i32.and - (get_local $2) - (i32.const 65535) - ) - (i32.shl - (i32.const 2) - (get_local $1) - ) - ) - ) - ) - (set_local $1 - (if i32 - (i32.gt_s - (get_local $1) - (i32.const 13) - ) - (block i32 - (set_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $1 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $2) - ) - (get_local $1) - ) - (i32.store16 - (get_local $5) - (tee_local $2 - (i32.shr_u - (i32.const 2) - (i32.sub - (i32.const 16) - (tee_local $1 - (i32.load - (get_local $6) - ) - ) - ) - ) - ) - ) - (i32.add - (get_local $1) - (i32.const -13) - ) - ) - (i32.add - (get_local $1) - (i32.const 3) - ) - ) - ) - (set_local $2 - (i32.and - (get_local $2) - (i32.const 255) - ) - ) - (i32.store - (get_local $6) - (get_local $1) - ) - (i32.store - (get_local $6) - (tee_local $1 - (if i32 - (i32.gt_s - (get_local $1) - (i32.const 9) - ) - (block i32 - (set_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $1) - ) - (get_local $2) - ) - (set_local $1 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $2 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $2) - ) - (get_local $1) - ) - (i32.store16 - (get_local $5) - (i32.const 0) - ) - (set_local $2 - (i32.const 0) - ) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -9) - ) - ) - (i32.add - (get_local $1) - (i32.const 7) - ) - ) - ) - ) - (if - (i32.eq - (get_local $1) - (i32.const 16) - ) - (block - (set_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $4) - ) - (get_local $2) - ) - (set_local $2 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $0 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $1) - ) - (get_local $0) - ) - (get_local $2) - ) - (i32.store16 - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $7) - (i32.const 7) - ) - (return) - ) - ) - (if - (i32.le_s - (get_local $1) - (i32.const 7) - ) - (block - (i32.store - (get_local $7) - (i32.const 7) - ) - (return) - ) - ) - (set_local $4 - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load offset=8 - (get_local $0) - ) - (get_local $4) - ) - (get_local $2) - ) - (i32.store16 - (get_local $5) - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (i32.const -8) - ) - ) - (i32.store - (get_local $7) - (i32.const 7) - ) - ) - (func $_deflateInit2_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (result i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (if - (i32.eqz - (get_local $6) - ) - (return - (i32.const -6) - ) - ) - (if - (i32.or - (i32.ne - (get_local $7) - (i32.const 56) - ) - (i32.ne - (i32.load8_s - (get_local $6) - ) - (i32.const 49) - ) - ) - (return - (i32.const -6) - ) - ) - (if - (i32.eqz - (get_local $0) - ) - (return - (i32.const -2) - ) - ) - (i32.store - (tee_local $13 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (i32.const 0) - ) - (if - (i32.eqz - (tee_local $6 - (i32.load - (tee_local $10 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $10) - (i32.const 3) - ) - (i32.store offset=40 - (get_local $0) - (i32.const 0) - ) - (set_local $6 - (i32.const 3) - ) - ) - ) - (if - (i32.eqz - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - ) - ) - (i32.store - (get_local $8) - (i32.const 1) - ) - ) - (set_local $9 - (if i32 - (i32.lt_s - (get_local $3) - (i32.const 0) - ) - (block i32 - (set_local $3 - (i32.sub - (i32.const 0) - (get_local $3) - ) - ) - (i32.const 0) - ) - (block i32 - (if - (tee_local $7 - (i32.gt_s - (get_local $3) - (i32.const 15) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (i32.const -16) - ) - ) - ) - (if i32 - (get_local $7) - (i32.const 2) - (i32.const 1) - ) - ) - ) - ) - (if - (i32.or - (i32.gt_u - (get_local $5) - (i32.const 4) - ) - (i32.or - (i32.gt_u - (if i32 - (i32.eq - (get_local $1) - (i32.const -1) - ) - (tee_local $1 - (i32.const 6) - ) - (get_local $1) - ) - (i32.const 9) - ) - (i32.or - (i32.or - (i32.ne - (get_local $2) - (i32.const 8) - ) - (i32.gt_u - (i32.add - (get_local $4) - (i32.const -1) - ) - (i32.const 8) - ) - ) - (i32.ne - (i32.and - (get_local $3) - (i32.const -8) - ) - (i32.const 8) - ) - ) - ) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.eqz - (tee_local $2 - (call_indirect $FUNCSIG$iiii - (i32.load - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - ) - (i32.const 1) - (i32.const 5828) - (i32.add - (i32.and - (get_local $6) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (return - (i32.const -4) - ) - ) - (i32.store - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (get_local $2) - ) - (i32.store - (get_local $2) - (get_local $0) - ) - (i32.store offset=24 - (get_local $2) - (get_local $9) - ) - (i32.store offset=28 - (get_local $2) - (i32.const 0) - ) - (i32.store offset=48 - (get_local $2) - (if i32 - (i32.eq - (get_local $3) - (i32.const 8) - ) - (tee_local $3 - (i32.const 9) - ) - (get_local $3) - ) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $2) - (i32.const 44) - ) - ) - (tee_local $3 - (i32.shl - (i32.const 1) - (get_local $3) - ) - ) - ) - (i32.store offset=52 - (get_local $2) - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - (i32.store offset=80 - (get_local $2) - (tee_local $11 - (i32.add - (get_local $4) - (i32.const 7) - ) - ) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $2) - (i32.const 76) - ) - ) - (tee_local $11 - (i32.shl - (i32.const 1) - (get_local $11) - ) - ) - ) - (i32.store offset=84 - (get_local $2) - (i32.add - (get_local $11) - (i32.const -1) - ) - ) - (i32.store offset=88 - (get_local $2) - (i32.div_u - (i32.add - (get_local $4) - (i32.const 9) - ) - (i32.const 3) - ) - ) - (i32.store - (tee_local $11 - (i32.add - (get_local $2) - (i32.const 56) - ) - ) - (call_indirect $FUNCSIG$iiii - (i32.load - (get_local $7) - ) - (get_local $3) - (i32.const 2) - (i32.add - (i32.and - (i32.load - (get_local $10) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (tee_local $14 - (i32.add - (get_local $2) - (i32.const 64) - ) - ) - (tee_local $3 - (call_indirect $FUNCSIG$iiii - (i32.load - (get_local $7) - ) - (i32.load - (get_local $9) - ) - (i32.const 2) - (i32.add - (i32.and - (i32.load - (get_local $10) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (drop - (call $_memset - (get_local $3) - (i32.const 0) - (i32.shl - (i32.load - (get_local $9) - ) - (i32.const 1) - ) - ) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $2) - (i32.const 68) - ) - ) - (call_indirect $FUNCSIG$iiii - (i32.load - (get_local $7) - ) - (i32.load - (get_local $12) - ) - (i32.const 2) - (i32.add - (i32.and - (i32.load - (get_local $10) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (get_local $2) - (i32.const 5824) - ) - (i32.const 0) - ) - (i32.store - (tee_local $12 - (i32.add - (get_local $2) - (i32.const 5788) - ) - ) - (tee_local $3 - (i32.shl - (i32.const 1) - (i32.add - (get_local $4) - (i32.const 6) - ) - ) - ) - ) - (i32.store offset=8 - (get_local $2) - (tee_local $3 - (call_indirect $FUNCSIG$iiii - (i32.load - (get_local $7) - ) - (get_local $3) - (i32.const 4) - (i32.add - (i32.and - (i32.load - (get_local $10) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=12 - (get_local $2) - (i32.shl - (tee_local $4 - (i32.load - (get_local $12) - ) - ) - (i32.const 2) - ) - ) - (if - (i32.load - (get_local $11) - ) - (if - (i32.load - (get_local $14) - ) - (if - (i32.eqz - (i32.or - (i32.eqz - (i32.load - (get_local $9) - ) - ) - (i32.eqz - (get_local $3) - ) - ) - ) - (block - (i32.store - (i32.add - (get_local $2) - (i32.const 5796) - ) - (i32.add - (get_local $3) - (i32.shl - (i32.shr_u - (get_local $4) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.store - (i32.add - (get_local $2) - (i32.const 5784) - ) - (i32.add - (get_local $3) - (i32.mul - (get_local $4) - (i32.const 3) - ) - ) - ) - (i32.store offset=132 - (get_local $2) - (get_local $1) - ) - (i32.store offset=136 - (get_local $2) - (get_local $5) - ) - (i32.store8 offset=36 - (get_local $2) - (i32.const 8) - ) - (return - (call $_deflateReset - (get_local $0) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $2) - (i32.const 666) - ) - (i32.store - (get_local $13) - (i32.load - (i32.const 9968) - ) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load - (get_local $6) - ) - ) - ) - (return - (i32.const -4) - ) - ) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (i32.load offset=4 - (get_local $0) - ) - (i32.const 42) - ) - ) - ) - (br $switch) - ) - (return - (i32.const -4) - ) - ) - (if - (tee_local $1 - (i32.load offset=8 - (get_local $0) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $7) - ) - (get_local $1) - (i32.add - (i32.and - (i32.load - (get_local $8) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $0 - (i32.load - (get_local $6) - ) - ) - ) - ) - (if - (tee_local $1 - (i32.load offset=68 - (get_local $0) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $7) - ) - (get_local $1) - (i32.add - (i32.and - (i32.load - (get_local $8) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $0 - (i32.load - (get_local $6) - ) - ) - ) - ) - (if - (tee_local $1 - (i32.load offset=64 - (get_local $0) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $7) - ) - (get_local $1) - (i32.add - (i32.and - (i32.load - (get_local $8) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $0 - (i32.load - (get_local $6) - ) - ) - ) - ) - (if - (tee_local $1 - (i32.load offset=56 - (get_local $0) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $7) - ) - (get_local $1) - (i32.add - (i32.and - (i32.load - (get_local $8) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $0 - (i32.load - (get_local $6) - ) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $7) - ) - (get_local $0) - (i32.add - (i32.and - (i32.load - (get_local $8) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.const -4) - ) - (func $_longest_match (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (set_local $7 - (i32.load offset=124 - (get_local $0) - ) - ) - (set_local $2 - (i32.add - (tee_local $12 - (i32.load offset=56 - (get_local $0) - ) - ) - (tee_local $4 - (i32.load offset=108 - (get_local $0) - ) - ) - ) - ) - (set_local $5 - (i32.load offset=120 - (get_local $0) - ) - ) - (set_local $6 - (i32.load offset=144 - (get_local $0) - ) - ) - (set_local $13 - (if i32 - (i32.gt_u - (get_local $4) - (tee_local $3 - (i32.add - (i32.load offset=44 - (get_local $0) - ) - (i32.const -262) - ) - ) - ) - (i32.sub - (get_local $4) - (get_local $3) - ) - (i32.const 0) - ) - ) - (set_local $14 - (i32.load offset=64 - (get_local $0) - ) - ) - (set_local $15 - (i32.load offset=52 - (get_local $0) - ) - ) - (set_local $9 - (i32.add - (get_local $2) - (i32.const 258) - ) - ) - (set_local $16 - (if i32 - (i32.gt_u - (get_local $6) - (tee_local $10 - (i32.load offset=116 - (get_local $0) - ) - ) - ) - (get_local $10) - (get_local $6) - ) - ) - (set_local $17 - (i32.add - (get_local $0) - (i32.const 112) - ) - ) - (set_local $18 - (get_local $9) - ) - (set_local $4 - (i32.add - (get_local $9) - (i32.const -258) - ) - ) - (set_local $8 - (get_local $1) - ) - (set_local $3 - (get_local $5) - ) - (if - (i32.ge_u - (get_local $5) - (i32.load offset=140 - (get_local $0) - ) - ) - (set_local $7 - (i32.shr_u - (get_local $7) - (i32.const 2) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - (set_local $6 - (i32.load8_s - (i32.add - (get_local $2) - (get_local $5) - ) - ) - ) - (set_local $5 - (i32.load8_s - (i32.add - (get_local $2) - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - ) - ) - (block $__rjti$0 - (loop $while-in - (set_local $0 - (if i32 - (i32.eq - (i32.load8_u - (i32.add - (tee_local $0 - (i32.add - (get_local $12) - (get_local $8) - ) - ) - (get_local $3) - ) - ) - (i32.and - (get_local $6) - (i32.const 255) - ) - ) - (if i32 - (i32.eq - (i32.load8_u - (i32.add - (get_local $0) - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - ) - (i32.and - (get_local $5) - (i32.const 255) - ) - ) - (if i32 - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.load8_s - (get_local $1) - ) - ) - (if i32 - (i32.eq - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.load8_s offset=1 - (get_local $1) - ) - ) - (block i32 - (set_local $0 - (i32.add - (get_local $1) - (i32.const 2) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.ne - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.load8_s offset=2 - (get_local $2) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out0) - ) - ) - (if - (i32.ne - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 2) - ) - ) - ) - (i32.load8_s offset=3 - (get_local $2) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out0) - ) - ) - (if - (i32.ne - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 3) - ) - ) - ) - (i32.load8_s offset=4 - (get_local $2) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out0) - ) - ) - (if - (i32.ne - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - (i32.load8_s offset=5 - (get_local $2) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out0) - ) - ) - (if - (i32.ne - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 5) - ) - ) - ) - (i32.load8_s offset=6 - (get_local $2) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out0) - ) - ) - (if - (i32.ne - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 6) - ) - ) - ) - (i32.load8_s offset=7 - (get_local $2) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out0) - ) - ) - (set_local $11 - (get_local $2) - ) - (if - (i32.ne - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 7) - ) - ) - ) - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 8) - ) - ) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-out0) - ) - ) - (br_if $while-in1 - (if i32 - (i32.lt_u - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - (get_local $9) - ) - (i32.eq - (i32.load8_s - (get_local $0) - ) - (i32.load8_s offset=9 - (get_local $11) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (if i32 - (i32.gt_s - (tee_local $2 - (i32.add - (tee_local $11 - (i32.sub - (get_local $0) - (get_local $18) - ) - ) - (i32.const 258) - ) - ) - (get_local $3) - ) - (block i32 - (i32.store - (get_local $17) - (get_local $8) - ) - (if - (i32.ge_s - (get_local $2) - (get_local $16) - ) - (block - (set_local $0 - (get_local $2) - ) - (br $__rjti$0) - ) - ) - (set_local $1 - (get_local $4) - ) - (set_local $6 - (i32.load8_s - (i32.add - (get_local $4) - (get_local $2) - ) - ) - ) - (set_local $5 - (i32.load8_s - (i32.add - (get_local $4) - (i32.add - (get_local $11) - (i32.const 257) - ) - ) - ) - ) - (get_local $2) - ) - (block i32 - (set_local $1 - (get_local $4) - ) - (get_local $3) - ) - ) - ) - (get_local $3) - ) - (get_local $3) - ) - (get_local $3) - ) - (get_local $3) - ) - ) - (br_if $__rjti$0 - (i32.le_u - (tee_local $8 - (i32.load16_u - (i32.add - (get_local $14) - (i32.shl - (i32.and - (get_local $8) - (get_local $15) - ) - (i32.const 1) - ) - ) - ) - ) - (get_local $13) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (tee_local $7 - (i32.add - (get_local $7) - (i32.const -1) - ) - ) - ) - ) - (set_local $3 - (get_local $0) - ) - (br $while-in) - ) - ) - (if i32 - (i32.gt_u - (get_local $0) - (get_local $10) - ) - (get_local $10) - (get_local $0) - ) - ) - (func $_fill_window (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (set_local $10 - (i32.add - (get_local $0) - (i32.const 60) - ) - ) - (set_local $7 - (i32.add - (get_local $0) - (i32.const 108) - ) - ) - (set_local $15 - (i32.add - (tee_local $3 - (i32.load - (tee_local $14 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - ) - ) - (i32.const -262) - ) - ) - (set_local $8 - (i32.add - (get_local $0) - (i32.const 56) - ) - ) - (set_local $11 - (i32.add - (get_local $0) - (i32.const 72) - ) - ) - (set_local $16 - (i32.add - (get_local $0) - (i32.const 88) - ) - ) - (set_local $17 - (i32.add - (get_local $0) - (i32.const 84) - ) - ) - (set_local $12 - (i32.add - (get_local $0) - (i32.const 112) - ) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 92) - ) - ) - (set_local $18 - (i32.add - (get_local $0) - (i32.const 76) - ) - ) - (set_local $19 - (i32.add - (get_local $0) - (i32.const 68) - ) - ) - (set_local $20 - (i32.add - (get_local $0) - (i32.const 64) - ) - ) - (set_local $1 - (i32.load - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 116) - ) - ) - ) - ) - (set_local $2 - (get_local $3) - ) - (block $__rjto$0 - (block $__rjti$0 - (loop $while-in - (block $while-out - (set_local $4 - (i32.sub - (i32.sub - (i32.load - (get_local $10) - ) - (get_local $1) - ) - (tee_local $1 - (i32.load - (get_local $7) - ) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (i32.add - (get_local $15) - (get_local $2) - ) - ) - (set_local $2 - (get_local $1) - ) - (block - (drop - (call $_memcpy - (tee_local $1 - (i32.load - (get_local $8) - ) - ) - (i32.add - (get_local $1) - (get_local $3) - ) - (get_local $3) - ) - ) - (i32.store - (get_local $12) - (i32.sub - (i32.load - (get_local $12) - ) - (get_local $3) - ) - ) - (i32.store - (get_local $7) - (tee_local $2 - (i32.sub - (i32.load - (get_local $7) - ) - (get_local $3) - ) - ) - ) - (i32.store - (get_local $13) - (i32.sub - (i32.load - (get_local $13) - ) - (get_local $3) - ) - ) - (set_local $5 - (tee_local $1 - (i32.load - (get_local $18) - ) - ) - ) - (set_local $1 - (i32.add - (i32.load - (get_local $19) - ) - (i32.shl - (get_local $1) - (i32.const 1) - ) - ) - ) - (loop $do-in - (set_local $6 - (i32.load16_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -2) - ) - ) - ) - ) - (i32.store16 - (get_local $1) - (if i32 - (i32.lt_u - (get_local $6) - (get_local $3) - ) - (i32.const 0) - (i32.and - (i32.sub - (get_local $6) - (get_local $3) - ) - (i32.const 65535) - ) - ) - ) - (br_if $do-in - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -1) - ) - ) - ) - ) - (set_local $1 - (get_local $3) - ) - (set_local $5 - (i32.add - (i32.load - (get_local $20) - ) - (i32.shl - (get_local $3) - (i32.const 1) - ) - ) - ) - (loop $do-in1 - (set_local $6 - (i32.load16_u - (tee_local $5 - (i32.add - (get_local $5) - (i32.const -2) - ) - ) - ) - ) - (i32.store16 - (get_local $5) - (if i32 - (i32.lt_u - (get_local $6) - (get_local $3) - ) - (i32.const 0) - (i32.and - (i32.sub - (get_local $6) - (get_local $3) - ) - (i32.const 65535) - ) - ) - ) - (br_if $do-in1 - (tee_local $1 - (i32.add - (get_local $1) - (i32.const -1) - ) - ) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (get_local $3) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (tee_local $5 - (i32.load - (tee_local $6 - (i32.add - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - ) - (set_local $21 - (i32.add - (i32.add - (i32.load - (get_local $8) - ) - (get_local $2) - ) - (tee_local $2 - (i32.load - (get_local $9) - ) - ) - ) - ) - (i32.store - (get_local $9) - (tee_local $1 - (i32.add - (tee_local $1 - (if i32 - (if i32 - (i32.gt_u - (get_local $5) - (get_local $4) - ) - (get_local $4) - (tee_local $4 - (get_local $5) - ) - ) - (block i32 - (i32.store - (get_local $6) - (i32.sub - (get_local $5) - (get_local $4) - ) - ) - (drop - (call $_memcpy - (get_local $21) - (i32.load - (tee_local $2 - (block $switch i32 - (block $switch-default - (block $switch-case2 - (block $switch-case - (br_table $switch-case $switch-case2 $switch-default - (i32.sub - (i32.load offset=24 - (i32.load offset=28 - (get_local $1) - ) - ) - (i32.const 1) - ) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 48) - ) - ) - (call $_adler32 - (i32.load - (get_local $2) - ) - (i32.load - (get_local $1) - ) - (get_local $4) - ) - ) - (br $switch - (get_local $1) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $1) - (i32.const 48) - ) - ) - (call $_crc32 - (i32.load - (get_local $2) - ) - (i32.load - (get_local $1) - ) - (get_local $4) - ) - ) - (br $switch - (get_local $1) - ) - ) - (get_local $1) - ) - ) - ) - (get_local $4) - ) - ) - (i32.store - (get_local $2) - (i32.add - (i32.load - (get_local $2) - ) - (get_local $4) - ) - ) - (i32.store - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.add - (i32.load - (get_local $1) - ) - (get_local $4) - ) - ) - (i32.load - (get_local $9) - ) - ) - (block i32 - (set_local $4 - (i32.const 0) - ) - (get_local $2) - ) - ) - ) - (get_local $4) - ) - ) - ) - (if - (i32.gt_u - (get_local $1) - (i32.const 2) - ) - (block - (i32.store - (get_local $11) - (tee_local $5 - (i32.load8_u - (i32.add - (tee_local $2 - (i32.load - (get_local $8) - ) - ) - (tee_local $4 - (i32.load - (get_local $7) - ) - ) - ) - ) - ) - ) - (i32.store - (get_local $11) - (i32.and - (i32.xor - (i32.load8_u - (i32.add - (get_local $2) - (i32.add - (get_local $4) - (i32.const 1) - ) - ) - ) - (i32.shl - (get_local $5) - (i32.load - (get_local $16) - ) - ) - ) - (i32.load - (get_local $17) - ) - ) - ) - (br_if $while-out - (i32.ge_u - (get_local $1) - (i32.const 262) - ) - ) - ) - ) - (if - (i32.load offset=4 - (i32.load - (get_local $0) - ) - ) - (block - (set_local $2 - (i32.load - (get_local $14) - ) - ) - (br $while-in) - ) - ) - ) - ) - (br $__rjto$0) - ) - (return) - ) - (if - (i32.le_u - (tee_local $3 - (i32.load - (get_local $10) - ) - ) - (tee_local $0 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 5824) - ) - ) - ) - ) - ) - (return) - ) - (if - (i32.lt_u - (get_local $0) - (tee_local $1 - (i32.add - (get_local $1) - (i32.load - (get_local $7) - ) - ) - ) - ) - (block - (drop - (call $_memset - (i32.add - (i32.load - (get_local $8) - ) - (get_local $1) - ) - (i32.const 0) - (if i32 - (i32.gt_u - (tee_local $0 - (i32.sub - (get_local $3) - (get_local $1) - ) - ) - (i32.const 258) - ) - (tee_local $0 - (i32.const 258) - ) - (get_local $0) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $0) - (get_local $1) - ) - ) - (return) - ) - ) - (if - (i32.le_u - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 258) - ) - ) - (get_local $0) - ) - (return) - ) - (drop - (call $_memset - (i32.add - (i32.load - (get_local $8) - ) - (get_local $0) - ) - (i32.const 0) - (if i32 - (i32.gt_u - (tee_local $1 - (i32.sub - (get_local $1) - (get_local $0) - ) - ) - (tee_local $0 - (i32.sub - (get_local $3) - (get_local $0) - ) - ) - ) - (get_local $0) - (tee_local $0 - (get_local $1) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (i32.load - (get_local $2) - ) - (get_local $0) - ) - ) - ) - (func $__tr_stored_block (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (set_local $3 - (i32.or - (i32.load16_u - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 5816) - ) - ) - ) - (i32.shl - (tee_local $6 - (i32.and - (get_local $3) - (i32.const 65535) - ) - ) - (tee_local $4 - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 5820) - ) - ) - ) - ) - ) - ) - ) - (i32.store16 - (get_local $5) - (get_local $3) - ) - (set_local $4 - (if i32 - (i32.gt_s - (get_local $4) - (i32.const 13) - ) - (block i32 - (set_local $7 - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.add - (get_local $7) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $7) - ) - (get_local $3) - ) - (set_local $3 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $4) - (i32.add - (tee_local $4 - (i32.load - (get_local $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $9) - ) - (get_local $4) - ) - (get_local $3) - ) - (i32.store16 - (get_local $5) - (tee_local $3 - (i32.shr_u - (get_local $6) - (i32.sub - (i32.const 16) - (tee_local $4 - (i32.load - (get_local $8) - ) - ) - ) - ) - ) - ) - (i32.add - (get_local $4) - (i32.const -13) - ) - ) - (i32.add - (get_local $4) - (i32.const 3) - ) - ) - ) - (set_local $7 - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.store - (get_local $8) - (get_local $4) - ) - (if - (i32.gt_s - (get_local $4) - (i32.const 8) - ) - (block - (set_local $6 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $6) - ) - (get_local $7) - ) - (set_local $7 - (i32.shr_u - (i32.load16_u - (get_local $5) - ) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $6 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $6) - ) - (get_local $7) - ) - ) - (block - (set_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (if - (i32.gt_s - (get_local $4) - (i32.const 0) - ) - (block - (i32.store - (get_local $3) - (i32.add - (tee_local $6 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - (get_local $6) - ) - (get_local $7) - ) - ) - (set_local $4 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - ) - (i32.store16 - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $8) - (i32.const 0) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5812) - ) - (i32.const 8) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $0 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $0) - ) - (get_local $2) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $0 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $0) - ) - (i32.shr_u - (get_local $2) - (i32.const 8) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $0 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $0) - ) - (tee_local $0 - (i32.xor - (i32.and - (get_local $2) - (i32.const 65535) - ) - (i32.const 65535) - ) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $5 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $5) - ) - (i32.shr_u - (get_local $0) - (i32.const 8) - ) - ) - (if - (i32.eqz - (get_local $2) - ) - (return) - ) - (loop $while-in - (set_local $0 - (i32.load8_s - (get_local $1) - ) - ) - (i32.store - (get_local $3) - (i32.add - (tee_local $5 - (i32.load - (get_local $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store8 - (i32.add - (i32.load - (get_local $4) - ) - (get_local $5) - ) - (get_local $0) - ) - (if - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (block - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - (func $_pop_arg (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (block $label$break$L1 - (if - (i32.le_u - (get_local $1) - (i32.const 20) - ) - (block $switch-default - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $switch-default - (i32.sub - (get_local $1) - (i32.const 9) - ) - ) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (br $label$break$L1) - ) - (set_local $1 - (i32.load - (tee_local $3 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $1) - ) - (i32.store offset=4 - (get_local $0) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (get_local $3) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $5 - (i32.load - (tee_local $3 - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - ) - (set_local $3 - (i32.load offset=4 - (get_local $3) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (i32.store - (get_local $0) - (get_local $5) - ) - (i32.store offset=4 - (get_local $0) - (get_local $3) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (tee_local $1 - (i32.shr_s - (i32.shl - (i32.and - (get_local $3) - (i32.const 65535) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (i32.and - (get_local $3) - (i32.const 65535) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (tee_local $1 - (i32.shr_s - (i32.shl - (i32.and - (get_local $3) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.shr_s - (i32.shl - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (set_local $3 - (i32.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (i32.store - (get_local $0) - (i32.and - (get_local $3) - (i32.const 255) - ) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (br $label$break$L1) - ) - (set_local $4 - (f64.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (f64.store - (get_local $0) - (get_local $4) - ) - (br $label$break$L1) - ) - (set_local $4 - (f64.load - (tee_local $1 - (i32.and - (i32.add - (i32.load - (get_local $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (f64.store - (get_local $0) - (get_local $4) - ) - ) - ) - ) - ) - (func $___stdio_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $8 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 48) - ) - ) - (set_local $9 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) - (set_local $10 - (get_local $8) - ) - (i32.store - (tee_local $4 - (i32.add - (get_local $8) - (i32.const 32) - ) - ) - (tee_local $3 - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $4) - (tee_local $3 - (i32.sub - (i32.load - (tee_local $11 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - (get_local $3) - ) - ) - ) - (i32.store offset=8 - (get_local $4) - (get_local $1) - ) - (i32.store offset=12 - (get_local $4) - (get_local $2) - ) - (set_local $13 - (i32.add - (get_local $0) - (i32.const 60) - ) - ) - (set_local $14 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - (set_local $1 - (get_local $4) - ) - (set_local $4 - (i32.const 2) - ) - (set_local $12 - (i32.add - (get_local $3) - (get_local $2) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (if - (i32.load - (i32.const 17748) - ) - (block - (call $_pthread_cleanup_push - (i32.const 1) - (get_local $0) - ) - (i32.store - (get_local $10) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $10) - (get_local $1) - ) - (i32.store offset=8 - (get_local $10) - (get_local $4) - ) - (set_local $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (get_local $10) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (get_local $9) - (i32.load - (get_local $13) - ) - ) - (i32.store offset=4 - (get_local $9) - (get_local $1) - ) - (i32.store offset=8 - (get_local $9) - (get_local $4) - ) - (set_local $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (get_local $9) - ) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.eq - (get_local $12) - (get_local $3) - ) - ) - (br_if $__rjti$1 - (i32.lt_s - (get_local $3) - (i32.const 0) - ) - ) - (set_local $5 - (if i32 - (i32.gt_u - (get_local $3) - (tee_local $5 - (i32.load offset=4 - (get_local $1) - ) - ) - ) - (block i32 - (i32.store - (get_local $6) - (tee_local $7 - (i32.load - (get_local $14) - ) - ) - ) - (i32.store - (get_local $11) - (get_local $7) - ) - (set_local $7 - (i32.load offset=12 - (get_local $1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 8) - ) - ) - (set_local $4 - (i32.add - (get_local $4) - (i32.const -1) - ) - ) - (i32.sub - (get_local $3) - (get_local $5) - ) - ) - (if i32 - (i32.eq - (get_local $4) - (i32.const 2) - ) - (block i32 - (i32.store - (get_local $6) - (i32.add - (i32.load - (get_local $6) - ) - (get_local $3) - ) - ) - (set_local $7 - (get_local $5) - ) - (set_local $4 - (i32.const 2) - ) - (get_local $3) - ) - (block i32 - (set_local $7 - (get_local $5) - ) - (get_local $3) - ) - ) - ) - ) - (i32.store - (get_local $1) - (i32.add - (i32.load - (get_local $1) - ) - (get_local $5) - ) - ) - (i32.store offset=4 - (get_local $1) - (i32.sub - (get_local $7) - (get_local $5) - ) - ) - (set_local $12 - (i32.sub - (get_local $12) - (get_local $3) - ) - ) - (br $while-in) - ) - ) - (i32.store offset=16 - (get_local $0) - (i32.add - (tee_local $1 - (i32.load - (get_local $14) - ) - ) - (i32.load offset=48 - (get_local $0) - ) - ) - ) - (i32.store - (get_local $6) - (get_local $1) - ) - (i32.store - (get_local $11) - (get_local $1) - ) - (br $__rjto$1) - ) - (i32.store offset=16 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $6) - (i32.const 0) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (i32.store - (get_local $0) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 32) - ) - ) - (set_local $2 - (if i32 - (i32.eq - (get_local $4) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (get_local $2) - (i32.load offset=4 - (get_local $1) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $8) - ) - (get_local $2) - ) - (func $_memchr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $5 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (block $label$break$L8 - (block $__rjti$2 - (block $__rjti$1 - (if - (i32.and - (tee_local $3 - (i32.ne - (get_local $2) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.const 0) - ) - ) - (block - (set_local $4 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (loop $while-in - (br_if $__rjti$2 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (get_local $4) - ) - ) - (br_if $while-in - (i32.and - (tee_local $3 - (i32.ne - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.const 3) - ) - (i32.const 0) - ) - ) - ) - (br $__rjti$1) - ) - ) - ) - ) - (br_if $__rjti$2 - (get_local $3) - ) - (set_local $2 - (i32.const 0) - ) - (br $label$break$L8) - ) - (if - (i32.ne - (i32.load8_u - (get_local $0) - ) - (tee_local $4 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - ) - (block - (set_local $3 - (i32.mul - (get_local $5) - (i32.const 16843009) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (get_local $2) - (i32.const 3) - ) - ) - (loop $while-in3 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (tee_local $1 - (i32.xor - (i32.load - (get_local $0) - ) - (get_local $3) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (get_local $1) - (i32.const -16843009) - ) - ) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br_if $while-in3 - (i32.gt_u - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -4) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - ) - ) - (br $__rjto$0) - ) - (if - (i32.eqz - (get_local $2) - ) - (block - (set_local $2 - (i32.const 0) - ) - (br $label$break$L8) - ) - ) - ) - (loop $while-in5 - (br_if $label$break$L8 - (i32.eq - (i32.load8_u - (get_local $0) - ) - (get_local $4) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br_if $while-in5 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - (set_local $2 - (i32.const 0) - ) - ) - ) - ) - ) - (if i32 - (get_local $2) - (get_local $0) - (i32.const 0) - ) - ) - (func $_inflateInit2_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (if - (i32.eqz - (get_local $2) - ) - (return - (i32.const -6) - ) - ) - (if - (i32.or - (i32.ne - (get_local $3) - (i32.const 56) - ) - (i32.ne - (i32.load8_s - (get_local $2) - ) - (i32.const 49) - ) - ) - (return - (i32.const -6) - ) - ) - (if - (i32.eqz - (get_local $0) - ) - (return - (i32.const -2) - ) - ) - (i32.store - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 24) - ) - ) - (i32.const 0) - ) - (if - (i32.eqz - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 32) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $3) - (i32.const 3) - ) - (i32.store offset=40 - (get_local $0) - (i32.const 0) - ) - (set_local $2 - (i32.const 3) - ) - ) - ) - (if - (i32.eqz - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - ) - ) - (i32.store - (get_local $4) - (i32.const 1) - ) - ) - (if - (i32.eqz - (tee_local $3 - (call_indirect $FUNCSIG$iiii - (i32.load - (tee_local $6 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - ) - (i32.const 1) - (i32.const 7116) - (i32.add - (i32.and - (get_local $2) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (return - (i32.const -4) - ) - ) - (i32.store - (tee_local $7 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (get_local $3) - ) - (i32.store offset=52 - (get_local $3) - (i32.const 0) - ) - (set_local $1 - (if i32 - (i32.lt_s - (get_local $1) - (i32.const 0) - ) - (block i32 - (set_local $2 - (i32.sub - (i32.const 0) - (get_local $1) - ) - ) - (i32.const 0) - ) - (block i32 - (set_local $2 - (if i32 - (i32.lt_s - (get_local $1) - (i32.const 48) - ) - (i32.and - (get_local $1) - (i32.const 15) - ) - (get_local $1) - ) - ) - (i32.add - (i32.shr_s - (get_local $1) - (i32.const 4) - ) - (i32.const 1) - ) - ) - ) - ) - (if i32 - (i32.or - (i32.eqz - (get_local $2) - ) - (i32.eq - (i32.and - (get_local $2) - (i32.const -8) - ) - (i32.const 8) - ) - ) - (block i32 - (i32.store offset=8 - (get_local $3) - (get_local $1) - ) - (i32.store offset=36 - (get_local $3) - (get_local $2) - ) - (i32.store offset=28 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=20 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (i32.store offset=48 - (get_local $0) - (i32.const 1) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=12 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=20 - (get_local $3) - (i32.const 32768) - ) - (i32.store offset=32 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=40 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=44 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=48 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=56 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=60 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=108 - (get_local $3) - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 1328) - ) - ) - ) - (i32.store offset=80 - (get_local $3) - (get_local $0) - ) - (i32.store offset=76 - (get_local $3) - (get_local $0) - ) - (i32.store - (i32.add - (get_local $3) - (i32.const 7104) - ) - (i32.const 1) - ) - (i32.store - (i32.add - (get_local $3) - (i32.const 7108) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (block i32 - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $6) - ) - (get_local $3) - (i32.add - (i32.and - (i32.load - (get_local $4) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (i32.store - (get_local $7) - (i32.const 0) - ) - (i32.const -2) - ) - ) - ) - (func $_vfprintf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 224) - ) - ) - (set_local $5 - (i32.add - (get_local $4) - (i32.const 120) - ) - ) - (set_local $7 - (get_local $4) - ) - (set_local $6 - (i32.add - (get_local $4) - (i32.const 136) - ) - ) - (set_local $9 - (i32.add - (tee_local $3 - (tee_local $8 - (i32.add - (get_local $4) - (i32.const 80) - ) - ) - ) - (i32.const 40) - ) - ) - (loop $do-in - (i32.store - (get_local $3) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $3 - (i32.add - (get_local $3) - (i32.const 4) - ) - ) - (get_local $9) - ) - ) - ) - (i32.store - (get_local $5) - (i32.load - (get_local $2) - ) - ) - (if - (i32.lt_s - (call $_printf_core - (i32.const 0) - (get_local $1) - (get_local $5) - (get_local $7) - (get_local $8) - ) - (i32.const 0) - ) - (set_local $1 - (i32.const -1) - ) - (block - (set_local $14 - (if i32 - (i32.gt_s - (i32.load offset=76 - (get_local $0) - ) - (i32.const -1) - ) - (call $___lockfile - (get_local $0) - ) - (i32.const 0) - ) - ) - (set_local $10 - (i32.load - (get_local $0) - ) - ) - (if - (i32.lt_s - (i32.load8_s offset=74 - (get_local $0) - ) - (i32.const 1) - ) - (i32.store - (get_local $0) - (i32.and - (get_local $10) - (i32.const -33) - ) - ) - ) - (if - (i32.load - (tee_local $11 - (i32.add - (get_local $0) - (i32.const 48) - ) - ) - ) - (set_local $1 - (call $_printf_core - (get_local $0) - (get_local $1) - (get_local $5) - (get_local $7) - (get_local $8) - ) - ) - (block - (set_local $13 - (i32.load - (tee_local $12 - (i32.add - (get_local $0) - (i32.const 44) - ) - ) - ) - ) - (i32.store - (get_local $12) - (get_local $6) - ) - (i32.store - (tee_local $9 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - (get_local $6) - ) - (i32.store - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - (get_local $6) - ) - (i32.store - (get_local $11) - (i32.const 80) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - (i32.add - (get_local $6) - (i32.const 80) - ) - ) - (set_local $1 - (call $_printf_core - (get_local $0) - (get_local $1) - (get_local $5) - (get_local $7) - (get_local $8) - ) - ) - (if - (get_local $13) - (block - (drop - (call_indirect $FUNCSIG$iiii - (get_local $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.eqz - (i32.load - (get_local $3) - ) - ) - (set_local $1 - (i32.const -1) - ) - ) - (i32.store - (get_local $12) - (get_local $13) - ) - (i32.store - (get_local $11) - (i32.const 0) - ) - (i32.store - (get_local $2) - (i32.const 0) - ) - (i32.store - (get_local $9) - (i32.const 0) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (get_local $0) - (i32.or - (tee_local $2 - (i32.load - (get_local $0) - ) - ) - (i32.and - (get_local $10) - (i32.const 32) - ) - ) - ) - (if - (get_local $14) - (call $___unlockfile - (get_local $0) - ) - ) - (if - (i32.and - (get_local $2) - (i32.const 32) - ) - (set_local $1 - (i32.const -1) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $1) - ) - (func $_updatewindow (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (if - (i32.eqz - (tee_local $4 - (i32.load - (tee_local $7 - (i32.add - (tee_local $3 - (i32.load offset=28 - (get_local $0) - ) - ) - (i32.const 52) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $7) - (tee_local $4 - (call_indirect $FUNCSIG$iiii - (i32.load offset=40 - (get_local $0) - ) - (i32.shl - (i32.const 1) - (i32.load offset=36 - (get_local $3) - ) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=32 - (get_local $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (if - (i32.eqz - (get_local $4) - ) - (return - (i32.const 1) - ) - ) - ) - ) - (if - (i32.eqz - (tee_local $2 - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 40) - ) - ) - ) - ) - ) - (block - (i32.store - (get_local $5) - (tee_local $2 - (i32.shl - (i32.const 1) - (i32.load offset=36 - (get_local $3) - ) - ) - ) - ) - (i32.store offset=48 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=44 - (get_local $3) - (i32.const 0) - ) - ) - ) - (if - (i32.ge_u - (tee_local $1 - (i32.sub - (get_local $1) - (i32.load offset=16 - (get_local $0) - ) - ) - ) - (get_local $2) - ) - (block - (drop - (call $_memcpy - (get_local $4) - (i32.add - (i32.load offset=12 - (get_local $0) - ) - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - (get_local $2) - ) - ) - (i32.store offset=48 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=44 - (get_local $3) - (i32.load - (get_local $5) - ) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (i32.gt_u - (tee_local $2 - (i32.sub - (get_local $2) - (tee_local $8 - (i32.load - (tee_local $6 - (i32.add - (get_local $3) - (i32.const 48) - ) - ) - ) - ) - ) - ) - (get_local $1) - ) - (set_local $2 - (get_local $1) - ) - ) - (drop - (call $_memcpy - (i32.add - (get_local $4) - (get_local $8) - ) - (i32.add - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 12) - ) - ) - ) - (i32.sub - (i32.const 0) - (get_local $1) - ) - ) - (get_local $2) - ) - ) - (set_local $0 - (i32.sub - (get_local $1) - (get_local $2) - ) - ) - (if - (i32.ne - (get_local $1) - (get_local $2) - ) - (block - (drop - (call $_memcpy - (i32.load - (get_local $7) - ) - (i32.add - (i32.load - (get_local $4) - ) - (i32.sub - (i32.const 0) - (get_local $0) - ) - ) - (get_local $0) - ) - ) - (i32.store - (get_local $6) - (get_local $0) - ) - (i32.store offset=44 - (get_local $3) - (i32.load - (get_local $5) - ) - ) - (return - (i32.const 0) - ) - ) - ) - (i32.store - (get_local $6) - (if i32 - (i32.eq - (tee_local $0 - (i32.add - (i32.load - (get_local $6) - ) - (get_local $1) - ) - ) - (tee_local $2 - (i32.load - (get_local $5) - ) - ) - ) - (i32.const 0) - (get_local $0) - ) - ) - (if - (i32.ge_u - (tee_local $4 - (i32.load - (tee_local $0 - (i32.add - (get_local $3) - (i32.const 44) - ) - ) - ) - ) - (get_local $2) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (get_local $0) - (i32.add - (get_local $4) - (get_local $1) - ) - ) - (i32.const 0) - ) - (func $_main (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $2 - (get_local $4) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_s - (get_local $0) - (i32.const 1) - ) - ) - (block $switch-default - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case0 - (block $switch-case - (br_table $switch-case4 $switch-case $switch-case1 $switch-case0 $switch-case2 $switch-case3 $switch-default - (i32.sub - (tee_local $0 - (i32.load8_s - (i32.load offset=4 - (get_local $1) - ) - ) - ) - (i32.const 48) - ) - ) - ) - (set_local $3 - (i32.const 60) - ) - (br $__rjto$0) - ) - (br $__rjti$0) - ) - (set_local $3 - (i32.const 250) - ) - (br $__rjto$0) - ) - (set_local $3 - (i32.const 2500) - ) - (br $__rjto$0) - ) - (set_local $3 - (i32.const 5000) - ) - (br $__rjto$0) - ) - (set_global $STACKTOP - (get_local $4) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (get_local $2) - (i32.add - (get_local $0) - (i32.const -48) - ) - ) - (drop - (call $_printf - (i32.const 15297) - (get_local $2) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (return - (i32.const -1) - ) - (br $__rjto$0) - ) - (set_local $3 - (i32.const 500) - ) - ) - (set_local $5 - (call $_malloc - (i32.const 100000) - ) - ) - (set_local $2 - (i32.const 0) - ) - (set_local $0 - (i32.const 0) - ) - (set_local $1 - (i32.const 17) - ) - (loop $while-in - (if - (i32.gt_s - (get_local $0) - (i32.const 0) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const -1) - ) - ) - (set_local $1 - (if i32 - (i32.and - (get_local $2) - (i32.const 7) - ) - (i32.and - (i32.rem_u - (i32.mul - (get_local $2) - (get_local $2) - ) - (i32.const 6714) - ) - (i32.const 255) - ) - (block i32 - (set_local $0 - (i32.and - (get_local $2) - (i32.const 31) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (i32.store8 - (i32.add - (get_local $5) - (get_local $2) - ) - (get_local $1) - ) - (br_if $while-in - (i32.ne - (tee_local $2 - (i32.add - (get_local $2) - (i32.const 1) - ) - ) - (i32.const 100000) - ) - ) - (set_local $0 - (i32.const 0) - ) - ) - (loop $do-in - (call $_doit - (get_local $5) - (i32.const 100000) - (get_local $0) - ) - (br_if $do-in - (i32.lt_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (get_local $3) - ) - ) - ) - (drop - (call $_puts - (i32.const 15309) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (i32.const 0) - ) - (func $_init_block (param $0 i32) - (local $1 i32) - (set_local $1 - (i32.const 0) - ) - (loop $do-in - (i32.store16 - (i32.add - (i32.add - (get_local $0) - (i32.const 148) - ) - (i32.shl - (get_local $1) - (i32.const 2) - ) - ) - (i32.const 0) - ) - (br_if $do-in - (i32.ne - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.const 286) - ) - ) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2440) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2444) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2448) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2452) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2456) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2460) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2464) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2468) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2472) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2476) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2480) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2484) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2488) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2492) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2496) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2500) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2504) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2508) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2512) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2516) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2520) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2524) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2528) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2532) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2536) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2540) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2544) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2548) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2552) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2556) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2684) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2688) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2692) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2696) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2700) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2704) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2708) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2712) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2716) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2720) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2724) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2728) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2732) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2736) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2740) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2744) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2748) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2752) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 2756) - ) - (i32.const 0) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 1172) - ) - (i32.const 1) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5804) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5800) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5808) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5792) - ) - (i32.const 0) - ) - ) - (func $_deflateReset (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (if - (i32.eqz - (get_local $0) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.eqz - (tee_local $1 - (i32.load offset=28 - (get_local $0) - ) - ) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.eqz - (i32.load offset=32 - (get_local $0) - ) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.eqz - (i32.load offset=36 - (get_local $0) - ) - ) - (return - (i32.const -2) - ) - ) - (i32.store offset=20 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=24 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=44 - (get_local $0) - (i32.const 2) - ) - (i32.store offset=20 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=16 - (get_local $1) - (i32.load offset=8 - (get_local $1) - ) - ) - (if - (i32.lt_s - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 24) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.store - (get_local $3) - (tee_local $2 - (i32.sub - (i32.const 0) - (get_local $2) - ) - ) - ) - ) - (i32.store offset=4 - (get_local $1) - (if i32 - (get_local $2) - (i32.const 42) - (i32.const 113) - ) - ) - (i32.store offset=48 - (get_local $0) - (tee_local $2 - (if i32 - (i32.eq - (get_local $2) - (i32.const 2) - ) - (call $_crc32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (call $_adler32 - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - ) - ) - (i32.store offset=40 - (get_local $1) - (i32.const 0) - ) - (call $__tr_init - (get_local $1) - ) - (i32.store offset=60 - (get_local $1) - (i32.shl - (i32.load offset=44 - (get_local $1) - ) - (i32.const 1) - ) - ) - (i32.store16 - (i32.add - (tee_local $0 - (i32.load offset=68 - (get_local $1) - ) - ) - (i32.shl - (i32.add - (tee_local $2 - (i32.load offset=76 - (get_local $1) - ) - ) - (i32.const -1) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - (drop - (call $_memset - (get_local $0) - (i32.const 0) - (i32.add - (i32.shl - (get_local $2) - (i32.const 1) - ) - (i32.const -2) - ) - ) - ) - (i32.store offset=128 - (get_local $1) - (i32.load16_u - (i32.add - (i32.mul - (tee_local $0 - (i32.load offset=132 - (get_local $1) - ) - ) - (i32.const 12) - ) - (i32.const 9218) - ) - ) - ) - (i32.store offset=140 - (get_local $1) - (i32.load16_u - (i32.add - (i32.mul - (get_local $0) - (i32.const 12) - ) - (i32.const 9216) - ) - ) - ) - (i32.store offset=144 - (get_local $1) - (i32.load16_u - (i32.add - (i32.mul - (get_local $0) - (i32.const 12) - ) - (i32.const 9220) - ) - ) - ) - (i32.store offset=124 - (get_local $1) - (i32.load16_u - (i32.add - (i32.mul - (get_local $0) - (i32.const 12) - ) - (i32.const 9222) - ) - ) - ) - (i32.store offset=108 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=92 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=116 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=120 - (get_local $1) - (i32.const 2) - ) - (i32.store offset=96 - (get_local $1) - (i32.const 2) - ) - (i32.store offset=112 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=104 - (get_local $1) - (i32.const 0) - ) - (i32.store offset=72 - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - (func $_deflateEnd (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (if - (i32.eqz - (get_local $0) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - ) - ) - ) - (return - (i32.const -2) - ) - ) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (tee_local $4 - (i32.load offset=4 - (get_local $1) - ) - ) - (i32.const 42) - ) - ) - ) - (br $switch) - ) - (return - (i32.const -2) - ) - ) - (if - (tee_local $2 - (i32.load offset=8 - (get_local $1) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load offset=40 - (get_local $0) - ) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $1 - (i32.load - (get_local $3) - ) - ) - ) - ) - (if - (tee_local $2 - (i32.load offset=68 - (get_local $1) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load offset=40 - (get_local $0) - ) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $1 - (i32.load - (get_local $3) - ) - ) - ) - ) - (if - (tee_local $2 - (i32.load offset=64 - (get_local $1) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load offset=40 - (get_local $0) - ) - (get_local $2) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $1 - (i32.load - (get_local $3) - ) - ) - ) - ) - (if - (tee_local $5 - (i32.load offset=56 - (get_local $1) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - ) - (get_local $5) - (i32.add - (i32.and - (i32.load - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $1 - (i32.load - (get_local $3) - ) - ) - ) - (block - (set_local $2 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $2) - ) - (get_local $1) - (i32.add - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) - (if i32 - (i32.eq - (get_local $4) - (i32.const 113) - ) - (i32.const -3) - (i32.const 0) - ) - ) - (func $___fwritex (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (block $label$break$L5 - (block $__rjti$0 - (br_if $__rjti$0 - (tee_local $3 - (i32.load - (tee_local $4 - (i32.add - (get_local $2) - (i32.const 16) - ) - ) - ) - ) - ) - (if - (call $___towrite - (get_local $2) - ) - (set_local $3 - (i32.const 0) - ) - (block - (set_local $3 - (i32.load - (get_local $4) - ) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L5) - ) - (if - (i32.lt_u - (i32.sub - (get_local $3) - (tee_local $4 - (i32.load - (tee_local $5 - (i32.add - (get_local $2) - (i32.const 20) - ) - ) - ) - ) - ) - (get_local $1) - ) - (block - (set_local $3 - (call_indirect $FUNCSIG$iiii - (get_local $2) - (get_local $0) - (get_local $1) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (block $label$break$L10 - (if - (i32.gt_s - (i32.load8_s offset=75 - (get_local $2) - ) - (i32.const -1) - ) - (block - (set_local $3 - (get_local $1) - ) - (loop $while-in - (if - (i32.eqz - (get_local $3) - ) - (block - (set_local $3 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (get_local $0) - (tee_local $6 - (i32.add - (get_local $3) - (i32.const -1) - ) - ) - ) - ) - (i32.const 10) - ) - (block - (set_local $3 - (get_local $6) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect $FUNCSIG$iiii - (get_local $2) - (get_local $0) - (get_local $3) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (get_local $3) - ) - ) - (set_local $1 - (i32.sub - (get_local $1) - (get_local $3) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (get_local $3) - ) - ) - (set_local $4 - (i32.load - (get_local $5) - ) - ) - ) - (set_local $3 - (i32.const 0) - ) - ) - ) - (drop - (call $_memcpy - (get_local $4) - (get_local $0) - (get_local $1) - ) - ) - (i32.store - (get_local $5) - (i32.add - (i32.load - (get_local $5) - ) - (get_local $1) - ) - ) - (set_local $3 - (i32.add - (get_local $3) - (get_local $1) - ) - ) - ) - (get_local $3) - ) - (func $_doit (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (set_local $7 - (call $_compressBound - (get_local $1) - ) - ) - (if - (i32.eqz - (tee_local $4 - (i32.load - (i32.const 17740) - ) - ) - ) - (i32.store - (i32.const 17740) - (tee_local $4 - (call $_malloc - (get_local $7) - ) - ) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 17744) - ) - ) - (i32.store - (i32.const 17744) - (call $_malloc - (get_local $1) - ) - ) - ) - (set_local $5 - (get_local $3) - ) - (i32.store - (tee_local $6 - (i32.add - (get_local $3) - (i32.const 12) - ) - ) - (get_local $7) - ) - (drop - (call $_compress - (get_local $4) - (get_local $6) - (get_local $0) - (get_local $1) - ) - ) - (if - (tee_local $4 - (i32.eqz - (get_local $2) - ) - ) - (block - (set_local $2 - (i32.load - (get_local $6) - ) - ) - (i32.store - (get_local $5) - (get_local $1) - ) - (i32.store offset=4 - (get_local $5) - (get_local $2) - ) - (drop - (call $_printf - (i32.const 15212) - (get_local $5) - ) - ) - ) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $3) - (i32.const 8) - ) - ) - (get_local $1) - ) - (drop - (call $_uncompress - (i32.load - (i32.const 17744) - ) - (get_local $2) - (i32.load - (i32.const 17740) - ) - (i32.load - (get_local $6) - ) - ) - ) - (if - (i32.ne - (i32.load - (get_local $2) - ) - (get_local $1) - ) - (call $___assert_fail - (i32.const 15226) - (i32.const 15251) - (i32.const 24) - (i32.const 15263) - ) - ) - (if - (i32.eqz - (get_local $4) - ) - (block - (set_global $STACKTOP - (get_local $3) - ) - (return) - ) - ) - (if - (call $_strcmp - (get_local $0) - (i32.load - (i32.const 17744) - ) - ) - (call $___assert_fail - (i32.const 15268) - (i32.const 15251) - (i32.const 25) - (i32.const 15263) - ) - (set_global $STACKTOP - (get_local $3) - ) - ) - ) - (func $_uncompress (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (i32.store - (tee_local $4 - (get_local $5) - ) - (get_local $2) - ) - (i32.store - (tee_local $2 - (i32.add - (get_local $4) - (i32.const 4) - ) - ) - (get_local $3) - ) - (i32.store offset=12 - (get_local $4) - (get_local $0) - ) - (i32.store offset=16 - (get_local $4) - (i32.load - (get_local $1) - ) - ) - (i32.store offset=32 - (get_local $4) - (i32.const 0) - ) - (i32.store offset=36 - (get_local $4) - (i32.const 0) - ) - (if - (tee_local $0 - (call $_inflateInit_ - (get_local $4) - (i32.const 15090) - (i32.const 56) - ) - ) - (block - (set_global $STACKTOP - (get_local $5) - ) - (return - (get_local $0) - ) - ) - ) - (if - (i32.eq - (tee_local $0 - (call $_inflate - (get_local $4) - (i32.const 4) - ) - ) - (i32.const 1) - ) - (block - (i32.store - (get_local $1) - (i32.load offset=20 - (get_local $4) - ) - ) - (set_local $0 - (call $_inflateEnd - (get_local $4) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (return - (get_local $0) - ) - ) - ) - (drop - (call $_inflateEnd - (get_local $4) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (get_local $0) - (i32.const -5) - ) - ) - ) - (br $__rjti$0) - ) - (set_global $STACKTOP - (get_local $5) - ) - (return - (i32.const -3) - ) - ) - (br $__rjto$0) - ) - (if - (i32.eqz - (i32.load - (get_local $2) - ) - ) - (block - (set_global $STACKTOP - (get_local $5) - ) - (return - (i32.const -3) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (func $_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.or - (i32.gt_u - (get_local $1) - (i32.const 0) - ) - (i32.and - (i32.eqz - (get_local $1) - ) - (i32.gt_u - (get_local $0) - (i32.const -1) - ) - ) - ) - (block - (set_local $3 - (get_local $1) - ) - (loop $while-in - (i32.store8 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.or - (call $___uremdi3 - (get_local $0) - (get_local $3) - (i32.const 10) - (i32.const 0) - ) - (i32.const 48) - ) - ) - (set_local $1 - (call $___udivdi3 - (get_local $0) - (get_local $3) - (i32.const 10) - (i32.const 0) - ) - ) - (if - (i32.or - (i32.gt_u - (get_local $3) - (i32.const 9) - ) - (i32.and - (i32.eq - (get_local $3) - (i32.const 9) - ) - (i32.gt_u - (get_local $0) - (i32.const -1) - ) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (set_local $3 - (get_global $tempRet0) - ) - (br $while-in) - ) - (set_local $0 - (get_local $1) - ) - ) - ) - ) - ) - (if - (get_local $0) - (loop $while-in1 - (i32.store8 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - (i32.or - (i32.rem_u - (get_local $0) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (if - (i32.ge_u - (get_local $0) - (i32.const 10) - ) - (block - (set_local $0 - (i32.div_u - (get_local $0) - (i32.const 10) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (get_local $2) - ) - (func $_fflush (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $do-once - (if - (get_local $0) - (block - (if - (i32.le_s - (i32.load offset=76 - (get_local $0) - ) - (i32.const -1) - ) - (block - (set_local $0 - (call $___fflush_unlocked - (get_local $0) - ) - ) - (br $do-once) - ) - ) - (set_local $2 - (i32.eqz - (call $___lockfile - (get_local $0) - ) - ) - ) - (set_local $1 - (call $___fflush_unlocked - (get_local $0) - ) - ) - (set_local $0 - (if i32 - (get_local $2) - (get_local $1) - (block i32 - (call $___unlockfile - (get_local $0) - ) - (get_local $1) - ) - ) - ) - ) - (block - (set_local $0 - (if i32 - (i32.load - (i32.const 10100) - ) - (call $_fflush - (i32.load - (i32.const 10100) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 17776) - ) - (if - (tee_local $1 - (i32.load - (i32.const 17772) - ) - ) - (loop $while-in - (set_local $2 - (if i32 - (i32.gt_s - (i32.load offset=76 - (get_local $1) - ) - (i32.const -1) - ) - (call $___lockfile - (get_local $1) - ) - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (get_local $1) - ) - (i32.load offset=28 - (get_local $1) - ) - ) - (set_local $0 - (i32.or - (call $___fflush_unlocked - (get_local $1) - ) - (get_local $0) - ) - ) - ) - (if - (get_local $2) - (call $___unlockfile - (get_local $1) - ) - ) - (br_if $while-in - (tee_local $1 - (i32.load offset=56 - (get_local $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 17776) - ) - ) - ) - ) - (get_local $0) - ) - (func $_strlen (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.eqz - (i32.and - (tee_local $2 - (get_local $0) - ) - (i32.const 3) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - (loop $while-in - (if - (i32.eqz - (i32.load8_s - (get_local $0) - ) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $__rjto$0) - ) - ) - (br_if $while-in - (i32.and - (tee_local $1 - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - (br $__rjto$0) - ) - (loop $while-in1 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (get_local $1) - (i32.const -16843009) - ) - ) - ) - (block - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - (if - (i32.and - (get_local $1) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - (i32.sub - (get_local $0) - (get_local $2) - ) - ) - (func $_compress (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $5 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 64) - ) - ) - (i32.store - (tee_local $4 - (get_local $5) - ) - (get_local $2) - ) - (i32.store offset=4 - (get_local $4) - (get_local $3) - ) - (i32.store offset=12 - (get_local $4) - (get_local $0) - ) - (i32.store offset=16 - (get_local $4) - (i32.load - (get_local $1) - ) - ) - (i32.store offset=32 - (get_local $4) - (i32.const 0) - ) - (i32.store offset=36 - (get_local $4) - (i32.const 0) - ) - (i32.store offset=40 - (get_local $4) - (i32.const 0) - ) - (if - (tee_local $0 - (call $_deflateInit_ - (get_local $4) - (i32.const -1) - (i32.const 15090) - (i32.const 56) - ) - ) - (block - (set_global $STACKTOP - (get_local $5) - ) - (return - (get_local $0) - ) - ) - ) - (if i32 - (i32.eq - (tee_local $0 - (call $_deflate - (get_local $4) - (i32.const 4) - ) - ) - (i32.const 1) - ) - (block i32 - (i32.store - (get_local $1) - (i32.load offset=20 - (get_local $4) - ) - ) - (set_local $0 - (call $_deflateEnd - (get_local $4) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (get_local $0) - ) - (block i32 - (drop - (call $_deflateEnd - (get_local $4) - ) - ) - (set_global $STACKTOP - (get_local $5) - ) - (if i32 - (get_local $0) - (get_local $0) - (i32.const -5) - ) - ) - ) - ) - (func $_pad (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (set_local $6 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 256) - ) - ) - (set_local $5 - (get_local $6) - ) - (block $do-once - (if - (i32.and - (i32.gt_s - (get_local $2) - (get_local $3) - ) - (i32.eqz - (i32.and - (get_local $4) - (i32.const 73728) - ) - ) - ) - (block - (drop - (call $_memset - (get_local $5) - (get_local $1) - (if i32 - (i32.gt_u - (tee_local $1 - (i32.sub - (get_local $2) - (get_local $3) - ) - ) - (i32.const 256) - ) - (i32.const 256) - (get_local $1) - ) - ) - ) - (set_local $4 - (i32.eqz - (i32.and - (tee_local $8 - (i32.load - (get_local $0) - ) - ) - (i32.const 32) - ) - ) - ) - (if - (i32.gt_u - (get_local $1) - (i32.const 255) - ) - (block - (set_local $7 - (get_local $1) - ) - (set_local $1 - (get_local $8) - ) - (loop $while-in - (if - (get_local $4) - (block - (drop - (call $___fwritex - (get_local $5) - (i32.const 256) - (get_local $0) - ) - ) - (set_local $1 - (i32.load - (get_local $0) - ) - ) - ) - ) - (set_local $4 - (i32.eqz - (i32.and - (get_local $1) - (i32.const 32) - ) - ) - ) - (br_if $while-in - (i32.gt_u - (tee_local $7 - (i32.add - (get_local $7) - (i32.const -256) - ) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (get_local $4) - ) - ) - (set_local $1 - (i32.and - (i32.sub - (get_local $2) - (get_local $3) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (get_local $4) - ) - ) - ) - (drop - (call $___fwritex - (get_local $5) - (get_local $1) - (get_local $0) - ) - ) - ) - ) - ) - (set_global $STACKTOP - (get_local $6) - ) - ) - (func $_wcrtomb (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (block $do-once i32 - (if i32 - (get_local $0) - (block i32 - (if - (i32.lt_u - (get_local $1) - (i32.const 128) - ) - (block - (i32.store8 - (get_local $0) - (get_local $1) - ) - (br $do-once - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (get_local $1) - (i32.const 2048) - ) - (block - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 192) - ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 2) - ) - ) - ) - (if - (i32.or - (i32.lt_u - (get_local $1) - (i32.const 55296) - ) - (i32.eq - (i32.and - (get_local $1) - (i32.const -8192) - ) - (i32.const 57344) - ) - ) - (block - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $1) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 3) - ) - ) - ) - (if i32 - (i32.lt_u - (i32.add - (get_local $1) - (i32.const -65536) - ) - (i32.const 1048576) - ) - (block i32 - (i32.store8 - (get_local $0) - (i32.or - (i32.shr_u - (get_local $1) - (i32.const 18) - ) - (i32.const 240) - ) - ) - (i32.store8 offset=1 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 12) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (get_local $0) - (i32.or - (i32.and - (i32.shr_u - (get_local $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=3 - (get_local $0) - (i32.or - (i32.and - (get_local $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.const 4) - ) - (block i32 - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (i32.const -1) - ) - ) - ) - (i32.const 1) - ) - ) - ) - (func $_strerror (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (i32.const 0) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (if - (i32.eq - (i32.load8_u - (i32.add - (get_local $1) - (i32.const 15803) - ) - ) - (get_local $0) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $__rjti$0) - ) - ) - (br_if $while-in - (i32.ne - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (i32.const 87) - ) - ) - (set_local $2 - (i32.const 87) - ) - (set_local $0 - (i32.const 15891) - ) - (br $__rjti$1) - ) - ) - (if - (get_local $0) - (block - (set_local $2 - (get_local $0) - ) - (set_local $0 - (i32.const 15891) - ) - (br $__rjti$1) - ) - (set_local $0 - (i32.const 15891) - ) - ) - (br $__rjto$1) - ) - (loop $while-in1 - (loop $while-in3 - (set_local $1 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (if - (i32.load8_s - (get_local $0) - ) - (block - (set_local $0 - (get_local $1) - ) - (br $while-in3) - ) - (set_local $0 - (get_local $1) - ) - ) - ) - (br_if $while-in1 - (tee_local $2 - (i32.add - (get_local $2) - (i32.const -1) - ) - ) - ) - ) - ) - (get_local $0) - ) - (func $___overflow (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (set_local $3 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store8 - (tee_local $4 - (get_local $3) - ) - (tee_local $7 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - ) - (block $do-once - (block $__rjti$0 - (br_if $__rjti$0 - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 16) - ) - ) - ) - ) - ) - (if - (call $___towrite - (get_local $0) - ) - (set_local $1 - (i32.const -1) - ) - (block - (set_local $5 - (i32.load - (get_local $2) - ) - ) - (br $__rjti$0) - ) - ) - (br $do-once) - ) - (if - (i32.lt_u - (tee_local $6 - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - ) - (get_local $5) - ) - (if - (i32.ne - (tee_local $1 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (i32.load8_s offset=75 - (get_local $0) - ) - ) - (block - (i32.store - (get_local $2) - (i32.add - (get_local $6) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $6) - (get_local $7) - ) - (br $do-once) - ) - ) - ) - (set_local $1 - (if i32 - (i32.eq - (call_indirect $FUNCSIG$iiii - (get_local $0) - (get_local $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (get_local $4) - ) - (i32.const -1) - ) - ) - ) - (set_global $STACKTOP - (get_local $3) - ) - (get_local $1) - ) - (func $_frexp (param $0 f64) (param $1 i32) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (f64.store - (get_global $tempDoublePtr) - (get_local $0) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (tee_local $4 - (i32.and - (call $_bitshift64Lshr - (tee_local $2 - (i32.load - (get_global $tempDoublePtr) - ) - ) - (tee_local $3 - (i32.load offset=4 - (get_global $tempDoublePtr) - ) - ) - (i32.const 52) - ) - (i32.const 2047) - ) - ) - ) - ) - (i32.store - (get_local $1) - (tee_local $2 - (if i32 - (f64.ne - (get_local $0) - (f64.const 0) - ) - (block i32 - (set_local $0 - (call $_frexp - (f64.mul - (get_local $0) - (f64.const 18446744073709551615) - ) - (get_local $1) - ) - ) - (i32.add - (i32.load - (get_local $1) - ) - (i32.const -64) - ) - ) - (i32.const 0) - ) - ) - ) - (br $switch) - ) - (br $switch) - ) - (i32.store - (get_local $1) - (i32.add - (get_local $4) - (i32.const -1022) - ) - ) - (i32.store - (get_global $tempDoublePtr) - (get_local $2) - ) - (i32.store offset=4 - (get_global $tempDoublePtr) - (i32.or - (i32.and - (get_local $3) - (i32.const -2146435073) - ) - (i32.const 1071644672) - ) - ) - (set_local $0 - (f64.load - (get_global $tempDoublePtr) - ) - ) - ) - (get_local $0) - ) - (func $___fflush_unlocked (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (tee_local $0 - (block $__rjto$0 i32 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 20) - ) - ) - ) - (i32.load - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiii - (get_local $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (get_local $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br_if $__rjti$0 - (i32.load - (get_local $1) - ) - ) - (br $__rjto$0 - (i32.const -1) - ) - ) - (if - (i32.lt_u - (tee_local $4 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - ) - ) - (tee_local $6 - (i32.load - (tee_local $5 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - ) - (drop - (call_indirect $FUNCSIG$iiii - (get_local $0) - (i32.sub - (get_local $4) - (get_local $6) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (get_local $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=16 - (get_local $0) - (i32.const 0) - ) - (i32.store - (get_local $2) - (i32.const 0) - ) - (i32.store - (get_local $1) - (i32.const 0) - ) - (i32.store - (get_local $5) - (i32.const 0) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (func $_inflateEnd (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (if - (i32.eqz - (get_local $0) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 28) - ) - ) - ) - ) - ) - (return - (i32.const -2) - ) - ) - (if - (i32.eqz - (tee_local $2 - (i32.load - (tee_local $4 - (i32.add - (get_local $0) - (i32.const 36) - ) - ) - ) - ) - ) - (return - (i32.const -2) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 40) - ) - ) - (if - (tee_local $5 - (i32.load offset=52 - (get_local $1) - ) - ) - (block - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $0) - ) - (get_local $5) - (i32.add - (i32.and - (get_local $2) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (set_local $2 - (i32.load - (get_local $4) - ) - ) - (set_local $1 - (i32.load - (get_local $3) - ) - ) - ) - ) - (call_indirect $FUNCSIG$vii - (i32.load - (get_local $0) - ) - (get_local $1) - (i32.add - (i32.and - (get_local $2) - (i32.const 1) - ) - (i32.const 10) - ) - ) - (i32.store - (get_local $3) - (i32.const 0) - ) - (i32.const 0) - ) - (func $_memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (get_local $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - ) - (set_local $3 - (get_local $0) - ) - (if - (i32.eq - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.and - (get_local $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (get_local $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (get_local $2) - ) - (return - (get_local $3) - ) - ) - (i32.store8 - (get_local $0) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (get_local $2) - (i32.const 4) - ) - (block - (i32.store - (get_local $0) - (i32.load - (get_local $1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 4) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (get_local $2) - (i32.const 0) - ) - (block - (i32.store8 - (get_local $0) - (i32.load8_s - (get_local $1) - ) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (set_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - (set_local $2 - (i32.sub - (get_local $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (get_local $3) - ) - (func $_memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (i32.add - (get_local $0) - (get_local $2) - ) - ) - (if - (i32.ge_s - (get_local $2) - (i32.const 20) - ) - (block - (set_local $1 - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - (if - (tee_local $3 - (i32.and - (get_local $0) - (i32.const 3) - ) - ) - (block - (set_local $3 - (i32.sub - (i32.add - (get_local $0) - (i32.const 4) - ) - (get_local $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (get_local $0) - (get_local $3) - ) - (block - (i32.store8 - (get_local $0) - (get_local $1) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (set_local $3 - (i32.or - (i32.or - (i32.or - (get_local $1) - (i32.shl - (get_local $1) - (i32.const 8) - ) - ) - (i32.shl - (get_local $1) - (i32.const 16) - ) - ) - (i32.shl - (get_local $1) - (i32.const 24) - ) - ) - ) - (set_local $5 - (i32.and - (get_local $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (get_local $0) - (get_local $5) - ) - (block - (i32.store - (get_local $0) - (get_local $3) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (get_local $0) - (get_local $4) - ) - (block - (i32.store8 - (get_local $0) - (get_local $1) - ) - (set_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (get_local $0) - (get_local $2) - ) - ) - (func $___stdio_seek (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 32) - ) - ) - (i32.store - (tee_local $3 - (get_local $4) - ) - (i32.load offset=60 - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.const 0) - ) - (i32.store offset=8 - (get_local $3) - (get_local $1) - ) - (i32.store offset=12 - (get_local $3) - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 20) - ) - ) - ) - (i32.store offset=16 - (get_local $3) - (get_local $2) - ) - (set_local $0 - (if i32 - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (get_local $3) - ) - ) - (i32.const 0) - ) - (block i32 - (i32.store - (get_local $0) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load - (get_local $0) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $0) - ) - (func $_strcmp (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (set_local $2 - (i32.load8_s - (get_local $1) - ) - ) - (i32.sub - (i32.and - (tee_local $0 - (if i32 - (if i32 - (tee_local $3 - (i32.load8_s - (get_local $0) - ) - ) - (i32.ne - (get_local $3) - (get_local $2) - ) - (i32.const 1) - ) - (block i32 - (set_local $1 - (get_local $2) - ) - (get_local $3) - ) - (block i32 - (loop $do-in - (set_local $2 - (i32.load8_s - (tee_local $1 - (i32.add - (get_local $1) - (i32.const 1) - ) - ) - ) - ) - (br_if $do-in - (i32.eqz - (if i32 - (tee_local $3 - (i32.load8_s - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - ) - ) - (i32.ne - (get_local $3) - (get_local $2) - ) - (i32.const 1) - ) - ) - ) - ) - (set_local $1 - (get_local $2) - ) - (get_local $3) - ) - ) - ) - (i32.const 255) - ) - (i32.and - (get_local $1) - (i32.const 255) - ) - ) - ) - (func $_puts (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (set_local $2 - (if i32 - (i32.gt_s - (i32.load offset=76 - (tee_local $1 - (i32.load - (i32.const 9984) - ) - ) - ) - (i32.const -1) - ) - (call $___lockfile - (get_local $1) - ) - (i32.const 0) - ) - ) - (set_local $0 - (block $do-once i32 - (if i32 - (i32.lt_s - (call $_fputs - (get_local $0) - (get_local $1) - ) - (i32.const 0) - ) - (i32.const 1) - (block i32 - (if - (i32.ne - (i32.load8_s offset=75 - (get_local $1) - ) - (i32.const 10) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $3 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) - ) - (i32.load offset=16 - (get_local $1) - ) - ) - (block - (i32.store - (get_local $3) - (i32.add - (get_local $0) - (i32.const 1) - ) - ) - (i32.store8 - (get_local $0) - (i32.const 10) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - ) - (i32.lt_s - (call $___overflow - (get_local $1) - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (get_local $2) - (call $___unlockfile - (get_local $1) - ) - ) - (i32.shr_s - (i32.shl - (get_local $0) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (func $___stdout_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 80) - ) - ) - (set_local $3 - (get_local $4) - ) - (i32.store offset=36 - (get_local $0) - (i32.const 4) - ) - (if - (i32.eqz - (i32.and - (i32.load - (get_local $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (get_local $3) - (i32.load offset=60 - (get_local $0) - ) - ) - (i32.store offset=4 - (get_local $3) - (i32.const 21505) - ) - (i32.store offset=8 - (get_local $3) - (i32.add - (get_local $4) - (i32.const 12) - ) - ) - (if - (call $___syscall54 - (i32.const 54) - (get_local $3) - ) - (i32.store8 offset=75 - (get_local $0) - (i32.const -1) - ) - ) - ) - ) - (set_local $0 - (call $___stdio_write - (get_local $0) - (get_local $1) - (get_local $2) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (get_local $0) - ) - (func $_fwrite (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (set_local $4 - (i32.mul - (get_local $2) - (get_local $1) - ) - ) - (if - (i32.gt_s - (i32.load offset=76 - (get_local $3) - ) - (i32.const -1) - ) - (block - (set_local $5 - (i32.eqz - (call $___lockfile - (get_local $3) - ) - ) - ) - (set_local $0 - (call $___fwritex - (get_local $0) - (get_local $4) - (get_local $3) - ) - ) - (if - (i32.eqz - (get_local $5) - ) - (call $___unlockfile - (get_local $3) - ) - ) - ) - (set_local $0 - (call $___fwritex - (get_local $0) - (get_local $4) - (get_local $3) - ) - ) - ) - (if - (i32.ne - (get_local $0) - (get_local $4) - ) - (set_local $2 - (i32.div_u - (get_local $0) - (get_local $1) - ) - ) - ) - (get_local $2) - ) - (func $___towrite (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (i32.load8_s - (tee_local $2 - (i32.add - (get_local $0) - (i32.const 74) - ) - ) - ) - ) - (i32.store8 - (get_local $2) - (i32.or - (i32.add - (get_local $1) - (i32.const 255) - ) - (get_local $1) - ) - ) - (tee_local $0 - (if i32 - (i32.and - (tee_local $1 - (i32.load - (get_local $0) - ) - ) - (i32.const 8) - ) - (block i32 - (i32.store - (get_local $0) - (i32.or - (get_local $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block i32 - (i32.store offset=8 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=4 - (get_local $0) - (i32.const 0) - ) - (i32.store offset=28 - (get_local $0) - (tee_local $1 - (i32.load offset=44 - (get_local $0) - ) - ) - ) - (i32.store offset=20 - (get_local $0) - (get_local $1) - ) - (i32.store offset=16 - (get_local $0) - (i32.add - (get_local $1) - (i32.load offset=48 - (get_local $0) - ) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (func $___uremdi3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (set_local $4 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (drop - (call $___udivmoddi4 - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $3) - (tee_local $0 - (get_local $4) - ) - ) - ) - (set_global $STACKTOP - (get_local $4) - ) - (set_global $tempRet0 - (i32.load offset=4 - (get_local $0) - ) - ) - (i32.load - (get_local $0) - ) - ) - (func $__tr_init (param $0 i32) - (i32.store - (i32.add - (get_local $0) - (i32.const 2840) - ) - (i32.add - (get_local $0) - (i32.const 148) - ) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 2848) - ) - (i32.const 9336) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 2852) - ) - (i32.add - (get_local $0) - (i32.const 2440) - ) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 2860) - ) - (i32.const 9472) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 2864) - ) - (i32.add - (get_local $0) - (i32.const 2684) - ) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 2872) - ) - (i32.const 9612) - ) - (i32.store16 - (i32.add - (get_local $0) - (i32.const 5816) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5820) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (get_local $0) - (i32.const 5812) - ) - (i32.const 8) - ) - (call $_init_block - (get_local $0) - ) - ) - (func $___stdio_close (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $2 - (get_local $1) - ) - (i32.load offset=60 - (get_local $0) - ) - ) - (set_local $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (get_local $2) - ) - ) - ) - (set_global $STACKTOP - (get_local $1) - ) - (get_local $0) - ) - (func $_printf (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (set_local $2 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (tee_local $3 - (get_local $2) - ) - (get_local $1) - ) - (set_local $0 - (call $_vfprintf - (i32.load - (i32.const 9984) - ) - (get_local $0) - (get_local $3) - ) - ) - (set_global $STACKTOP - (get_local $2) - ) - (get_local $0) - ) - (func $_bitshift64Shl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (get_local $2) - (i32.const 32) - ) - (block - (set_global $tempRet0 - (i32.or - (i32.shl - (get_local $1) - (get_local $2) - ) - (i32.shr_u - (i32.and - (get_local $0) - (i32.shl - (i32.sub - (i32.shl - (i32.const 1) - (get_local $2) - ) - (i32.const 1) - ) - (i32.sub - (i32.const 32) - (get_local $2) - ) - ) - ) - (i32.sub - (i32.const 32) - (get_local $2) - ) - ) - ) - ) - (return - (i32.shl - (get_local $0) - (get_local $2) - ) - ) - ) - ) - (set_global $tempRet0 - (i32.shl - (get_local $0) - (i32.sub - (get_local $2) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - (func $_bitshift64Lshr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (get_local $2) - (i32.const 32) - ) - (block - (set_global $tempRet0 - (i32.shr_u - (get_local $1) - (get_local $2) - ) - ) - (return - (i32.or - (i32.shr_u - (get_local $0) - (get_local $2) - ) - (i32.shl - (i32.and - (get_local $1) - (i32.sub - (i32.shl - (i32.const 1) - (get_local $2) - ) - (i32.const 1) - ) - ) - (i32.sub - (i32.const 32) - (get_local $2) - ) - ) - ) - ) - ) - ) - (set_global $tempRet0 - (i32.const 0) - ) - (i32.shr_u - (get_local $1) - (i32.sub - (get_local $2) - (i32.const 32) - ) - ) - ) - (func $_deflateInit_ (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call $_deflateInit2_ - (get_local $0) - (get_local $1) - (i32.const 8) - (i32.const 15) - (i32.const 8) - (i32.const 0) - (get_local $2) - (get_local $3) - ) - ) - (func $runPostSets - (nop) - ) - (func $_i64Subtract (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (set_global $tempRet0 - (i32.sub - (i32.sub - (get_local $1) - (get_local $3) - ) - (i32.gt_u - (get_local $2) - (get_local $0) - ) - ) - ) - (i32.sub - (get_local $0) - (get_local $2) - ) - ) - (func $_inflateInit_ (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $_inflateInit2_ - (get_local $0) - (i32.const 15) - (get_local $1) - (get_local $2) - ) - ) - (func $___syscall_ret (param $0 i32) (result i32) - (if i32 - (i32.gt_u - (get_local $0) - (i32.const -4096) - ) - (block i32 - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (get_local $0) - ) - ) - (i32.const -1) - ) - (get_local $0) - ) - ) - (func $_i64Add (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (set_global $tempRet0 - (i32.add - (i32.add - (get_local $1) - (get_local $3) - ) - (i32.lt_u - (tee_local $4 - (i32.add - (get_local $0) - (get_local $2) - ) - ) - (get_local $0) - ) - ) - ) - (get_local $4) - ) - (func $dynCall_iiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect $FUNCSIG$iiii - (get_local $1) - (get_local $2) - (get_local $3) - (i32.add - (i32.and - (get_local $0) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (func $___udivdi3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call $___udivmoddi4 - (get_local $0) - (get_local $1) - (get_local $2) - (get_local $3) - (i32.const 0) - ) - ) - (func $_compressBound (param $0 i32) (result i32) - (i32.add - (i32.add - (i32.add - (i32.add - (get_local $0) - (i32.const 13) - ) - (i32.shr_u - (get_local $0) - (i32.const 12) - ) - ) - (i32.shr_u - (get_local $0) - (i32.const 14) - ) - ) - (i32.shr_u - (get_local $0) - (i32.const 25) - ) - ) - ) - (func $_zcalloc (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $_malloc - (i32.mul - (get_local $2) - (get_local $1) - ) - ) - ) - (func $stackAlloc (param $0 i32) (result i32) - (local $1 i32) - (set_local $1 - (get_global $STACKTOP) - ) - (set_global $STACKTOP - (i32.add - (get_global $STACKTOP) - (get_local $0) - ) - ) - (set_global $STACKTOP - (i32.and - (i32.add - (get_global $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (get_local $1) - ) - (func $___errno_location (result i32) - (if i32 - (i32.load - (i32.const 17748) - ) - (i32.load offset=64 - (call $_pthread_self) - ) - (i32.const 17792) - ) - ) - (func $establishStackSpace (param $0 i32) (param $1 i32) - (set_global $STACKTOP - (get_local $0) - ) - (set_global $STACK_MAX - (get_local $1) - ) - ) - (func $dynCall_iii (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call_indirect $FUNCSIG$iii - (get_local $1) - (get_local $2) - (i32.add - (i32.and - (get_local $0) - (i32.const 3) - ) - (i32.const 12) - ) - ) - ) - (func $_wctomb (param $0 i32) (param $1 i32) (result i32) - (if i32 - (get_local $0) - (call $_wcrtomb - (get_local $0) - (get_local $1) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $setThrew (param $0 i32) (param $1 i32) - (if - (i32.eqz - (get_global $__THREW__) - ) - (block - (set_global $__THREW__ - (get_local $0) - ) - (set_global $threwValue - (get_local $1) - ) - ) - ) - ) - (func $dynCall_vii (param $0 i32) (param $1 i32) (param $2 i32) - (call_indirect $FUNCSIG$vii - (get_local $1) - (get_local $2) - (i32.add - (i32.and - (get_local $0) - (i32.const 1) - ) - (i32.const 10) - ) - ) - ) - (func $_llvm_bswap_i32 (param $0 i32) (result i32) - (i32.or - (i32.or - (i32.or - (i32.shl - (i32.and - (get_local $0) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.shl - (i32.and - (i32.shr_s - (get_local $0) - (i32.const 8) - ) - (i32.const 255) - ) - (i32.const 16) - ) - ) - (i32.shl - (i32.and - (i32.shr_s - (get_local $0) - (i32.const 16) - ) - (i32.const 255) - ) - (i32.const 8) - ) - ) - (i32.shr_u - (get_local $0) - (i32.const 24) - ) - ) - ) - (func $dynCall_ii (param $0 i32) (param $1 i32) (result i32) - (call_indirect $FUNCSIG$ii - (get_local $1) - (i32.and - (get_local $0) - (i32.const 1) - ) - ) - ) - (func $_fputs (param $0 i32) (param $1 i32) (result i32) - (i32.add - (call $_fwrite - (get_local $0) - (call $_strlen - (get_local $0) - ) - (i32.const 1) - (get_local $1) - ) - (i32.const -1) - ) - ) - (func $dynCall_vi (param $0 i32) (param $1 i32) - (call_indirect $FUNCSIG$vi - (get_local $1) - (i32.add - (i32.and - (get_local $0) - (i32.const 1) - ) - (i32.const 16) - ) - ) - ) - (func $_cleanup_522 (param $0 i32) - (if - (i32.eqz - (i32.load offset=68 - (get_local $0) - ) - ) - (call $___unlockfile - (get_local $0) - ) - ) - ) - (func $_zcfree (param $0 i32) (param $1 i32) - (call $_free - (get_local $1) - ) - ) - (func $b1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $abort - (i32.const 1) - ) - (i32.const 0) - ) - (func $_frexpl (param $0 f64) (param $1 i32) (result f64) - (call $_frexp - (get_local $0) - (get_local $1) - ) - ) - (func $b3 (param $0 i32) (param $1 i32) (result i32) - (call $abort - (i32.const 3) - ) - (i32.const 0) - ) - (func $setTempRet0 (param $0 i32) - (set_global $tempRet0 - (get_local $0) - ) - ) - (func $stackRestore (param $0 i32) - (set_global $STACKTOP - (get_local $0) - ) - ) - (func $b2 (param $0 i32) (param $1 i32) - (call $abort - (i32.const 2) - ) - ) - (func $b0 (param $0 i32) (result i32) - (call $abort - (i32.const 0) - ) - (i32.const 0) - ) - (func $___unlockfile (param $0 i32) - (nop) - ) - (func $___lockfile (param $0 i32) (result i32) - (i32.const 0) - ) - (func $getTempRet0 (result i32) - (get_global $tempRet0) - ) - (func $stackSave (result i32) - (get_global $STACKTOP) - ) - (func $b4 (param $0 i32) - (call $abort - (i32.const 4) - ) - ) - (func $_pthread_self (result i32) - (i32.const 0) - ) -) diff --git a/plugins/chain_plugin/chain_plugin.cpp b/plugins/chain_plugin/chain_plugin.cpp index 093480135bd..944d1f2d7af 100644 --- a/plugins/chain_plugin/chain_plugin.cpp +++ b/plugins/chain_plugin/chain_plugin.cpp @@ -256,8 +256,7 @@ void chain_plugin::set_program_options(options_description& cli, options_descrip "the location of the blocks directory (absolute path or relative to application data dir)") ("checkpoint", bpo::value>()->composing(), "Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.") ("wasm-runtime", bpo::value()->value_name("wavm/wabt"), "Override default WASM runtime") - ("abi-serializer-max-time-ms", bpo::value()->default_value(config::default_abi_serializer_max_time_ms), - "Override default maximum ABI serialization time allowed in ms") + ("abi-serializer-max-time-ms", bpo::value()->default_value(config::default_abi_serializer_max_time_ms), "Override default maximum ABI serialization time allowed in ms") ("chain-state-db-size-mb", bpo::value()->default_value(config::default_state_size / (1024 * 1024)), "Maximum size (in MiB) of the chain state database") ("chain-state-db-guard-size-mb", bpo::value()->default_value(config::default_state_guard_size / (1024 * 1024)), "Safely shut down node when free space remaining in the chain state database drops below this size (in MiB).") ("reversible-blocks-db-size-mb", bpo::value()->default_value(config::default_reversible_cache_size / (1024 * 1024)), "Maximum size (in MiB) of the reversible blocks database") @@ -1320,7 +1319,7 @@ double convert_to_type(const string& str, const string& desc) { abi_def get_abi( const controller& db, const name& account ) { const auto &d = db.db(); - const account_object *code_accnt = d.find(account); + const account_object2 *code_accnt = d.find(account); EOS_ASSERT(code_accnt != nullptr, chain::account_query_exception, "Fail to retrieve account for ${account}", ("account", account) ); abi_def abi; abi_serializer::to_abi(code_accnt->abi, abi); @@ -1582,7 +1581,7 @@ template struct resolver_factory { static auto make(const Api* api, const fc::microseconds& max_serialization_time) { return [api, max_serialization_time](const account_name &name) -> optional { - const auto* accnt = api->db.db().template find(name); + const auto* accnt = api->db.db().template find(name); if (accnt != nullptr) { abi_def abi; if (abi_serializer::to_abi(accnt->abi, abi)) { @@ -1814,7 +1813,7 @@ read_only::get_abi_results read_only::get_abi( const get_abi_params& params )con get_abi_results result; result.account_name = params.account_name; const auto& d = db.db(); - const auto& accnt = d.get( params.account_name ); + const auto& accnt = d.get( params.account_name ); abi_def abi; if( abi_serializer::to_abi(accnt.abi, abi) ) { @@ -1828,17 +1827,19 @@ read_only::get_code_results read_only::get_code( const get_code_params& params ) get_code_results result; result.account_name = params.account_name; const auto& d = db.db(); - const auto& accnt = d.get( params.account_name ); + const auto& accnt_obj = d.get( params.account_name ); + const auto& accnt_metadata_obj = d.get( params.account_name ); EOS_ASSERT( params.code_as_wasm, unsupported_feature, "Returning WAST from get_code is no longer supported" ); - if( accnt.code.size() ) { - result.wasm = string(accnt.code.begin(), accnt.code.end()); - result.code_hash = fc::sha256::hash( accnt.code.data(), accnt.code.size() ); + if( accnt_metadata_obj.code_hash != digest_type() ) { + const auto& code_obj = d.get(accnt_metadata_obj.code_hash); + result.wasm = string(code_obj.code.begin(), code_obj.code.end()); + result.code_hash = code_obj.code_hash; } abi_def abi; - if( abi_serializer::to_abi(accnt.abi, abi) ) { + if( abi_serializer::to_abi(accnt_obj.abi, abi) ) { result.abi = std::move(abi); } @@ -1849,11 +1850,10 @@ read_only::get_code_hash_results read_only::get_code_hash( const get_code_hash_p get_code_hash_results result; result.account_name = params.account_name; const auto& d = db.db(); - const auto& accnt = d.get( params.account_name ); + const auto& accnt = d.get( params.account_name ); - if( accnt.code.size() ) { - result.code_hash = fc::sha256::hash( accnt.code.data(), accnt.code.size() ); - } + if( accnt.code_hash != digest_type() ) + result.code_hash = accnt.code_hash; return result; } @@ -1863,9 +1863,13 @@ read_only::get_raw_code_and_abi_results read_only::get_raw_code_and_abi( const g result.account_name = params.account_name; const auto& d = db.db(); - const auto& accnt = d.get(params.account_name); - result.wasm = blob{{accnt.code.begin(), accnt.code.end()}}; - result.abi = blob{{accnt.abi.begin(), accnt.abi.end()}}; + const auto& accnt_obj = d.get(params.account_name); + const auto& accnt_metadata_obj = d.get(params.account_name); + if( accnt_metadata_obj.code_hash != digest_type() ) { + const auto& code_obj = d.get(accnt_metadata_obj.code_hash); + result.wasm = blob{{code_obj.code.begin(), code_obj.code.end()}}; + } + result.abi = blob{{accnt_obj.abi.begin(), accnt_obj.abi.end()}}; return result; } @@ -1875,11 +1879,13 @@ read_only::get_raw_abi_results read_only::get_raw_abi( const get_raw_abi_params& result.account_name = params.account_name; const auto& d = db.db(); - const auto& accnt = d.get(params.account_name); - result.abi_hash = fc::sha256::hash( accnt.abi.data(), accnt.abi.size() ); - result.code_hash = fc::sha256::hash( accnt.code.data(), accnt.code.size() ); + const auto& accnt_obj = d.get(params.account_name); + const auto& accnt_metadata_obj = d.get(params.account_name); + result.abi_hash = fc::sha256::hash( accnt_obj.abi.data(), accnt_obj.abi.size() ); + if( accnt_metadata_obj.code_hash != digest_type() ) + result.code_hash = accnt_metadata_obj.code_hash; if( !params.abi_hash || *params.abi_hash != result.abi_hash ) - result.abi = blob{{accnt.abi.begin(), accnt.abi.end()}}; + result.abi = blob{{accnt_obj.abi.begin(), accnt_obj.abi.end()}}; return result; } @@ -1896,11 +1902,12 @@ read_only::get_account_results read_only::get_account( const get_account_params& rm.get_account_limits( result.account_name, result.ram_quota, result.net_weight, result.cpu_weight ); - const auto& a = db.get_account(result.account_name); + const auto& accnt_obj = db.get_account( result.account_name ); + const auto& accnt_metadata_obj = db.db().get( result.account_name ); - result.privileged = a.privileged; - result.last_code_update = a.last_code_update; - result.created = a.creation_date; + result.privileged = accnt_metadata_obj.is_privileged(); + result.last_code_update = accnt_metadata_obj.last_code_update; + result.created = accnt_obj.creation_date; bool grelisted = db.is_resource_greylisted(result.account_name); result.net_limit = rm.get_account_net_limit_ex( result.account_name, !grelisted); @@ -1926,7 +1933,7 @@ read_only::get_account_results read_only::get_account( const get_account_params& ++perm; } - const auto& code_account = db.db().get( config::system_account_name ); + const auto& code_account = db.db().get( config::system_account_name ); abi_def abi; if( abi_serializer::to_abi(code_account.abi, abi) ) { @@ -2000,8 +2007,8 @@ read_only::get_account_results read_only::get_account( const get_account_params& } //get homepage - if(nullptr != db.db().find(N(personal.bos))){ - const auto& personal_account = db.db().get( N(personal.bos) ); + if(nullptr != db.db().find(N(personal.bos))){ + const auto& personal_account = db.db().get( N(personal.bos) ); abi_def abi_personal; if( abi_serializer::to_abi(personal_account.abi, abi_personal) ) { abi_serializer abis_personal( abi_personal, abi_serializer_max_time ); @@ -2023,6 +2030,62 @@ read_only::get_account_results read_only::get_account( const get_account_params& return result; } +read_only::get_act_token_result read_only::get_act_token( const name& account_name )const { + get_act_token_result token_result{0.0, 0.0, 0.0, 0.0, 0.0}; + + get_account_params params{account_name}; + get_account_results res = get_account(params); + + if( res.core_liquid_balance.valid() ) { + token_result.liquid_balance = res.core_liquid_balance->to_real(); + } + + double cpu_own = 0.0, net_own = 0.0, cpu_total = 0.0, net_total = 0.0; + if ( res.total_resources.is_object() ) { + net_total = asset::from_string(res.total_resources.get_object()["net_weight"].as_string()).to_real(); + cpu_total = asset::from_string(res.total_resources.get_object()["cpu_weight"].as_string()).to_real(); + } + if( res.self_delegated_bandwidth.is_object() ) { + cpu_own = asset::from_string( res.self_delegated_bandwidth.get_object()["cpu_weight"].as_string() ).to_real(); + net_own = asset::from_string( res.self_delegated_bandwidth.get_object()["net_weight"].as_string() ).to_real(); + } + token_result.self_staked = cpu_own + net_own; + token_result.other_staked = net_total + cpu_total - token_result.self_staked; + if( res.refund_request.is_object() ) { + auto obj = res.refund_request.get_object(); + token_result.unstaking = asset::from_string( obj["net_amount"].as_string() ).to_real() + asset::from_string( obj["cpu_amount"].as_string() ).to_real(); + } + // REX + const auto& d = db.db(); + const auto& code_account = db.db().get( config::system_account_name ); + abi_def abi; + if( abi_serializer::to_abi(code_account.abi, abi) ) { + abi_serializer abis( abi, abi_serializer_max_time ); + + const auto* t_id = d.find(boost::make_tuple( config::system_account_name, config::system_account_name, N(rexfund) )); + if (t_id != nullptr) { + const auto &idx = d.get_index(); + auto it = idx.find(boost::make_tuple( t_id->id, account_name )); + if ( it != idx.end() ) { + vector data; + copy_inline_row(*it, data); + token_result.rex_deposit = abis.binary_to_variant( "rex_fund", data, abi_serializer_max_time, shorten_abi_errors ).get_object()["balance"].as().to_real(); + } + } + t_id = d.find(boost::make_tuple( config::system_account_name, config::system_account_name, N(rexbal) )); + if (t_id != nullptr) { + const auto &idx = d.get_index(); + auto it = idx.find(boost::make_tuple( t_id->id, account_name )); + if ( it != idx.end() ) { + vector data; + copy_inline_row(*it, data); + token_result.rex_deposit += abis.binary_to_variant( "rex_balance", data, abi_serializer_max_time, shorten_abi_errors ).get_object()["vote_stake"].as().to_real(); + } + } + } + return token_result; +} + static variant action_abi_to_variant( const abi_def& abi, type_name action_type ) { variant v; auto it = std::find_if(abi.structs.begin(), abi.structs.end(), [&](auto& x){return x.name == action_type;}); @@ -2033,7 +2096,7 @@ static variant action_abi_to_variant( const abi_def& abi, type_name action_type read_only::abi_json_to_bin_result read_only::abi_json_to_bin( const read_only::abi_json_to_bin_params& params )const try { abi_json_to_bin_result result; - const auto code_account = db.db().find( params.code ); + const auto code_account = db.db().find( params.code ); EOS_ASSERT(code_account != nullptr, contract_query_exception, "Contract can't be found ${contract}", ("contract", params.code)); abi_def abi; @@ -2055,7 +2118,7 @@ read_only::abi_json_to_bin_result read_only::abi_json_to_bin( const read_only::a read_only::abi_bin_to_json_result read_only::abi_bin_to_json( const read_only::abi_bin_to_json_params& params )const { abi_bin_to_json_result result; - const auto& code_account = db.db().get( params.code ); + const auto& code_account = db.db().get( params.code ); abi_def abi; if( abi_serializer::to_abi(code_account.abi, abi) ) { abi_serializer abis( abi, abi_serializer_max_time ); diff --git a/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp b/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp index 036d70358fb..b397b2da0b2 100644 --- a/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp +++ b/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp @@ -117,6 +117,14 @@ class read_only { using account_resource_limit = chain::resource_limits::account_resource_limit; + struct get_act_token_result { + double liquid_balance; + double self_staked; + double other_staked; + double unstaking; + double rex_deposit; // rexfund.balance + rexbal.vote_stake + }; + struct get_account_results { name account_name; uint32_t head_block_num = 0; @@ -151,6 +159,8 @@ class read_only { }; get_account_results get_account( const get_account_params& params )const; + get_act_token_result get_act_token( const name& account_name )const; + struct get_code_results { name account_name; @@ -745,6 +755,9 @@ FC_REFLECT( eosio::chain_apis::read_only::get_account_results, (account_name)(head_block_num)(head_block_time)(privileged)(last_code_update)(created) (core_liquid_balance)(ram_quota)(net_weight)(cpu_weight)(net_limit)(cpu_limit)(ram_usage)(permissions) (total_resources)(self_delegated_bandwidth)(refund_request)(voter_info)(homepage) ) +FC_REFLECT( eosio::chain_apis::read_only::get_act_token_result, + (liquid_balance)(self_staked)(other_staked)(unstaking)(rex_deposit) ) + FC_REFLECT( eosio::chain_apis::read_only::get_code_results, (account_name)(code_hash)(wast)(wasm)(abi) ) FC_REFLECT( eosio::chain_apis::read_only::get_code_hash_results, (account_name)(code_hash) ) FC_REFLECT( eosio::chain_apis::read_only::get_abi_results, (account_name)(abi) ) diff --git a/plugins/net_plugin/net_plugin.cpp b/plugins/net_plugin/net_plugin.cpp index 56d5df43a2d..76e655e37c4 100644 --- a/plugins/net_plugin/net_plugin.cpp +++ b/plugins/net_plugin/net_plugin.cpp @@ -72,14 +72,6 @@ namespace eosio { struct by_expiry; struct by_block_num; - struct sha256_less { - bool operator()( const sha256& lhs, const sha256& rhs ) const { - return - std::tie(lhs._hash[0], lhs._hash[1], lhs._hash[2], lhs._hash[3]) < - std::tie(rhs._hash[0], rhs._hash[1], rhs._hash[2], rhs._hash[3]); - } - }; - typedef multi_index_container< node_transaction_state, indexed_by< diff --git a/plugins/producer_api_plugin/producer_api_plugin.cpp b/plugins/producer_api_plugin/producer_api_plugin.cpp index 0ef7631c868..afa9fb30365 100644 --- a/plugins/producer_api_plugin/producer_api_plugin.cpp +++ b/plugins/producer_api_plugin/producer_api_plugin.cpp @@ -89,7 +89,7 @@ void producer_api_plugin::plugin_startup() { CALL(producer, producer, get_integrity_hash, INVOKE_R_V(producer, get_integrity_hash), 201), CALL(producer, producer, create_snapshot, - INVOKE_R_V(producer, create_snapshot), 201), + INVOKE_R_R(producer, create_snapshot, producer_plugin::export_snapshot_type), 201), }); } diff --git a/plugins/producer_plugin/include/eosio/producer_plugin/producer_plugin.hpp b/plugins/producer_plugin/include/eosio/producer_plugin/producer_plugin.hpp index c43f0e0f38b..0208ba9f83d 100644 --- a/plugins/producer_plugin/include/eosio/producer_plugin/producer_plugin.hpp +++ b/plugins/producer_plugin/include/eosio/producer_plugin/producer_plugin.hpp @@ -27,6 +27,11 @@ class producer_plugin : public appbase::plugin { fc::optional subjective_cpu_leeway_us; fc::optional incoming_defer_ratio; }; + + enum export_snapshot_type { + snapshot = 0, // snapshot for data to use for restoring a node + acts_snapshot = 1 // snapshot for all accounts with system token balance + }; struct whitelist_blacklist { fc::optional< flat_set > actor_whitelist; @@ -80,11 +85,13 @@ class producer_plugin : public appbase::plugin { void set_whitelist_blacklist(const whitelist_blacklist& params); integrity_hash_information get_integrity_hash() const; - snapshot_information create_snapshot() const; + snapshot_information create_snapshot(export_snapshot_type type) const; signal confirmed_block; private: std::shared_ptr my; + snapshot_information create_blocks_snapshot(chain::controller& chain) const; + snapshot_information create_acts_snapshot(chain::controller& chain) const; }; } //eosio @@ -94,4 +101,5 @@ FC_REFLECT(eosio::producer_plugin::greylist_params, (accounts)); FC_REFLECT(eosio::producer_plugin::whitelist_blacklist, (actor_whitelist)(actor_blacklist)(contract_whitelist)(contract_blacklist)(action_blacklist)(key_blacklist) ) FC_REFLECT(eosio::producer_plugin::integrity_hash_information, (head_block_id)(integrity_hash)) FC_REFLECT(eosio::producer_plugin::snapshot_information, (head_block_id)(snapshot_name)) +FC_REFLECT_ENUM( eosio::producer_plugin::export_snapshot_type, (snapshot)(acts_snapshot) ) diff --git a/plugins/producer_plugin/producer_plugin.cpp b/plugins/producer_plugin/producer_plugin.cpp index 6232a711221..288837205be 100644 --- a/plugins/producer_plugin/producer_plugin.cpp +++ b/plugins/producer_plugin/producer_plugin.cpp @@ -59,6 +59,7 @@ namespace eosio { static appbase::abstract_plugin& _producer_plugin = app().register_plugin(); using namespace eosio::chain; +using namespace eosio::chain_apis; using namespace eosio::chain::plugin_interface; namespace { @@ -954,20 +955,7 @@ producer_plugin::integrity_hash_information producer_plugin::get_integrity_hash( return {chain.head_block_id(), chain.calculate_integrity_hash()}; } -producer_plugin::snapshot_information producer_plugin::create_snapshot() const { - chain::controller& chain = my->chain_plug->chain(); - - auto reschedule = fc::make_scoped_exit([this](){ - my->schedule_production_loop(); - }); - - if (chain.pending_block_state()) { - // abort the pending block - chain.abort_block(); - } else { - reschedule.cancel(); - } - +producer_plugin::snapshot_information producer_plugin::create_blocks_snapshot(chain::controller& chain) const { auto head_id = chain.head_block_id(); std::string snapshot_path = (my->_snapshots_dir / fc::format_string("snapshot-${id}.bin", fc::mutable_variant_object()("id", head_id))).generic_string(); @@ -985,6 +973,57 @@ producer_plugin::snapshot_information producer_plugin::create_snapshot() const { return {head_id, snapshot_path}; } +producer_plugin::snapshot_information producer_plugin::create_acts_snapshot(chain::controller& chain) const { + auto head_id = chain.head_block_id(); + std::string acts_snapshot_path = (my->_snapshots_dir / fc::format_string("acts-snapshot-${id}.txt", fc::mutable_variant_object()("id", head_id))).generic_string(); + + EOS_ASSERT( !fc::is_regular_file(acts_snapshot_path), snapshot_exists_exception, + "acts-snapshot named ${name} already exists", ("name", acts_snapshot_path)); + + auto acts_stream = std::ofstream(acts_snapshot_path, (std::ios::out)); + acts_stream << "name,liquid,self_staked,other_staked,unstaking,rex_deposit" << std::endl; + + const auto& idx = chain.db().get_index(); + auto lower = idx.lower_bound( N(1) ); + auto upper = idx.upper_bound( N(zzzzzzzzzzzz) ); + + for (auto itr = lower; itr != upper; ++itr ){ + chain_apis::read_only::get_act_token_result result = my->chain_plug->get_read_only_api().get_act_token( itr->name ); + acts_stream << itr->name.to_string() << "," << result.liquid_balance << "," + << result.self_staked << "," << result.other_staked << "," + << result.unstaking << "," << result.rex_deposit << std::endl; + } + + acts_stream.flush(); + acts_stream.close(); + + return {head_id, acts_snapshot_path}; +} + +producer_plugin::snapshot_information producer_plugin::create_snapshot(export_snapshot_type type) const { + chain::controller& chain = my->chain_plug->chain(); + + auto reschedule = fc::make_scoped_exit([this](){ + my->schedule_production_loop(); + }); + + if (chain.pending_block_state()) { + // abort the pending block + chain.abort_block(); + } else { + reschedule.cancel(); + } + switch (type) { + case export_snapshot_type::snapshot: + return this->create_blocks_snapshot(chain); + case export_snapshot_type::acts_snapshot: + return this->create_acts_snapshot(chain); + default: + elog("Not support export_snapshot_type"); + } + return {}; +} + optional producer_plugin_impl::calculate_next_block_time(const account_name& producer_name, const block_timestamp_type& current_block_time) const { chain::controller& chain = chain_plug->chain(); const auto& hbs = chain.head_block_state(); diff --git a/plugins/state_history_plugin/include/eosio/state_history_plugin/state_history_serialization.hpp b/plugins/state_history_plugin/include/eosio/state_history_plugin/state_history_serialization.hpp index 37c817dd9cc..8ddb118c383 100644 --- a/plugins/state_history_plugin/include/eosio/state_history_plugin/state_history_serialization.hpp +++ b/plugins/state_history_plugin/include/eosio/state_history_plugin/state_history_serialization.hpp @@ -105,25 +105,46 @@ datastream& operator<<(datastream& ds, const history_serial_wrapper datastream& operator<<(datastream& ds, const history_serial_wrapper& obj) { fc::raw::pack(ds, fc::unsigned_int(0)); - fc::raw::pack(ds, as_type(obj.obj.name.value)); + fc::raw::pack(ds, as_type(obj.obj.name.to_uint64_t())); + fc::raw::pack(ds, as_type(obj.obj.creation_date)); + fc::raw::pack(ds, as_type(obj.obj.abi)); + return ds; +} + +template +datastream& operator<<(datastream& ds, + const history_serial_wrapper& obj) { + fc::raw::pack(ds, fc::unsigned_int(0)); + fc::raw::pack(ds, as_type(obj.obj.name.to_uint64_t())); + fc::raw::pack(ds, as_type(obj.obj.is_privileged())); + fc::raw::pack(ds, as_type(obj.obj.last_code_update)); + bool has_code = obj.obj.code_hash != eosio::chain::digest_type(); + fc::raw::pack(ds, has_code); + if (has_code) { + fc::raw::pack(ds, as_type(obj.obj.vm_type)); + fc::raw::pack(ds, as_type(obj.obj.vm_version)); + fc::raw::pack(ds, as_type(obj.obj.code_hash)); + } + return ds; +} + +template +datastream& operator<<(datastream& ds, const history_serial_wrapper& obj) { + fc::raw::pack(ds, fc::unsigned_int(0)); fc::raw::pack(ds, as_type(obj.obj.vm_type)); fc::raw::pack(ds, as_type(obj.obj.vm_version)); - fc::raw::pack(ds, as_type(obj.obj.privileged)); - fc::raw::pack(ds, as_type(obj.obj.last_code_update)); - fc::raw::pack(ds, as_type(obj.obj.code_version)); - fc::raw::pack(ds, as_type(obj.obj.creation_date)); + fc::raw::pack(ds, as_type(obj.obj.code_hash)); fc::raw::pack(ds, as_type(obj.obj.code)); - fc::raw::pack(ds, as_type(obj.obj.abi)); return ds; } template datastream& operator<<(datastream& ds, const history_serial_wrapper& obj) { fc::raw::pack(ds, fc::unsigned_int(0)); - fc::raw::pack(ds, as_type(obj.obj.code.value)); - fc::raw::pack(ds, as_type(obj.obj.scope.value)); - fc::raw::pack(ds, as_type(obj.obj.table.value)); - fc::raw::pack(ds, as_type(obj.obj.payer.value)); + fc::raw::pack(ds, as_type(obj.obj.code.to_uint64_t())); + fc::raw::pack(ds, as_type(obj.obj.scope.to_uint64_t())); + fc::raw::pack(ds, as_type(obj.obj.table.to_uint64_t())); + fc::raw::pack(ds, as_type(obj.obj.payer.to_uint64_t())); return ds; } diff --git a/plugins/state_history_plugin/state_history_plugin.cpp b/plugins/state_history_plugin/state_history_plugin.cpp index 946f6e6e91f..e4a51e632ae 100644 --- a/plugins/state_history_plugin/state_history_plugin.cpp +++ b/plugins/state_history_plugin/state_history_plugin.cpp @@ -53,6 +53,64 @@ static bytes zlib_compress_bytes(bytes in) { return out; } +static bytes zlib_decompress(const bytes& in) { + bytes out; + bio::filtering_ostream decomp; + decomp.push(bio::zlib_decompressor()); + decomp.push(bio::back_inserter(out)); + bio::write(decomp, in.data(), in.size()); + bio::close(decomp); + return out; +} + +template +bool include_delta(const T& old, const T& curr) { + return true; +} + +bool include_delta(const eosio::chain::table_id_object& old, const eosio::chain::table_id_object& curr) { + return old.payer != curr.payer; +} + +bool include_delta(const eosio::chain::resource_limits::resource_limits_object& old, + const eosio::chain::resource_limits::resource_limits_object& curr) { + return // + old.net_weight != curr.net_weight || // + old.cpu_weight != curr.cpu_weight || // + old.ram_bytes != curr.ram_bytes; +} + +bool include_delta(const eosio::chain::resource_limits::resource_limits_state_object& old, + const eosio::chain::resource_limits::resource_limits_state_object& curr) { + return // + old.average_block_net_usage.last_ordinal != curr.average_block_net_usage.last_ordinal || // + old.average_block_net_usage.value_ex != curr.average_block_net_usage.value_ex || // + old.average_block_net_usage.consumed != curr.average_block_net_usage.consumed || // + old.average_block_cpu_usage.last_ordinal != curr.average_block_cpu_usage.last_ordinal || // + old.average_block_cpu_usage.value_ex != curr.average_block_cpu_usage.value_ex || // + old.average_block_cpu_usage.consumed != curr.average_block_cpu_usage.consumed || // + old.total_net_weight != curr.total_net_weight || // + old.total_cpu_weight != curr.total_cpu_weight || // + old.total_ram_bytes != curr.total_ram_bytes || // + old.virtual_net_limit != curr.virtual_net_limit || // + old.virtual_cpu_limit != curr.virtual_cpu_limit; +} + +bool include_delta(const eosio::chain::account_metadata_object& old, + const eosio::chain::account_metadata_object& curr) { + return // + old.name != curr.name || // + old.is_privileged() != curr.is_privileged() || // + old.last_code_update != curr.last_code_update || // + old.vm_type != curr.vm_type || // + old.vm_version != curr.vm_version || // + old.code_hash != curr.code_hash; +} + +bool include_delta(const eosio::chain::code_object& old, const eosio::chain::code_object& curr) { // + return false; +} + struct state_history_plugin_impl : std::enable_shared_from_this { chain_plugin* chain_plug = nullptr; fc::optional trace_log; @@ -465,6 +523,8 @@ struct state_history_plugin_impl : std::enable_shared_from_this(), pack_row); + process_table("account_metadata", db.get_index(), pack_row); + process_table("code", db.get_index(), pack_row); process_table("contract_table", db.get_index(), pack_row); process_table("contract_row", db.get_index(), pack_contract_row); diff --git a/plugins/txn_test_gen_plugin/CMakeLists.txt b/plugins/txn_test_gen_plugin/CMakeLists.txt index 286066d6149..4b29d42b8cc 100644 --- a/plugins/txn_test_gen_plugin/CMakeLists.txt +++ b/plugins/txn_test_gen_plugin/CMakeLists.txt @@ -1,10 +1,9 @@ file(GLOB HEADERS "include/eosio/txn_test_gen_plugin/*.hpp") add_library( txn_test_gen_plugin - txn_test_gen_plugin.cpp - ${HEADERS} ) + txn_test_gen_plugin.cpp + ${HEADERS} ) -add_dependencies(txn_test_gen_plugin eosio.token) - -target_link_libraries( txn_test_gen_plugin appbase fc http_plugin chain_plugin net_plugin) -target_include_directories( txn_test_gen_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) -target_include_directories( txn_test_gen_plugin PUBLIC ${CMAKE_BINARY_DIR}/contracts ) +target_link_libraries( txn_test_gen_plugin appbase fc http_plugin chain_plugin eosio_testing net_plugin) +target_include_directories( txn_test_gen_plugin PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include + txn_test_gen_plugin PUBLIC ${CMAKE_SOURCE_DIR}/libraries/testing/include + txn_test_gen_plugin PUBLIC ${CMAKE_BINARY_DIR}/unittests/include ) diff --git a/plugins/txn_test_gen_plugin/txn_test_gen_plugin.cpp b/plugins/txn_test_gen_plugin/txn_test_gen_plugin.cpp index 265d24bd167..30a1acb9b28 100644 --- a/plugins/txn_test_gen_plugin/txn_test_gen_plugin.cpp +++ b/plugins/txn_test_gen_plugin/txn_test_gen_plugin.cpp @@ -6,27 +6,17 @@ #include #include #include +#include #include #include #include #include -#include #include #include #include -#include -#include -#include -#include -#include - -#include -#include -#include -#include namespace eosio { namespace detail { struct txn_test_gen_empty {}; @@ -145,13 +135,13 @@ struct txn_test_gen_plugin_impl { name newaccountC("cccccccccccc"); name creator(init_name); - abi_def currency_abi_def = fc::json::from_string(eosio_token_abi).as(); - controller& cc = app().get_plugin().chain(); auto chainid = app().get_plugin().get_chain_id(); auto abi_serializer_max_time = app().get_plugin().get_abi_serializer_max_time(); - abi_serializer eosio_token_serializer{fc::json::from_string(eosio_token_abi).as(), abi_serializer_max_time}; + const auto& eosio_token_acnt = cc.get_account(N(eosio.token)); + auto eosio_token_abi = eosio_token_acnt.get_abi(); + abi_serializer eosio_token_serializer(eosio_token_abi, abi_serializer_max_time); fc::crypto::private_key txn_test_receiver_A_priv_key = fc::crypto::private_key::regenerate(fc::sha256(std::string(64, 'a'))); fc::crypto::private_key txn_test_receiver_B_priv_key = fc::crypto::private_key::regenerate(fc::sha256(std::string(64, 'b'))); @@ -223,7 +213,8 @@ struct txn_test_gen_plugin_impl { { signed_transaction trx; - vector wasm = wast_to_wasm(std::string(eosio_token_wast)); +// vector wasm = contracts::eosio_token_wasm(); + string wasm = app().get_plugin().get_read_only_api().get_code({N(eosio.token), true}).wasm; setcode handler; handler.account = newaccountC; @@ -234,7 +225,7 @@ struct txn_test_gen_plugin_impl { { setabi handler; handler.account = newaccountC; - handler.abi = fc::raw::pack(json::from_string(eosio_token_abi).as()); + handler.abi = fc::raw::pack(eosio_token_abi); trx.actions.emplace_back( vector{{newaccountC,"active"}}, handler); } @@ -292,7 +283,10 @@ struct txn_test_gen_plugin_impl { ("stake_net_quantity", net.to_string()) ("stake_cpu_quantity", cpu.to_string()) ("transfer", true); - abi_serializer eosio_system_serializer{fc::json::from_string(eosio_system_abi).as(), abi_serializer_max_time}; + controller& cc = app().get_plugin().chain(); + const auto& eosio_acnt = cc.get_account(N(eosio)); + auto eosio_abi = eosio_acnt.get_abi(); + abi_serializer eosio_system_serializer(eosio_abi, abi_serializer_max_time); auto payload_delegate = eosio_system_serializer.variant_to_binary( "delegatebw", variant_delegate, abi_serializer_max_time); eosio::chain::action act_delegate{vector{{from,"active"}}, @@ -306,9 +300,12 @@ struct txn_test_gen_plugin_impl { ("payer", from.to_string()) ("receiver", to.to_string()) ("quant", quant.to_string()); - abi_serializer eosio_system_serializer{fc::json::from_string(eosio_system_abi).as(), abi_serializer_max_time}; + controller& cc = app().get_plugin().chain(); + const auto& eosio_acnt = cc.get_account(N(eosio)); + auto eosio_abi = eosio_acnt.get_abi(); + abi_serializer eosio_system_serializer(eosio_abi, abi_serializer_max_time); - auto payload_buyram = eosio_system_serializer.variant_to_binary( "buyram", variant_buyram, abi_serializer_max_time); + auto payload_buyram = eosio_system_serializer.variant_to_binary( "buyram", variant_buyram, abi_serializer_max_time); eosio::chain::action act_buyram{vector{{from,"active"}}, config::system_account_name, N(buyram), payload_buyram}; @@ -332,7 +329,9 @@ struct txn_test_gen_plugin_impl { controller& cc = app().get_plugin().chain(); auto abi_serializer_max_time = app().get_plugin().get_abi_serializer_max_time(); - abi_serializer eosio_token_serializer{fc::json::from_string(eosio_token_abi).as(), abi_serializer_max_time}; + const auto& eosio_token_acnt = cc.get_account(N(eosio.token)); + auto eosio_token_abi = eosio_token_acnt.get_abi(); + abi_serializer eosio_token_serializer(eosio_token_abi, abi_serializer_max_time); //create the actions here act_a_to_b.account = N(cccccccccccc); act_a_to_b.name = N(transfer); diff --git a/plugins/wallet_plugin/include/eosio/wallet_plugin/se_wallet.hpp b/plugins/wallet_plugin/include/eosio/wallet_plugin/se_wallet.hpp index e5c70f1a307..37cac2e21df 100644 --- a/plugins/wallet_plugin/include/eosio/wallet_plugin/se_wallet.hpp +++ b/plugins/wallet_plugin/include/eosio/wallet_plugin/se_wallet.hpp @@ -32,7 +32,7 @@ class se_wallet final : public wallet_api { string create_key(string key_type) override; bool remove_key(string key) override; - optional try_sign_digest(const digest_type digest, const public_key_type public_key) override; + fc::optional try_sign_digest(const digest_type digest, const public_key_type public_key) override; private: std::unique_ptr my; diff --git a/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet.hpp b/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet.hpp index 480e7a32a44..900577d082c 100644 --- a/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet.hpp +++ b/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet.hpp @@ -181,7 +181,7 @@ class soft_wallet final : public wallet_api /* Attempts to sign a digest via the given public_key */ - optional try_sign_digest( const digest_type digest, const public_key_type public_key ) override; + fc::optional try_sign_digest( const digest_type digest, const public_key_type public_key ) override; std::shared_ptr my; void encrypt_keys(); diff --git a/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet_api.hpp b/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet_api.hpp index 0627eceff33..61929b04733 100644 --- a/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet_api.hpp +++ b/plugins/wallet_plugin/include/eosio/wallet_plugin/wallet_api.hpp @@ -101,7 +101,7 @@ class wallet_api /** Returns a signature given the digest and public_key, if this wallet can sign via that public key */ - virtual optional try_sign_digest( const digest_type digest, const public_key_type public_key ) = 0; + virtual fc::optional try_sign_digest( const digest_type digest, const public_key_type public_key ) = 0; }; }} diff --git a/plugins/wallet_plugin/include/eosio/wallet_plugin/yubihsm_wallet.hpp b/plugins/wallet_plugin/include/eosio/wallet_plugin/yubihsm_wallet.hpp index e1c0da99118..0d204420b89 100644 --- a/plugins/wallet_plugin/include/eosio/wallet_plugin/yubihsm_wallet.hpp +++ b/plugins/wallet_plugin/include/eosio/wallet_plugin/yubihsm_wallet.hpp @@ -32,7 +32,7 @@ class yubihsm_wallet final : public wallet_api { string create_key(string key_type) override; bool remove_key(string key) override; - optional try_sign_digest(const digest_type digest, const public_key_type public_key) override; + fc::optional try_sign_digest(const digest_type digest, const public_key_type public_key) override; private: std::unique_ptr my; diff --git a/plugins/wallet_plugin/se_wallet.cpp b/plugins/wallet_plugin/se_wallet.cpp index 8b43d569881..fd8ab0ca0ba 100644 --- a/plugins/wallet_plugin/se_wallet.cpp +++ b/plugins/wallet_plugin/se_wallet.cpp @@ -186,10 +186,10 @@ struct se_wallet_impl { return pub; } - optional try_sign_digest(const digest_type d, const public_key_type public_key) { + fc::optional try_sign_digest(const digest_type d, const public_key_type public_key) { auto it = _keys.find(public_key); if(it == _keys.end()) - return optional{}; + return fc::optional{}; fc::ecdsa_sig sig = ECDSA_SIG_new(); CFErrorRef error = nullptr; @@ -370,7 +370,7 @@ bool se_wallet::remove_key(string key) { return my->remove_key(key); } -optional se_wallet::try_sign_digest(const digest_type digest, const public_key_type public_key) { +fc::optional se_wallet::try_sign_digest(const digest_type digest, const public_key_type public_key) { return my->try_sign_digest(digest, public_key); } diff --git a/plugins/wallet_plugin/wallet.cpp b/plugins/wallet_plugin/wallet.cpp index 53d57697ccd..a40027cb0a9 100644 --- a/plugins/wallet_plugin/wallet.cpp +++ b/plugins/wallet_plugin/wallet.cpp @@ -120,18 +120,18 @@ class soft_wallet_impl string get_wallet_filename() const { return _wallet_filename; } - optional try_get_private_key(const public_key_type& id)const + fc::optional try_get_private_key(const public_key_type& id)const { auto it = _keys.find(id); if( it != _keys.end() ) return it->second; - return optional(); + return fc::optional(); } - optional try_sign_digest( const digest_type digest, const public_key_type public_key ) { + fc::optional try_sign_digest( const digest_type digest, const public_key_type public_key ) { auto it = _keys.find(public_key); if( it == _keys.end() ) - return optional{}; + return fc::optional{}; return it->second.sign(digest); } @@ -401,7 +401,7 @@ private_key_type soft_wallet::get_private_key( public_key_type pubkey )const return my->get_private_key( pubkey ); } -optional soft_wallet::try_sign_digest( const digest_type digest, const public_key_type public_key ) { +fc::optional soft_wallet::try_sign_digest( const digest_type digest, const public_key_type public_key ) { return my->try_sign_digest(digest, public_key); } diff --git a/plugins/wallet_plugin/wallet_manager.cpp b/plugins/wallet_plugin/wallet_manager.cpp index 15a39c9d9bd..386e12ba6f6 100644 --- a/plugins/wallet_plugin/wallet_manager.cpp +++ b/plugins/wallet_plugin/wallet_manager.cpp @@ -236,7 +236,7 @@ wallet_manager::sign_transaction(const chain::signed_transaction& txn, const fla bool found = false; for (const auto& i : wallets) { if (!i.second->is_locked()) { - optional sig = i.second->try_sign_digest(stxn.sig_digest(id, stxn.context_free_data), pk); + fc::optional sig = i.second->try_sign_digest(stxn.sig_digest(id, stxn.context_free_data), pk); if (sig) { stxn.signatures.push_back(*sig); found = true; @@ -259,7 +259,7 @@ wallet_manager::sign_digest(const chain::digest_type& digest, const public_key_t try { for (const auto& i : wallets) { if (!i.second->is_locked()) { - optional sig = i.second->try_sign_digest(digest, key); + fc::optional sig = i.second->try_sign_digest(digest, key); if (sig) return *sig; } diff --git a/plugins/wallet_plugin/yubihsm_wallet.cpp b/plugins/wallet_plugin/yubihsm_wallet.cpp index 682fc02bbb0..469c1f2a0bb 100644 --- a/plugins/wallet_plugin/yubihsm_wallet.cpp +++ b/plugins/wallet_plugin/yubihsm_wallet.cpp @@ -200,10 +200,10 @@ struct yubihsm_wallet_impl { }); } - optional try_sign_digest(const digest_type d, const public_key_type public_key) { + fc::optional try_sign_digest(const digest_type d, const public_key_type public_key) { auto it = _keys.find(public_key); if(it == _keys.end()) - return optional{}; + return fc::optional{}; size_t der_sig_sz = 128; uint8_t der_sig[der_sig_sz]; @@ -328,7 +328,7 @@ bool yubihsm_wallet::remove_key(string key) { return true; } -optional yubihsm_wallet::try_sign_digest(const digest_type digest, const public_key_type public_key) { +fc::optional yubihsm_wallet::try_sign_digest(const digest_type digest, const public_key_type public_key) { return my->try_sign_digest(digest, public_key); } diff --git a/programs/cleos/main.cpp b/programs/cleos/main.cpp index 8f9f3a97590..28f05c77e5b 100644 --- a/programs/cleos/main.cpp +++ b/programs/cleos/main.cpp @@ -377,14 +377,14 @@ void print_action( const fc::variant& at ) { } //resolver for ABI serializer to decode actions in proposed transaction in multisig contract -auto abi_serializer_resolver = [](const name& account) -> optional { - static unordered_map > abi_cache; +auto abi_serializer_resolver = [](const name& account) -> fc::optional { + static unordered_map > abi_cache; auto it = abi_cache.find( account ); if ( it == abi_cache.end() ) { auto result = call(get_abi_func, fc::mutable_variant_object("account_name", account)); auto abi_results = result.as(); - optional abis; + fc::optional abis; if( abi_results.abi.valid() ) { abis.emplace( *abi_results.abi, abi_serializer_max_time ); } else { @@ -478,7 +478,7 @@ void print_result( const fc::variant& result ) { try { cerr << " us\n"; if( status == "failed" ) { - auto soft_except = processed["except"].as>(); + auto soft_except = processed["except"].as>(); if( soft_except ) { edump((soft_except->to_detail_string())); } diff --git a/programs/nodeos/CMakeLists.txt b/programs/nodeos/CMakeLists.txt index 744d0ab36c5..ef53edf73a7 100644 --- a/programs/nodeos/CMakeLists.txt +++ b/programs/nodeos/CMakeLists.txt @@ -56,7 +56,7 @@ target_link_libraries( ${NODE_EXECUTABLE_NAME} PRIVATE -Wl,${whole_archive_flag} chain_api_plugin -Wl,${no_whole_archive_flag} PRIVATE -Wl,${whole_archive_flag} net_plugin -Wl,${no_whole_archive_flag} PRIVATE -Wl,${whole_archive_flag} net_api_plugin -Wl,${no_whole_archive_flag} -# PRIVATE -Wl,${whole_archive_flag} pbft_plugin -Wl,${no_whole_archive_flag} + PRIVATE -Wl,${whole_archive_flag} pbft_plugin -Wl,${no_whole_archive_flag} # PRIVATE -Wl,${whole_archive_flag} faucet_testnet_plugin -Wl,${no_whole_archive_flag} PRIVATE -Wl,${whole_archive_flag} txn_test_gen_plugin -Wl,${no_whole_archive_flag} PRIVATE -Wl,${whole_archive_flag} db_size_api_plugin -Wl,${no_whole_archive_flag} diff --git a/scripts/eosio_build_darwin.sh b/scripts/eosio_build_darwin.sh index 6eb48083a54..70c4c89d7fb 100644 --- a/scripts/eosio_build_darwin.sh +++ b/scripts/eosio_build_darwin.sh @@ -23,7 +23,9 @@ printf "\\tPhysical Memory: %s Gbytes\\n" "${MEM_GIG}" printf "\\tDisk install: %s\\n" "${DISK_INSTALL}" printf "\\tDisk space total: %sG\\n" "${DISK_TOTAL}" - printf "\\tDisk space available: %sG\\n\\n" "${DISK_AVAIL}" + printf "\\tDisk space available: %sG\\n" "${DISK_AVAIL}" + printf "\\tTEMP_DIR: %s\\n\\n" "${TEMP_DIR}" + if [ "${MEM_GIG}" -lt 7 ]; then echo "Your system must have 7 or more Gigabytes of physical memory installed." @@ -68,7 +70,7 @@ printf "\\tChecking Home Brew installation\\n" if ! BREW=$( command -v brew ) then - printf "\\tHomebrew must be installed to compile EOS.IO\\n\\n" + printf "\\tHomebrew must be installed to compile EOSIO\\n\\n" printf "\\tDo you wish to install Home Brew?\\n" if is_noninteractive; then exec <<< "1"; fi select yn in "Yes" "No"; do @@ -177,13 +179,23 @@ printf "\\n\\tNo required Home Brew dependencies to install.\\n" fi - + printf "\\n\\tChecking clang in CommandLineTools for MacOS.\\n" + which clang | grep CommandLineTools 1> /dev/null + ISCMDCLANG=$? + if [ ${ISCMDCLANG} -ne 0 ]; then + print "\\tPlease use the Apple clang version 11.0.0 at least.\\n" + print "\\tIf installed, please change the PATH to use it\\n" + print "\\tOr download v11.3.1 from: https://developer.apple.com/download/more/. \\n" + printf "\\tExiting now.\\n\\n" + exit 1; + fi + printf "\\n\\tChecking boost library installation.\\n" BVERSION=$( grep "#define BOOST_VERSION" "/usr/local/include/boost/version.hpp" 2>/dev/null | tail -1 | tr -s ' ' | cut -d\ -f3 ) if [ "${BVERSION}" != "107100" ]; then if [ ! -z "${BVERSION}" ]; then printf "\\tFound Boost Version %s.\\n" "${BVERSION}" - printf "\\tEOS.IO requires Boost version 1.71.\\n" + printf "\\tEOSIO requires Boost version 1.71.\\n" printf "\\tWould you like to uninstall version %s and install Boost version 1.71.\\n" "${BVERSION}" if is_noninteractive; then exec <<< "1"; fi select yn in "Yes" "No"; do @@ -420,7 +432,7 @@ printf "\\tExiting now.\\n\\n" exit 1; fi - if ! git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git + if ! git clone --depth 1 --single-branch --branch release_90 https://github.com/llvm-mirror/llvm.git then printf "\\tUnable to clone llvm repo @ https://github.com/llvm-mirror/llvm.git.\\n" printf "\\tExiting now.\\n\\n" @@ -432,7 +444,7 @@ printf "\\tExiting now.\\n\\n" exit 1; fi - if ! git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/clang.git + if ! git clone --depth 1 --single-branch --branch release_90 https://github.com/llvm-mirror/clang.git then printf "\\tUnable to clone clang repo @ https://github.com/llvm-mirror/clang.git.\\n" printf "\\tExiting now.\\n\\n" diff --git a/scripts/eosio_build_dep b/scripts/eosio_build_dep index eed29b19ab3..100904459f4 100644 --- a/scripts/eosio_build_dep +++ b/scripts/eosio_build_dep @@ -1,7 +1,7 @@ automake,-x,/usr/local/bin/automake,automake,http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz Libtool,-x,/usr/local/bin/glibtool,libtool,http://gnu.askapache.com/libtool/libtool-2.4.6.tar.gz OpenSSL,-f,/usr/local/opt/openssl/lib/libssl.a,openssl,https://www.openssl.org/source/openssl-1.0.2n.tar.gz -llvm,-x,/usr/local/opt/llvm@4/bin/clang-4.0,llvm@4,http://releases.llvm.org/5.0.1/llvm-5.0.1.src.tar.xz +llvm,-x,/usr/local/opt/llvm@7/bin/clang-7,llvm@7,http://releases.llvm.org/7.0.1/llvm-7.0.1.src.tar.xz wget,-x,/usr/local/bin/wget,wget,https://ftp.gnu.org/gnu/wget/wget-1.19.2.tar.gz CMake,-x,/usr/local/bin/cmake,cmake,https://cmake.org/files/v3.15/cmake-3.15.4-Darwin-x86_64.tar.gz GMP,-f,/usr/local/opt/gmp/include/gmpxx.h,gmp,https://ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.bz2 diff --git a/scripts/eosio_build_ubuntu.sh b/scripts/eosio_build_ubuntu.sh index 95217846946..c5ca90528b7 100644 --- a/scripts/eosio_build_ubuntu.sh +++ b/scripts/eosio_build_ubuntu.sh @@ -60,7 +60,7 @@ exit 1 fi - DEP_ARRAY=(clang lldb-4.0 libclang-4.0-dev cmake make automake libbz2-dev libssl-dev \ + DEP_ARRAY=(clang-9 lldb-9 libclang-9-dev cmake make automake libbz2-dev libssl-dev \ libgmp3-dev autotools-dev build-essential libicu-dev python2.7-dev python3-dev \ autoconf libtool curl zlib1g-dev doxygen graphviz) COUNT=1 @@ -444,7 +444,7 @@ mongodconf printf "\\n\\tExiting now.\\n" exit 1; fi - if ! git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git + if ! git clone --depth 1 --single-branch --branch release_90 https://github.com/llvm-mirror/llvm.git then printf "\\tUnable to clone llvm repo @ https://github.com/llvm-mirror/llvm.git.\\n" printf "\\n\\tExiting now.\\n" @@ -456,7 +456,7 @@ mongodconf printf "\\n\\tExiting now.\\n" exit 1; fi - if ! git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/clang.git + if ! git clone --depth 1 --single-branch --branch release_90 https://github.com/llvm-mirror/clang.git then printf "\\tUnable to clone clang repo @ https://github.com/llvm-mirror/clang.git.\\n" printf "\\n\\tExiting now.\\n" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index fbe6cc94f42..eb7df7abb44 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -5,11 +5,10 @@ if( GPERFTOOLS_FOUND ) list( APPEND PLATFORM_SPECIFIC_LIBS tcmalloc ) endif() -find_package(LLVM 4.0 REQUIRED CONFIG) link_directories(${LLVM_LIBRARY_DIR}) -set( CMAKE_CXX_STANDARD 14 ) +set( CMAKE_CXX_STANDARD 17 ) include_directories("${CMAKE_SOURCE_DIR}/plugins/wallet_plugin/include") diff --git a/tests/chain_plugin_tests.cpp b/tests/chain_plugin_tests.cpp index 9d94e384708..af44e2a2950 100644 --- a/tests/chain_plugin_tests.cpp +++ b/tests/chain_plugin_tests.cpp @@ -9,8 +9,7 @@ #include #include -#include -#include +#include #include @@ -42,18 +41,18 @@ BOOST_FIXTURE_TEST_CASE( get_block_with_invalid_abi, TESTER ) try { produce_block(); // setup contract and abi - set_code(N(asserter), asserter_wast); - set_abi(N(asserter), asserter_abi); + set_code( N(asserter), contracts::asserter_wasm() ); + set_abi( N(asserter), contracts::asserter_abi().data() ); produce_blocks(1); - auto resolver = [&,this]( const account_name& name ) -> optional { + auto resolver = [&,this]( const account_name& name ) -> fc::optional { try { const auto& accnt = this->control->db().get( name ); abi_def abi; if (abi_serializer::to_abi(accnt.abi, abi)) { return abi_serializer(abi, abi_serializer_max_time); } - return optional(); + return fc::optional(); } FC_RETHROW_EXCEPTIONS(error, "resolver failed at chain_plugin_tests::abi_invalid_type"); }; @@ -61,7 +60,7 @@ BOOST_FIXTURE_TEST_CASE( get_block_with_invalid_abi, TESTER ) try { BOOST_REQUIRE_EQUAL(true, resolver(N(asserter)).valid()); // make an action using the valid contract & abi - variant pretty_trx = mutable_variant_object() + fc::variant pretty_trx = fc::mutable_variant_object() ("actions", variants({ mutable_variant_object() ("account", "asserter") @@ -100,7 +99,7 @@ BOOST_FIXTURE_TEST_CASE( get_block_with_invalid_abi, TESTER ) try { BOOST_TEST(block_str.find("011253686f756c64204e6f742041737365727421") != std::string::npos); //action data // set an invalid abi (int8->xxxx) - std::string abi2 = asserter_abi; + std::string abi2 = contracts::asserter_abi().data(); auto pos = abi2.find("int8"); BOOST_TEST(pos != std::string::npos); abi2.replace(pos, 4, "xxxx"); diff --git a/tests/get_table_tests.cpp b/tests/get_table_tests.cpp index 8084ddd2f93..f806edc76ae 100644 --- a/tests/get_table_tests.cpp +++ b/tests/get_table_tests.cpp @@ -9,14 +9,7 @@ #include #include -#include -#include - -#include -#include - -#include -#include +#include #include @@ -51,8 +44,8 @@ BOOST_FIXTURE_TEST_CASE( get_scope_test, TESTER ) try { create_accounts(accs); produce_block(); - set_code( N(eosio.token), eosio_token_wast ); - set_abi( N(eosio.token), eosio_token_abi ); + set_code( N(eosio.token), contracts::eosio_token_wasm() ); + set_abi( N(eosio.token), contracts::eosio_token_abi().data() ); produce_blocks(1); // create currency @@ -76,14 +69,14 @@ BOOST_FIXTURE_TEST_CASE( get_scope_test, TESTER ) try { eosio::chain_apis::read_only::get_table_by_scope_params param{N(eosio.token), N(accounts), "inita", "", 10}; eosio::chain_apis::read_only::get_table_by_scope_result result = plugin.read_only::get_table_by_scope(param); - BOOST_REQUIRE_EQUAL(4, result.rows.size()); + BOOST_REQUIRE_EQUAL(4u, result.rows.size()); BOOST_REQUIRE_EQUAL("", result.more); if (result.rows.size() >= 4) { BOOST_REQUIRE_EQUAL(name(N(eosio.token)), result.rows[0].code); BOOST_REQUIRE_EQUAL(name(N(inita)), result.rows[0].scope); BOOST_REQUIRE_EQUAL(name(N(accounts)), result.rows[0].table); BOOST_REQUIRE_EQUAL(name(N(eosio)), result.rows[0].payer); - BOOST_REQUIRE_EQUAL(1, result.rows[0].count); + BOOST_REQUIRE_EQUAL(1u, result.rows[0].count); BOOST_REQUIRE_EQUAL(name(N(initb)), result.rows[1].scope); BOOST_REQUIRE_EQUAL(name(N(initc)), result.rows[2].scope); @@ -93,7 +86,7 @@ BOOST_FIXTURE_TEST_CASE( get_scope_test, TESTER ) try { param.lower_bound = "initb"; param.upper_bound = "initc"; result = plugin.read_only::get_table_by_scope(param); - BOOST_REQUIRE_EQUAL(2, result.rows.size()); + BOOST_REQUIRE_EQUAL(2u, result.rows.size()); BOOST_REQUIRE_EQUAL("", result.more); if (result.rows.size() >= 2) { BOOST_REQUIRE_EQUAL(name(N(initb)), result.rows[0].scope); @@ -102,17 +95,17 @@ BOOST_FIXTURE_TEST_CASE( get_scope_test, TESTER ) try { param.limit = 1; result = plugin.read_only::get_table_by_scope(param); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL("initc", result.more); param.table = name(0); result = plugin.read_only::get_table_by_scope(param); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL("initc", result.more); param.table = N(invalid); result = plugin.read_only::get_table_by_scope(param); - BOOST_REQUIRE_EQUAL(0, result.rows.size()); + BOOST_REQUIRE_EQUAL(0u, result.rows.size()); BOOST_REQUIRE_EQUAL("", result.more); } FC_LOG_AND_RETHROW() /// get_scope_test @@ -127,8 +120,8 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { create_accounts(accs); produce_block(); - set_code( N(eosio.token), eosio_token_wast ); - set_abi( N(eosio.token), eosio_token_abi ); + set_code( N(eosio.token), contracts::eosio_token_wasm() ); + set_abi( N(eosio.token), contracts::eosio_token_abi().data() ); produce_blocks(1); // create currency @@ -201,7 +194,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.json = true; p.index_position = "primary"; eosio::chain_apis::read_only::get_table_rows_result result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(4, result.rows.size()); + BOOST_REQUIRE_EQUAL(4u, result.rows.size()); BOOST_REQUIRE_EQUAL(false, result.more); if (result.rows.size() >= 4) { BOOST_REQUIRE_EQUAL("9999.0000 AAA", result.rows[0]["balance"].as_string()); @@ -213,7 +206,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { // get table: reverse ordered p.reverse = true; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(4, result.rows.size()); + BOOST_REQUIRE_EQUAL(4u, result.rows.size()); BOOST_REQUIRE_EQUAL(false, result.more); if (result.rows.size() >= 4) { BOOST_REQUIRE_EQUAL("9999.0000 AAA", result.rows[3]["balance"].as_string()); @@ -226,7 +219,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.reverse = true; p.show_payer = true; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(4, result.rows.size()); + BOOST_REQUIRE_EQUAL(4u, result.rows.size()); BOOST_REQUIRE_EQUAL(false, result.more); if (result.rows.size() >= 4) { BOOST_REQUIRE_EQUAL("9999.0000 AAA", result.rows[3]["data"]["balance"].as_string()); @@ -245,7 +238,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.upper_bound = "CCC"; p.reverse = false; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(2, result.rows.size()); + BOOST_REQUIRE_EQUAL(2u, result.rows.size()); BOOST_REQUIRE_EQUAL(false, result.more); if (result.rows.size() >= 2) { BOOST_REQUIRE_EQUAL("8888.0000 BBB", result.rows[0]["balance"].as_string()); @@ -257,7 +250,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.upper_bound = "CCC"; p.reverse = true; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(2, result.rows.size()); + BOOST_REQUIRE_EQUAL(2u, result.rows.size()); BOOST_REQUIRE_EQUAL(false, result.more); if (result.rows.size() >= 2) { BOOST_REQUIRE_EQUAL("8888.0000 BBB", result.rows[1]["balance"].as_string()); @@ -269,7 +262,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.limit = 1; p.reverse = false; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL(true, result.more); if (result.rows.size() >= 1) { BOOST_REQUIRE_EQUAL("9999.0000 AAA", result.rows[0]["balance"].as_string()); @@ -280,7 +273,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.limit = 1; p.reverse = true; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL(true, result.more); if (result.rows.size() >= 1) { BOOST_REQUIRE_EQUAL("10000.0000 SYS", result.rows[0]["balance"].as_string()); @@ -292,7 +285,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.limit = 1; p.reverse = false; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL(true, result.more); if (result.rows.size() >= 1) { BOOST_REQUIRE_EQUAL("8888.0000 BBB", result.rows[0]["balance"].as_string()); @@ -304,7 +297,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_test, TESTER ) try { p.limit = 1; p.reverse = true; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL(true, result.more); if (result.rows.size() >= 1) { BOOST_REQUIRE_EQUAL("7777.0000 CCC", result.rows[0]["balance"].as_string()); @@ -322,8 +315,8 @@ BOOST_FIXTURE_TEST_CASE( get_table_by_seckey_test, TESTER ) try { create_accounts(accs); produce_block(); - set_code( N(eosio.token), eosio_token_wast ); - set_abi( N(eosio.token), eosio_token_abi ); + set_code( N(eosio.token), contracts::eosio_token_wasm() ); + set_abi( N(eosio.token), contracts::eosio_token_abi().data() ); produce_blocks(1); // create currency @@ -342,8 +335,13 @@ BOOST_FIXTURE_TEST_CASE( get_table_by_seckey_test, TESTER ) try { } produce_blocks(1); - set_code( config::system_account_name, eosio_system_wast ); - set_abi( config::system_account_name, eosio_system_abi ); + set_code( config::system_account_name, contracts::eosio_system_wasm() ); + set_abi( config::system_account_name, contracts::eosio_system_abi().data() ); + + base_tester::push_action(config::system_account_name, N(init), + config::system_account_name, mutable_variant_object() + ("version", 0) + ("core", CORE_SYM_STR)); // bidname auto bidname = [this]( const account_name& bidder, const account_name& newname, const asset& bid ) { @@ -370,7 +368,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_by_seckey_test, TESTER ) try { p.index_position = "secondary"; // ordered by high_bid p.key_type = "i64"; eosio::chain_apis::read_only::get_table_rows_result result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(4, result.rows.size()); + BOOST_REQUIRE_EQUAL(4u, result.rows.size()); BOOST_REQUIRE_EQUAL(false, result.more); if (result.rows.size() >= 4) { BOOST_REQUIRE_EQUAL("html", result.rows[0]["newname"].as_string()); @@ -394,7 +392,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_by_seckey_test, TESTER ) try { p.reverse = true; p.show_payer = true; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(4, result.rows.size()); + BOOST_REQUIRE_EQUAL(4u, result.rows.size()); BOOST_REQUIRE_EQUAL(false, result.more); if (result.rows.size() >= 4) { BOOST_REQUIRE_EQUAL("html", result.rows[3]["data"]["newname"].as_string()); @@ -423,7 +421,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_by_seckey_test, TESTER ) try { p.show_payer = false; p.limit = 1; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL(true, result.more); if (result.rows.size() >= 1) { BOOST_REQUIRE_EQUAL("html", result.rows[0]["newname"].as_string()); @@ -436,7 +434,7 @@ BOOST_FIXTURE_TEST_CASE( get_table_by_seckey_test, TESTER ) try { p.show_payer = false; p.limit = 1; result = plugin.read_only::get_table_rows(p); - BOOST_REQUIRE_EQUAL(1, result.rows.size()); + BOOST_REQUIRE_EQUAL(1u, result.rows.size()); BOOST_REQUIRE_EQUAL(true, result.more); if (result.rows.size() >= 1) { BOOST_REQUIRE_EQUAL("com", result.rows[0]["newname"].as_string()); diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt index 6562505ced3..f556edb3568 100644 --- a/unittests/CMakeLists.txt +++ b/unittests/CMakeLists.txt @@ -1,34 +1,56 @@ #file(GLOB COMMON_SOURCES "common/*.cpp") find_package( Gperftools QUIET ) + +### Build contracts with cdt if available ### +include(ExternalProject) + +if( EOSIO_COMPILE_TEST_CONTRACTS ) + set(EOSIO_WASM_OLD_BEHAVIOR "Off") + find_package(eosio.cdt REQUIRED) + + message( STATUS "Building contracts in directory `eos/unittests/test-contracts/`" ) + ExternalProject_Add( + test_contracts_project + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test-contracts + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/test-contracts + CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${EOSIO_CDT_ROOT}/lib/cmake/eosio.cdt/EosioWasmToolchain.cmake -DEOSIO_COMPILE_TEST_CONTRACTS=${EOSIO_COMPILE_TEST_CONTRACTS} + UPDATE_COMMAND "" + PATCH_COMMAND "" + TEST_COMMAND "" + INSTALL_COMMAND "" + BUILD_ALWAYS 1 + ) +else() + message( STATUS "Not building contracts in directory `eos/unittests/test-contracts/`" ) + add_subdirectory(test-contracts) +endif() + if( GPERFTOOLS_FOUND ) message( STATUS "Found gperftools; compiling tests with TCMalloc") list( APPEND PLATFORM_SPECIFIC_LIBS tcmalloc ) endif() -find_package(LLVM 4.0 REQUIRED CONFIG) +find_package(LLVM REQUIRED CONFIG) link_directories(${LLVM_LIBRARY_DIR}) -set( CMAKE_CXX_STANDARD 14 ) +set( CMAKE_CXX_STANDARD 17 ) add_subdirectory(contracts) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/config.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/include/config.hpp ESCAPE_QUOTES) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/contracts.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/include/contracts.hpp ESCAPE_QUOTES) file(GLOB UNIT_TESTS "*.cpp") - -add_executable( unit_test ${UNIT_TESTS} ${WASM_UNIT_TESTS} ) +add_executable( unit_test ${UNIT_TESTS} ) target_link_libraries( unit_test eosio_chain chainbase eosio_testing fc ${PLATFORM_SPECIFIC_LIBS} ) target_include_directories( unit_test PUBLIC ${CMAKE_SOURCE_DIR}/libraries/testing/include - ${CMAKE_SOURCE_DIR}/contracts + ${CMAKE_SOURCE_DIR}/test-contracts ${CMAKE_BINARY_DIR}/contracts ${CMAKE_CURRENT_SOURCE_DIR}/contracts ${CMAKE_CURRENT_BINARY_DIR}/contracts ${CMAKE_CURRENT_BINARY_DIR}/include ) -add_dependencies(unit_test asserter test_api test_api_mem test_api_db test_ram_limit test_api_multi_index eosio.token proxy identity identity_test stltest eosio.system eosio.token eosio.bios multi_index_test noop eosio.msig payloadless tic_tac_toe deferred_test snapshot_test) #Manually run unit_test for all supported runtimes #To run unit_test with all log from blockchain displayed, put --verbose after --, i.e. unit_test -- --verbose diff --git a/unittests/abi_tests.cpp b/unittests/abi_tests.cpp index f611fe768ce..f41f664968e 100644 --- a/unittests/abi_tests.cpp +++ b/unittests/abi_tests.cpp @@ -22,8 +22,6 @@ #include -#include - #include #include @@ -68,7 +66,7 @@ void verify_round_trip_conversion( const abi_serializer& abis, const type_name& auto get_resolver(const abi_def& abi = abi_def()) { - return [&abi](const account_name &name) -> optional { + return [&abi](const account_name &name) -> fc::optional { return abi_serializer(eosio_contract_abi(abi), max_serialization_time); }; } @@ -2275,7 +2273,7 @@ BOOST_AUTO_TEST_CASE(variants) // json -> variant -> abi_def -> bin auto bin = fc::raw::pack(fc::json::from_string(variant_abi).as()); // bin -> abi_def -> variant -> abi_def - abi_serializer abis(variant(fc::raw::unpack(bin)).as(), max_serialization_time ); + abi_serializer abis(fc::variant(fc::raw::unpack(bin)).as(), max_serialization_time ); // duplicate variant definition detected BOOST_CHECK_THROW( abi_serializer( fc::json::from_string(duplicate_variant_abi).as(), max_serialization_time ), duplicate_abi_variant_def_exception ); diff --git a/unittests/api_tests.cpp b/unittests/api_tests.cpp index 955130130fa..bd0336b69f3 100644 --- a/unittests/api_tests.cpp +++ b/unittests/api_tests.cpp @@ -39,16 +39,76 @@ #include #include -#include -#include -#include -#include +#include -#include -#include +#define DUMMY_ACTION_DEFAULT_A 0x45 +#define DUMMY_ACTION_DEFAULT_B 0xab11cd1244556677 +#define DUMMY_ACTION_DEFAULT_C 0x7451ae12 -#define DISABLE_EOSLIB_SERIALIZE -#include +static constexpr unsigned int DJBH(const char* cp) +{ + unsigned int hash = 5381; + while (*cp) + hash = 33 * hash ^ (unsigned char) *cp++; + return hash; +} + +static constexpr unsigned long long WASM_TEST_ACTION(const char* cls, const char* method) +{ + return static_cast(DJBH(cls)) << 32 | static_cast(DJBH(method)); +} + +struct dummy_action { + static eosio::chain::name get_name() { + return N(dummyaction); + } + static eosio::chain::name get_account() { + return N(testapi); + } + + char a; //1 + uint64_t b; //8 + int32_t c; //4 +}; + +struct u128_action { + unsigned __int128 values[3]; //16*3 +}; + +struct cf_action { + static eosio::chain::name get_name() { + return N(cfaction); + } + static eosio::chain::name get_account() { + return N(testapi); + } + + uint32_t payload = 100; + uint32_t cfd_idx = 0; // context free data index +}; + +// Deferred Transaction Trigger Action +struct dtt_action { + static uint64_t get_name() { + return WASM_TEST_ACTION("test_transaction", "send_deferred_tx_with_dtt_action"); + } + static uint64_t get_account() { + return N(testapi); + } + + uint64_t payer = N(testapi); + uint64_t deferred_account = N(testapi); + uint64_t deferred_action = WASM_TEST_ACTION("test_transaction", "deferred_print"); + uint64_t permission_name = N(active); + uint32_t delay_sec = 2; +}; + +struct invalid_access_action { + uint64_t code; + uint64_t val; + uint32_t index; + bool store; +}; FC_REFLECT( dummy_action, (a)(b)(c) ) FC_REFLECT( u128_action, (values) ) @@ -244,48 +304,106 @@ uint32_t last_fnc_err = 0; BOOST_FIXTURE_TEST_CASE(action_receipt_tests, TESTER) { try { produce_blocks(2); - create_account( N(testapi) ); - create_account( N(testapi2) ); - produce_blocks(10); - set_code( N(testapi), test_api_wast ); + create_account( N(test) ); + set_code( N(test), contracts::payloadless_wasm() ); produce_blocks(1); - auto res = CALL_TEST_FUNCTION( *this, "test_action", "assert_true", {}); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.code_sequence), 1); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.abi_sequence), 0); - - set_code( N(testapi), test_api_db_wast ); - set_code( config::system_account_name, test_api_db_wast ); - res = CALL_TEST_FUNCTION( *this, "test_db", "primary_i64_general", {}); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.code_sequence), 2); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.abi_sequence), 0); - - { - signed_transaction trx; - auto pl = vector{{config::system_account_name, config::active_name}}; - action act(pl, test_chain_action{}); - act.authorization = {{config::system_account_name, config::active_name}}; - trx.actions.push_back(act); - this->set_transaction_headers(trx, this->DEFAULT_EXPIRATION_DELTA); - trx.sign(this->get_private_key(config::system_account_name, "active"), control->get_chain_id()); - flat_set keys; - trx.get_signature_keys(control->get_chain_id(), fc::time_point::maximum(), keys); - auto res = this->push_transaction(trx); - BOOST_CHECK_EQUAL(res->receipt->status, transaction_receipt::executed); - this->produce_block(); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.code_sequence), 2); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.abi_sequence), 1); - } - set_code( config::system_account_name, eosio_bios_wast ); - - set_code( N(testapi), eosio_bios_wast ); - set_abi(N(testapi), eosio_bios_abi); - set_code( N(testapi), test_api_wast ); - res = CALL_TEST_FUNCTION( *this, "test_action", "assert_true", {}); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.code_sequence), 4); - BOOST_REQUIRE_EQUAL(uint32_t(res->action_traces[0].receipt.abi_sequence), 1); - -} FC_LOG_AND_RETHROW() } + auto call_doit_and_check = [&]( account_name contract, account_name signer, auto&& checker ) { + signed_transaction trx; + trx.actions.emplace_back( vector{{signer, config::active_name}}, contract, N(doit), bytes{} ); + this->set_transaction_headers( trx, this->DEFAULT_EXPIRATION_DELTA ); + trx.sign( this->get_private_key(signer, "active"), control->get_chain_id() ); + auto res = this->push_transaction(trx); + checker( res ); + }; + + auto call_provereset_and_check = [&]( account_name contract, account_name signer, auto&& checker ) { + signed_transaction trx; + trx.actions.emplace_back( vector{{signer, config::active_name}}, contract, N(provereset), bytes{} ); + this->set_transaction_headers( trx, this->DEFAULT_EXPIRATION_DELTA ); + trx.sign( this->get_private_key(signer, "active"), control->get_chain_id() ); + auto res = this->push_transaction(trx); + checker( res ); + }; + + auto result = push_reqauth( config::system_account_name, "active" ); + BOOST_REQUIRE_EQUAL( result->receipt->status, transaction_receipt::executed ); + BOOST_REQUIRE( result->action_traces[0].receipt.auth_sequence.find( config::system_account_name ) + != result->action_traces[0].receipt.auth_sequence.end() ); + auto base_global_sequence_num = result->action_traces[0].receipt.global_sequence; + auto base_system_recv_seq_num = result->action_traces[0].receipt.recv_sequence; + auto base_system_auth_seq_num = result->action_traces[0].receipt.auth_sequence[config::system_account_name]; + auto base_system_code_seq_num = result->action_traces[0].receipt.code_sequence.value; + auto base_system_abi_seq_num = result->action_traces[0].receipt.abi_sequence.value; + + uint64_t base_test_recv_seq_num = 0; + uint64_t base_test_auth_seq_num = 0; + call_doit_and_check( N(test), N(test), [&]( const transaction_trace_ptr& res ) { + BOOST_CHECK_EQUAL( res->receipt->status, transaction_receipt::executed ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.global_sequence, base_global_sequence_num + 1 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.code_sequence.value, 1 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.abi_sequence.value, 0 ); + base_test_recv_seq_num = res->action_traces[0].receipt.recv_sequence; + BOOST_CHECK( base_test_recv_seq_num > 0 ); + base_test_recv_seq_num--; + const auto& m = res->action_traces[0].receipt.auth_sequence; + BOOST_CHECK_EQUAL( m.size(), 1 ); + BOOST_CHECK_EQUAL( m.begin()->first.to_string(), "test" ); + base_test_auth_seq_num = m.begin()->second; + BOOST_CHECK( base_test_auth_seq_num > 0 ); + --base_test_auth_seq_num; + } ); + + set_code( N(test), contracts::asserter_wasm() ); + set_code( config::system_account_name, contracts::payloadless_wasm() ); + + call_provereset_and_check( N(test), N(test), [&]( const transaction_trace_ptr& res ) { + BOOST_CHECK_EQUAL( res->receipt->status, transaction_receipt::executed ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.global_sequence, base_global_sequence_num + 4 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.recv_sequence, base_test_recv_seq_num + 2 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.code_sequence.value, 2 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.abi_sequence.value, 0 ); + const auto& m = res->action_traces[0].receipt.auth_sequence; + BOOST_CHECK_EQUAL( m.size(), 1 ); + BOOST_CHECK_EQUAL( m.begin()->first.to_string(), "test" ); + BOOST_CHECK_EQUAL( m.begin()->second, base_test_auth_seq_num + 3 ); + } ); + + produce_blocks(1); // Added to avoid the last doit transaction from being considered a duplicate. + // Adding a block also retires an onblock action which increments both the global sequence number + // and the recv and auth sequences numbers for the system account. + + call_doit_and_check( config::system_account_name, N(test), [&]( const transaction_trace_ptr& res ) { + BOOST_CHECK_EQUAL( res->receipt->status, transaction_receipt::executed ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.global_sequence, base_global_sequence_num + 6 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.recv_sequence, base_system_recv_seq_num + 4 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.code_sequence.value, base_system_code_seq_num + 1 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.abi_sequence.value, base_system_abi_seq_num ); + const auto& m = res->action_traces[0].receipt.auth_sequence; + BOOST_CHECK_EQUAL( m.size(), 1 ); + BOOST_CHECK_EQUAL( m.begin()->first.to_string(), "test" ); + BOOST_CHECK_EQUAL( m.begin()->second, base_test_auth_seq_num + 4 ); + } ); + + set_code( config::system_account_name, contracts::eosio_bios_wasm() ); + + set_code( N(test), contracts::eosio_bios_wasm() ); + set_abi( N(test), contracts::eosio_bios_abi().data() ); + set_code( N(test), contracts::payloadless_wasm() ); + + call_doit_and_check( N(test), N(test), [&]( const transaction_trace_ptr& res ) { + BOOST_CHECK_EQUAL( res->receipt->status, transaction_receipt::executed); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.global_sequence, base_global_sequence_num + 11 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.recv_sequence, base_test_recv_seq_num + 3 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.code_sequence.value, 4 ); + BOOST_CHECK_EQUAL( res->action_traces[0].receipt.abi_sequence.value, 1 ); + const auto& m = res->action_traces[0].receipt.auth_sequence; + BOOST_CHECK_EQUAL( m.size(), 1 ); + BOOST_CHECK_EQUAL( m.begin()->first.to_string(), "test" ); + BOOST_CHECK_EQUAL( m.begin()->second, base_test_auth_seq_num + 8 ); + } ); + + } FC_LOG_AND_RETHROW() } /************************************************************************************* * action_tests test case @@ -298,7 +416,7 @@ BOOST_FIXTURE_TEST_CASE(action_tests, TESTER) { try { create_account( N(acc3) ); create_account( N(acc4) ); produce_blocks(10); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); // test assert_true @@ -446,8 +564,8 @@ BOOST_FIXTURE_TEST_CASE(require_notice_tests, TESTER) { try { create_account( N(testapi) ); create_account( N(acc5) ); produce_blocks(1); - set_code( N(testapi), test_api_wast ); - set_code( N(acc5), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); + set_code( N(acc5), contracts::test_api_wasm() ); produce_blocks(1); // test require_notice @@ -469,9 +587,9 @@ BOOST_FIXTURE_TEST_CASE(ram_billing_in_notify_tests, TESTER) { try { create_account( N(testapi) ); create_account( N(testapi2) ); produce_blocks(10); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); - set_code( N(testapi2), test_api_wast ); + set_code( N(testapi2), contracts::test_api_wasm() ); produce_blocks(1); BOOST_CHECK_EXCEPTION( CALL_TEST_FUNCTION( *this, "test_action", "test_ram_billing_in_notify", fc::raw::pack( ((unsigned __int128)N(testapi2) << 64) | N(testapi) ) ), @@ -493,7 +611,7 @@ BOOST_FIXTURE_TEST_CASE(cf_action_tests, TESTER) { try { create_account( N(testapi) ); create_account( N(dummy) ); produce_blocks(10); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); cf_action cfa; signed_transaction trx; @@ -621,7 +739,7 @@ BOOST_FIXTURE_TEST_CASE(cfa_stateful_api, TESTER) try { create_account( N(testapi) ); produce_blocks(1); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); account_name a = N(testapi2); account_name creator = config::system_account_name; @@ -651,7 +769,7 @@ BOOST_FIXTURE_TEST_CASE(deferred_cfa_failed, TESTER) try { create_account( N(testapi) ); produce_blocks(1); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); account_name a = N(testapi2); account_name creator = config::system_account_name; @@ -687,7 +805,7 @@ BOOST_FIXTURE_TEST_CASE(deferred_cfa_success, TESTER) try { create_account( N(testapi) ); produce_blocks(1); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); account_name a = N(testapi2); account_name creator = config::system_account_name; @@ -728,7 +846,7 @@ BOOST_FIXTURE_TEST_CASE(checktime_pass_tests, TESTER) { try { produce_blocks(2); create_account( N(testapi) ); produce_blocks(10); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); // test checktime_pass @@ -738,15 +856,15 @@ BOOST_FIXTURE_TEST_CASE(checktime_pass_tests, TESTER) { try { } FC_LOG_AND_RETHROW() } template -void call_test(TESTER& test, T ac, uint32_t billed_cpu_time_us , uint32_t max_cpu_usage_ms = 200 ) { +void call_test(TESTER& test, T ac, uint32_t billed_cpu_time_us , uint32_t max_cpu_usage_ms = 200, std::vector payload = {} ) { signed_transaction trx; auto pl = vector{{N(testapi), config::active_name}}; action act(pl, ac); + act.data = payload; trx.actions.push_back(act); test.set_transaction_headers(trx); - //trx.max_cpu_usage_ms = max_cpu_usage_ms; auto sigs = trx.sign(test.get_private_key(N(testapi), "active"), test.control->get_chain_id()); flat_set keys; trx.get_signature_keys(test.control->get_chain_id(), fc::time_point::maximum(), keys); @@ -762,7 +880,7 @@ BOOST_AUTO_TEST_CASE(checktime_fail_tests) { try { ilog( "create account" ); t.create_account( N(testapi) ); ilog( "set code" ); - t.set_code( N(testapi), test_api_wast ); + t.set_code( N(testapi), contracts::test_api_wasm() ); ilog( "produce block" ); t.produce_blocks(1); @@ -773,11 +891,11 @@ BOOST_AUTO_TEST_CASE(checktime_fail_tests) { try { #warning TODO call the contract before testing to cache it, and validate that it was cached BOOST_CHECK_EXCEPTION( call_test( t, test_api_action{}, - 5000 ), + 5000, 200, fc::raw::pack(10000000000000000000ULL) ), deadline_exception, is_deadline_exception ); BOOST_CHECK_EXCEPTION( call_test( t, test_api_action{}, - 0 ), + 0, 200, fc::raw::pack(10000000000000000000ULL) ), tx_cpu_usage_exceeded, is_tx_cpu_usage_exceeded ); uint32_t time_left_in_block_us = config::default_max_block_cpu_usage - config::default_min_transaction_cpu_usage; @@ -788,7 +906,7 @@ BOOST_AUTO_TEST_CASE(checktime_fail_tests) { try { time_left_in_block_us -= increment; } BOOST_CHECK_EXCEPTION( call_test( t, test_api_action{}, - 0 ), + 0, 200, fc::raw::pack(10000000000000000000ULL) ), block_cpu_usage_exceeded, is_block_cpu_usage_exceeded ); BOOST_REQUIRE_EQUAL( t.validate(), true ); @@ -858,7 +976,7 @@ BOOST_FIXTURE_TEST_CASE(checktime_hashing_fail, TESTER) { try { produce_blocks(2); create_account( N(testapi) ); produce_blocks(10); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); //hit deadline exception, but cache the contract @@ -904,65 +1022,6 @@ BOOST_FIXTURE_TEST_CASE(checktime_hashing_fail, TESTER) { try { BOOST_REQUIRE_EQUAL( validate(), true ); } FC_LOG_AND_RETHROW() } -/************************************************************************************* - * compiler_builtins_tests test case - *************************************************************************************/ -BOOST_FIXTURE_TEST_CASE(compiler_builtins_tests, TESTER) { try { - produce_blocks(2); - create_account( N(testapi) ); - produce_blocks(10); - set_code( N(testapi), test_api_wast ); - produce_blocks(1); - - // test test_multi3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_multi3", {}); - - // test test_divti3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_divti3", {}); - - // test test_divti3_by_0 - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_divti3_by_0", {}), arithmetic_exception, - [](const fc::exception& e) { - return expect_assert_message(e, "divide by zero"); - } - ); - - // test test_udivti3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_udivti3", {}); - - // test test_udivti3_by_0 - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_udivti3_by_0", {}), arithmetic_exception, - [](const fc::exception& e) { - return expect_assert_message(e, "divide by zero"); - } - ); - - // test test_modti3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_modti3", {}); - - // test test_modti3_by_0 - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_modti3_by_0", {}), arithmetic_exception, - [](const fc::exception& e) { - return expect_assert_message(e, "divide by zero"); - } - ); - - // test test_lshlti3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_lshlti3", {}); - - // test test_lshrti3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_lshrti3", {}); - - // test test_ashlti3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_ashlti3", {}); - - // test test_ashrti3 - CALL_TEST_FUNCTION( *this, "test_compiler_builtins", "test_ashrti3", {}); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - - /************************************************************************************* * transaction_tests test case *************************************************************************************/ @@ -970,7 +1029,7 @@ BOOST_FIXTURE_TEST_CASE(transaction_tests, TESTER) { try { produce_blocks(2); create_account( N(testapi) ); produce_blocks(100); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); // test for zero auth @@ -1056,8 +1115,8 @@ BOOST_FIXTURE_TEST_CASE(transaction_tests, TESTER) { try { BOOST_FIXTURE_TEST_CASE(deferred_transaction_tests, TESTER) { try { produce_blocks(2); create_accounts( {N(testapi), N(testapi2), N(alice)} ); - set_code( N(testapi), test_api_wast ); - set_code( N(testapi2), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); + set_code( N(testapi2), contracts::test_api_wasm() ); produce_blocks(1); //schedule @@ -1277,7 +1336,7 @@ BOOST_FIXTURE_TEST_CASE(chain_tests, TESTER) { try { create_accounts( producers ); set_producers (producers ); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(100); vector prods( control->active_producers().producers.size() ); @@ -1298,83 +1357,104 @@ BOOST_FIXTURE_TEST_CASE(db_tests, TESTER) { try { create_account( N(testapi) ); create_account( N(testapi2) ); produce_blocks(10); - set_code( N(testapi), test_api_db_wast ); - set_code( N(testapi2), test_api_db_wast ); + set_code( N(testapi), contracts::test_api_db_wasm() ); + set_abi( N(testapi), contracts::test_api_db_abi().data() ); + set_code( N(testapi2), contracts::test_api_db_wasm() ); + set_abi( N(testapi2), contracts::test_api_db_abi().data() ); produce_blocks(1); - 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", {}); + push_action( N(testapi), N(pg), N(testapi), mutable_variant_object() ); // primary_i64_general + push_action( N(testapi), N(pl), N(testapi), mutable_variant_object() ); // primary_i64_lowerbound + push_action( N(testapi), N(pu), N(testapi), mutable_variant_object() ); // primary_i64_upperbound + push_action( N(testapi), N(s1g), N(testapi), mutable_variant_object() ); // idx64_general + push_action( N(testapi), N(s1l), N(testapi), mutable_variant_object() ); // idx64_lowerbound + push_action( N(testapi), N(s1u), N(testapi), mutable_variant_object() ); // idx64_upperbound // Store value in primary table - invalid_access_action ia1{.code = N(testapi), .val = 10, .index = 0, .store = true}; - auto res = push_action( action({{N(testapi), config::active_name}}, - N(testapi), WASM_TEST_ACTION("test_db", "test_invalid_access"), - fc::raw::pack(ia1)), - N(testapi) ); - BOOST_CHECK_EQUAL( res, success() ); + push_action( N(testapi), N(tia), N(testapi), mutable_variant_object() // test_invalid_access + ("code", "testapi") + ("val", 10) + ("index", 0) + ("store", true) + ); // Attempt to change the value stored in the primary table under the code of N(testapi) - invalid_access_action ia2{.code = ia1.code, .val = 20, .index = 0, .store = true}; - res = push_action( action({{N(testapi2), config::active_name}}, - N(testapi2), WASM_TEST_ACTION("test_db", "test_invalid_access"), - fc::raw::pack(ia2)), - N(testapi2) ); - wdump((res)); - BOOST_CHECK_EQUAL( boost::algorithm::ends_with(res, "db access violation"), true ); - + BOOST_CHECK_EXCEPTION( push_action( N(testapi2), N(tia), N(testapi2), mutable_variant_object() + ("code", "testapi") + ("val", "20") + ("index", 0) + ("store", true) + ), table_access_violation, + fc_exception_message_is("db access violation") + ); // Verify that the value has not changed. - ia1.store = false; - res = push_action( action({{N(testapi), config::active_name}}, - N(testapi), WASM_TEST_ACTION("test_db", "test_invalid_access"), - fc::raw::pack(ia1)), - N(testapi) ); - BOOST_CHECK_EQUAL( res, success() ); + push_action( N(testapi), N(tia), N(testapi), mutable_variant_object() + ("code", "testapi") + ("val", 10) + ("index", 0) + ("store", false) + ); // Store value in secondary table - ia1.store = true; ia1.index = 1; - res = push_action( action({{N(testapi), config::active_name}}, - N(testapi), WASM_TEST_ACTION("test_db", "test_invalid_access"), - fc::raw::pack(ia1)), - N(testapi) ); - BOOST_CHECK_EQUAL( res, success() ); + push_action( N(testapi), N(tia), N(testapi), mutable_variant_object() // test_invalid_access + ("code", "testapi") + ("val", 10) + ("index", 1) + ("store", true) + ); // Attempt to change the value stored in the secondary table under the code of N(testapi) - ia2.index = 1; - res = push_action( action({{N(testapi2), config::active_name}}, - N(testapi2), WASM_TEST_ACTION("test_db", "test_invalid_access"), - fc::raw::pack(ia2)), - N(testapi2) ); - BOOST_CHECK_EQUAL( boost::algorithm::ends_with(res, "db access violation"), true ); + BOOST_CHECK_EXCEPTION( push_action( N(testapi2), N(tia), N(testapi2), mutable_variant_object() + ("code", "testapi") + ("val", "20") + ("index", 1) + ("store", true) + ), table_access_violation, + fc_exception_message_is("db access violation") + ); // Verify that the value has not changed. - ia1.store = false; - res = push_action( action({{N(testapi), config::active_name}}, - N(testapi), WASM_TEST_ACTION("test_db", "test_invalid_access"), - fc::raw::pack(ia1)), - N(testapi) ); - BOOST_CHECK_EQUAL( res, success() ); - - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_db", "idx_double_nan_create_fail", {}, - transaction_exception, "NaN is not an allowed value for a secondary key"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_db", "idx_double_nan_modify_fail", {}, - transaction_exception, "NaN is not an allowed value for a secondary key"); - - uint32_t lookup_type = 0; // 0 for find, 1 for lower bound, and 2 for upper bound; - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_db", "idx_double_nan_lookup_fail", fc::raw::pack(lookup_type), - transaction_exception, "NaN is not an allowed value for a secondary key"); - lookup_type = 1; - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_db", "idx_double_nan_lookup_fail", fc::raw::pack(lookup_type), - transaction_exception, "NaN is not an allowed value for a secondary key"); - lookup_type = 2; - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_db", "idx_double_nan_lookup_fail", fc::raw::pack(lookup_type), - transaction_exception, "NaN is not an allowed value for a secondary key"); - - CALL_TEST_FUNCTION( *this, "test_db", "misaligned_secondary_key256_tests", {}); + push_action( N(testapi), N(tia), N(testapi), mutable_variant_object() + ("code", "testapi") + ("val", 10) + ("index", 1) + ("store", false) + ); + + // idx_double_nan_create_fail + BOOST_CHECK_EXCEPTION( push_action( N(testapi), N(sdnancreate), N(testapi), mutable_variant_object() ), + transaction_exception, + fc_exception_message_is("NaN is not an allowed value for a secondary key") + ); + + // idx_double_nan_modify_fail + BOOST_CHECK_EXCEPTION( push_action( N(testapi), N(sdnanmodify), N(testapi), mutable_variant_object() ), + transaction_exception, + fc_exception_message_is("NaN is not an allowed value for a secondary key") + ); + + // idx_double_nan_lookup_fail + BOOST_CHECK_EXCEPTION( push_action( N(testapi), N(sdnanlookup), N(testapi), mutable_variant_object() + ("lookup_type", 0) // 0 for find + ), transaction_exception, + fc_exception_message_is("NaN is not an allowed value for a secondary key") + ); + + BOOST_CHECK_EXCEPTION( push_action( N(testapi), N(sdnanlookup), N(testapi), mutable_variant_object() + ("lookup_type", 1) // 1 for lower bound + ), transaction_exception, + fc_exception_message_is("NaN is not an allowed value for a secondary key") + ); + + BOOST_CHECK_EXCEPTION( push_action( N(testapi), N(sdnanlookup), N(testapi), mutable_variant_object() + ("lookup_type", 2) // 2 for upper bound + ), transaction_exception, + fc_exception_message_is("NaN is not an allowed value for a secondary key") + ); + + push_action( N(testapi), N(sk32align), N(testapi), mutable_variant_object() ); // misaligned_secondary_key256_tests + BOOST_REQUIRE_EQUAL( validate(), true ); } FC_LOG_AND_RETHROW() } @@ -1385,80 +1465,51 @@ BOOST_FIXTURE_TEST_CASE(multi_index_tests, TESTER) { try { produce_blocks(1); create_account( N(testapi) ); produce_blocks(1); - set_code( N(testapi), test_api_multi_index_wast ); + set_code( N(testapi), contracts::test_api_multi_index_wasm() ); + set_abi( N(testapi), contracts::test_api_multi_index_abi().data() ); produce_blocks(1); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx64_general", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx64_store_only", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx64_check_without_storing", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx128_general", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx128_store_only", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx128_check_without_storing", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx128_autoincrement_test", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx128_autoincrement_test_part1", {}); - 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( *this, "test_multi_index", "idx_long_double_general", {}); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pk_iterator_exceed_end", {}, - eosio_assert_message_exception, "cannot increment end iterator"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_sk_iterator_exceed_end", {}, - eosio_assert_message_exception, "cannot increment end iterator"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pk_iterator_exceed_begin", {}, - eosio_assert_message_exception, "cannot decrement iterator at beginning of table"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_sk_iterator_exceed_begin", {}, - eosio_assert_message_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", {}, - eosio_assert_message_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", {}, - eosio_assert_message_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", {}, - eosio_assert_message_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", {}, - eosio_assert_message_exception, "cannot pass end iterator to modify"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_pk_end_itr_to_erase", {}, - eosio_assert_message_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", {}, - eosio_assert_message_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", {}, - eosio_assert_message_exception, "cannot pass end iterator to modify"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_pass_sk_end_itr_to_erase", {}, - eosio_assert_message_exception, "cannot pass end iterator to erase"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_modify_primary_key", {}, - eosio_assert_message_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", {}, - eosio_assert_message_exception, "next primary key in table is at autoincrement limit"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_require_find_fail", {}, - eosio_assert_message_exception, "unable to find key"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_require_find_fail_with_msg", {}, - eosio_assert_message_exception, "unable to find primary key in require_find"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_require_find_sk_fail", {}, - eosio_assert_message_exception, "unable to find secondary key"); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_multi_index", "idx64_require_find_sk_fail_with_msg", {}, - eosio_assert_message_exception, "unable to find sec key"); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx64_sk_cache_pk_lookup", {}); - CALL_TEST_FUNCTION( *this, "test_multi_index", "idx64_pk_cache_sk_lookup", {}); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - -/************************************************************************************* - * fixedpoint_tests test case - *************************************************************************************/ -BOOST_FIXTURE_TEST_CASE(fixedpoint_tests, TESTER) { try { - produce_blocks(2); - create_account( N(testapi) ); - produce_blocks(10); - set_code( N(testapi), test_api_wast ); - produce_blocks(10); + auto check_failure = [this]( action_name a, const char* expected_error_msg ) { + BOOST_CHECK_EXCEPTION( push_action( N(testapi), a, N(testapi), {} ), + eosio_assert_message_exception, + eosio_assert_message_is( expected_error_msg ) + ); + }; - CALL_TEST_FUNCTION( *this, "test_fixedpoint", "create_instances", {}); - CALL_TEST_FUNCTION( *this, "test_fixedpoint", "test_addition", {}); - CALL_TEST_FUNCTION( *this, "test_fixedpoint", "test_subtraction", {}); - CALL_TEST_FUNCTION( *this, "test_fixedpoint", "test_multiplication", {}); - CALL_TEST_FUNCTION( *this, "test_fixedpoint", "test_division", {}); - CALL_TEST_FUNCTION_AND_CHECK_EXCEPTION( *this, "test_fixedpoint", "test_division_by_0", {}, - eosio_assert_message_exception, "divide by zero" ); + push_action( N(testapi), N(s1g), N(testapi), {} ); // idx64_general + push_action( N(testapi), N(s1store), N(testapi), {} ); // idx64_store_only + push_action( N(testapi), N(s1check), N(testapi), {} ); // idx64_check_without_storing + push_action( N(testapi), N(s2g), N(testapi), {} ); // idx128_general + push_action( N(testapi), N(s2store), N(testapi), {} ); // idx128_store_only + push_action( N(testapi), N(s2check), N(testapi), {} ); // idx128_check_without_storing + push_action( N(testapi), N(s2autoinc), N(testapi), {} ); // idx128_autoincrement_test + push_action( N(testapi), N(s2autoinc1), N(testapi), {} ); // idx128_autoincrement_test_part1 + push_action( N(testapi), N(s2autoinc2), N(testapi), {} ); // idx128_autoincrement_test_part2 + push_action( N(testapi), N(s3g), N(testapi), {} ); // idx256_general + push_action( N(testapi), N(sdg), N(testapi), {} ); // idx_double_general + push_action( N(testapi), N(sldg), N(testapi), {} ); // idx_long_double_general + + check_failure( N(s1pkend), "cannot increment end iterator" ); // idx64_pk_iterator_exceed_end + check_failure( N(s1skend), "cannot increment end iterator" ); // idx64_sk_iterator_exceed_end + check_failure( N(s1pkbegin), "cannot decrement iterator at beginning of table" ); // idx64_pk_iterator_exceed_begin + check_failure( N(s1skbegin), "cannot decrement iterator at beginning of index" ); // idx64_sk_iterator_exceed_begin + check_failure( N(s1pkref), "object passed to iterator_to is not in multi_index" ); // idx64_pass_pk_ref_to_other_table + check_failure( N(s1skref), "object passed to iterator_to is not in multi_index" ); // idx64_pass_sk_ref_to_other_table + check_failure( N(s1pkitrto), "object passed to iterator_to is not in multi_index" ); // idx64_pass_pk_end_itr_to_iterator_to + check_failure( N(s1pkmodify), "cannot pass end iterator to modify" ); // idx64_pass_pk_end_itr_to_modify + check_failure( N(s1pkerase), "cannot pass end iterator to erase" ); // idx64_pass_pk_end_itr_to_erase + check_failure( N(s1skitrto), "object passed to iterator_to is not in multi_index" ); // idx64_pass_sk_end_itr_to_iterator_to + check_failure( N(s1skmodify), "cannot pass end iterator to modify" ); // idx64_pass_sk_end_itr_to_modify + check_failure( N(s1skerase), "cannot pass end iterator to erase" ); // idx64_pass_sk_end_itr_to_erase + check_failure( N(s1modpk), "updater cannot change primary key when modifying an object" ); // idx64_modify_primary_key + check_failure( N(s1exhaustpk), "next primary key in table is at autoincrement limit" ); // idx64_run_out_of_avl_pk + check_failure( N(s1findfail1), "unable to find key" ); // idx64_require_find_fail + check_failure( N(s1findfail2), "unable to find primary key in require_find" );// idx64_require_find_fail_with_msg + check_failure( N(s1findfail3), "unable to find secondary key" ); // idx64_require_find_sk_fail + check_failure( N(s1findfail4), "unable to find sec key" ); // idx64_require_find_sk_fail_with_msg + + push_action( N(testapi), N(s1skcache), N(testapi), {} ); // idx64_sk_cache_pk_lookup + push_action( N(testapi), N(s1pkcache), N(testapi), {} ); // idx64_pk_cache_sk_lookup BOOST_REQUIRE_EQUAL( validate(), true ); } FC_LOG_AND_RETHROW() } @@ -1467,13 +1518,13 @@ BOOST_FIXTURE_TEST_CASE(fixedpoint_tests, TESTER) { try { * crypto_tests test cases *************************************************************************************/ BOOST_FIXTURE_TEST_CASE(crypto_tests, TESTER) { try { - produce_blocks(1000); + produce_block(); create_account(N(testapi) ); - produce_blocks(1000); - set_code(N(testapi), test_api_wast); - produce_blocks(1000); - { - signed_transaction trx; + produce_block(); + set_code(N(testapi), contracts::test_api_wasm() ); + produce_block(); + { + signed_transaction trx; auto pl = vector{{N(testapi), config::active_name}}; @@ -1489,6 +1540,7 @@ BOOST_FIXTURE_TEST_CASE(crypto_tests, TESTER) { try { payload.insert( payload.end(), sigs.begin(), sigs.end() ); CALL_TEST_FUNCTION( *this, "test_crypto", "test_recover_key", payload ); + // Error Here CALL_TEST_FUNCTION( *this, "test_crypto", "test_recover_key_assert_true", payload ); payload[payload.size()-1] = 0; BOOST_CHECK_EXCEPTION( CALL_TEST_FUNCTION( *this, "test_crypto", "test_recover_key_assert_false", payload ), @@ -1527,118 +1579,6 @@ BOOST_FIXTURE_TEST_CASE(crypto_tests, TESTER) { try { BOOST_REQUIRE_EQUAL( validate(), true ); } FC_LOG_AND_RETHROW() } - -/************************************************************************************* - * memory_tests test cases - *************************************************************************************/ -BOOST_FIXTURE_TEST_CASE(memory_tests, TESTER) { try { - produce_blocks(1000); - create_account(N(testapi) ); - produce_blocks(1000); - set_code(N(testapi), test_api_mem_wast); - produce_blocks(1000); - - CALL_TEST_FUNCTION( *this, "test_memory", "test_memory_allocs", {} ); - produce_blocks(1000); - CALL_TEST_FUNCTION( *this, "test_memory", "test_memory_hunk", {} ); - produce_blocks(1000); - CALL_TEST_FUNCTION( *this, "test_memory", "test_memory_hunks", {} ); - produce_blocks(1000); - //Disabling this for now as it fails due to malloc changes for variable wasm max memory sizes -#if 0 - CALL_TEST_FUNCTION( *this, "test_memory", "test_memory_hunks_disjoint", {} ); - produce_blocks(1000); -#endif - CALL_TEST_FUNCTION( *this, "test_memory", "test_memset_memcpy", {} ); - produce_blocks(1000); - BOOST_CHECK_THROW( CALL_TEST_FUNCTION( *this, "test_memory", "test_memcpy_overlap_start", {} ), overlapping_memory_error ); - produce_blocks(1000); - BOOST_CHECK_THROW( CALL_TEST_FUNCTION( *this, "test_memory", "test_memcpy_overlap_end", {} ), overlapping_memory_error ); - produce_blocks(1000); - CALL_TEST_FUNCTION( *this, "test_memory", "test_memcmp", {} ); - produce_blocks(1000); - -#define test_memory_oob(func) \ - try { \ - CALL_TEST_FUNCTION( *this, "test_memory", func, {} ); \ - BOOST_FAIL("assert failed in test out of bound memory in " func); \ - } catch (...) { \ - BOOST_REQUIRE_EQUAL(true, true); \ - } - -#define test_memory_oob2(func) \ - try { \ - CALL_TEST_FUNCTION( *this, "test_memory", func, {} );\ - } catch (const fc::exception& e) {\ - if (!expect_assert_message(e, "access violation")) throw; \ - } - - test_memory_oob("test_outofbound_0"); - test_memory_oob("test_outofbound_1"); - test_memory_oob("test_outofbound_2"); - test_memory_oob("test_outofbound_3"); - test_memory_oob("test_outofbound_4"); - test_memory_oob("test_outofbound_5"); - test_memory_oob("test_outofbound_6"); - test_memory_oob("test_outofbound_7"); - test_memory_oob("test_outofbound_8"); - test_memory_oob("test_outofbound_9"); - test_memory_oob("test_outofbound_10"); - test_memory_oob("test_outofbound_11"); - test_memory_oob("test_outofbound_12"); - test_memory_oob("test_outofbound_13"); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - - -/************************************************************************************* - * extended_memory_tests test cases - *************************************************************************************/ -BOOST_FIXTURE_TEST_CASE(extended_memory_test_initial_memory, TESTER) { try { - produce_blocks(1000); - create_account(N(testapi) ); - produce_blocks(1000); - set_code(N(testapi), test_api_mem_wast); - produce_blocks(1000); - CALL_TEST_FUNCTION( *this, "test_extended_memory", "test_initial_buffer", {} ); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - -BOOST_FIXTURE_TEST_CASE(extended_memory_test_page_memory, TESTER) { try { - produce_blocks(1000); - create_account(N(testapi) ); - produce_blocks(1000); - set_code(N(testapi), test_api_mem_wast); - produce_blocks(1000); - CALL_TEST_FUNCTION( *this, "test_extended_memory", "test_page_memory", {} ); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - -BOOST_FIXTURE_TEST_CASE(extended_memory_test_page_memory_exceeded, TESTER) { try { - produce_blocks(1000); - create_account(N(testapi) ); - produce_blocks(1000); - set_code(N(testapi), test_api_mem_wast); - produce_blocks(1000); - CALL_TEST_FUNCTION( *this, "test_extended_memory", "test_page_memory_exceeded", {} ); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - -BOOST_FIXTURE_TEST_CASE(extended_memory_test_page_memory_negative_bytes, TESTER) { try { - produce_blocks(1000); - create_account(N(testapi) ); - produce_blocks(1000); - set_code(N(testapi), test_api_mem_wast); - produce_blocks(1000); - CALL_TEST_FUNCTION( *this, "test_extended_memory", "test_page_memory_negative_bytes", {} ); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - /************************************************************************************* * print_tests test case *************************************************************************************/ @@ -1647,7 +1587,7 @@ BOOST_FIXTURE_TEST_CASE(print_tests, TESTER) { try { create_account(N(testapi) ); produce_blocks(1000); - set_code(N(testapi), test_api_wast); + set_code(N(testapi), contracts::test_api_wasm() ); produce_blocks(1000); string captured = ""; @@ -1679,14 +1619,26 @@ BOOST_FIXTURE_TEST_CASE(print_tests, TESTER) { try { // test printn auto tx5_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_printn", {} ); auto tx5_act_cnsl = tx5_trace->action_traces.front().console; - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(0,5), "abcde" ); - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(5, 5), "ab.de" ); - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(10, 6), "1q1q1q"); - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(16, 11), "abcdefghijk"); - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(27, 12), "abcdefghijkl"); - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(39, 13), "abcdefghijkl1"); - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(52, 13), "abcdefghijkl1"); - BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(65, 13), "abcdefghijkl1"); + + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(0,1), "1" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(1,1), "5" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(2,1), "a" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(3,1), "z" ); + + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(4,3), "abc" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(7,3), "123" ); + + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(10,7), "abc.123" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(17,7), "123.abc" ); + + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(24,13), "12345abcdefgj" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(37,13), "ijklmnopqrstj" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(50,13), "vwxyz.12345aj" ); + + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(63, 13), "111111111111j" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(76, 13), "555555555555j" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(89, 13), "aaaaaaaaaaaaj" ); + BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(102,13), "zzzzzzzzzzzzj" ); // test printi128 auto tx6_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_printi128", {} ); @@ -1761,13 +1713,12 @@ BOOST_FIXTURE_TEST_CASE(types_tests, TESTER) { try { create_account( N(testapi) ); produce_blocks(1000); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1000); CALL_TEST_FUNCTION( *this, "test_types", "types_size", {}); CALL_TEST_FUNCTION( *this, "test_types", "char_to_symbol", {}); CALL_TEST_FUNCTION( *this, "test_types", "string_to_name", {}); - CALL_TEST_FUNCTION( *this, "test_types", "name_class", {}); BOOST_REQUIRE_EQUAL( validate(), true ); } FC_LOG_AND_RETHROW() } @@ -1780,7 +1731,7 @@ BOOST_FIXTURE_TEST_CASE(permission_tests, TESTER) { try { create_account( N(testapi) ); produce_blocks(1); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); auto get_result_int64 = [&]() -> int64_t { @@ -1863,20 +1814,6 @@ BOOST_FIXTURE_TEST_CASE(permission_tests, TESTER) { try { ); BOOST_CHECK_EQUAL( int64_t(0), get_result_int64() ); - /* - BOOST_CHECK_EXCEPTION(CALL_TEST_FUNCTION( *this, "test_permission", "check_authorization", - fc::raw::pack( check_auth { - .account = N(testapi), - .permission = N(noname), - .pubkeys = { - get_public_key(N(testapi), "active") - } - })), fc::exception, - [](const fc::exception& e) { - return expect_assert_message(e, "unknown key"); - } - ); - */ } FC_LOG_AND_RETHROW() } #if 0 @@ -1888,7 +1825,7 @@ BOOST_FIXTURE_TEST_CASE(privileged_tests, tester) { try { create_account( N(testapi) ); create_account( N(acc1) ); produce_blocks(100); - set_code( N(testapi), test_api_wast ); + set_code( N(testapi), contracts::test_api_wasm() ); produce_blocks(1); { @@ -1950,7 +1887,7 @@ BOOST_FIXTURE_TEST_CASE(datastream_tests, TESTER) { try { produce_blocks(1000); create_account(N(testapi) ); produce_blocks(1000); - set_code(N(testapi), test_api_wast); + set_code(N(testapi), contracts::test_api_wasm() ); produce_blocks(1000); CALL_TEST_FUNCTION( *this, "test_datastream", "test_basic", {} ); @@ -1958,45 +1895,6 @@ BOOST_FIXTURE_TEST_CASE(datastream_tests, TESTER) { try { BOOST_REQUIRE_EQUAL( validate(), true ); } FC_LOG_AND_RETHROW() } -/************************************************************************************* - * new api feature test - *************************************************************************************/ -BOOST_FIXTURE_TEST_CASE(new_api_feature_tests, TESTER) { try { - - produce_blocks(1); - create_account(N(testapi) ); - produce_blocks(1); - set_code(N(testapi), test_api_wast); - produce_blocks(1); - - BOOST_CHECK_EXCEPTION( CALL_TEST_FUNCTION( *this, "test_transaction", "new_feature", {} ), - unaccessible_api, - [](const fc::exception& e) { - return expect_assert_message(e, "testapi does not have permission to call this API"); - }); - - BOOST_CHECK_EXCEPTION( CALL_TEST_FUNCTION( *this, "test_transaction", "active_new_feature", {} ), - unaccessible_api, - [](const fc::exception& e) { - return expect_assert_message(e, "testapi does not have permission to call this API"); - }); - - // change privilege - push_action(config::system_account_name, N(setpriv), config::system_account_name, mutable_variant_object() - ("account", "testapi") - ("is_priv", 1)); - - CALL_TEST_FUNCTION( *this, "test_transaction", "new_feature", {} ); - - BOOST_CHECK_EXCEPTION( CALL_TEST_FUNCTION( *this, "test_transaction", "active_new_feature", {} ), - unsupported_feature, - [](const fc::exception& e) { - return expect_assert_message(e, "Unsupported Hardfork Detected"); - }); - - BOOST_REQUIRE_EQUAL( validate(), true ); -} FC_LOG_AND_RETHROW() } - /************************************************************************************* * permission_usage_tests test cases *************************************************************************************/ @@ -2004,7 +1902,7 @@ BOOST_FIXTURE_TEST_CASE(permission_usage_tests, TESTER) { try { produce_block(); create_accounts( {N(testapi), N(alice), N(bob)} ); produce_block(); - set_code(N(testapi), test_api_wast); + set_code(N(testapi), contracts::test_api_wasm() ); produce_block(); push_reqauth( N(alice), {{N(alice), config::active_name}}, {get_private_key(N(alice), "active")} ); @@ -2085,7 +1983,7 @@ BOOST_FIXTURE_TEST_CASE(account_creation_time_tests, TESTER) { try { produce_block(); create_account( N(testapi) ); produce_block(); - set_code(N(testapi), test_api_wast); + set_code(N(testapi), contracts::test_api_wasm()); produce_block(); create_account( N(alice) ); @@ -2112,7 +2010,7 @@ BOOST_FIXTURE_TEST_CASE(eosio_assert_code_tests, TESTER) { try { produce_block(); create_account( N(testapi) ); produce_block(); - set_code(N(testapi), test_api_wast); + set_code(N(testapi), contracts::test_api_wasm() ); const char* abi_string = R"=====( { diff --git a/unittests/bootseq_tests.cpp b/unittests/bootseq_tests.cpp index 05b0f050951..ca325f86585 100644 --- a/unittests/bootseq_tests.cpp +++ b/unittests/bootseq_tests.cpp @@ -1,19 +1,14 @@ -#include -#include #include - -#include -#include -// These contracts are still under dev -#include -#include -#include -#include +#include #include #include +#include + +#include + #ifdef NON_VALIDATING_TEST #define TESTER tester #else @@ -34,10 +29,10 @@ struct genesis_account { }; std::vector test_genesis( { - {N(b1), 100'000'000'0000ll}, - {N(whale4), 40'000'000'0000ll}, - {N(whale3), 30'000'000'0000ll}, - {N(whale2), 20'000'000'0000ll}, + {N(b1), 100'000'000'0000ll}, + {N(whale4), 40'000'000'0000ll}, + {N(whale3), 30'000'000'0000ll}, + {N(whale2), 20'000'000'0000ll}, {N(proda), 1'000'000'0000ll}, {N(prodb), 1'000'000'0000ll}, {N(prodc), 1'000'000'0000ll}, @@ -59,17 +54,32 @@ std::vector test_genesis( { {N(prods), 1'000'000'0000ll}, {N(prodt), 1'000'000'0000ll}, {N(produ), 1'000'000'0000ll}, - {N(runnerup1),1'000'000'0000ll}, - {N(runnerup2),1'000'000'0000ll}, - {N(runnerup3),1'000'000'0000ll}, - {N(minow1), 100'0000ll}, - {N(minow2), 1'0000ll}, - {N(minow3), 1'0000ll}, - {N(masses),800'000'000'0000ll} + {N(runnerup1), 1'000'000'0000ll}, + {N(runnerup2), 1'000'000'0000ll}, + {N(runnerup3), 1'000'000'0000ll}, + {N(minow1), 100'0000ll}, + {N(minow2), 1'0000ll}, + {N(minow3), 1'0000ll}, + {N(masses), 800'000'000'0000ll} }); class bootseq_tester : public TESTER { public: + void deploy_contract( bool call_init = true ) { + set_code( config::system_account_name, contracts::eosio_system_wasm() ); + set_abi( config::system_account_name, contracts::eosio_system_abi().data() ); + if( call_init ) { + base_tester::push_action(config::system_account_name, N(init), + config::system_account_name, mutable_variant_object() + ("version", 0) + ("core", CORE_SYM_STR) + ); + } + const auto& accnt = control->db().get( config::system_account_name ); + abi_def abi; + BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); + abi_ser.set_abi(abi, abi_serializer_max_time); + } fc::variant get_global_state() { vector data = get_row_by_account( config::system_account_name, config::system_account_name, N(global), N(global) ); @@ -157,12 +167,12 @@ class bootseq_tester : public TESTER { return get_currency_balance(N(eosio.token), symbol(CORE_SYMBOL), act); } - void set_code_abi(const account_name& account, const char* wast, const char* abi, const private_key_type* signer = nullptr) { + void set_code_abi(const account_name& account, const vector& wasm, const char* abi, const private_key_type* signer = nullptr) { wdump((account)); - set_code(account, wast, signer); + set_code(account, wasm, signer); set_abi(account, abi, signer); if (account == config::system_account_name) { - const auto& accnt = control->db().get( account ); + const auto& accnt = control->db().get( account ); abi_def abi_definition; BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi_definition), true); abi_ser.set_abi(abi_definition, abi_serializer_max_time); @@ -186,18 +196,25 @@ BOOST_FIXTURE_TEST_CASE( bootseq_test, bootseq_tester ) { // - eosio (code: eosio.bios) (already set by tester constructor) // - eosio.msig (code: eosio.msig) // - eosio.token (code: eosio.token) - set_code_abi(N(eosio.msig), eosio_msig_wast, eosio_msig_abi);//, &eosio_active_pk); - set_code_abi(N(eosio.token), eosio_token_wast, eosio_token_abi); //, &eosio_active_pk); + // set_code_abi(N(eosio.msig), contracts::eosio_msig_wasm(), contracts::eosio_msig_abi().data());//, &eosio_active_pk); + // set_code_abi(N(eosio.token), contracts::eosio_token_wasm(), contracts::eosio_token_abi().data()); //, &eosio_active_pk); + + set_code_abi(N(eosio.msig), + contracts::eosio_msig_wasm(), + contracts::eosio_msig_abi().data());//, &eosio_active_pk); + set_code_abi(N(eosio.token), + contracts::eosio_token_wasm(), + contracts::eosio_token_abi().data()); //, &eosio_active_pk); // Set privileged for eosio.msig and eosio.token set_privileged(N(eosio.msig)); set_privileged(N(eosio.token)); // Verify eosio.msig and eosio.token is privileged - const auto& eosio_msig_acc = get(N(eosio.msig)); - BOOST_TEST(eosio_msig_acc.privileged == true); - const auto& eosio_token_acc = get(N(eosio.token)); - BOOST_TEST(eosio_token_acc.privileged == true); + const auto& eosio_msig_acc = get(N(eosio.msig)); + BOOST_TEST(eosio_msig_acc.is_privileged() == true); + const auto& eosio_token_acc = get(N(eosio.token)); + BOOST_TEST(eosio_token_acc.is_privileged() == true); // Create SYS tokens in eosio.token, set its manager as eosio @@ -215,8 +232,7 @@ BOOST_FIXTURE_TEST_CASE( bootseq_test, bootseq_tester ) { create_account( a.aname, config::system_account_name ); } - // Set eosio.system to eosio - set_code_abi(config::system_account_name, eosio_system_wast, eosio_system_abi); + deploy_contract(); // Buy ram and stake cpu and net for each genesis accounts for( const auto& a : test_genesis ) { diff --git a/unittests/contracts.hpp.in b/unittests/contracts.hpp.in new file mode 100644 index 00000000000..d0edad55c10 --- /dev/null +++ b/unittests/contracts.hpp.in @@ -0,0 +1,53 @@ +#pragma once + +#include + +#define CORE_SYM_NAME "${CORE_SYMBOL_NAME}" +#define CORE_SYM_PRECISION 4 + +#define _STRINGIZE1(x) #x +#define _STRINGIZE2(x) _STRINGIZE1(x) + +#define CORE_SYM_STR ( _STRINGIZE2(CORE_SYM_PRECISION) "," CORE_SYM_NAME ) +#define CORE_SYM ( ::eosio::chain::string_to_symbol_c( CORE_SYM_PRECISION, CORE_SYM_NAME ) ) + +struct core_sym { + static inline eosio::chain::asset from_string(const std::string& s) { + return eosio::chain::asset::from_string(s + " " CORE_SYM_NAME); + } +}; + +// CN -> contract C++ name, C -> contract name, D -> top level directory +#define MAKE_READ_WASM_ABI(CN,C, D) \ + static std::vector CN ## _wasm() { return read_wasm("${CMAKE_BINARY_DIR}/unittests/" #D "/" #C "/" #C ".wasm"); } \ + static std::vector CN ## _abi() { return read_abi("${CMAKE_BINARY_DIR}/unittests/" #D "/" #C "/" #C ".abi"); } + +namespace eosio { + namespace testing { + struct contracts { + // Contracts in `eos/unittests/contracts' directory + MAKE_READ_WASM_ABI(eosio_bios, eosio.bios, contracts) + MAKE_READ_WASM_ABI(eosio_msig, eosio.msig, contracts) + MAKE_READ_WASM_ABI(eosio_system, eosio.system, contracts) + MAKE_READ_WASM_ABI(eosio_token, eosio.token, contracts) + MAKE_READ_WASM_ABI(eosio_wrap, eosio.wrap, contracts) + + // Contracts in `eos/unittests/unittests/test-contracts' directory + MAKE_READ_WASM_ABI(asserter, asserter, test-contracts) + MAKE_READ_WASM_ABI(deferred_test, deferred_test, test-contracts) + MAKE_READ_WASM_ABI(get_sender_test, get_sender_test, test-contracts) + MAKE_READ_WASM_ABI(get_table_test, get_table_test, test-contracts) + MAKE_READ_WASM_ABI(noop, noop, test-contracts) + MAKE_READ_WASM_ABI(payloadless, payloadless, test-contracts) + MAKE_READ_WASM_ABI(proxy, proxy, test-contracts) + MAKE_READ_WASM_ABI(ram_restrictions_test, ram_restrictions_test, test-contracts) + MAKE_READ_WASM_ABI(reject_all, reject_all, test-contracts) + MAKE_READ_WASM_ABI(restrict_action_test, restrict_action_test, test-contracts) + MAKE_READ_WASM_ABI(snapshot_test, snapshot_test, test-contracts) + MAKE_READ_WASM_ABI(test_api, test_api, test-contracts) + MAKE_READ_WASM_ABI(test_api_db, test_api_db, test-contracts) + MAKE_READ_WASM_ABI(test_api_multi_index, test_api_multi_index, test-contracts) + MAKE_READ_WASM_ABI(test_ram_limit, test_ram_limit, test-contracts) + }; + } /// eosio::testing +} /// eosio diff --git a/unittests/contracts/CMakeLists.txt b/unittests/contracts/CMakeLists.txt index 24b1890d9a6..8d0faf05158 100644 --- a/unittests/contracts/CMakeLists.txt +++ b/unittests/contracts/CMakeLists.txt @@ -1,7 +1,9 @@ # will be implictly used for any compilation unit if not overrided by SYSTEM_INCLUDE_FOLDERS parameter # these directories go as -isystem to avoid warnings from code of third-party libraries -set(DEFAULT_SYSTEM_INCLUDE_FOLDERS ${CMAKE_SOURCE_DIR}/contracts/libc++/upstream/include ${CMAKE_SOURCE_DIR}/contracts/musl/upstream/include ${Boost_INCLUDE_DIR}) -set(STANDARD_INCLUDE_FOLDERS ${CMAKE_SOURCE_DIR}/contracts ${CMAKE_SOURCE_DIR}/unittests/contracts ${CMAKE_SOURCE_DIR}/externals/magic_get/include) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/eosio.bios/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/eosio.bios/) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/eosio.msig/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/eosio.msig/) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/eosio.system/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/eosio.system/) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/eosio.token/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/eosio.token/) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/eosio.wrap/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/eosio.wrap/) -add_subdirectory(deferred_test) diff --git a/unittests/contracts/deferred_test/CMakeLists.txt b/unittests/contracts/deferred_test/CMakeLists.txt deleted file mode 100644 index 9d0b08a7b4c..00000000000 --- a/unittests/contracts/deferred_test/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -file(GLOB ABI_FILES "*.abi") -configure_file("${ABI_FILES}" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY) - -add_wast_executable(TARGET deferred_test - INCLUDE_FOLDERS "${STANDARD_INCLUDE_FOLDERS}" ${Boost_INCLUDE_DIR} - LIBRARIES libc++ libc eosiolib - DESTINATION_FOLDER ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/unittests/contracts/deferred_test/deferred_test.abi b/unittests/contracts/deferred_test/deferred_test.abi deleted file mode 100644 index 802f835642a..00000000000 --- a/unittests/contracts/deferred_test/deferred_test.abi +++ /dev/null @@ -1,61 +0,0 @@ -{ - "version": "eosio::abi/1.0", - "types": [], - "structs": [{ - "name": "defercall", - "base": "", - "fields": [{ - "name": "payer", - "type": "name" - },{ - "name": "sender_id", - "type": "uint64" - },{ - "name": "contract", - "type": "name" - },{ - "name": "payload", - "type": "uint64" - } - ] - },{ - "name": "deferfunc", - "base": "", - "fields": [{ - "name": "payload", - "type": "uint64" - }] - },{ - "name": "inlinecall", - "base": "", - "fields": [{ - "name": "contract", - "type": "name" - },{ - "name": "authorizer", - "type": "name" - },{ - "name": "payload", - "type": "uint64" - }] - } - ], - "actions": [{ - "name": "defercall", - "type": "defercall", - "ricardian_contract": "" - },{ - "name": "deferfunc", - "type": "deferfunc", - "ricardian_contract": "" - },{ - "name": "inlinecall", - "type": "inlinecall", - "ricardian_contract": "" - } - ], - "tables": [], - "ricardian_clauses": [], - "error_messages": [], - "abi_extensions": [] -} diff --git a/unittests/contracts/deferred_test/deferred_test.cpp b/unittests/contracts/deferred_test/deferred_test.cpp deleted file mode 100644 index a30a7a2550e..00000000000 --- a/unittests/contracts/deferred_test/deferred_test.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ - -#include -#include -#include - -using namespace eosio; - -class deferred_test : public eosio::contract { - public: - using contract::contract; - - struct deferfunc_args { - uint64_t payload; - }; - - //@abi action - void defercall( account_name payer, uint64_t sender_id, account_name contract, uint64_t payload ) { - print( "defercall called on ", name{_self}, "\n" ); - require_auth( payer ); - - print( "deferred send of deferfunc action to ", name{contract}, " by ", name{payer}, " with sender id ", sender_id ); - transaction trx; - deferfunc_args a = {.payload = payload}; - trx.actions.emplace_back(permission_level{_self, N(active)}, contract, N(deferfunc), a); - trx.send( (static_cast(payer) << 64) | sender_id, payer); - } - - //@abi action - void deferfunc( uint64_t payload ) { - print("deferfunc called on ", name{_self}, " with payload = ", payload, "\n"); - eosio_assert( payload != 13, "value 13 not allowed in payload" ); - } - - //@abi action - void inlinecall( account_name contract, account_name authorizer, uint64_t payload ) { - action a( {permission_level{authorizer, N(active)}}, contract, N(deferfunc), payload ); - a.send(); - } - - private: -}; - -void apply_onerror(uint64_t receiver, const onerror& error ) { - print("onerror called on ", name{receiver}, "\n"); -} - -extern "C" { - /// The apply method implements the dispatch of events to this contract - void apply( uint64_t receiver, uint64_t code, uint64_t action ) { - if( code == N(eosio) && action == N(onerror) ) { - apply_onerror( receiver, onerror::from_current_action() ); - } else if( code == receiver ) { - deferred_test thiscontract(receiver); - if( action == N(defercall) ) { - execute_action( &thiscontract, &deferred_test::defercall ); - } else if( action == N(deferfunc) ) { - execute_action( &thiscontract, &deferred_test::deferfunc ); - } else if( action == N(inlinecall) ) { - execute_action( &thiscontract, &deferred_test::inlinecall ); - } - } - } -} - -//EOSIO_ABI( deferred_test, (defercall)(deferfunc) ) diff --git a/contracts/eosio.bios/eosio.bios.abi b/unittests/contracts/eosio.bios/eosio.bios.abi similarity index 100% rename from contracts/eosio.bios/eosio.bios.abi rename to unittests/contracts/eosio.bios/eosio.bios.abi diff --git a/unittests/contracts/eosio.bios/eosio.bios.wasm b/unittests/contracts/eosio.bios/eosio.bios.wasm new file mode 100755 index 00000000000..6a6083bdfcf Binary files /dev/null and b/unittests/contracts/eosio.bios/eosio.bios.wasm differ diff --git a/unittests/contracts/eosio.msig/eosio.msig.abi b/unittests/contracts/eosio.msig/eosio.msig.abi new file mode 100644 index 00000000000..7ab2b01eebb --- /dev/null +++ b/unittests/contracts/eosio.msig/eosio.msig.abi @@ -0,0 +1,360 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT Thu Nov 15 14:56:36 2018", + "version": "eosio::abi/1.1", + "structs": [ + { + "name": "action", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "name", + "type": "name" + }, + { + "name": "authorization", + "type": "permission_level[]" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "approval", + "base": "", + "fields": [ + { + "name": "level", + "type": "permission_level" + }, + { + "name": "time", + "type": "time_point" + } + ] + }, + { + "name": "approvals_info", + "base": "", + "fields": [ + { + "name": "version", + "type": "uint8" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "requested_approvals", + "type": "approval[]" + }, + { + "name": "provided_approvals", + "type": "approval[]" + } + ] + }, + { + "name": "approve", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "level", + "type": "permission_level" + }, + { + "name": "proposal_hash", + "type": "checksum256$" + } + ] + }, + { + "name": "cancel", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "canceler", + "type": "name" + } + ] + }, + { + "name": "exec", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "executer", + "type": "name" + } + ] + }, + { + "name": "extension", + "base": "", + "fields": [ + { + "name": "type", + "type": "uint16" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "invalidate", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + } + ] + }, + { + "name": "invalidation", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "last_invalidation_time", + "type": "time_point" + } + ] + }, + { + "name": "old_approvals_info", + "base": "", + "fields": [ + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "requested_approvals", + "type": "permission_level[]" + }, + { + "name": "provided_approvals", + "type": "permission_level[]" + } + ] + }, + { + "name": "permission_level", + "base": "", + "fields": [ + { + "name": "actor", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "proposal", + "base": "", + "fields": [ + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "packed_transaction", + "type": "bytes" + } + ] + }, + { + "name": "propose", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "requested", + "type": "permission_level[]" + }, + { + "name": "trx", + "type": "transaction" + } + ] + }, + { + "name": "transaction", + "base": "transaction_header", + "fields": [ + { + "name": "context_free_actions", + "type": "action[]" + }, + { + "name": "actions", + "type": "action[]" + }, + { + "name": "transaction_extensions", + "type": "extension[]" + } + ] + }, + { + "name": "transaction_header", + "base": "", + "fields": [ + { + "name": "expiration", + "type": "time_point_sec" + }, + { + "name": "ref_block_num", + "type": "uint16" + }, + { + "name": "ref_block_prefix", + "type": "uint32" + }, + { + "name": "max_net_usage_words", + "type": "varuint32" + }, + { + "name": "max_cpu_usage_ms", + "type": "uint8" + }, + { + "name": "delay_sec", + "type": "varuint32" + } + ] + }, + { + "name": "unapprove", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "level", + "type": "permission_level" + } + ] + } + ], + "types": [], + "actions": [ + { + "name": "approve", + "type": "approve", + "ricardian_contract": "" + }, + { + "name": "cancel", + "type": "cancel", + "ricardian_contract": "" + }, + { + "name": "exec", + "type": "exec", + "ricardian_contract": "" + }, + { + "name": "invalidate", + "type": "invalidate", + "ricardian_contract": "" + }, + { + "name": "propose", + "type": "propose", + "ricardian_contract": "" + }, + { + "name": "unapprove", + "type": "unapprove", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "approvals", + "type": "old_approvals_info", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "approvals2", + "type": "approvals_info", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "invals", + "type": "invalidation", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "proposal", + "type": "proposal", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [], + "abi_extensions": [] +} \ No newline at end of file diff --git a/unittests/contracts/eosio.msig/eosio.msig.wasm b/unittests/contracts/eosio.msig/eosio.msig.wasm new file mode 100755 index 00000000000..dda2a3434f8 Binary files /dev/null and b/unittests/contracts/eosio.msig/eosio.msig.wasm differ diff --git a/unittests/contracts/eosio.system/eosio.system.abi b/unittests/contracts/eosio.system/eosio.system.abi new file mode 100644 index 00000000000..8820833a31e --- /dev/null +++ b/unittests/contracts/eosio.system/eosio.system.abi @@ -0,0 +1,1833 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT Thu Dec 13 12:22:07 2018", + "version": "eosio::abi/1.0", + "structs": [ + { + "name": "abi_hash", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "hash", + "type": "checksum256" + } + ] + }, + { + "name": "authority", + "base": "", + "fields": [ + { + "name": "threshold", + "type": "uint32" + }, + { + "name": "keys", + "type": "key_weight[]" + }, + { + "name": "accounts", + "type": "permission_level_weight[]" + }, + { + "name": "waits", + "type": "wait_weight[]" + } + ] + }, + { + "name": "bid_refund", + "base": "", + "fields": [ + { + "name": "bidder", + "type": "name" + }, + { + "name": "amount", + "type": "asset" + } + ] + }, + { + "name": "bidname", + "base": "", + "fields": [ + { + "name": "bidder", + "type": "name" + }, + { + "name": "newname", + "type": "name" + }, + { + "name": "bid", + "type": "asset" + } + ] + }, + { + "name": "bidrefund", + "base": "", + "fields": [ + { + "name": "bidder", + "type": "name" + }, + { + "name": "newname", + "type": "name" + } + ] + }, + { + "name": "block_header", + "base": "", + "fields": [ + { + "name": "timestamp", + "type": "uint32" + }, + { + "name": "producer", + "type": "name" + }, + { + "name": "confirmed", + "type": "uint16" + }, + { + "name": "previous", + "type": "checksum256" + }, + { + "name": "transaction_mroot", + "type": "checksum256" + }, + { + "name": "action_mroot", + "type": "checksum256" + }, + { + "name": "schedule_version", + "type": "uint32" + }, + { + "name": "new_producers", + "type": "producer_schedule?" + } + ] + }, + { + "name": "blockchain_parameters", + "base": "", + "fields": [ + { + "name": "max_block_net_usage", + "type": "uint64" + }, + { + "name": "target_block_net_usage_pct", + "type": "uint32" + }, + { + "name": "max_transaction_net_usage", + "type": "uint32" + }, + { + "name": "base_per_transaction_net_usage", + "type": "uint32" + }, + { + "name": "net_usage_leeway", + "type": "uint32" + }, + { + "name": "context_free_discount_net_usage_num", + "type": "uint32" + }, + { + "name": "context_free_discount_net_usage_den", + "type": "uint32" + }, + { + "name": "max_block_cpu_usage", + "type": "uint32" + }, + { + "name": "target_block_cpu_usage_pct", + "type": "uint32" + }, + { + "name": "max_transaction_cpu_usage", + "type": "uint32" + }, + { + "name": "min_transaction_cpu_usage", + "type": "uint32" + }, + { + "name": "max_transaction_lifetime", + "type": "uint32" + }, + { + "name": "deferred_trx_expiration_window", + "type": "uint32" + }, + { + "name": "max_transaction_delay", + "type": "uint32" + }, + { + "name": "max_inline_action_size", + "type": "uint32" + }, + { + "name": "max_inline_action_depth", + "type": "uint16" + }, + { + "name": "max_authority_depth", + "type": "uint16" + } + ] + }, + { + "name": "buyram", + "base": "", + "fields": [ + { + "name": "payer", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "quant", + "type": "asset" + } + ] + }, + { + "name": "buyrambytes", + "base": "", + "fields": [ + { + "name": "payer", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "bytes", + "type": "uint32" + } + ] + }, + { + "name": "buyrex", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "amount", + "type": "asset" + } + ] + }, + { + "name": "canceldelay", + "base": "", + "fields": [ + { + "name": "canceling_auth", + "type": "permission_level" + }, + { + "name": "trx_id", + "type": "checksum256" + } + ] + }, + { + "name": "claimrewards", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + } + ] + }, + { + "name": "closerex", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + } + ] + }, + { + "name": "cnclrexorder", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + } + ] + }, + { + "name": "connector", + "base": "", + "fields": [ + { + "name": "balance", + "type": "asset" + }, + { + "name": "weight", + "type": "float64" + } + ] + }, + { + "name": "consolidate", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + } + ] + }, + { + "name": "defcpuloan", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "loan_num", + "type": "uint64" + }, + { + "name": "amount", + "type": "asset" + } + ] + }, + { + "name": "defnetloan", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "loan_num", + "type": "uint64" + }, + { + "name": "amount", + "type": "asset" + } + ] + }, + { + "name": "delegatebw", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "stake_net_quantity", + "type": "asset" + }, + { + "name": "stake_cpu_quantity", + "type": "asset" + }, + { + "name": "transfer", + "type": "bool" + } + ] + }, + { + "name": "delegated_bandwidth", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "to", + "type": "name" + }, + { + "name": "net_weight", + "type": "asset" + }, + { + "name": "cpu_weight", + "type": "asset" + } + ] + }, + { + "name": "deleteauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "deposit", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "amount", + "type": "asset" + } + ] + }, + { + "name": "eosio_global_state", + "base": "blockchain_parameters", + "fields": [ + { + "name": "max_ram_size", + "type": "uint64" + }, + { + "name": "total_ram_bytes_reserved", + "type": "uint64" + }, + { + "name": "total_ram_stake", + "type": "int64" + }, + { + "name": "last_producer_schedule_update", + "type": "block_timestamp_type" + }, + { + "name": "last_pervote_bucket_fill", + "type": "time_point" + }, + { + "name": "pervote_bucket", + "type": "int64" + }, + { + "name": "perblock_bucket", + "type": "int64" + }, + { + "name": "total_unpaid_blocks", + "type": "uint32" + }, + { + "name": "total_activated_stake", + "type": "int64" + }, + { + "name": "thresh_activated_stake_time", + "type": "time_point" + }, + { + "name": "last_producer_schedule_size", + "type": "uint16" + }, + { + "name": "total_producer_vote_weight", + "type": "float64" + }, + { + "name": "last_name_close", + "type": "block_timestamp_type" + } + ] + }, + { + "name": "eosio_global_state2", + "base": "", + "fields": [ + { + "name": "new_ram_per_block", + "type": "uint16" + }, + { + "name": "last_ram_increase", + "type": "block_timestamp_type" + }, + { + "name": "last_block_num", + "type": "block_timestamp_type" + }, + { + "name": "total_producer_votepay_share", + "type": "float64" + }, + { + "name": "revision", + "type": "uint8" + } + ] + }, + { + "name": "eosio_global_state3", + "base": "", + "fields": [ + { + "name": "last_vpay_state_update", + "type": "time_point" + }, + { + "name": "total_vpay_share_change_rate", + "type": "float64" + } + ] + }, + { + "name": "exchange_state", + "base": "", + "fields": [ + { + "name": "supply", + "type": "asset" + }, + { + "name": "base", + "type": "connector" + }, + { + "name": "quote", + "type": "connector" + } + ] + }, + { + "name": "fundcpuloan", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "loan_num", + "type": "uint64" + }, + { + "name": "payment", + "type": "asset" + } + ] + }, + { + "name": "fundnetloan", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "loan_num", + "type": "uint64" + }, + { + "name": "payment", + "type": "asset" + } + ] + }, + { + "name": "init", + "base": "", + "fields": [ + { + "name": "version", + "type": "varuint32" + }, + { + "name": "core", + "type": "symbol" + } + ] + }, + { + "name": "key_weight", + "base": "", + "fields": [ + { + "name": "key", + "type": "public_key" + }, + { + "name": "weight", + "type": "uint16" + } + ] + }, + { + "name": "linkauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "code", + "type": "name" + }, + { + "name": "type", + "type": "name" + }, + { + "name": "requirement", + "type": "name" + } + ] + }, + { + "name": "name_bid", + "base": "", + "fields": [ + { + "name": "newname", + "type": "name" + }, + { + "name": "high_bidder", + "type": "name" + }, + { + "name": "high_bid", + "type": "int64" + }, + { + "name": "last_bid_time", + "type": "time_point" + } + ] + }, + { + "name": "newaccount", + "base": "", + "fields": [ + { + "name": "creator", + "type": "name" + }, + { + "name": "name", + "type": "name" + }, + { + "name": "owner", + "type": "authority" + }, + { + "name": "active", + "type": "authority" + } + ] + }, + { + "name": "onblock", + "base": "", + "fields": [ + { + "name": "header", + "type": "block_header" + } + ] + }, + { + "name": "onerror", + "base": "", + "fields": [ + { + "name": "sender_id", + "type": "uint128" + }, + { + "name": "sent_trx", + "type": "bytes" + } + ] + }, + { + "name": "pair_time_point_sec_int64", + "base": "", + "fields": [ + { + "name": "first", + "type": "time_point_sec" + }, + { + "name": "second", + "type": "int64" + } + ] + }, + { + "name": "permission_level", + "base": "", + "fields": [ + { + "name": "actor", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "permission_level_weight", + "base": "", + "fields": [ + { + "name": "permission", + "type": "permission_level" + }, + { + "name": "weight", + "type": "uint16" + } + ] + }, + { + "name": "producer_info", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "total_votes", + "type": "float64" + }, + { + "name": "producer_key", + "type": "public_key" + }, + { + "name": "is_active", + "type": "bool" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "unpaid_blocks", + "type": "uint32" + }, + { + "name": "last_claim_time", + "type": "time_point" + }, + { + "name": "location", + "type": "uint16" + } + ] + }, + { + "name": "producer_info2", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "votepay_share", + "type": "float64" + }, + { + "name": "last_votepay_share_update", + "type": "time_point" + } + ] + }, + { + "name": "producer_key", + "base": "", + "fields": [ + { + "name": "producer_name", + "type": "name" + }, + { + "name": "block_signing_key", + "type": "public_key" + } + ] + }, + { + "name": "producer_schedule", + "base": "", + "fields": [ + { + "name": "version", + "type": "uint32" + }, + { + "name": "producers", + "type": "producer_key[]" + } + ] + }, + { + "name": "refund", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + } + ] + }, + { + "name": "refund_request", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "request_time", + "type": "time_point_sec" + }, + { + "name": "net_amount", + "type": "asset" + }, + { + "name": "cpu_amount", + "type": "asset" + } + ] + }, + { + "name": "regproducer", + "base": "", + "fields": [ + { + "name": "producer", + "type": "name" + }, + { + "name": "producer_key", + "type": "public_key" + }, + { + "name": "url", + "type": "string" + }, + { + "name": "location", + "type": "uint16" + } + ] + }, + { + "name": "regproxy", + "base": "", + "fields": [ + { + "name": "proxy", + "type": "name" + }, + { + "name": "isproxy", + "type": "bool" + } + ] + }, + { + "name": "rentcpu", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "loan_payment", + "type": "asset" + }, + { + "name": "loan_fund", + "type": "asset" + } + ] + }, + { + "name": "rentnet", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "loan_payment", + "type": "asset" + }, + { + "name": "loan_fund", + "type": "asset" + } + ] + }, + { + "name": "rex_balance", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "vote_stake", + "type": "asset" + }, + { + "name": "rex_balance", + "type": "asset" + }, + { + "name": "matured_rex", + "type": "int64" + }, + { + "name": "rex_maturities", + "type": "pair_time_point_sec_int64[]" + } + ] + }, + { + "name": "rex_fund", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "balance", + "type": "asset" + } + ] + }, + { + "name": "rex_loan", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "payment", + "type": "asset" + }, + { + "name": "balance", + "type": "asset" + }, + { + "name": "total_staked", + "type": "asset" + }, + { + "name": "loan_num", + "type": "uint64" + }, + { + "name": "expiration", + "type": "time_point" + } + ] + }, + { + "name": "rex_order", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "rex_requested", + "type": "asset" + }, + { + "name": "proceeds", + "type": "asset" + }, + { + "name": "stake_change", + "type": "asset" + }, + { + "name": "order_time", + "type": "time_point" + }, + { + "name": "is_open", + "type": "bool" + } + ] + }, + { + "name": "rex_pool", + "base": "", + "fields": [ + { + "name": "total_lent", + "type": "asset" + }, + { + "name": "total_unlent", + "type": "asset" + }, + { + "name": "total_rent", + "type": "asset" + }, + { + "name": "total_lendable", + "type": "asset" + }, + { + "name": "total_rex", + "type": "asset" + }, + { + "name": "namebid_proceeds", + "type": "asset" + }, + { + "name": "loan_num", + "type": "uint64" + } + ] + }, + { + "name": "rexexec", + "base": "", + "fields": [ + { + "name": "user", + "type": "name" + }, + { + "name": "max", + "type": "uint16" + } + ] + }, + { + "name": "rmvproducer", + "base": "", + "fields": [ + { + "name": "producer", + "type": "name" + } + ] + }, + { + "name": "sellram", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "bytes", + "type": "int64" + } + ] + }, + { + "name": "sellrex", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "rex", + "type": "asset" + } + ] + }, + { + "name": "setabi", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "abi", + "type": "bytes" + } + ] + }, + { + "name": "setalimits", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "ram_bytes", + "type": "int64" + }, + { + "name": "net_weight", + "type": "int64" + }, + { + "name": "cpu_weight", + "type": "int64" + } + ] + }, + { + "name": "setcode", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "vmtype", + "type": "uint8" + }, + { + "name": "vmversion", + "type": "uint8" + }, + { + "name": "code", + "type": "bytes" + } + ] + }, + { + "name": "setparams", + "base": "", + "fields": [ + { + "name": "params", + "type": "blockchain_parameters" + } + ] + }, + { + "name": "setpriv", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "is_priv", + "type": "uint8" + } + ] + }, + { + "name": "setram", + "base": "", + "fields": [ + { + "name": "max_ram_size", + "type": "uint64" + } + ] + }, + { + "name": "setramrate", + "base": "", + "fields": [ + { + "name": "bytes_per_block", + "type": "uint16" + } + ] + }, + { + "name": "undelegatebw", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "unstake_net_quantity", + "type": "asset" + }, + { + "name": "unstake_cpu_quantity", + "type": "asset" + } + ] + }, + { + "name": "unlinkauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "code", + "type": "name" + }, + { + "name": "type", + "type": "name" + } + ] + }, + { + "name": "unregprod", + "base": "", + "fields": [ + { + "name": "producer", + "type": "name" + } + ] + }, + { + "name": "unstaketorex", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "receiver", + "type": "name" + }, + { + "name": "from_net", + "type": "asset" + }, + { + "name": "from_cpu", + "type": "asset" + } + ] + }, + { + "name": "updateauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "permission", + "type": "name" + }, + { + "name": "parent", + "type": "name" + }, + { + "name": "auth", + "type": "authority" + } + ] + }, + { + "name": "updaterex", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + } + ] + }, + { + "name": "updtrevision", + "base": "", + "fields": [ + { + "name": "revision", + "type": "uint8" + } + ] + }, + { + "name": "user_resources", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "net_weight", + "type": "asset" + }, + { + "name": "cpu_weight", + "type": "asset" + }, + { + "name": "ram_bytes", + "type": "int64" + } + ] + }, + { + "name": "voteproducer", + "base": "", + "fields": [ + { + "name": "voter", + "type": "name" + }, + { + "name": "proxy", + "type": "name" + }, + { + "name": "producers", + "type": "name[]" + } + ] + }, + { + "name": "voter_info", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "proxy", + "type": "name" + }, + { + "name": "producers", + "type": "name[]" + }, + { + "name": "staked", + "type": "int64" + }, + { + "name": "last_vote_weight", + "type": "float64" + }, + { + "name": "proxied_vote_weight", + "type": "float64" + }, + { + "name": "is_proxy", + "type": "bool" + }, + { + "name": "reserved1", + "type": "uint32" + }, + { + "name": "reserved2", + "type": "uint32" + }, + { + "name": "reserved3", + "type": "asset" + } + ] + }, + { + "name": "wait_weight", + "base": "", + "fields": [ + { + "name": "wait_sec", + "type": "uint32" + }, + { + "name": "weight", + "type": "uint16" + } + ] + }, + { + "name": "withdraw", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "amount", + "type": "asset" + } + ] + } + ], + "types": [], + "actions": [ + { + "name": "bidname", + "type": "bidname", + "ricardian_contract": "" + }, + { + "name": "bidrefund", + "type": "bidrefund", + "ricardian_contract": "" + }, + { + "name": "buyram", + "type": "buyram", + "ricardian_contract": "" + }, + { + "name": "buyrambytes", + "type": "buyrambytes", + "ricardian_contract": "" + }, + { + "name": "buyrex", + "type": "buyrex", + "ricardian_contract": "" + }, + { + "name": "canceldelay", + "type": "canceldelay", + "ricardian_contract": "" + }, + { + "name": "claimrewards", + "type": "claimrewards", + "ricardian_contract": "" + }, + { + "name": "closerex", + "type": "closerex", + "ricardian_contract": "" + }, + { + "name": "cnclrexorder", + "type": "cnclrexorder", + "ricardian_contract": "" + }, + { + "name": "consolidate", + "type": "consolidate", + "ricardian_contract": "" + }, + { + "name": "defcpuloan", + "type": "defcpuloan", + "ricardian_contract": "" + }, + { + "name": "defnetloan", + "type": "defnetloan", + "ricardian_contract": "" + }, + { + "name": "delegatebw", + "type": "delegatebw", + "ricardian_contract": "" + }, + { + "name": "deleteauth", + "type": "deleteauth", + "ricardian_contract": "" + }, + { + "name": "deposit", + "type": "deposit", + "ricardian_contract": "" + }, + { + "name": "fundcpuloan", + "type": "fundcpuloan", + "ricardian_contract": "" + }, + { + "name": "fundnetloan", + "type": "fundnetloan", + "ricardian_contract": "" + }, + { + "name": "init", + "type": "init", + "ricardian_contract": "" + }, + { + "name": "linkauth", + "type": "linkauth", + "ricardian_contract": "" + }, + { + "name": "newaccount", + "type": "newaccount", + "ricardian_contract": "" + }, + { + "name": "onblock", + "type": "onblock", + "ricardian_contract": "" + }, + { + "name": "onerror", + "type": "onerror", + "ricardian_contract": "" + }, + { + "name": "refund", + "type": "refund", + "ricardian_contract": "" + }, + { + "name": "regproducer", + "type": "regproducer", + "ricardian_contract": "" + }, + { + "name": "regproxy", + "type": "regproxy", + "ricardian_contract": "" + }, + { + "name": "rentcpu", + "type": "rentcpu", + "ricardian_contract": "" + }, + { + "name": "rentnet", + "type": "rentnet", + "ricardian_contract": "" + }, + { + "name": "rexexec", + "type": "rexexec", + "ricardian_contract": "" + }, + { + "name": "rmvproducer", + "type": "rmvproducer", + "ricardian_contract": "" + }, + { + "name": "sellram", + "type": "sellram", + "ricardian_contract": "" + }, + { + "name": "sellrex", + "type": "sellrex", + "ricardian_contract": "" + }, + { + "name": "setabi", + "type": "setabi", + "ricardian_contract": "" + }, + { + "name": "setalimits", + "type": "setalimits", + "ricardian_contract": "" + }, + { + "name": "setcode", + "type": "setcode", + "ricardian_contract": "" + }, + { + "name": "setparams", + "type": "setparams", + "ricardian_contract": "" + }, + { + "name": "setpriv", + "type": "setpriv", + "ricardian_contract": "" + }, + { + "name": "setram", + "type": "setram", + "ricardian_contract": "" + }, + { + "name": "setramrate", + "type": "setramrate", + "ricardian_contract": "" + }, + { + "name": "undelegatebw", + "type": "undelegatebw", + "ricardian_contract": "" + }, + { + "name": "unlinkauth", + "type": "unlinkauth", + "ricardian_contract": "" + }, + { + "name": "unregprod", + "type": "unregprod", + "ricardian_contract": "" + }, + { + "name": "unstaketorex", + "type": "unstaketorex", + "ricardian_contract": "" + }, + { + "name": "updateauth", + "type": "updateauth", + "ricardian_contract": "" + }, + { + "name": "updaterex", + "type": "updaterex", + "ricardian_contract": "" + }, + { + "name": "updtrevision", + "type": "updtrevision", + "ricardian_contract": "" + }, + { + "name": "voteproducer", + "type": "voteproducer", + "ricardian_contract": "" + }, + { + "name": "withdraw", + "type": "withdraw", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "abihash", + "type": "abi_hash", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "bidrefunds", + "type": "bid_refund", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "cpuloan", + "type": "rex_loan", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "delband", + "type": "delegated_bandwidth", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "global", + "type": "eosio_global_state", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "global2", + "type": "eosio_global_state2", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "global3", + "type": "eosio_global_state3", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "namebids", + "type": "name_bid", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "netloan", + "type": "rex_loan", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "producers", + "type": "producer_info", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "producers2", + "type": "producer_info2", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "rammarket", + "type": "exchange_state", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "refunds", + "type": "refund_request", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "rexbal", + "type": "rex_balance", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "rexfund", + "type": "rex_fund", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "rexpool", + "type": "rex_pool", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "rexqueue", + "type": "rex_order", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "userres", + "type": "user_resources", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "voters", + "type": "voter_info", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "abi_extensions": [] +} \ No newline at end of file diff --git a/unittests/contracts/eosio.system/eosio.system.wasm b/unittests/contracts/eosio.system/eosio.system.wasm new file mode 100755 index 00000000000..fffe933c47c Binary files /dev/null and b/unittests/contracts/eosio.system/eosio.system.wasm differ diff --git a/unittests/contracts/eosio.token/eosio.token.abi b/unittests/contracts/eosio.token/eosio.token.abi new file mode 100644 index 00000000000..a5d90710841 --- /dev/null +++ b/unittests/contracts/eosio.token/eosio.token.abi @@ -0,0 +1,186 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT Fri Nov 16 11:30:21 2018", + "version": "eosio::abi/1.1", + "structs": [ + { + "name": "account", + "base": "", + "fields": [ + { + "name": "balance", + "type": "asset" + } + ] + }, + { + "name": "close", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "symbol", + "type": "symbol" + } + ] + }, + { + "name": "create", + "base": "", + "fields": [ + { + "name": "issuer", + "type": "name" + }, + { + "name": "maximum_supply", + "type": "asset" + } + ] + }, + { + "name": "currency_stats", + "base": "", + "fields": [ + { + "name": "supply", + "type": "asset" + }, + { + "name": "max_supply", + "type": "asset" + }, + { + "name": "issuer", + "type": "name" + } + ] + }, + { + "name": "issue", + "base": "", + "fields": [ + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + }, + { + "name": "open", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "symbol", + "type": "symbol" + }, + { + "name": "ram_payer", + "type": "name" + } + ] + }, + { + "name": "retire", + "base": "", + "fields": [ + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + }, + { + "name": "transfer", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + } + ], + "types": [], + "actions": [ + { + "name": "close", + "type": "close", + "ricardian_contract": "" + }, + { + "name": "create", + "type": "create", + "ricardian_contract": "" + }, + { + "name": "issue", + "type": "issue", + "ricardian_contract": "" + }, + { + "name": "open", + "type": "open", + "ricardian_contract": "" + }, + { + "name": "retire", + "type": "retire", + "ricardian_contract": "" + }, + { + "name": "transfer", + "type": "transfer", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "accounts", + "type": "account", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "stat", + "type": "currency_stats", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [], + "abi_extensions": [] +} \ No newline at end of file diff --git a/unittests/contracts/eosio.token/eosio.token.wasm b/unittests/contracts/eosio.token/eosio.token.wasm new file mode 100755 index 00000000000..a3e02afc75c Binary files /dev/null and b/unittests/contracts/eosio.token/eosio.token.wasm differ diff --git a/unittests/contracts/eosio.wrap/eosio.wrap.abi b/unittests/contracts/eosio.wrap/eosio.wrap.abi new file mode 100644 index 00000000000..3914cfb98e4 --- /dev/null +++ b/unittests/contracts/eosio.wrap/eosio.wrap.abi @@ -0,0 +1,130 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT Fri Nov 16 11:30:52 2018", + "version": "eosio::abi/1.1", + "structs": [ + { + "name": "action", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "name", + "type": "name" + }, + { + "name": "authorization", + "type": "permission_level[]" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "exec", + "base": "", + "fields": [ + { + "name": "executer", + "type": "name" + }, + { + "name": "trx", + "type": "transaction" + } + ] + }, + { + "name": "extension", + "base": "", + "fields": [ + { + "name": "type", + "type": "uint16" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "permission_level", + "base": "", + "fields": [ + { + "name": "actor", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "transaction", + "base": "transaction_header", + "fields": [ + { + "name": "context_free_actions", + "type": "action[]" + }, + { + "name": "actions", + "type": "action[]" + }, + { + "name": "transaction_extensions", + "type": "extension[]" + } + ] + }, + { + "name": "transaction_header", + "base": "", + "fields": [ + { + "name": "expiration", + "type": "time_point_sec" + }, + { + "name": "ref_block_num", + "type": "uint16" + }, + { + "name": "ref_block_prefix", + "type": "uint32" + }, + { + "name": "max_net_usage_words", + "type": "varuint32" + }, + { + "name": "max_cpu_usage_ms", + "type": "uint8" + }, + { + "name": "delay_sec", + "type": "varuint32" + } + ] + } + ], + "types": [], + "actions": [ + { + "name": "exec", + "type": "exec", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [], + "abi_extensions": [] +} \ No newline at end of file diff --git a/unittests/contracts/eosio.wrap/eosio.wrap.wasm b/unittests/contracts/eosio.wrap/eosio.wrap.wasm new file mode 100755 index 00000000000..e9c17cb7a18 Binary files /dev/null and b/unittests/contracts/eosio.wrap/eosio.wrap.wasm differ diff --git a/unittests/contracts/test_wasts.hpp b/unittests/contracts/test_wasts.hpp index 15fcefde131..935874bbba5 100644 --- a/unittests/contracts/test_wasts.hpp +++ b/unittests/contracts/test_wasts.hpp @@ -179,6 +179,15 @@ static const char entry_wast_2[] = R"=====( ) )====="; +static const char entry_import_wast[] = R"=====( +(module + (import "env" "abort" (func $abort)) + (export "apply" (func $apply)) + (start $abort) + (func $apply (param $0 i64) (param $1 i64) (param $2 i64)) +) +)====="; + static const char simple_no_memory_wast[] = R"=====( (module (import "env" "require_auth" (func $require_auth (param i64))) @@ -430,6 +439,38 @@ static const char table_checker_small_wast[] = R"=====( ) )====="; +static const char table_init_oob_wast[] = R"=====( +(module + (type $mahsig (func (param i64) (param i64) (param i64))) + (table 1024 anyfunc) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) (param $2 i64) + ) + (elem (i32.const 1024) $apply) +) +)====="; + +static const char table_init_oob_smaller_wast[] = R"=====( +(module + (type $mahsig (func (param i64) (param i64) (param i64))) + (table 620 anyfunc) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) (param $2 i64) + ) + (elem (i32.const 700) $apply) +) +)====="; + +static const char table_init_oob_no_table_wast[] = R"=====( +(module + (type $mahsig (func (param i64) (param i64) (param i64))) + (export "apply" (func $apply)) + (func $apply (param $0 i64) (param $1 i64) (param $2 i64) + ) + (elem (i32.const 0) $apply) +) +)====="; + static const char global_protection_none_get_wast[] = R"=====( (module (export "apply" (func $apply)) @@ -633,3 +674,104 @@ static const char memory_growth_memset_test[] = R"=====( ) ) )====="; + +static const char large_maligned_host_ptr[] = R"=====( +(module + (export "apply" (func $$apply)) + (import "env" "get_active_producers" (func $$get_active_producers (param i32 i32) (result i32))) + (memory $$0 ${MAX_WASM_PAGES}) + (func $$apply (param i64) (param i64) (param i64) + (drop (call $$get_active_producers + (i32.const 1) + (i32.const ${MAX_NAME_ARRAY}) + )) + ) +) +)====="; + +static const char depth_assert_wasm[] = R"=====( +(module + (export "apply" (func $$apply)) + (func $$apply (param $$0 i64) (param $$1 i64) (param $$2 i64) + (if (i64.eq (get_global $$depth) (i64.const 0)) (then + (return) + )) + (set_global $$depth + (i64.sub + (get_global $$depth) + (i64.const 1) + ) + ) + (call $$apply + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + (global $$depth (mut i64) (i64.const ${MAX_DEPTH})) +) +)====="; + +static const char depth_assert_intrinsic[] = R"=====( +(module + (import "env" "current_time" (func $$current_time (result i64))) + (export "apply" (func $$apply)) + (func $$apply (param $$0 i64) (param $$1 i64) (param $$2 i64) + (if (i64.eq (get_global $$depth) (i64.const 1)) (then + (drop (call $$current_time)) + (return) + )) + (set_global $$depth + (i64.sub + (get_global $$depth) + (i64.const 1) + ) + ) + (call $$apply + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + (global $$depth (mut i64) (i64.const ${MAX_DEPTH})) +) +)====="; + +static const char depth_assert_wasm_float[] = R"=====( +(module + (export "apply" (func $$apply)) + (func $$apply (param $$0 i64) (param $$1 i64) (param $$2 i64) + (set_global $$mcfloaty + (f64.mul + (get_global $$mcfloaty) + (f64.const 3.1415) + ) + ) + (if (i64.eq (get_global $$depth) (i64.const 0)) (then + (return) + )) + (set_global $$depth + (i64.sub + (get_global $$depth) + (i64.const 1) + ) + ) + (call $$apply + (get_local $$0) + (get_local $$1) + (get_local $$2) + ) + ) + (global $$depth (mut i64) (i64.const ${MAX_DEPTH})) + (global $$mcfloaty (mut f64) (f64.const 3.14)) +) +)====="; + +static const std::vector varuint_memory_flags{ + 0x00, 'a', 's', 'm', 0x01, 0x00, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x60, 0x03, 0x7e, 0x7e, 0x7e, 0x00, // types + 0x03, 0x02, 0x01, 0x00, // functions + 0x04, 0x08, 0x01, 0x70, 0x80, 0x02, 0x80, 0x80, 0x80, 0x00, // memory with flags varuint(0x80 0x02) -> 0x2 + 0x07, 0x09, 0x01, 0x05, 'a', 'p', 'p', 'l', 'y', 0x00, 0x00, // exports + 0x0a, 0x04, 0x01, 0x02, 0x00, 0x0b // code +}; diff --git a/unittests/currency_tests.cpp b/unittests/currency_tests.cpp index bf909403ff3..7bad1b92194 100644 --- a/unittests/currency_tests.cpp +++ b/unittests/currency_tests.cpp @@ -7,17 +7,13 @@ #include #include -#include -#include - -#include -#include - #include #include #include +#include + #ifdef NON_VALIDATING_TEST #define TESTER tester #else @@ -75,10 +71,10 @@ class currency_tester : public TESTER { } currency_tester() - :TESTER(),abi_ser(json::from_string(eosio_token_abi).as(), abi_serializer_max_time) + :TESTER(),abi_ser(json::from_string(contracts::eosio_token_abi().data()).as(), abi_serializer_max_time) { create_account( N(eosio.token)); - set_code( N(eosio.token), eosio_token_wast ); + set_code( N(eosio.token), contracts::eosio_token_wasm() ); auto result = push_action(N(eosio.token), N(create), mutable_variant_object() ("issuer", eosio_token) @@ -99,10 +95,10 @@ class currency_tester : public TESTER { } abi_serializer abi_ser; - static const std::string eosio_token; + static const name eosio_token; }; -const std::string currency_tester::eosio_token = name(N(eosio.token)).to_string(); +const name currency_tester::eosio_token = N(eosio.token); BOOST_AUTO_TEST_SUITE(currency_tests) @@ -406,10 +402,10 @@ BOOST_FIXTURE_TEST_CASE( test_proxy, currency_tester ) try { create_accounts( {N(alice), N(proxy)} ); produce_block(); - set_code(N(proxy), proxy_wast); + set_code(N(proxy), contracts::proxy_wasm()); produce_blocks(1); - abi_serializer proxy_abi_ser(json::from_string(proxy_abi).as(), abi_serializer_max_time); + abi_serializer proxy_abi_ser(json::from_string(contracts::proxy_abi().data()).as(), abi_serializer_max_time); // set up proxy owner { @@ -417,7 +413,7 @@ BOOST_FIXTURE_TEST_CASE( test_proxy, currency_tester ) try { action setowner_act; setowner_act.account = N(proxy); setowner_act.name = N(setowner); - setowner_act.authorization = vector{{N(alice), config::active_name}}; + setowner_act.authorization = vector{{N(proxy), config::active_name}}; setowner_act.data = proxy_abi_ser.variant_to_binary("setowner", mutable_variant_object() ("owner", "alice") ("delay", 10), @@ -426,7 +422,7 @@ BOOST_FIXTURE_TEST_CASE( test_proxy, currency_tester ) try { trx.actions.emplace_back(std::move(setowner_act)); set_transaction_headers(trx); - trx.sign(get_private_key(N(alice), "active"), control->get_chain_id()); + trx.sign(get_private_key(N(proxy), "active"), control->get_chain_id()); push_transaction(trx); produce_block(); BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); @@ -461,11 +457,11 @@ BOOST_FIXTURE_TEST_CASE( test_deferred_failure, currency_tester ) try { create_accounts( {N(alice), N(bob), N(proxy)} ); produce_block(); - set_code(N(proxy), proxy_wast); - set_code(N(bob), proxy_wast); + set_code(N(proxy), contracts::proxy_wasm()); + set_code(N(bob), contracts::proxy_wasm()); produce_blocks(1); - abi_serializer proxy_abi_ser(json::from_string(proxy_abi).as(), abi_serializer_max_time); + abi_serializer proxy_abi_ser(json::from_string(contracts::proxy_abi().data()).as(), abi_serializer_max_time); // set up proxy owner { @@ -473,7 +469,7 @@ BOOST_FIXTURE_TEST_CASE( test_deferred_failure, currency_tester ) try { action setowner_act; setowner_act.account = N(proxy); setowner_act.name = N(setowner); - setowner_act.authorization = vector{{N(bob), config::active_name}}; + setowner_act.authorization = vector{{N(proxy), config::active_name}}; setowner_act.data = proxy_abi_ser.variant_to_binary("setowner", mutable_variant_object() ("owner", "bob") ("delay", 10), @@ -482,7 +478,7 @@ BOOST_FIXTURE_TEST_CASE( test_deferred_failure, currency_tester ) try { trx.actions.emplace_back(std::move(setowner_act)); set_transaction_headers(trx); - trx.sign(get_private_key(N(bob), "active"), control->get_chain_id()); + trx.sign(get_private_key(N(proxy), "active"), control->get_chain_id()); push_transaction(trx); produce_block(); BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); @@ -506,7 +502,6 @@ BOOST_FIXTURE_TEST_CASE( test_deferred_failure, currency_tester ) try { produce_block(); BOOST_REQUIRE_EQUAL(get_balance( N(proxy)), asset::from_string("5.0000 CUR")); BOOST_REQUIRE_EQUAL(get_balance( N(bob)), asset::from_string("0.0000 CUR")); - BOOST_REQUIRE_EQUAL(get_balance( N(bob)), asset::from_string("0.0000 CUR")); BOOST_REQUIRE_EQUAL(1, index.size()); BOOST_REQUIRE_EQUAL(false, chain_has_transaction(deferred_id)); } @@ -525,7 +520,7 @@ BOOST_FIXTURE_TEST_CASE( test_deferred_failure, currency_tester ) try { action setowner_act; setowner_act.account = N(bob); setowner_act.name = N(setowner); - setowner_act.authorization = vector{{N(alice), config::active_name}}; + setowner_act.authorization = vector{{N(bob), config::active_name}}; setowner_act.data = proxy_abi_ser.variant_to_binary("setowner", mutable_variant_object() ("owner", "alice") ("delay", 0), @@ -534,7 +529,7 @@ BOOST_FIXTURE_TEST_CASE( test_deferred_failure, currency_tester ) try { trx.actions.emplace_back(std::move(setowner_act)); set_transaction_headers(trx); - trx.sign(get_private_key(N(alice), "active"), control->get_chain_id()); + trx.sign(get_private_key(N(bob), "active"), control->get_chain_id()); push_transaction(trx); produce_block(); BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); @@ -581,7 +576,6 @@ BOOST_FIXTURE_TEST_CASE( test_input_quantity, currency_tester ) try { BOOST_CHECK_EQUAL(1000000, get_balance(N(alice)).get_amount()); } - // transfer using different symbol name fails { BOOST_REQUIRE_THROW(transfer(N(alice), N(carl), "20.50 USD"), eosio_assert_message_exception); diff --git a/unittests/database_gmr_blklst_tests.cpp b/unittests/database_gmr_blklst_tests.cpp index f698f21b1d7..e856de77ea8 100644 --- a/unittests/database_gmr_blklst_tests.cpp +++ b/unittests/database_gmr_blklst_tests.cpp @@ -74,7 +74,7 @@ BOOST_AUTO_TEST_CASE(set_name_list_test) flat_set nameset(list.begin(), list.end()); // Create an account - db.create([](account_object &a) { + db.create([](account_object2 &a) { a.name = "alice"; }); diff --git a/unittests/database_tests.cpp b/unittests/database_tests.cpp index 7cb35e85be5..316ef7a5b24 100644 --- a/unittests/database_tests.cpp +++ b/unittests/database_tests.cpp @@ -33,19 +33,19 @@ BOOST_AUTO_TEST_SUITE(database_tests) auto ses = db.start_undo_session(true); // Create an account - db.create([](account_object &a) { + db.create([](account_object2 &a) { a.name = "billy"; }); // Make sure we can retrieve that account by name - auto ptr = db.find("billy"); + auto ptr = db.find("billy"); BOOST_TEST(ptr != nullptr); // Undo creation of the account ses.undo(); // Make sure we can no longer find the account - ptr = db.find("billy"); + ptr = db.find("billy"); BOOST_TEST(ptr == nullptr); } FC_LOG_AND_RETHROW() } diff --git a/unittests/delay_tests.cpp b/unittests/delay_tests.cpp index ae1a3d114b5..fa07ba5b466 100644 --- a/unittests/delay_tests.cpp +++ b/unittests/delay_tests.cpp @@ -1,10 +1,11 @@ -#include +#include +#include #include #include -#include -#include -#include -#include + +#include + +#include #ifdef NON_VALIDATING_TEST #define TESTER tester @@ -97,8 +98,8 @@ BOOST_AUTO_TEST_CASE( link_delay_direct_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -235,8 +236,8 @@ BOOST_AUTO_TEST_CASE(delete_auth_test) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -372,8 +373,8 @@ BOOST_AUTO_TEST_CASE( link_delay_direct_parent_permission_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -510,8 +511,8 @@ BOOST_AUTO_TEST_CASE( link_delay_direct_walk_parent_permissions_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -654,8 +655,8 @@ BOOST_AUTO_TEST_CASE( link_delay_permission_change_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -845,8 +846,8 @@ BOOST_AUTO_TEST_CASE( link_delay_permission_change_with_delay_heirarchy_test ) { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -1042,8 +1043,8 @@ BOOST_AUTO_TEST_CASE( link_delay_link_change_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -1244,8 +1245,8 @@ BOOST_AUTO_TEST_CASE( link_delay_unlink_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -1433,8 +1434,8 @@ BOOST_AUTO_TEST_CASE( link_delay_link_change_heirarchy_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -1624,8 +1625,8 @@ BOOST_AUTO_TEST_CASE( mindelay_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -1681,10 +1682,10 @@ BOOST_AUTO_TEST_CASE( mindelay_test ) { try { BOOST_REQUIRE_EQUAL(asset::from_string("1.0000 CUR"), liquid_balance); // send transfer with delay_sec set to 10 - const auto& acnt = chain.control->db().get(N(eosio.token)); + const auto& acnt = chain.control->db().get(N(eosio.token)); const auto abi = acnt.get_abi(); chain::abi_serializer abis(abi, chain.abi_serializer_max_time); - const auto a = chain.control->db().get(N(eosio.token)).get_abi(); + const auto a = chain.control->db().get(N(eosio.token)).get_abi(); string action_type_name = abis.get_action_type(name("transfer")); @@ -1756,8 +1757,8 @@ BOOST_AUTO_TEST_CASE( canceldelay_test ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(10); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -1993,8 +1994,8 @@ BOOST_AUTO_TEST_CASE( canceldelay_test2 ) { try { chain.create_account(N(eosio.token)); chain.produce_blocks(); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); @@ -2279,8 +2280,8 @@ BOOST_AUTO_TEST_CASE( max_transaction_delay_execute ) { try { const auto& tester_account = N(tester); chain.create_account(N(eosio.token)); - chain.set_code(N(eosio.token), eosio_token_wast); - chain.set_abi(N(eosio.token), eosio_token_abi); + chain.set_code(N(eosio.token), contracts::eosio_token_wasm()); + chain.set_abi(N(eosio.token), contracts::eosio_token_abi().data()); chain.produce_blocks(); chain.create_account(N(tester)); diff --git a/unittests/eosio.token_tests.cpp b/unittests/eosio.token_tests.cpp new file mode 100644 index 00000000000..9d9909b73d9 --- /dev/null +++ b/unittests/eosio.token_tests.cpp @@ -0,0 +1,268 @@ +#include +#include + +#include + +#include + +#include + +#include + +using namespace eosio::testing; +using namespace eosio; +using namespace eosio::chain; +using namespace eosio::testing; +using namespace fc; +using namespace std; + +using mvo = fc::mutable_variant_object; + +class eosio_token_tester : public tester { +public: + + eosio_token_tester() { + produce_blocks( 2 ); + + create_accounts( { N(alice), N(bob), N(carol), N(eosio.token) } ); + produce_blocks( 2 ); + + set_code( N(eosio.token), contracts::eosio_token_wasm() ); + set_abi( N(eosio.token), contracts::eosio_token_abi().data() ); + + produce_blocks(); + + const auto& accnt = control->db().get( N(eosio.token) ); + abi_def abi; + BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); + abi_ser.set_abi(abi, abi_serializer_max_time); + } + + action_result push_action( const account_name& signer, const action_name &name, const variant_object &data ) { + string action_type_name = abi_ser.get_action_type(name); + + action act; + act.account = N(eosio.token); + act.name = name; + act.data = abi_ser.variant_to_binary( action_type_name, data, abi_serializer_max_time ); + + return base_tester::push_action( std::move(act), signer.to_uint64_t() ); + } + + fc::variant get_stats( const string& symbolname ) + { + auto symb = eosio::chain::symbol::from_string(symbolname); + auto symbol_code = symb.to_symbol_code().value; + vector data = get_row_by_account( N(eosio.token), name(symbol_code), N(stat), name(symbol_code) ); + return data.empty() ? fc::variant() : abi_ser.binary_to_variant( "currency_stats", data, abi_serializer_max_time ); + } + + fc::variant get_account( account_name acc, const string& symbolname) + { + auto symb = eosio::chain::symbol::from_string(symbolname); + auto symbol_code = symb.to_symbol_code().value; + vector data = get_row_by_account( N(eosio.token), acc, N(accounts), name(symbol_code) ); + return data.empty() ? fc::variant() : abi_ser.binary_to_variant( "account", data, abi_serializer_max_time ); + } + + action_result create( account_name issuer, + asset maximum_supply ) { + + return push_action( N(eosio.token), N(create), mvo() + ( "issuer", issuer) + ( "maximum_supply", maximum_supply) + ); + } + + action_result issue( account_name issuer, account_name to, asset quantity, string memo ) { + return push_action( issuer, N(issue), mvo() + ( "to", to) + ( "quantity", quantity) + ( "memo", memo) + ); + } + + action_result transfer( account_name from, + account_name to, + asset quantity, + string memo ) { + return push_action( from, N(transfer), mvo() + ( "from", from) + ( "to", to) + ( "quantity", quantity) + ( "memo", memo) + ); + } + + abi_serializer abi_ser; +}; + +BOOST_AUTO_TEST_SUITE(eosio_token_tests) + +BOOST_FIXTURE_TEST_CASE( create_tests, eosio_token_tester ) try { + + auto token = create( N(alice), asset::from_string("1000.000 TKN")); + auto stats = get_stats("3,TKN"); + REQUIRE_MATCHING_OBJECT( stats, mvo() + ("supply", "0.000 TKN") + ("max_supply", "1000.000 TKN") + ("issuer", "alice") + ); + produce_blocks(1); + +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( create_negative_max_supply, eosio_token_tester ) try { + + BOOST_REQUIRE_EQUAL( wasm_assert_msg( "max-supply must be positive" ), + create( N(alice), asset::from_string("-1000.000 TKN")) + ); + +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( symbol_already_exists, eosio_token_tester ) try { + + auto token = create( N(alice), asset::from_string("100 TKN")); + auto stats = get_stats("0,TKN"); + REQUIRE_MATCHING_OBJECT( stats, mvo() + ("supply", "0 TKN") + ("max_supply", "100 TKN") + ("issuer", "alice") + ); + produce_blocks(1); + + BOOST_REQUIRE_EQUAL( wasm_assert_msg( "token with symbol already exists" ), + create( N(alice), asset::from_string("100 TKN")) + ); + +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( create_max_supply, eosio_token_tester ) try { + + auto token = create( N(alice), asset::from_string("4611686018427387903 TKN")); + auto stats = get_stats("0,TKN"); + REQUIRE_MATCHING_OBJECT( stats, mvo() + ("supply", "0 TKN") + ("max_supply", "4611686018427387903 TKN") + ("issuer", "alice") + ); + produce_blocks(1); + + asset max(10, symbol(SY(0, NKT))); + share_type amount = 4611686018427387904; + static_assert(sizeof(share_type) <= sizeof(asset), "asset changed so test is no longer valid"); + static_assert(std::is_trivially_copyable::value, "asset is not trivially copyable"); + memcpy(&max, &amount, sizeof(share_type)); // hack in an invalid amount + + BOOST_CHECK_EXCEPTION( create( N(alice), max) , asset_type_exception, [](const asset_type_exception& e) { + return expect_assert_message(e, "magnitude of asset amount must be less than 2^62"); + }); + + +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( create_max_decimals, eosio_token_tester ) try { + + auto token = create( N(alice), asset::from_string("1.000000000000000000 TKN")); + auto stats = get_stats("18,TKN"); + REQUIRE_MATCHING_OBJECT( stats, mvo() + ("supply", "0.000000000000000000 TKN") + ("max_supply", "1.000000000000000000 TKN") + ("issuer", "alice") + ); + produce_blocks(1); + + asset max(10, symbol(SY(0, NKT))); + //1.0000000000000000000 => 0x8ac7230489e80000L + share_type amount = 0x8ac7230489e80000L; + static_assert(sizeof(share_type) <= sizeof(asset), "asset changed so test is no longer valid"); + static_assert(std::is_trivially_copyable::value, "asset is not trivially copyable"); + memcpy(&max, &amount, sizeof(share_type)); // hack in an invalid amount + + BOOST_CHECK_EXCEPTION( create( N(alice), max) , asset_type_exception, [](const asset_type_exception& e) { + return expect_assert_message(e, "magnitude of asset amount must be less than 2^62"); + }); + +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( issue_tests, eosio_token_tester ) try { + + auto token = create( N(alice), asset::from_string("1000.000 TKN")); + produce_blocks(1); + + issue( N(alice), N(alice), asset::from_string("500.000 TKN"), "hola" ); + + auto stats = get_stats("3,TKN"); + REQUIRE_MATCHING_OBJECT( stats, mvo() + ("supply", "500.000 TKN") + ("max_supply", "1000.000 TKN") + ("issuer", "alice") + ); + + auto alice_balance = get_account(N(alice), "3,TKN"); + REQUIRE_MATCHING_OBJECT( alice_balance, mvo() + ("balance", "500.000 TKN") + ); + + BOOST_REQUIRE_EQUAL( wasm_assert_msg( "quantity exceeds available supply" ), + issue( N(alice), N(alice), asset::from_string("500.001 TKN"), "hola" ) + ); + + BOOST_REQUIRE_EQUAL( wasm_assert_msg( "must issue positive quantity" ), + issue( N(alice), N(alice), asset::from_string("-1.000 TKN"), "hola" ) + ); + + BOOST_REQUIRE_EQUAL( success(), + issue( N(alice), N(alice), asset::from_string("1.000 TKN"), "hola" ) + ); + + +} FC_LOG_AND_RETHROW() + +BOOST_FIXTURE_TEST_CASE( transfer_tests, eosio_token_tester ) try { + + auto token = create( N(alice), asset::from_string("1000 CERO")); + produce_blocks(1); + + issue( N(alice), N(alice), asset::from_string("1000 CERO"), "hola" ); + + auto stats = get_stats("0,CERO"); + REQUIRE_MATCHING_OBJECT( stats, mvo() + ("supply", "1000 CERO") + ("max_supply", "1000 CERO") + ("issuer", "alice") + ); + + auto alice_balance = get_account(N(alice), "0,CERO"); + REQUIRE_MATCHING_OBJECT( alice_balance, mvo() + ("balance", "1000 CERO") + ); + + transfer( N(alice), N(bob), asset::from_string("300 CERO"), "hola" ); + + alice_balance = get_account(N(alice), "0,CERO"); + REQUIRE_MATCHING_OBJECT( alice_balance, mvo() + ("balance", "700 CERO") + ("frozen", 0) + ("whitelist", 1) + ); + + auto bob_balance = get_account(N(bob), "0,CERO"); + REQUIRE_MATCHING_OBJECT( bob_balance, mvo() + ("balance", "300 CERO") + ("frozen", 0) + ("whitelist", 1) + ); + + BOOST_REQUIRE_EQUAL( wasm_assert_msg( "overdrawn balance" ), + transfer( N(alice), N(bob), asset::from_string("701 CERO"), "hola" ) + ); + + BOOST_REQUIRE_EQUAL( wasm_assert_msg( "must transfer positive quantity" ), + transfer( N(alice), N(bob), asset::from_string("-1000 CERO"), "hola" ) + ); + + +} FC_LOG_AND_RETHROW() + +BOOST_AUTO_TEST_SUITE_END() diff --git a/unittests/eosio_system_tester.hpp b/unittests/eosio_system_tester.hpp index 194d52330ea..9b3fb642c3b 100644 --- a/unittests/eosio_system_tester.hpp +++ b/unittests/eosio_system_tester.hpp @@ -4,20 +4,13 @@ */ #pragma once -#include #include - -#include -#include - -#include -#include - -#include -#include +#include #include +#include + using namespace eosio::chain; using namespace eosio::testing; using namespace fc; @@ -49,14 +42,13 @@ class eosio_system_tester : public TESTER { create_accounts({ N(eosio.token), N(eosio.ram), N(eosio.ramfee), N(eosio.stake), N(eosio.bpay), N(eosio.vpay), N(eosio.saving), N(eosio.names) }); - produce_blocks( 100 ); - set_code( N(eosio.token), eosio_token_wast ); - set_abi( N(eosio.token), eosio_token_abi ); + set_code( N(eosio.token), contracts::eosio_token_wasm() ); + set_abi( N(eosio.token), contracts::eosio_token_abi().data() ); { - const auto& accnt = control->db().get( N(eosio.token) ); + const auto& accnt = control->db().get( N(eosio.token) ); abi_def abi; BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); token_abi_ser.set_abi(abi, abi_serializer_max_time); @@ -66,11 +58,16 @@ class eosio_system_tester : public TESTER { issue(config::system_account_name, core_from_string("1000000000.0000")); BOOST_REQUIRE_EQUAL( core_from_string("1000000000.0000"), get_balance( "eosio" ) ); - set_code( config::system_account_name, eosio_system_wast ); - set_abi( config::system_account_name, eosio_system_abi ); + set_code( config::system_account_name, contracts::eosio_system_wasm() ); + set_abi( config::system_account_name, contracts::eosio_system_abi().data() ); + + base_tester::push_action(config::system_account_name, N(init), + config::system_account_name, mutable_variant_object() + ("version", 0) + ("core", CORE_SYM_STR)); { - const auto& accnt = control->db().get( config::system_account_name ); + const auto& accnt = control->db().get( config::system_account_name ); abi_def abi; BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); abi_ser.set_abi(abi, abi_serializer_max_time); @@ -417,11 +414,11 @@ class eosio_system_tester : public TESTER { ("is_priv", 1) ); - set_code( N(eosio.msig), eosio_msig_wast ); - set_abi( N(eosio.msig), eosio_msig_abi ); + set_code( N(eosio.msig), contracts::eosio_msig_wasm() ); + set_abi( N(eosio.msig), contracts::eosio_msig_abi().data() ); produce_blocks(); - const auto& accnt = control->db().get( N(eosio.msig) ); + const auto& accnt = control->db().get( N(eosio.msig) ); abi_def msig_abi; BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, msig_abi), true); msig_abi_ser.set_abi(msig_abi, abi_serializer_max_time); diff --git a/unittests/forked_tests.cpp b/unittests/forked_tests.cpp index 9543a791174..b1e5a6c9c6a 100644 --- a/unittests/forked_tests.cpp +++ b/unittests/forked_tests.cpp @@ -1,15 +1,17 @@ -#include -#include #include -#include +#include +#include -#include -#include +#include #include #include +#include + +#include + using namespace eosio::chain; using namespace eosio::testing; @@ -158,8 +160,8 @@ BOOST_AUTO_TEST_CASE( forking ) try { auto r2 = c.create_accounts( {N(eosio.token)} ); wdump((fc::json::to_pretty_string(r2))); - c.set_code( N(eosio.token), eosio_token_wast ); - c.set_abi( N(eosio.token), eosio_token_abi ); + c.set_code( N(eosio.token), contracts::eosio_token_wasm() ); + c.set_abi( N(eosio.token), contracts::eosio_token_abi().data() ); c.produce_blocks(10); diff --git a/unittests/identity_tests.cpp b/unittests/identity_tests.cpp deleted file mode 100644 index 0ddbcab3cb1..00000000000 --- a/unittests/identity_tests.cpp +++ /dev/null @@ -1,683 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -#ifdef NON_VALIDATING_TEST -#define TESTER tester -#else -#define TESTER validating_tester -#endif - -using namespace eosio; -using namespace eosio::chain; -using namespace eosio::testing; -using namespace fc; - -class identity_tester : public TESTER { -public: - - identity_tester() { - produce_blocks(2); - - create_accounts( {N(identity), N(identitytest), N(alice), N(bob), N(carol)} ); - produce_blocks(1000); - - set_code(N(identity), identity_wast); - set_abi(N(identity), identity_abi); - set_code(N(identitytest), identity_test_wast); - set_abi(N(identitytest), identity_test_abi); - produce_blocks(1); - - const auto& accnt = control->db().get( N(identity) ); - abi_def abi; - BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); - abi_ser.set_abi(abi, abi_serializer_max_time); - - const auto& acnt_test = control->db().get( N(identitytest) ); - abi_def abi_test; - BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(acnt_test.abi, abi_test), true); - abi_ser_test.set_abi(abi_test, abi_serializer_max_time); - - const auto& ap = control->active_producers(); - FC_ASSERT(0 < ap.producers.size(), "No producers"); - producer_name = (string)ap.producers.front().producer_name; - } - - uint64_t get_result_uint64() { - const auto& db = control->db(); - const auto* t_id = db.find(boost::make_tuple(N(identitytest), 0, N(result))); - FC_ASSERT(t_id != 0, "Table id not found"); - - const auto& idx = db.get_index(); - - auto itr = idx.lower_bound(boost::make_tuple(t_id->id)); - FC_ASSERT( itr != idx.end() && itr->t_id == t_id->id, "lower_bound failed"); - - FC_ASSERT( N(result) == itr->primary_key, "row with result not found"); - FC_ASSERT( sizeof(uint64_t) == itr->value.size(), "unexpected result size"); - return *reinterpret_cast(itr->value.data()); - } - - uint64_t get_owner_for_identity(uint64_t identity) - { - action get_owner_act; - get_owner_act.account = N(identitytest); - get_owner_act.name = N(getowner); - get_owner_act.data = abi_ser_test.variant_to_binary("getowner", mutable_variant_object() - ("identity", identity), - abi_serializer_max_time - ); - BOOST_REQUIRE_EQUAL(success(), push_action(std::move(get_owner_act), N(alice))); - return get_result_uint64(); - } - - uint64_t get_identity_for_account(const string& account) - { - action get_identity_act; - get_identity_act.account = N(identitytest); - get_identity_act.name = N(getidentity); - get_identity_act.data = abi_ser_test.variant_to_binary("getidentity", mutable_variant_object() - ("account", account), - abi_serializer_max_time - ); - BOOST_REQUIRE_EQUAL(success(), push_action(std::move(get_identity_act), N(alice))); - return get_result_uint64(); - } - - action_result create_identity(const string& account_name, uint64_t identity, bool auth = true) { - action create_act; - create_act.account = N(identity); - create_act.name = N(create); - create_act.data = abi_ser.variant_to_binary("create", mutable_variant_object() - ("creator", account_name) - ("identity", identity), - abi_serializer_max_time - ); - return push_action( std::move(create_act), (auth ? string_to_name(account_name.c_str()) : (string_to_name(account_name.c_str()) == N(bob)) ? N(alice) : N(bob))); - } - - fc::variant get_identity(uint64_t idnt) { - const auto& db = control->db(); - const auto* t_id = db.find(boost::make_tuple(N(identity), N(identity), N(ident))); - FC_ASSERT(t_id != 0, "object not found"); - - const auto& idx = db.get_index(); - - auto itr = idx.lower_bound(boost::make_tuple(t_id->id, idnt)); - FC_ASSERT( itr != idx.end() && itr->t_id == t_id->id, "lower_bound failed"); - BOOST_REQUIRE_EQUAL(idnt, itr->primary_key); - - vector data; - copy_row(*itr, data); - return abi_ser.binary_to_variant("identrow", data, abi_serializer_max_time); - } - - action_result certify(const string& certifier, uint64_t identity, const vector& fields, bool auth = true) { - action cert_act; - cert_act.account = N(identity); - cert_act.name = N(certprop); - cert_act.data = abi_ser.variant_to_binary("certprop", mutable_variant_object() - ("bill_storage_to", certifier) - ("certifier", certifier) - ("identity", identity) - ("value", fields), - abi_serializer_max_time - ); - return push_action( std::move(cert_act), (auth ? string_to_name(certifier.c_str()) : (string_to_name(certifier.c_str()) == N(bob)) ? N(alice) : N(bob))); - } - - fc::variant get_certrow(uint64_t identity, const string& property, uint64_t trusted, const string& certifier) { - const auto& db = control->db(); - const auto* t_id = db.find(boost::make_tuple(N(identity), identity, N( certs ))); - if ( !t_id ) { - return fc::variant(nullptr); - } - - const auto& idx = db.get_index(); - auto key = key256::make_from_word_sequence(string_to_name(property.c_str()), trusted, string_to_name(certifier.c_str())); - - auto itr = idx.lower_bound(boost::make_tuple(t_id->id, key.get_array())); - if (itr != idx.end() && itr->t_id == t_id->id && itr->secondary_key == key.get_array()) { - auto primary_key = itr->primary_key; - const auto& idx = db.get_index(); - - auto itr = idx.lower_bound(boost::make_tuple(t_id->id, primary_key)); - FC_ASSERT( itr != idx.end() && itr->t_id == t_id->id && primary_key == itr->primary_key, - "Record found in secondary index, but not found in primary index." - ); - vector data; - copy_row(*itr, data); - return abi_ser.binary_to_variant("certrow", data, abi_serializer_max_time); - } else { - return fc::variant(nullptr); - } - } - - fc::variant get_accountrow(const string& account) { - const auto& db = control->db(); - uint64_t acnt = string_to_name(account.c_str()); - const auto* t_id = db.find(boost::make_tuple(N(identity), acnt, N(account))); - if (!t_id) { - return fc::variant(nullptr); - } - const auto& idx = db.get_index(); - auto itr = idx.lower_bound(boost::make_tuple(t_id->id, N(account))); - if( itr != idx.end() && itr->t_id == t_id->id && N(account) == itr->primary_key) { - vector data; - copy_row(*itr, data); - return abi_ser.binary_to_variant("accountrow", data, abi_serializer_max_time); - } else { - return fc::variant(nullptr); - } - } - - action_result settrust(const string& trustor, const string& trusting, uint64_t trust, bool auth = true) - { - signed_transaction trx; - action settrust_act; - settrust_act.account = N(identity); - settrust_act.name = N(settrust); - settrust_act.data = abi_ser.variant_to_binary("settrust", mutable_variant_object() - ("trustor", trustor) - ("trusting", trusting) - ("trust", trust), - abi_serializer_max_time - ); - auto tr = string_to_name(trustor.c_str()); - return push_action( std::move(settrust_act), (auth ? tr : 0) ); - } - - bool get_trust(const string& trustor, const string& trusting) { - const auto& db = control->db(); - const auto* t_id = db.find(boost::make_tuple(N(identity), string_to_name(trustor.c_str()), N(trust))); - if (!t_id) { - return false; - } - - uint64_t tng = string_to_name(trusting.c_str()); - const auto& idx = db.get_index(); - auto itr = idx.lower_bound(boost::make_tuple(t_id->id, tng)); - return ( itr != idx.end() && itr->t_id == t_id->id && tng == itr->primary_key ); //true if found - } - -public: - abi_serializer abi_ser; - abi_serializer abi_ser_test; - std::string producer_name; -}; - -constexpr uint64_t identity_val = 0xffffffffffffffff; //64-bit value - -BOOST_AUTO_TEST_SUITE(identity_tests) - -BOOST_FIXTURE_TEST_CASE( identity_create, identity_tester ) try { - - BOOST_REQUIRE_EQUAL(success(), create_identity("alice", identity_val)); - fc::variant idnt = get_identity(identity_val); - BOOST_REQUIRE_EQUAL( identity_val, idnt["identity"].as_uint64()); - BOOST_REQUIRE_EQUAL( "alice", idnt["creator"].as_string()); - - //attempts to create already existing identity should fail - BOOST_REQUIRE_EQUAL(wasm_assert_msg("identity already exists"), create_identity("alice", identity_val)); - BOOST_REQUIRE_EQUAL(wasm_assert_msg("identity already exists"), create_identity("bob", identity_val)); - - //alice can create more identities - BOOST_REQUIRE_EQUAL(success(), create_identity("alice", 2)); - fc::variant idnt2 = get_identity(2); - BOOST_REQUIRE_EQUAL( 2, idnt2["identity"].as_uint64()); - BOOST_REQUIRE_EQUAL( "alice", idnt2["creator"].as_string()); - - //bob can create an identity as well - BOOST_REQUIRE_EQUAL(success(), create_identity("bob", 1)); - - //identity == 0 has special meaning, should be impossible to create - BOOST_REQUIRE_EQUAL(wasm_assert_msg("identity=0 is not allowed"), create_identity("alice", 0)); - - //creating adentity without authentication is not allowed - BOOST_REQUIRE_EQUAL(error("missing authority of alice"), create_identity("alice", 3, false)); - - fc::variant idnt_bob = get_identity(1); - BOOST_REQUIRE_EQUAL( 1, idnt_bob["identity"].as_uint64()); - BOOST_REQUIRE_EQUAL( "bob", idnt_bob["creator"].as_string()); - - //previously created identity should still exist - idnt = get_identity(identity_val); - BOOST_REQUIRE_EQUAL( identity_val, idnt["identity"].as_uint64()); - - } FC_LOG_AND_RETHROW() //identity_create - -BOOST_FIXTURE_TEST_CASE( certify_decertify, identity_tester ) try { - BOOST_REQUIRE_EQUAL(success(), create_identity("alice", identity_val)); - - //alice (creator of the identity) certifies 1 property - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "name") - ("type", "string") - ("data", to_uint8_vector("Alice Smith")) - ("memo", "") - ("confidence", 100) - })); - - auto obj = get_certrow(identity_val, "name", 0, "alice"); - BOOST_REQUIRE_EQUAL(true, obj.is_object()); - BOOST_REQUIRE_EQUAL( "name", obj["property"].as_string() ); - BOOST_REQUIRE_EQUAL( 0, obj["trusted"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "alice", obj["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( 100, obj["confidence"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "string", obj["type"].as_string() ); - BOOST_REQUIRE_EQUAL( "Alice Smith", to_string(obj["data"]) ); - - //check that there is no trusted row with the same data - BOOST_REQUIRE_EQUAL(true, get_certrow(identity_val, "name", 1, "alice").is_null()); - - //bob certifies 2 properties - vector fields = { mutable_variant_object() - ("property", "email") - ("type", "string") - ("data", to_uint8_vector("alice@alice.name")) - ("memo", "official email") - ("confidence", 95), - mutable_variant_object() - ("property", "address") - ("type", "string") - ("data", to_uint8_vector("1750 Kraft Drive SW, Blacksburg, VA 24060")) - ("memo", "official address") - ("confidence", 80) - }; - - //shouldn't be able to certify without authorization - BOOST_REQUIRE_EQUAL(error("missing authority of bob"), certify("bob", identity_val, fields, false)); - - //certifying non-existent identity is not allowed - uint64_t non_existent = 11; - BOOST_REQUIRE_EQUAL(wasm_assert_msg("identity does not exist"), - certify("alice", non_existent, vector{ mutable_variant_object() - ("property", "name") - ("type", "string") - ("data", to_uint8_vector("Alice Smith")) - ("memo", "") - ("confidence", 100) - }) - ); - - //parameter "type" should be not longer than 32 bytes - BOOST_REQUIRE_EQUAL(wasm_assert_msg("certrow::type should be not longer than 32 bytes"), - certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "height") - ("type", "super_long_type_name_wich_is_not_allowed") - ("data", to_uint8_vector("Alice Smith")) - ("memo", "") - ("confidence", 100) - }) - ); - - //bob also should be able to certify - BOOST_REQUIRE_EQUAL(success(), certify("bob", identity_val, fields)); - - obj = get_certrow(identity_val, "email", 0, "bob"); - BOOST_REQUIRE_EQUAL(true, obj.is_object()); - BOOST_REQUIRE_EQUAL( "email", obj["property"].as_string() ); - BOOST_REQUIRE_EQUAL( 0, obj["trusted"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "bob", obj["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( 95, obj["confidence"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "string", obj["type"].as_string() ); - BOOST_REQUIRE_EQUAL( "alice@alice.name", to_string(obj["data"]) ); - - obj = get_certrow(identity_val, "address", 0, "bob"); - BOOST_REQUIRE_EQUAL(true, obj.is_object()); - BOOST_REQUIRE_EQUAL( "address", obj["property"].as_string() ); - BOOST_REQUIRE_EQUAL( 0, obj["trusted"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "bob", obj["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( 80, obj["confidence"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "string", obj["type"].as_string() ); - BOOST_REQUIRE_EQUAL( "1750 Kraft Drive SW, Blacksburg, VA 24060", to_string(obj["data"]) ); - - //now alice certifies another email - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "email") - ("type", "string") - ("data", to_uint8_vector("alice.smith@gmail.com")) - ("memo", "") - ("confidence", 100) - })); - obj = get_certrow(identity_val, "email", 0, "alice"); - BOOST_REQUIRE_EQUAL(true, obj.is_object()); - BOOST_REQUIRE_EQUAL( "email", obj["property"].as_string() ); - BOOST_REQUIRE_EQUAL( 0, obj["trusted"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "alice", obj["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( 100, obj["confidence"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "string", obj["type"].as_string() ); - BOOST_REQUIRE_EQUAL( "alice.smith@gmail.com", to_string(obj["data"]) ); - - //email certification made by bob should be still in place - obj = get_certrow(identity_val, "email", 0, "bob"); - BOOST_REQUIRE_EQUAL( "bob", obj["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( "alice@alice.name", to_string(obj["data"]) ); - - //remove email certification made by alice - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "email") - ("type", "string") - ("data", to_uint8_vector("")) - ("memo", "") - ("confidence", 0) - })); - BOOST_REQUIRE_EQUAL(true, get_certrow(identity_val, "email", 0, "alice").is_null()); - - //email certification made by bob should still be in place - obj = get_certrow(identity_val, "email", 0, "bob"); - BOOST_REQUIRE_EQUAL( "bob", obj["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( "alice@alice.name", to_string(obj["data"]) ); - - //name certification made by alice should still be in place - obj = get_certrow(identity_val, "name", 0, "alice"); - BOOST_REQUIRE_EQUAL(true, obj.is_object()); - BOOST_REQUIRE_EQUAL( "Alice Smith", to_string(obj["data"]) ); - -} FC_LOG_AND_RETHROW() //certify_decertify - -BOOST_FIXTURE_TEST_CASE( trust_untrust, identity_tester ) try { - BOOST_REQUIRE_EQUAL(success(), settrust("bob", "alice", 1)); - BOOST_REQUIRE_EQUAL(true, get_trust("bob", "alice")); - - //relation of trust in opposite direction should not exist - BOOST_REQUIRE_EQUAL(false, get_trust("alice", "bob")); - - //remove trust - BOOST_REQUIRE_EQUAL(success(), settrust("bob", "alice", 0)); - BOOST_REQUIRE_EQUAL(false, get_trust("bob", "alice")); - -} FC_LOG_AND_RETHROW() //trust_untrust - -BOOST_FIXTURE_TEST_CASE( certify_decertify_owner, identity_tester ) try { - BOOST_REQUIRE_EQUAL(success(), create_identity("alice", identity_val)); - - //bob certifies ownership for alice - BOOST_REQUIRE_EQUAL(success(), certify("bob", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "bob").is_object() ); - //it should not affect "account" singleton in alice's scope since it's not self-certification - BOOST_REQUIRE_EQUAL( true, get_accountrow("alice").is_null() ); - //it also shouldn't affect "account" singleton in bob's scope since he certified not himself - BOOST_REQUIRE_EQUAL( true, get_accountrow("bob").is_null() ); - - // alice certifies her ownership, should populate "account" singleton - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 100) - })); - fc::variant certrow = get_certrow(identity_val, "owner", 0, "alice"); - BOOST_REQUIRE_EQUAL( true, certrow.is_object() ); - BOOST_REQUIRE_EQUAL( "owner", certrow["property"].as_string() ); - BOOST_REQUIRE_EQUAL( 0, certrow["trusted"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "alice", certrow["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( 100, certrow["confidence"].as_uint64() ); - BOOST_REQUIRE_EQUAL( "account", certrow["type"].as_string() ); - BOOST_REQUIRE_EQUAL( N(alice), to_uint64(certrow["data"]) ); - - //check that singleton "account" in the alice's scope contains the identity - fc::variant acntrow = get_accountrow("alice"); - BOOST_REQUIRE_EQUAL( true, certrow.is_object() ); - BOOST_REQUIRE_EQUAL( identity_val, acntrow["identity"].as_uint64() ); - - // ownership was certified by alice, but not by a block producer or someone trusted by a block producer - BOOST_REQUIRE_EQUAL(0, get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(0, get_identity_for_account("alice")); - - //remove bob's certification - BOOST_REQUIRE_EQUAL(success(), certify("bob", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 0) - })); - //singleton "account" in the alice's scope still should contain the identity - acntrow = get_accountrow("alice"); - BOOST_REQUIRE_EQUAL( true, certrow.is_object() ); - BOOST_REQUIRE_EQUAL( identity_val, acntrow["identity"].as_uint64() ); - - //remove owner certification - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 0) - })); - certrow = get_certrow(identity_val, "owner", 0, "alice"); - BOOST_REQUIRE_EQUAL(true, certrow.is_null()); - - //check that singleton "account" in the alice's scope doesn't contain the identity - acntrow = get_accountrow("alice"); - BOOST_REQUIRE_EQUAL(true, certrow.is_null()); - -} FC_LOG_AND_RETHROW() //certify_decertify_owner - -BOOST_FIXTURE_TEST_CASE( owner_certified_by_producer, identity_tester ) try { - BOOST_REQUIRE_EQUAL(success(), create_identity("alice", identity_val)); - - // certify owner by a block producer, should result in trusted certification - BOOST_REQUIRE_EQUAL(success(), certify( producer_name, identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "") - ("confidence", 100) - })); - fc::variant certrow = get_certrow(identity_val, "owner", 1, producer_name); - BOOST_REQUIRE_EQUAL( true, certrow.is_object() ); - BOOST_REQUIRE_EQUAL( "owner", certrow["property"].as_string() ); - BOOST_REQUIRE_EQUAL( 1, certrow["trusted"].as_uint64() ); - BOOST_REQUIRE_EQUAL( producer_name, certrow["certifier"].as_string() ); - BOOST_REQUIRE_EQUAL( N(alice), to_uint64(certrow["data"]) ); - - //uncertified copy of that row shouldn't exist - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, producer_name).is_null()); - - //alice still has not claimed the identity - she is not the official owner yet - BOOST_REQUIRE_EQUAL(0, get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(0, get_identity_for_account("alice")); - - - //alice claims it - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "alice").is_object()); - - //now alice should be the official owner - BOOST_REQUIRE_EQUAL(N(alice), get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(identity_val, get_identity_for_account("alice")); - - //block producer decertifies ownership - BOOST_REQUIRE_EQUAL(success(), certify(producer_name, identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "") - ("confidence", 0) - })); - //self-certification made by alice still exists - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "alice").is_object()); - //but now she is not official owner - BOOST_REQUIRE_EQUAL(0, get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(0, get_identity_for_account("alice")); - -} FC_LOG_AND_RETHROW() //owner_certified_by_producer - -BOOST_FIXTURE_TEST_CASE( owner_certified_by_trusted_account, identity_tester ) try { - BOOST_REQUIRE_EQUAL(success(), create_identity("bob", identity_val)); - - //alice claims the identity created by bob - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "alice").is_object()); - //alice claimed the identity, but it hasn't been certified yet - she is not the official owner - BOOST_REQUIRE_EQUAL(0, get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(0, get_identity_for_account("alice")); - - //block producer trusts bob - BOOST_REQUIRE_EQUAL(success(), settrust(producer_name, "bob", 1)); - BOOST_REQUIRE_EQUAL(true, get_trust(producer_name, "bob")); - - // bob (trusted account) certifies alice's ownership, it should result in trusted certification - BOOST_REQUIRE_EQUAL(success(), certify("bob", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 1, "bob").is_object() ); - //no untrusted row should exist - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "bob").is_null() ); - - //now alice should be the official owner - BOOST_REQUIRE_EQUAL(N(alice), get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(identity_val, get_identity_for_account("alice")); - - //block producer stops trusting bob - BOOST_REQUIRE_EQUAL(success(), settrust(producer_name, "bob", 0)); - BOOST_REQUIRE_EQUAL(false, get_trust(producer_name, "bob")); - - //certification made by bob is still flaged as trusted - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 1, "bob").is_object() ); - - //but now alice shouldn't be the official owner - BOOST_REQUIRE_EQUAL(0, get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(0, get_identity_for_account("alice")); - -} FC_LOG_AND_RETHROW() //owner_certified_by_trusted_account - -BOOST_FIXTURE_TEST_CASE( owner_certification_becomes_trusted, identity_tester ) try { - BOOST_REQUIRE_EQUAL(success(), create_identity("bob", identity_val)); - - // bob (not trusted so far) certifies alice's ownership, it should result in untrusted certification - BOOST_REQUIRE_EQUAL(success(), certify("bob", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "bob").is_object() ); - //no trusted row should exist - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 1, "bob").is_null() ); - - //alice claims the identity created by bob - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "alice").is_object()); - //alice claimed the identity, but it is certified by untrusted accounts only - she is not the official owner - BOOST_REQUIRE_EQUAL(0, get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(0, get_identity_for_account("alice")); - - //block producer trusts bob - BOOST_REQUIRE_EQUAL(success(), settrust(producer_name, "bob", 1)); - BOOST_REQUIRE_EQUAL(true, get_trust(producer_name, "bob")); - - //old certification made by bob still shouldn't be flaged as trusted - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 0, "bob").is_object() ); - - //but effectively bob's certification should became trusted - BOOST_REQUIRE_EQUAL(N(alice), get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(identity_val, get_identity_for_account("alice")); - -} FC_LOG_AND_RETHROW() //owner_certification_becomes_trusted - -BOOST_FIXTURE_TEST_CASE( ownership_contradiction, identity_tester ) try { - BOOST_REQUIRE_EQUAL(success(), create_identity("alice", identity_val)); - - //alice claims identity - BOOST_REQUIRE_EQUAL(success(), certify("alice", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "claiming onwership") - ("confidence", 100) - })); - - // block producer certifies alice's ownership - BOOST_REQUIRE_EQUAL(success(), certify(producer_name, identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(alice))) - ("memo", "") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 1, producer_name).is_object() ); - - //now alice is the official owner of the identity - BOOST_REQUIRE_EQUAL(N(alice), get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(identity_val, get_identity_for_account("alice")); - - //bob claims identity - BOOST_REQUIRE_EQUAL(success(), certify("bob", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(bob))) - ("memo", "claiming onwership") - ("confidence", 100) - })); - - - //block producer trusts carol - BOOST_REQUIRE_EQUAL(success(), settrust(producer_name, "carol", 1)); - BOOST_REQUIRE_EQUAL(true, get_trust(producer_name, "carol")); - - //another trusted delegate certifies bob's identity (to the identity already certified to alice) - BOOST_REQUIRE_EQUAL(success(), certify("carol", identity_val, vector{ mutable_variant_object() - ("property", "owner") - ("type", "account") - ("data", to_uint8_vector(N(bob))) - ("memo", "") - ("confidence", 100) - })); - BOOST_REQUIRE_EQUAL( true, get_certrow(identity_val, "owner", 1, producer_name).is_object() ); - - //now neither alice or bob are official owners, because we have 2 trusted certifications in contradiction to each other - BOOST_REQUIRE_EQUAL(0, get_owner_for_identity(identity_val)); - BOOST_REQUIRE_EQUAL(0, get_identity_for_account("alice")); - -} FC_LOG_AND_RETHROW() //ownership_contradiction - -BOOST_AUTO_TEST_SUITE_END() diff --git a/unittests/multi_index_tests.cpp b/unittests/multi_index_tests.cpp deleted file mode 100644 index 37fd9c70a66..00000000000 --- a/unittests/multi_index_tests.cpp +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include - -#include -#include - -#include - -#include -#include - -#ifdef NON_VALIDATING_TEST -#define TESTER tester -#else -#define TESTER validating_tester -#endif - -using namespace eosio::testing; - -BOOST_AUTO_TEST_SUITE(multi_index_tests) - -BOOST_FIXTURE_TEST_CASE( multi_index_load, TESTER ) try { - - produce_blocks(2); - create_accounts( {N(multitest)} ); - produce_blocks(2); - - set_code( N(multitest), multi_index_test_wast ); - set_abi( N(multitest), multi_index_test_abi ); - - produce_blocks(1); - - abi_serializer abi_ser(json::from_string(multi_index_test_abi).as(), abi_serializer_max_time); - - signed_transaction trx1; - { - auto& trx = trx1; - action trigger_act; - trigger_act.account = N(multitest); - trigger_act.name = N(trigger); - trigger_act.authorization = vector{{N(multitest), config::active_name}}; - trigger_act.data = abi_ser.variant_to_binary("trigger", mutable_variant_object() - ("what", 0), - abi_serializer_max_time - ); - trx.actions.emplace_back(std::move(trigger_act)); - set_transaction_headers(trx); - trx.sign(get_private_key(N(multitest), "active"), control->get_chain_id()); - push_transaction(trx); - } - - signed_transaction trx2; - { - auto& trx = trx2; - - action trigger_act; - trigger_act.account = N(multitest); - trigger_act.name = N(trigger); - trigger_act.authorization = vector{{N(multitest), config::active_name}}; - trigger_act.data = abi_ser.variant_to_binary("trigger", mutable_variant_object() - ("what", 1), - abi_serializer_max_time - ); - trx.actions.emplace_back(std::move(trigger_act)); - set_transaction_headers(trx); - trx.sign(get_private_key(N(multitest), "active"), control->get_chain_id()); - push_transaction(trx); - } - - produce_block(); - BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx1.id())); - BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx2.id())); - -} FC_LOG_AND_RETHROW() - -BOOST_AUTO_TEST_SUITE_END() diff --git a/unittests/payloadless_tests.cpp b/unittests/payloadless_tests.cpp index 138ae887ecd..173d326af2e 100644 --- a/unittests/payloadless_tests.cpp +++ b/unittests/payloadless_tests.cpp @@ -2,18 +2,19 @@ #pragma GCC diagnostic ignored "-Wsign-compare" #include #pragma GCC diagnostic pop -#include + #include #include -#include -#include - #include #include #include +#include + +#include + #ifdef NON_VALIDATING_TEST #define TESTER tester #else @@ -34,8 +35,8 @@ BOOST_AUTO_TEST_SUITE(payloadless_tests) BOOST_FIXTURE_TEST_CASE( test_doit, payloadless_tester ) { create_accounts( {N(payloadless)} ); - set_code( N(payloadless), payloadless_wast ); - set_abi( N(payloadless), payloadless_abi ); + set_code( N(payloadless), contracts::payloadless_wasm() ); + set_abi( N(payloadless), contracts::payloadless_abi().data() ); auto trace = push_action(N(payloadless), N(doit), N(payloadless), mutable_variant_object()); auto msg = trace->action_traces.front().console; @@ -47,10 +48,10 @@ BOOST_FIXTURE_TEST_CASE( test_doit, payloadless_tester ) { BOOST_FIXTURE_TEST_CASE( test_abi_serializer, payloadless_tester ) { create_accounts( {N(payloadless)} ); - set_code( N(payloadless), payloadless_wast ); - set_abi( N(payloadless), payloadless_abi ); + set_code( N(payloadless), contracts::payloadless_wasm() ); + set_abi( N(payloadless), contracts::payloadless_abi().data() ); - variant pretty_trx = fc::mutable_variant_object() + fc::variant pretty_trx = fc::mutable_variant_object() ("actions", fc::variants({ fc::mutable_variant_object() ("account", name(N(payloadless))) diff --git a/unittests/pbft_tests.cpp b/unittests/pbft_tests.cpp index ff47933e765..c87708d2685 100644 --- a/unittests/pbft_tests.cpp +++ b/unittests/pbft_tests.cpp @@ -5,8 +5,7 @@ #include #include -#include -#include +#include #include diff --git a/unittests/ram_tests.cpp b/unittests/ram_tests.cpp index 6fe0eec6613..f85d3a41ea4 100644 --- a/unittests/ram_tests.cpp +++ b/unittests/ram_tests.cpp @@ -14,23 +14,20 @@ #include #include -#include "eosio_system_tester.hpp" +#include -#include -#include +#include "eosio_system_tester.hpp" /* * register test suite `ram_tests` */ BOOST_AUTO_TEST_SUITE(ram_tests) - - /************************************************************************************* * ram_tests test case *************************************************************************************/ BOOST_FIXTURE_TEST_CASE(ram_tests, eosio_system::eosio_system_tester) { try { - auto init_request_bytes = 80000; + auto init_request_bytes = 80000 + 7110; // `7110' is for table token row const auto increment_contract_bytes = 10000; const auto table_allocation_bytes = 12000; BOOST_REQUIRE_MESSAGE(table_allocation_bytes > increment_contract_bytes, "increment_contract_bytes must be less than table_allocation_bytes for this test setup to work"); @@ -44,7 +41,7 @@ BOOST_FIXTURE_TEST_CASE(ram_tests, eosio_system::eosio_system_tester) { try { for (auto i = 0; i < 10; ++i) { try { - set_code( N(testram11111), test_ram_limit_wast ); + set_code( N(testram11111), contracts::test_ram_limit_wasm() ); break; } catch (const ram_usage_exceeded&) { init_request_bytes += increment_contract_bytes; @@ -56,7 +53,7 @@ BOOST_FIXTURE_TEST_CASE(ram_tests, eosio_system::eosio_system_tester) { try { for (auto i = 0; i < 10; ++i) { try { - set_abi( N(testram11111), test_ram_limit_abi ); + set_abi( N(testram11111), contracts::test_ram_limit_abi().data() ); break; } catch (const ram_usage_exceeded&) { init_request_bytes += increment_contract_bytes; @@ -65,8 +62,8 @@ BOOST_FIXTURE_TEST_CASE(ram_tests, eosio_system::eosio_system_tester) { try { } } produce_blocks(10); - set_code( N(testram22222), test_ram_limit_wast ); - set_abi( N(testram22222), test_ram_limit_abi ); + set_code( N(testram22222), contracts::test_ram_limit_wasm() ); + set_abi( N(testram22222), contracts::test_ram_limit_abi().data() ); produce_blocks(10); auto total = get_total_stake( N(testram11111) ); diff --git a/unittests/snapshot_tests.cpp b/unittests/snapshot_tests.cpp index 1534a49b5dc..f3b34fcb225 100644 --- a/unittests/snapshot_tests.cpp +++ b/unittests/snapshot_tests.cpp @@ -9,8 +9,7 @@ #include -#include -#include +#include #include @@ -159,8 +158,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(test_exhaustive_snapshot, SNAPSHOT_SUITE, snapshot chain.create_account(N(snapshot)); chain.produce_blocks(1); - chain.set_code(N(snapshot), snapshot_test_wast); - chain.set_abi(N(snapshot), snapshot_test_abi); + chain.set_code(N(snapshot), contracts::snapshot_test_wasm()); + chain.set_abi(N(snapshot), contracts::snapshot_test_abi().data()); chain.produce_blocks(1); chain.control->abort_block(); @@ -203,8 +202,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(test_replay_over_snapshot, SNAPSHOT_SUITE, snapsho chain.create_account(N(snapshot)); chain.produce_blocks(1); - chain.set_code(N(snapshot), snapshot_test_wast); - chain.set_abi(N(snapshot), snapshot_test_abi); + chain.set_code(N(snapshot), contracts::snapshot_test_wasm()); + chain.set_abi(N(snapshot), contracts::snapshot_test_abi().data()); chain.produce_blocks(1); chain.control->abort_block(); diff --git a/unittests/special_accounts_tests.cpp b/unittests/special_accounts_tests.cpp index e3ad16fa9bc..2c4b6d8bc27 100644 --- a/unittests/special_accounts_tests.cpp +++ b/unittests/special_accounts_tests.cpp @@ -35,7 +35,7 @@ BOOST_FIXTURE_TEST_CASE(accounts_exists, tester) chain::controller *control = test.control.get(); const chain::database& chain1_db = control->db(); - auto nobody = chain1_db.find(config::null_account_name); + auto nobody = chain1_db.find(config::null_account_name); BOOST_CHECK(nobody != nullptr); const auto& nobody_active_authority = chain1_db.get(boost::make_tuple(config::null_account_name, config::active_name)); BOOST_CHECK_EQUAL(nobody_active_authority.auth.threshold, 1); @@ -47,7 +47,7 @@ BOOST_FIXTURE_TEST_CASE(accounts_exists, tester) BOOST_CHECK_EQUAL(nobody_owner_authority.auth.accounts.size(), 0); BOOST_CHECK_EQUAL(nobody_owner_authority.auth.keys.size(), 0); - auto producers = chain1_db.find(config::producers_account_name); + auto producers = chain1_db.find(config::producers_account_name); BOOST_CHECK(producers != nullptr); const auto& active_producers = control->head_block_state()->active_schedule; diff --git a/unittests/test-contracts/CMakeLists.txt b/unittests/test-contracts/CMakeLists.txt new file mode 100644 index 00000000000..7c48729a524 --- /dev/null +++ b/unittests/test-contracts/CMakeLists.txt @@ -0,0 +1,25 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + set(EOSIO_WASM_OLD_BEHAVIOR "Off") + find_package( eosio.cdt REQUIRED ) +endif() + +if ("${CMAKE_GENERATOR}" STREQUAL "Ninja") + add_compile_options(-fcolor-diagnostics) +endif() + +add_subdirectory( asserter ) +add_subdirectory( deferred_test ) +add_subdirectory( get_sender_test ) +add_subdirectory( get_table_test ) +add_subdirectory( integration_test ) +add_subdirectory( noop ) +add_subdirectory( payloadless ) +add_subdirectory( proxy ) +add_subdirectory( ram_restrictions_test ) +add_subdirectory( reject_all ) +add_subdirectory( restrict_action_test ) +add_subdirectory( snapshot_test ) +add_subdirectory( test_api ) +add_subdirectory( test_api_db ) +add_subdirectory( test_api_multi_index ) +add_subdirectory( test_ram_limit ) diff --git a/unittests/test-contracts/README.md b/unittests/test-contracts/README.md new file mode 100644 index 00000000000..13937d4b107 --- /dev/null +++ b/unittests/test-contracts/README.md @@ -0,0 +1,7 @@ +test_ram_limit contract was compiled with eosio.cdt v1.4.1 + +That contract was ported to compile with eosio.cdt v1.5.0, but the test that uses it is very sensitive to stdlib/eosiolib changes, compilation flags and linker flags. + +deferred_test, get_sender_test, proxy, reject_all, and test_api contracts were compiled with eosio.cdt v1.6.1 + +The remaining contracts have been ported to compile with eosio.cdt v1.6.x. They were compiled with a patched version of eosio.cdt v1.6.0-rc1 (commit 1c9180ff5a1e431385180ce459e11e6a1255c1a4). diff --git a/unittests/test-contracts/asserter/CMakeLists.txt b/unittests/test-contracts/asserter/CMakeLists.txt new file mode 100644 index 00000000000..c9c992df101 --- /dev/null +++ b/unittests/test-contracts/asserter/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( asserter asserter asserter.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/asserter.wasm ${CMAKE_CURRENT_BINARY_DIR}/asserter.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/asserter.abi ${CMAKE_CURRENT_BINARY_DIR}/asserter.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/asserter/asserter.abi b/unittests/test-contracts/asserter/asserter.abi new file mode 100644 index 00000000000..3b78641f955 --- /dev/null +++ b/unittests/test-contracts/asserter/asserter.abi @@ -0,0 +1,41 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "procassert", + "base": "", + "fields": [ + { + "name": "condition", + "type": "int8" + }, + { + "name": "message", + "type": "string" + } + ] + }, + { + "name": "provereset", + "base": "", + "fields": [] + } + ], + "actions": [ + { + "name": "procassert", + "type": "procassert", + "ricardian_contract": "" + }, + { + "name": "provereset", + "type": "provereset", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/asserter/asserter.cpp b/unittests/test-contracts/asserter/asserter.cpp new file mode 100644 index 00000000000..f8710e4c556 --- /dev/null +++ b/unittests/test-contracts/asserter/asserter.cpp @@ -0,0 +1,14 @@ +#include "asserter.hpp" + +using namespace eosio; + +static int global_variable = 45; + +void asserter::procassert( int8_t condition, std::string message ) { + check( condition != 0, message ); +} + +void asserter::provereset() { + check( global_variable == 45, "Global Variable Initialized poorly" ); + global_variable = 100; +} diff --git a/unittests/test-contracts/asserter/asserter.hpp b/unittests/test-contracts/asserter/asserter.hpp new file mode 100644 index 00000000000..2261a96e237 --- /dev/null +++ b/unittests/test-contracts/asserter/asserter.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + +class [[eosio::contract]] asserter : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void procassert( int8_t condition, std::string message ); + + [[eosio::action]] + void provereset(); +}; diff --git a/unittests/test-contracts/asserter/asserter.wasm b/unittests/test-contracts/asserter/asserter.wasm new file mode 100755 index 00000000000..050b3caf56e Binary files /dev/null and b/unittests/test-contracts/asserter/asserter.wasm differ diff --git a/unittests/test-contracts/deferred_test/CMakeLists.txt b/unittests/test-contracts/deferred_test/CMakeLists.txt new file mode 100644 index 00000000000..9ff36a6f57f --- /dev/null +++ b/unittests/test-contracts/deferred_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( deferred_test deferred_test deferred_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/deferred_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/deferred_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/deferred_test.abi ${CMAKE_CURRENT_BINARY_DIR}/deferred_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/deferred_test/deferred_test.abi b/unittests/test-contracts/deferred_test/deferred_test.abi new file mode 100644 index 00000000000..857e725efec --- /dev/null +++ b/unittests/test-contracts/deferred_test/deferred_test.abi @@ -0,0 +1,122 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "defercall", + "base": "", + "fields": [ + { + "name": "payer", + "type": "name" + }, + { + "name": "sender_id", + "type": "uint64" + }, + { + "name": "contract", + "type": "name" + }, + { + "name": "payload", + "type": "uint64" + } + ] + }, + { + "name": "deferfunc", + "base": "", + "fields": [ + { + "name": "payload", + "type": "uint64" + } + ] + }, + { + "name": "delayedcall", + "base": "", + "fields": [ + { + "name": "payer", + "type": "name" + }, + { + "name": "sender_id", + "type": "uint64" + }, + { + "name": "contract", + "type": "name" + }, + { + "name": "payload", + "type": "uint64" + }, + { + "name": "delay_sec", + "type": "uint32" + }, + { + "name": "replace_existing", + "type": "bool" + } + ] + }, + { + "name": "fail", + "base": "", + "fields": [] + }, + { + "name": "inlinecall", + "base": "", + "fields": [ + { + "name": "contract", + "type": "name" + }, + { + "name": "authorizer", + "type": "name" + }, + { + "name": "payload", + "type": "uint64" + } + ] + } + ], + "actions": [ + { + "name": "defercall", + "type": "defercall", + "ricardian_contract": "" + }, + { + "name": "deferfunc", + "type": "deferfunc", + "ricardian_contract": "" + }, + { + "name": "delayedcall", + "type": "delayedcall", + "ricardian_contract": "" + }, + { + "name": "fail", + "type": "fail", + "ricardian_contract": "" + }, + { + "name": "inlinecall", + "type": "inlinecall", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/deferred_test/deferred_test.cpp b/unittests/test-contracts/deferred_test/deferred_test.cpp new file mode 100644 index 00000000000..d70720b18bf --- /dev/null +++ b/unittests/test-contracts/deferred_test/deferred_test.cpp @@ -0,0 +1,71 @@ +#include "deferred_test.hpp" +#include +#include +#include + +using namespace eosio; + +void deferred_test::defercall( name payer, uint64_t sender_id, name contract, uint64_t payload ) { + print( "defercall called on ", get_self(), "\n" ); + require_auth( payer ); + + print( "deferred send of deferfunc action to ", contract, " by ", payer, " with sender id ", sender_id ); + transaction trx; + deferfunc_action a( contract, {get_self(), "active"_n} ); + trx.actions.emplace_back( a.to_action( payload ) ); + bool replace_existing = (payload >= 100); + + if( (50 <= payload && payload < 100) || payload >= 150 ) { + size_t tx_size = transaction_size(); + char* buffer = (char*)malloc( tx_size ); + read_transaction( buffer, tx_size ); + auto tx_id = sha256( buffer, tx_size ); + char context_buffer[56]; + trx.transaction_extensions.emplace_back( (uint16_t)0, std::vector() ); + auto& context_vector = std::get<1>( trx.transaction_extensions.back() ); + context_vector.resize(56); + datastream ds( context_vector.data(), 56 ); + ds << tx_id.extract_as_byte_array(); + ds << ((static_cast(payer.value) << 64) | sender_id); + if( payload != 77 ) + ds << get_self(); + else + ds << payer; + } + + trx.send( (static_cast(payer.value) << 64) | sender_id, payer, replace_existing ); +} + +void deferred_test::delayedcall( name payer, uint64_t sender_id, name contract, + uint64_t payload, uint32_t delay_sec, bool replace_existing ) +{ + print( "delayedcall called on ", get_self(), "\n" ); + require_auth( payer ); + + print( "deferred send of deferfunc action (with delay of ", delay_sec, " sec) to ", contract, " by ", payer, + " with sender id ", sender_id, " and payload ", payload ); + transaction trx; + trx.delay_sec = delay_sec; + deferfunc_action a( contract, {get_self(), "active"_n} ); + trx.actions.emplace_back( a.to_action( payload ) ); + + trx.send( sender_id, payer, replace_existing ); +} + +void deferred_test::deferfunc( uint64_t payload ) { + print( "deferfunc called on ", get_self(), " with payload = ", payload, "\n" ); + check( payload != 13, "value 13 not allowed in payload" ); +} + +void deferred_test::inlinecall( name contract, name authorizer, uint64_t payload ) { + deferfunc_action a( contract, {authorizer, "active"_n} ); + a.send( payload ); +} + +void deferred_test::fail() { + check( false, "fail" ); +} + +void deferred_test::on_error( uint128_t sender_id, ignore> sent_trx ) { + print( "onerror called on ", get_self(), "\n" ); +} diff --git a/unittests/test-contracts/deferred_test/deferred_test.hpp b/unittests/test-contracts/deferred_test/deferred_test.hpp new file mode 100644 index 00000000000..f5a322337e4 --- /dev/null +++ b/unittests/test-contracts/deferred_test/deferred_test.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include +#include + +class [[eosio::contract]] deferred_test : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void defercall( eosio::name payer, uint64_t sender_id, eosio::name contract, uint64_t payload ); + + [[eosio::action]] + void delayedcall( eosio::name payer, uint64_t sender_id, eosio::name contract, + uint64_t payload, uint32_t delay_sec, bool replace_existing ); + + [[eosio::action]] + void deferfunc( uint64_t payload ); + using deferfunc_action = eosio::action_wrapper<"deferfunc"_n, &deferred_test::deferfunc>; + + [[eosio::action]] + void inlinecall( eosio::name contract, eosio::name authorizer, uint64_t payload ); + + [[eosio::action]] + void fail(); + + [[eosio::on_notify("eosio::onerror")]] + void on_error( uint128_t sender_id, eosio::ignore> sent_trx ); +}; diff --git a/unittests/test-contracts/deferred_test/deferred_test.wasm b/unittests/test-contracts/deferred_test/deferred_test.wasm new file mode 100755 index 00000000000..416dad9fd5f Binary files /dev/null and b/unittests/test-contracts/deferred_test/deferred_test.wasm differ diff --git a/unittests/test-contracts/get_sender_test/CMakeLists.txt b/unittests/test-contracts/get_sender_test/CMakeLists.txt new file mode 100644 index 00000000000..cd633da3bae --- /dev/null +++ b/unittests/test-contracts/get_sender_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( get_sender_test get_sender_test get_sender_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/get_sender_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/get_sender_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/get_sender_test.abi ${CMAKE_CURRENT_BINARY_DIR}/get_sender_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/get_sender_test/get_sender_test.abi b/unittests/test-contracts/get_sender_test/get_sender_test.abi new file mode 100644 index 00000000000..0048a2c7eeb --- /dev/null +++ b/unittests/test-contracts/get_sender_test/get_sender_test.abi @@ -0,0 +1,69 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "assertsender", + "base": "", + "fields": [ + { + "name": "expected_sender", + "type": "name" + } + ] + }, + { + "name": "notify", + "base": "", + "fields": [ + { + "name": "to", + "type": "name" + }, + { + "name": "expected_sender", + "type": "name" + }, + { + "name": "send_inline", + "type": "bool" + } + ] + }, + { + "name": "sendinline", + "base": "", + "fields": [ + { + "name": "to", + "type": "name" + }, + { + "name": "expected_sender", + "type": "name" + } + ] + } + ], + "actions": [ + { + "name": "assertsender", + "type": "assertsender", + "ricardian_contract": "" + }, + { + "name": "notify", + "type": "notify", + "ricardian_contract": "" + }, + { + "name": "sendinline", + "type": "sendinline", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/get_sender_test/get_sender_test.cpp b/unittests/test-contracts/get_sender_test/get_sender_test.cpp new file mode 100644 index 00000000000..5f89aa228cf --- /dev/null +++ b/unittests/test-contracts/get_sender_test/get_sender_test.cpp @@ -0,0 +1,26 @@ +#include "get_sender_test.hpp" +#include + +using namespace eosio; + +void get_sender_test::assertsender( name expected_sender ) { + check( get_sender() == expected_sender, "sender did not match" ); +} + +void get_sender_test::sendinline( name to, name expected_sender ) { + assertsender_action a( to, std::vector{} ); + a.send( expected_sender ); +} + +void get_sender_test::notify( name to, name expected_sender, bool send_inline ) { + require_recipient( to ); +} + +void get_sender_test::on_notify( name to, name expected_sender, bool send_inline ) { + if( send_inline ) { + assertsender_action a( get_first_receiver(), std::vector{} ); + a.send( expected_sender ); + } else { + check( get_sender() == expected_sender, "sender did not match" ); + } +} diff --git a/unittests/test-contracts/get_sender_test/get_sender_test.hpp b/unittests/test-contracts/get_sender_test/get_sender_test.hpp new file mode 100644 index 00000000000..0e001437e11 --- /dev/null +++ b/unittests/test-contracts/get_sender_test/get_sender_test.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include + +namespace eosio { + namespace internal_use_do_not_use { + extern "C" { + __attribute__((eosio_wasm_import)) + uint64_t get_sender(); + } + } +} + +namespace eosio { + name get_sender() { + return name( internal_use_do_not_use::get_sender() ); + } +} + +class [[eosio::contract]] get_sender_test : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void assertsender( eosio::name expected_sender ); + using assertsender_action = eosio::action_wrapper<"assertsender"_n, &get_sender_test::assertsender>; + + [[eosio::action]] + void sendinline( eosio::name to, eosio::name expected_sender ); + + [[eosio::action]] + void notify( eosio::name to, eosio::name expected_sender, bool send_inline ); + + // eosio.cdt 1.6.1 has a problem with "*::notify" so hardcode to tester1 for now. + // TODO: Change it back to "*::notify" when the bug is fixed in eosio.cdt. + [[eosio::on_notify("tester1::notify")]] + void on_notify( eosio::name to, eosio::name expected_sender, bool send_inline ); + +}; diff --git a/unittests/test-contracts/get_sender_test/get_sender_test.wasm b/unittests/test-contracts/get_sender_test/get_sender_test.wasm new file mode 100755 index 00000000000..89dc670d5a6 Binary files /dev/null and b/unittests/test-contracts/get_sender_test/get_sender_test.wasm differ diff --git a/unittests/test-contracts/get_table_test/CMakeLists.txt b/unittests/test-contracts/get_table_test/CMakeLists.txt new file mode 100644 index 00000000000..846bf453406 --- /dev/null +++ b/unittests/test-contracts/get_table_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( get_table_test get_table_test get_table_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/get_table_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/get_table_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/get_table_test.abi ${CMAKE_CURRENT_BINARY_DIR}/get_table_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/get_table_test/get_table_test.abi b/unittests/test-contracts/get_table_test/get_table_test.abi new file mode 100644 index 00000000000..1a7cdcc2137 --- /dev/null +++ b/unittests/test-contracts/get_table_test/get_table_test.abi @@ -0,0 +1,105 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "addhashobj", + "base": "", + "fields": [ + { + "name": "hashinput", + "type": "string" + } + ] + }, + { + "name": "addnumobj", + "base": "", + "fields": [ + { + "name": "input", + "type": "uint64" + } + ] + }, + { + "name": "hashobj", + "base": "", + "fields": [ + { + "name": "key", + "type": "uint64" + }, + { + "name": "hash_input", + "type": "string" + }, + { + "name": "sec256", + "type": "checksum256" + }, + { + "name": "sec160", + "type": "checksum160" + } + ] + }, + { + "name": "numobj", + "base": "", + "fields": [ + { + "name": "key", + "type": "uint64" + }, + { + "name": "sec64", + "type": "uint64" + }, + { + "name": "sec128", + "type": "uint128" + }, + { + "name": "secdouble", + "type": "float64" + }, + { + "name": "secldouble", + "type": "float128" + } + ] + } + ], + "actions": [ + { + "name": "addhashobj", + "type": "addhashobj", + "ricardian_contract": "" + }, + { + "name": "addnumobj", + "type": "addnumobj", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "hashobjs", + "type": "hashobj", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "numobjs", + "type": "numobj", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/get_table_test/get_table_test.cpp b/unittests/test-contracts/get_table_test/get_table_test.cpp new file mode 100644 index 00000000000..c35409f2ac2 --- /dev/null +++ b/unittests/test-contracts/get_table_test/get_table_test.cpp @@ -0,0 +1,26 @@ +/** + * @file + * @copyright defined in eos/LICENSE + */ +#include "get_table_test.hpp" + +void get_table_test::addnumobj(uint64_t input) { + numobjs numobjs_table( _self, _self.value ); + numobjs_table.emplace(_self, [&]( auto& obj ) { + obj.key = numobjs_table.available_primary_key(); + obj.sec64 = input; + obj.sec128 = input; + obj.secdouble = input; + obj.secldouble = input; + }); +} + +void get_table_test::addhashobj(std::string hashinput) { + hashobjs hashobjs_table( _self, _self.value ); + hashobjs_table.emplace(_self, [&]( auto& obj ) { + obj.key = hashobjs_table.available_primary_key(); + obj.hash_input = hashinput; + obj.sec256 = sha256(hashinput.data(), hashinput.size()); + obj.sec160 = ripemd160(hashinput.data(), hashinput.size()); + }); +} \ No newline at end of file diff --git a/unittests/test-contracts/get_table_test/get_table_test.hpp b/unittests/test-contracts/get_table_test/get_table_test.hpp new file mode 100644 index 00000000000..a777bfd63ee --- /dev/null +++ b/unittests/test-contracts/get_table_test/get_table_test.hpp @@ -0,0 +1,63 @@ +/** + * @file + * @copyright defined in eos/LICENSE + */ +#pragma once + +#include +#include + +using namespace eosio; + +class [[eosio::contract]] get_table_test : public eosio::contract { + public: + using eosio::contract::contract; + + // Number object + struct [[eosio::table]] numobj { + uint64_t key; + uint64_t sec64; + uint128_t sec128; + double secdouble; + long double secldouble; + + uint64_t primary_key() const { return key; } + uint64_t sec64_key() const { return sec64; } + uint128_t sec128_key() const { return sec128; } + double secdouble_key() const { return secdouble; } + long double secldouble_key() const { return secldouble; } + }; + + // Hash object + struct [[eosio::table]] hashobj { + uint64_t key; + std::string hash_input; + checksum256 sec256; + checksum160 sec160; + + uint64_t primary_key() const { return key; } + checksum256 sec256_key() const { return sec256; } + checksum256 sec160_key() const { return checksum256(sec160.get_array()); } + }; + + typedef eosio::multi_index< "numobjs"_n, numobj, + indexed_by<"bysec1"_n, const_mem_fun>, + indexed_by<"bysec2"_n, const_mem_fun>, + indexed_by<"bysec3"_n, const_mem_fun>, + indexed_by<"bysec4"_n, const_mem_fun> + > numobjs; + + typedef eosio::multi_index< "hashobjs"_n, hashobj, + indexed_by<"bysec1"_n, const_mem_fun>, + indexed_by<"bysec2"_n, const_mem_fun> + > hashobjs; + + [[eosio::action]] + void addnumobj(uint64_t input); + + + [[eosio::action]] + void addhashobj(std::string hashinput); + + +}; \ No newline at end of file diff --git a/unittests/test-contracts/get_table_test/get_table_test.wasm b/unittests/test-contracts/get_table_test/get_table_test.wasm new file mode 100755 index 00000000000..cc1b5399505 Binary files /dev/null and b/unittests/test-contracts/get_table_test/get_table_test.wasm differ diff --git a/unittests/test-contracts/integration_test/CMakeLists.txt b/unittests/test-contracts/integration_test/CMakeLists.txt new file mode 100644 index 00000000000..aaf8d2115ea --- /dev/null +++ b/unittests/test-contracts/integration_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( integration_test integration_test integration_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/integration_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/integration_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/integration_test.abi ${CMAKE_CURRENT_BINARY_DIR}/integration_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/integration_test/integration_test.abi b/unittests/test-contracts/integration_test/integration_test.abi new file mode 100644 index 00000000000..8cd5c3ee8fa --- /dev/null +++ b/unittests/test-contracts/integration_test/integration_test.abi @@ -0,0 +1,57 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "payload", + "base": "", + "fields": [ + { + "name": "key", + "type": "uint64" + }, + { + "name": "data", + "type": "uint64[]" + } + ] + }, + { + "name": "store", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "to", + "type": "name" + }, + { + "name": "num", + "type": "uint64" + } + ] + } + ], + "actions": [ + { + "name": "store", + "type": "store", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "payloads", + "type": "payload", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/integration_test/integration_test.cpp b/unittests/test-contracts/integration_test/integration_test.cpp new file mode 100644 index 00000000000..061fbce8798 --- /dev/null +++ b/unittests/test-contracts/integration_test/integration_test.cpp @@ -0,0 +1,25 @@ +#include "integration_test.hpp" + +using namespace eosio; + +void integration_test::store( name from, name to, uint64_t num ) { + require_auth( from ); + + check( is_account( to ), "to account does not exist" ); + check( num < std::numeric_limits::max(), "num to large" ); + + payloads_table data( get_self(), from.value ); + uint64_t key = 0; + const uint64_t num_keys = 5; + + while( data.find( key ) != data.end() ) { + key += num_keys; + } + + for( uint64_t i = 0; i < num_keys; ++i ) { + data.emplace( from, [&]( auto& g ) { + g.key = key + i; + g.data = std::vector( static_cast(num), 5 ); + } ); + } +} diff --git a/unittests/test-contracts/integration_test/integration_test.hpp b/unittests/test-contracts/integration_test/integration_test.hpp new file mode 100644 index 00000000000..408b469a535 --- /dev/null +++ b/unittests/test-contracts/integration_test/integration_test.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include + +class [[eosio::contract]] integration_test : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void store( eosio::name from, eosio::name to, uint64_t num ); + + struct [[eosio::table("payloads")]] payload { + uint64_t key; + std::vector data; + + uint64_t primary_key()const { return key; } + + EOSLIB_SERIALIZE( payload, (key)(data) ) + }; + + using payloads_table = eosio::multi_index< "payloads"_n, payload >; + +}; diff --git a/unittests/test-contracts/integration_test/integration_test.wasm b/unittests/test-contracts/integration_test/integration_test.wasm new file mode 100755 index 00000000000..81e7b13d274 Binary files /dev/null and b/unittests/test-contracts/integration_test/integration_test.wasm differ diff --git a/unittests/test-contracts/noop/CMakeLists.txt b/unittests/test-contracts/noop/CMakeLists.txt new file mode 100644 index 00000000000..8d93cdd3bcf --- /dev/null +++ b/unittests/test-contracts/noop/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( noop noop noop.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/noop.wasm ${CMAKE_CURRENT_BINARY_DIR}/noop.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/noop.abi ${CMAKE_CURRENT_BINARY_DIR}/noop.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/noop/noop.abi b/unittests/test-contracts/noop/noop.abi new file mode 100644 index 00000000000..3ed2da330f4 --- /dev/null +++ b/unittests/test-contracts/noop/noop.abi @@ -0,0 +1,35 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "anyaction", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "data", + "type": "string" + } + ] + } + ], + "actions": [ + { + "name": "anyaction", + "type": "anyaction", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/noop/noop.cpp b/unittests/test-contracts/noop/noop.cpp new file mode 100644 index 00000000000..564749e56a9 --- /dev/null +++ b/unittests/test-contracts/noop/noop.cpp @@ -0,0 +1,10 @@ +#include "noop.hpp" + +using namespace eosio; + +void noop::anyaction( name from, + const ignore& type, + const ignore& data ) +{ + require_auth( from ); +} diff --git a/unittests/test-contracts/noop/noop.hpp b/unittests/test-contracts/noop/noop.hpp new file mode 100644 index 00000000000..5065c951f9a --- /dev/null +++ b/unittests/test-contracts/noop/noop.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include + +class [[eosio::contract]] noop : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void anyaction( eosio::name from, + const eosio::ignore& type, + const eosio::ignore& data ); +}; diff --git a/unittests/test-contracts/noop/noop.wasm b/unittests/test-contracts/noop/noop.wasm new file mode 100755 index 00000000000..1dc548e7e63 Binary files /dev/null and b/unittests/test-contracts/noop/noop.wasm differ diff --git a/unittests/test-contracts/payloadless/CMakeLists.txt b/unittests/test-contracts/payloadless/CMakeLists.txt new file mode 100644 index 00000000000..6e3cd8176d0 --- /dev/null +++ b/unittests/test-contracts/payloadless/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( payloadless payloadless payloadless.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/payloadless.wasm ${CMAKE_CURRENT_BINARY_DIR}/payloadless.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/payloadless.abi ${CMAKE_CURRENT_BINARY_DIR}/payloadless.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/payloadless/payloadless.abi b/unittests/test-contracts/payloadless/payloadless.abi new file mode 100644 index 00000000000..89d5af4430c --- /dev/null +++ b/unittests/test-contracts/payloadless/payloadless.abi @@ -0,0 +1,22 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "doit", + "base": "", + "fields": [] + } + ], + "actions": [ + { + "name": "doit", + "type": "doit", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/payloadless/payloadless.cpp b/unittests/test-contracts/payloadless/payloadless.cpp new file mode 100644 index 00000000000..16637efa2b4 --- /dev/null +++ b/unittests/test-contracts/payloadless/payloadless.cpp @@ -0,0 +1,7 @@ +#include "payloadless.hpp" + +using namespace eosio; + +void payloadless::doit() { + print("Im a payloadless action"); +} diff --git a/unittests/test-contracts/payloadless/payloadless.hpp b/unittests/test-contracts/payloadless/payloadless.hpp new file mode 100644 index 00000000000..945a0d74177 --- /dev/null +++ b/unittests/test-contracts/payloadless/payloadless.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include + +class [[eosio::contract]] payloadless : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void doit(); +}; diff --git a/unittests/test-contracts/payloadless/payloadless.wasm b/unittests/test-contracts/payloadless/payloadless.wasm new file mode 100755 index 00000000000..330682f6096 Binary files /dev/null and b/unittests/test-contracts/payloadless/payloadless.wasm differ diff --git a/unittests/test-contracts/proxy/CMakeLists.txt b/unittests/test-contracts/proxy/CMakeLists.txt new file mode 100644 index 00000000000..12a9d309d4c --- /dev/null +++ b/unittests/test-contracts/proxy/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( proxy proxy proxy.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/proxy.wasm ${CMAKE_CURRENT_BINARY_DIR}/proxy.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/proxy.abi ${CMAKE_CURRENT_BINARY_DIR}/proxy.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/proxy/proxy.abi b/unittests/test-contracts/proxy/proxy.abi new file mode 100644 index 00000000000..de04aae26a5 --- /dev/null +++ b/unittests/test-contracts/proxy/proxy.abi @@ -0,0 +1,57 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "config", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "delay", + "type": "uint32" + }, + { + "name": "next_id", + "type": "uint32" + } + ] + }, + { + "name": "setowner", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "delay", + "type": "uint32" + } + ] + } + ], + "actions": [ + { + "name": "setowner", + "type": "setowner", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "config", + "type": "config", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/proxy/proxy.cpp b/unittests/test-contracts/proxy/proxy.cpp new file mode 100644 index 00000000000..41ef9b96c8a --- /dev/null +++ b/unittests/test-contracts/proxy/proxy.cpp @@ -0,0 +1,62 @@ +#include "proxy.hpp" +#include + +using namespace eosio; + +proxy::proxy( eosio::name self, eosio::name first_receiver, eosio::datastream ds ) +:contract( self, first_receiver, ds ) +,_config( get_self(), get_self().value ) +{} + +void proxy::setowner( name owner, uint32_t delay ) { + require_auth( get_self() ); + auto cfg = _config.get_or_default(); + cfg.owner = owner; + cfg.delay = delay; + print( "Setting owner to ", owner, " with delay ", delay, "\n" ); + _config.set( cfg, get_self() ); +} + +void proxy::on_transfer( name from, name to, asset quantity, const std::string& memo ) { + print("on_transfer called on ", get_self(), " contract with from = ", from, " and to = ", to, "\n" ); + check( _config.exists(), "Attempting to use unconfigured proxy" ); + auto cfg = _config.get(); + + auto self = get_self(); + if( from == self ) { + check( to == cfg.owner, "proxy may only pay its owner" ); + } else { + check( to == self, "proxy is not involved in this transfer" ); + + auto id = cfg.next_id++; + _config.set( cfg, self ); + + transaction out; + eosio::token::transfer_action a( "eosio.token"_n, {self, "active"_n} ); + out.actions.emplace_back( a.to_action( self, cfg.owner, quantity, memo ) ); + out.delay_sec = cfg.delay; + out.send( id, self ); + } +} + +void proxy::on_error( uint128_t sender_id, eosio::ignore> ) { + print( "on_error called on ", get_self(), " contract with sender_id = ", sender_id, "\n" ); + check( _config.exists(), "Attempting use of unconfigured proxy" ); + + auto cfg = _config.get(); + + auto id = cfg.next_id; + ++cfg.next_id; + _config.set( cfg, same_payer ); + + print("Resending Transaction: ", sender_id, " as ", id, "\n"); + + unsigned_int packed_trx_size; + get_datastream() >> packed_trx_size; + transaction trx; + get_datastream() >> trx; + trx.transaction_extensions.clear(); + + trx.delay_sec = cfg.delay; + trx.send( id, get_self() ); +} diff --git a/unittests/test-contracts/proxy/proxy.hpp b/unittests/test-contracts/proxy/proxy.hpp new file mode 100644 index 00000000000..eb0c336ac5f --- /dev/null +++ b/unittests/test-contracts/proxy/proxy.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include +#include +#include + +// Extacted from eosio.token contract: +namespace eosio { + class [[eosio::contract("eosio.token")]] token : public eosio::contract { + public: + using eosio::contract::contract; + + [[eosio::action]] + void transfer( eosio::name from, + eosio::name to, + eosio::asset quantity, + const std::string& memo ); + using transfer_action = eosio::action_wrapper<"transfer"_n, &token::transfer>; + }; +} + +// This contract: +class [[eosio::contract]] proxy : public eosio::contract { +public: + proxy( eosio::name self, eosio::name first_receiver, eosio::datastream ds ); + + [[eosio::action]] + void setowner( eosio::name owner, uint32_t delay ); + + [[eosio::on_notify("eosio.token::transfer")]] + void on_transfer( eosio::name from, + eosio::name to, + eosio::asset quantity, + const std::string& memo ); + + [[eosio::on_notify("eosio::onerror")]] + void on_error( uint128_t sender_id, eosio::ignore> sent_trx ); + + struct [[eosio::table]] config { + eosio::name owner; + uint32_t delay = 0; + uint32_t next_id = 0; + + EOSLIB_SERIALIZE( config, (owner)(delay)(next_id) ) + }; + + using config_singleton = eosio::singleton< "config"_n, config >; + +protected: + config_singleton _config; +}; diff --git a/unittests/test-contracts/proxy/proxy.wasm b/unittests/test-contracts/proxy/proxy.wasm new file mode 100755 index 00000000000..b40249782ba Binary files /dev/null and b/unittests/test-contracts/proxy/proxy.wasm differ diff --git a/unittests/test-contracts/ram_restrictions_test/CMakeLists.txt b/unittests/test-contracts/ram_restrictions_test/CMakeLists.txt new file mode 100644 index 00000000000..d7fc5e71eeb --- /dev/null +++ b/unittests/test-contracts/ram_restrictions_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( ram_restrictions_test ram_restrictions_test ram_restrictions_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/ram_restrictions_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/ram_restrictions_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/ram_restrictions_test.abi ${CMAKE_CURRENT_BINARY_DIR}/ram_restrictions_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.abi b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.abi new file mode 100644 index 00000000000..6a12751077a --- /dev/null +++ b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.abi @@ -0,0 +1,143 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "data", + "base": "", + "fields": [ + { + "name": "key", + "type": "uint64" + }, + { + "name": "value", + "type": "bytes" + } + ] + }, + { + "name": "noop", + "base": "", + "fields": [] + }, + { + "name": "notifydefer", + "base": "", + "fields": [ + { + "name": "acctonotify", + "type": "name" + }, + { + "name": "senderid", + "type": "uint64" + }, + { + "name": "payer", + "type": "name" + } + ] + }, + { + "name": "notifysetdat", + "base": "", + "fields": [ + { + "name": "acctonotify", + "type": "name" + }, + { + "name": "len1", + "type": "uint32" + }, + { + "name": "len2", + "type": "uint32" + }, + { + "name": "payer", + "type": "name" + } + ] + }, + { + "name": "senddefer", + "base": "", + "fields": [ + { + "name": "senderid", + "type": "uint64" + }, + { + "name": "payer", + "type": "name" + } + ] + }, + { + "name": "setdata", + "base": "", + "fields": [ + { + "name": "len1", + "type": "uint32" + }, + { + "name": "len2", + "type": "uint32" + }, + { + "name": "payer", + "type": "name" + } + ] + } + ], + "actions": [ + { + "name": "noop", + "type": "noop", + "ricardian_contract": "" + }, + { + "name": "notifydefer", + "type": "notifydefer", + "ricardian_contract": "" + }, + { + "name": "notifysetdat", + "type": "notifysetdat", + "ricardian_contract": "" + }, + { + "name": "senddefer", + "type": "senddefer", + "ricardian_contract": "" + }, + { + "name": "setdata", + "type": "setdata", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "tablea", + "type": "data", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "tableb", + "type": "data", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.cpp b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.cpp new file mode 100644 index 00000000000..95752f81c9c --- /dev/null +++ b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.cpp @@ -0,0 +1,58 @@ +#include "ram_restrictions_test.hpp" +#include + +using namespace eosio; + +template +void _setdata(name self, int len, name payer) { + Table ta(self, 0); + std::vector data; + data.resize(len, 0); + auto it = ta.find(0); + if (it == ta.end()) { + ta.emplace(payer, [&](auto &v) { + v.key = 0; + v.value = data; + }); + } else { + ta.modify(it, payer, [&](auto &v) { + v.key = 0; + v.value = data; + }); + } +} + +void ram_restrictions_test::noop( ) { +} + +void ram_restrictions_test::setdata( uint32_t len1, uint32_t len2, name payer ) { + _setdata(get_self(), len1, payer); + _setdata(get_self(), len2, payer); +} + +void ram_restrictions_test::notifysetdat( name acctonotify, uint32_t len1, uint32_t len2, name payer ) { + require_recipient(acctonotify); +} + +void ram_restrictions_test::on_notify_setdata( name acctonotify, uint32_t len1, uint32_t len2, name payer) { + setdata(len1, len2, payer); +} + +void ram_restrictions_test::senddefer( uint64_t senderid, name payer ) { + transaction trx; + trx.actions.emplace_back( + std::vector{{_self, "active"_n}}, + get_self(), + "noop"_n, + std::make_tuple() + ); + trx.send( senderid, payer ); +} + +void ram_restrictions_test::notifydefer( name acctonotify, uint64_t senderid, name payer ) { + require_recipient(acctonotify); +} + +void ram_restrictions_test::on_notifydefer( name acctonotify, uint64_t senderid, name payer ) { + senddefer(senderid, payer); +} diff --git a/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.hpp b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.hpp new file mode 100644 index 00000000000..df8d6f9aee6 --- /dev/null +++ b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.hpp @@ -0,0 +1,41 @@ +#pragma once + +#include + +class [[eosio::contract]] ram_restrictions_test : public eosio::contract { +public: + struct [[eosio::table]] data { + uint64_t key; + std::vector value; + + uint64_t primary_key() const { return key; } + }; + + typedef eosio::multi_index<"tablea"_n, data> tablea; + typedef eosio::multi_index<"tableb"_n, data> tableb; + +public: + using eosio::contract::contract; + + [[eosio::action]] + void noop(); + + [[eosio::action]] + void setdata( uint32_t len1, uint32_t len2, eosio::name payer ); + + [[eosio::action]] + void notifysetdat( eosio::name acctonotify, uint32_t len1, uint32_t len2, eosio::name payer ); + + [[eosio::on_notify("tester2::notifysetdat")]] + void on_notify_setdata( eosio::name acctonotify, uint32_t len1, uint32_t len2, eosio::name payer ); + + [[eosio::action]] + void senddefer( uint64_t senderid, eosio::name payer ); + + [[eosio::action]] + void notifydefer( eosio::name acctonotify, uint64_t senderid, eosio::name payer ); + + [[eosio::on_notify("tester2::notifydefer")]] + void on_notifydefer( eosio::name acctonotify, uint64_t senderid, eosio::name payer ); + +}; diff --git a/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.wasm b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.wasm new file mode 100644 index 00000000000..74be3b18fdf Binary files /dev/null and b/unittests/test-contracts/ram_restrictions_test/ram_restrictions_test.wasm differ diff --git a/unittests/test-contracts/reject_all/CMakeLists.txt b/unittests/test-contracts/reject_all/CMakeLists.txt new file mode 100644 index 00000000000..027aa487fa1 --- /dev/null +++ b/unittests/test-contracts/reject_all/CMakeLists.txt @@ -0,0 +1,5 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( reject_all reject_all reject_all.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/reject_all.wasm ${CMAKE_CURRENT_BINARY_DIR}/reject_all.wasm COPYONLY ) +endif() diff --git a/unittests/test-contracts/reject_all/reject_all.cpp b/unittests/test-contracts/reject_all/reject_all.cpp new file mode 100644 index 00000000000..ae9a3765384 --- /dev/null +++ b/unittests/test-contracts/reject_all/reject_all.cpp @@ -0,0 +1,27 @@ +#include + +using namespace eosio; + +extern "C" { + void apply( uint64_t receiver, uint64_t first_receiver, uint64_t action ) { + check( receiver == first_receiver, "rejecting all notifications" ); + + // reject all actions with only the following exceptions: + // * do not reject an eosio::setcode that sets code on the eosio account unless the rejectall account exists; + // * do not reject an eosio::newaccount that creates the rejectall account. + + if( first_receiver == "eosio"_n.value ) { + if( action == "setcode"_n.value ) { + auto accnt = unpack_action_data(); + if( accnt == "eosio"_n && !is_account("rejectall"_n) ) + return; + } else if( action == "newaccount"_n.value ) { + auto accnts = unpack_action_data< std::pair >(); + if( accnts.second == "rejectall"_n ) + return; + } + } + + check( false , "rejecting all actions" ); + } +} diff --git a/unittests/test-contracts/reject_all/reject_all.wasm b/unittests/test-contracts/reject_all/reject_all.wasm new file mode 100755 index 00000000000..ee794557a98 Binary files /dev/null and b/unittests/test-contracts/reject_all/reject_all.wasm differ diff --git a/unittests/test-contracts/restrict_action_test/CMakeLists.txt b/unittests/test-contracts/restrict_action_test/CMakeLists.txt new file mode 100644 index 00000000000..5ffe32ae7da --- /dev/null +++ b/unittests/test-contracts/restrict_action_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( restrict_action_test restrict_action_test restrict_action_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/restrict_action_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/restrict_action_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/restrict_action_test.abi ${CMAKE_CURRENT_BINARY_DIR}/restrict_action_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/restrict_action_test/restrict_action_test.abi b/unittests/test-contracts/restrict_action_test/restrict_action_test.abi new file mode 100644 index 00000000000..37db4926071 --- /dev/null +++ b/unittests/test-contracts/restrict_action_test/restrict_action_test.abi @@ -0,0 +1,98 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "noop", + "base": "", + "fields": [] + }, + { + "name": "notifydefer", + "base": "", + "fields": [ + { + "name": "acctonotify", + "type": "name" + }, + { + "name": "authorizer", + "type": "name" + }, + { + "name": "senderid", + "type": "uint32" + } + ] + }, + { + "name": "notifyinline", + "base": "", + "fields": [ + { + "name": "acctonotify", + "type": "name" + }, + { + "name": "authorizer", + "type": "name" + } + ] + }, + { + "name": "senddefer", + "base": "", + "fields": [ + { + "name": "authorizer", + "type": "name" + }, + { + "name": "senderid", + "type": "uint32" + } + ] + }, + { + "name": "sendinline", + "base": "", + "fields": [ + { + "name": "authorizer", + "type": "name" + } + ] + } + ], + "actions": [ + { + "name": "noop", + "type": "noop", + "ricardian_contract": "" + }, + { + "name": "notifydefer", + "type": "notifydefer", + "ricardian_contract": "" + }, + { + "name": "notifyinline", + "type": "notifyinline", + "ricardian_contract": "" + }, + { + "name": "senddefer", + "type": "senddefer", + "ricardian_contract": "" + }, + { + "name": "sendinline", + "type": "sendinline", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/restrict_action_test/restrict_action_test.cpp b/unittests/test-contracts/restrict_action_test/restrict_action_test.cpp new file mode 100644 index 00000000000..a21c13e6cc3 --- /dev/null +++ b/unittests/test-contracts/restrict_action_test/restrict_action_test.cpp @@ -0,0 +1,44 @@ +#include "restrict_action_test.hpp" +#include + +using namespace eosio; + +void restrict_action_test::noop( ) { + +} + +void restrict_action_test::sendinline( name authorizer ) { + action( + permission_level{authorizer,"active"_n}, + get_self(), + "noop"_n, + std::make_tuple() + ).send(); +} + +void restrict_action_test::senddefer( name authorizer, uint32_t senderid ) { + transaction trx; + trx.actions.emplace_back( + permission_level{authorizer,"active"_n}, + get_self(), + "noop"_n, + std::make_tuple() + ); + trx.send(senderid, get_self()); +} + +void restrict_action_test::notifyinline( name acctonotify, name authorizer ) { + require_recipient(acctonotify); +} + +void restrict_action_test::notifydefer( name acctonotify, name authorizer, uint32_t senderid ) { + require_recipient(acctonotify); +} + +void restrict_action_test::on_notify_inline( name acctonotify, name authorizer ) { + sendinline(authorizer); +} + +void restrict_action_test::on_notify_defer( name acctonotify, name authorizer, uint32_t senderid ) { + senddefer(authorizer, senderid); +} diff --git a/unittests/test-contracts/restrict_action_test/restrict_action_test.hpp b/unittests/test-contracts/restrict_action_test/restrict_action_test.hpp new file mode 100644 index 00000000000..e17d5c4b226 --- /dev/null +++ b/unittests/test-contracts/restrict_action_test/restrict_action_test.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include + +class [[eosio::contract]] restrict_action_test : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void noop( ); + + [[eosio::action]] + void sendinline( eosio::name authorizer ); + + [[eosio::action]] + void senddefer( eosio::name authorizer, uint32_t senderid ); + + + [[eosio::action]] + void notifyinline( eosio::name acctonotify, eosio::name authorizer ); + + [[eosio::action]] + void notifydefer( eosio::name acctonotify, eosio::name authorizer, uint32_t senderid ); + + [[eosio::on_notify("testacc::notifyinline")]] + void on_notify_inline( eosio::name acctonotify, eosio::name authorizer ); + + [[eosio::on_notify("testacc::notifydefer")]] + void on_notify_defer( eosio::name acctonotify, eosio::name authorizer, uint32_t senderid ); +}; diff --git a/unittests/test-contracts/restrict_action_test/restrict_action_test.wasm b/unittests/test-contracts/restrict_action_test/restrict_action_test.wasm new file mode 100755 index 00000000000..31acb952b19 Binary files /dev/null and b/unittests/test-contracts/restrict_action_test/restrict_action_test.wasm differ diff --git a/unittests/test-contracts/snapshot_test/CMakeLists.txt b/unittests/test-contracts/snapshot_test/CMakeLists.txt new file mode 100644 index 00000000000..a628753d325 --- /dev/null +++ b/unittests/test-contracts/snapshot_test/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( snapshot_test snapshot_test snapshot_test.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/snapshot_test.wasm ${CMAKE_CURRENT_BINARY_DIR}/snapshot_test.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/snapshot_test.abi ${CMAKE_CURRENT_BINARY_DIR}/snapshot_test.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/snapshot_test/snapshot_test.abi b/unittests/test-contracts/snapshot_test/snapshot_test.abi new file mode 100644 index 00000000000..31c2f2e5344 --- /dev/null +++ b/unittests/test-contracts/snapshot_test/snapshot_test.abi @@ -0,0 +1,65 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "increment", + "base": "", + "fields": [ + { + "name": "value", + "type": "uint32" + } + ] + }, + { + "name": "main_record", + "base": "", + "fields": [ + { + "name": "id", + "type": "uint64" + }, + { + "name": "index_f64", + "type": "float64" + }, + { + "name": "index_f128", + "type": "float128" + }, + { + "name": "index_i64", + "type": "uint64" + }, + { + "name": "index_i128", + "type": "uint128" + }, + { + "name": "index_i256", + "type": "checksum256" + } + ] + } + ], + "actions": [ + { + "name": "increment", + "type": "increment", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "data", + "type": "main_record", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/snapshot_test/snapshot_test.cpp b/unittests/test-contracts/snapshot_test/snapshot_test.cpp new file mode 100644 index 00000000000..c8b74b1b25b --- /dev/null +++ b/unittests/test-contracts/snapshot_test/snapshot_test.cpp @@ -0,0 +1,29 @@ +#include "snapshot_test.hpp" + +using namespace eosio; + +void snapshot_test::increment( uint32_t value ) { + require_auth( get_self() ); + + data_table data( get_self(), get_self().value ); + + auto current = data.begin(); + if( current == data.end() ) { + data.emplace( get_self(), [&]( auto& r ) { + r.id = value; + r.index_f64 = value; + r.index_f128 = value; + r.index_i64 = value; + r.index_i128 = value; + r.index_i256.data()[0] = value; + } ); + } else { + data.modify( current, same_payer, [&]( auto& r ) { + r.index_f64 += value; + r.index_f128 += value; + r.index_i64 += value; + r.index_i128 += value; + r.index_i256.data()[0] += value; + } ); + } +} diff --git a/unittests/test-contracts/snapshot_test/snapshot_test.hpp b/unittests/test-contracts/snapshot_test/snapshot_test.hpp new file mode 100644 index 00000000000..b134f4a4bee --- /dev/null +++ b/unittests/test-contracts/snapshot_test/snapshot_test.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include + +class [[eosio::contract]] snapshot_test : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action]] + void increment( uint32_t value ); + + struct [[eosio::table("data")]] main_record { + uint64_t id = 0; + double index_f64 = 0.0; + long double index_f128 = 0.0L; + uint64_t index_i64 = 0ULL; + uint128_t index_i128 = 0ULL; + eosio::checksum256 index_i256; + + uint64_t primary_key()const { return id; } + double get_index_f64()const { return index_f64 ; } + long double get_index_f128()const { return index_f128; } + uint64_t get_index_i64()const { return index_i64 ; } + uint128_t get_index_i128()const { return index_i128; } + const eosio::checksum256& get_index_i256()const { return index_i256; } + + EOSLIB_SERIALIZE( main_record, (id)(index_f64)(index_f128)(index_i64)(index_i128)(index_i256) ) + }; + + using data_table = eosio::multi_index<"data"_n, main_record, + eosio::indexed_by< "byf"_n, eosio::const_mem_fun< main_record, double, + &main_record::get_index_f64 > >, + eosio::indexed_by< "byff"_n, eosio::const_mem_fun< main_record, long double, + &main_record::get_index_f128> >, + eosio::indexed_by< "byi"_n, eosio::const_mem_fun< main_record, uint64_t, + &main_record::get_index_i64 > >, + eosio::indexed_by< "byii"_n, eosio::const_mem_fun< main_record, uint128_t, + &main_record::get_index_i128 > >, + eosio::indexed_by< "byiiii"_n, eosio::const_mem_fun< main_record, const eosio::checksum256&, + &main_record::get_index_i256 > > + >; +}; diff --git a/unittests/test-contracts/snapshot_test/snapshot_test.wasm b/unittests/test-contracts/snapshot_test/snapshot_test.wasm new file mode 100755 index 00000000000..48e05489e19 Binary files /dev/null and b/unittests/test-contracts/snapshot_test/snapshot_test.wasm differ diff --git a/unittests/test-contracts/test_api/CMakeLists.txt b/unittests/test-contracts/test_api/CMakeLists.txt new file mode 100644 index 00000000000..5cc77922002 --- /dev/null +++ b/unittests/test-contracts/test_api/CMakeLists.txt @@ -0,0 +1,5 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_executable( test_api test_api.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_api.wasm ${CMAKE_CURRENT_BINARY_DIR}/test_api.wasm COPYONLY ) +endif() diff --git a/unittests/test-contracts/test_api/test_action.cpp b/unittests/test-contracts/test_api/test_action.cpp new file mode 100644 index 00000000000..1b20249fc0e --- /dev/null +++ b/unittests/test-contracts/test_api/test_action.cpp @@ -0,0 +1,340 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_api.hpp" + +using namespace eosio; + +void test_action::read_action_normal() { + + char buffer[100]; + uint32_t total = 0; + + eosio_assert( action_data_size() == sizeof(dummy_action), "action_size() == sizeof(dummy_action)" ); + + total = read_action_data( buffer, 30 ); + eosio_assert( total == sizeof(dummy_action) , "read_action(30)" ); + + total = read_action_data( buffer, 100 ); + eosio_assert(total == sizeof(dummy_action) , "read_action(100)" ); + + total = read_action_data(buffer, 5); + eosio_assert( total == 5 , "read_action(5)" ); + + total = read_action_data(buffer, sizeof(dummy_action) ); + eosio_assert( total == sizeof(dummy_action), "read_action(sizeof(dummy_action))" ); + + dummy_action *dummy13 = reinterpret_cast(buffer); + + eosio_assert( dummy13->a == DUMMY_ACTION_DEFAULT_A, "dummy13->a == DUMMY_ACTION_DEFAULT_A" ); + eosio_assert( dummy13->b == DUMMY_ACTION_DEFAULT_B, "dummy13->b == DUMMY_ACTION_DEFAULT_B" ); + eosio_assert( dummy13->c == DUMMY_ACTION_DEFAULT_C, "dummy13->c == DUMMY_ACTION_DEFAULT_C" ); +} + +void test_action::test_dummy_action() { + char buffer[100]; + int total = 0; + + // get_action + total = get_action( 1, 0, buffer, 0 ); + total = get_action( 1, 0, buffer, static_cast(total) ); + eosio_assert( total > 0, "get_action failed" ); + eosio::action act = eosio::get_action( 1, 0 ); + eosio_assert( act.authorization.back().actor == "testapi"_n, "incorrect permission actor" ); + eosio_assert( act.authorization.back().permission == "active"_n, "incorrect permission name" ); + eosio_assert( eosio::pack_size(act) == static_cast(total), "pack_size does not match get_action size" ); + eosio_assert( act.account == "testapi"_n, "expected testapi account" ); + + dummy_action dum13 = act.data_as(); + + if ( dum13.b == 200 ) { + // attempt to access context free only api + get_context_free_data( 0, nullptr, 0 ); + eosio_assert( false, "get_context_free_data() not allowed in non-context free action" ); + } else { + eosio_assert( dum13.a == DUMMY_ACTION_DEFAULT_A, "dum13.a == DUMMY_ACTION_DEFAULT_A" ); + eosio_assert( dum13.b == DUMMY_ACTION_DEFAULT_B, "dum13.b == DUMMY_ACTION_DEFAULT_B" ); + eosio_assert( dum13.c == DUMMY_ACTION_DEFAULT_C, "dum13.c == DUMMY_ACTION_DEFAULT_C" ); + } +} + +void test_action::read_action_to_0() { + read_action_data( (void *)0, action_data_size() ); +} + +void test_action::read_action_to_64k() { + read_action_data( (void *)((1<<16)-2), action_data_size()); +} + +void test_action::test_cf_action() { + + eosio::action act = eosio::get_action( 0, 0 ); + cf_action cfa = act.data_as(); + if ( cfa.payload == 100 ) { + // verify read of get_context_free_data, also verifies system api access + int size = get_context_free_data( cfa.cfd_idx, nullptr, 0 ); + eosio_assert( size > 0, "size determination failed" ); + std::vector cfd( static_cast(size) ); + size = get_context_free_data( cfa.cfd_idx, &cfd[0], static_cast(size) ); + eosio_assert(static_cast(size) == cfd.size(), "get_context_free_data failed" ); + uint32_t v = eosio::unpack( &cfd[0], cfd.size() ); + eosio_assert( v == cfa.payload, "invalid value" ); + + // verify crypto api access + capi_checksum256 hash; + char test[] = "test"; + sha256( test, sizeof(test), &hash ); + assert_sha256( test, sizeof(test), &hash ); + // verify action api access + action_data_size(); + // verify console api access + eosio::print("test\n"); + // verify memory api access + uint32_t i = 42; + memccpy( &v, &i, sizeof(i), sizeof(i) ); + // verify transaction api access + eosio_assert(transaction_size() > 0, "transaction_size failed"); + // verify softfloat api access + float f1 = 1.0f, f2 = 2.0f; + float f3 = f1 + f2; + eosio_assert( f3 > 2.0f, "Unable to add float."); + // verify context_free_system_api + eosio_assert( true, "verify eosio_assert can be called" ); + + + } else if ( cfa.payload == 200 ) { + // attempt to access non context free api, privileged_api + is_privileged(act.name.value); + eosio_assert( false, "privileged_api should not be allowed" ); + } else if ( cfa.payload == 201 ) { + // attempt to access non context free api, producer_api + get_active_producers( nullptr, 0 ); + eosio_assert( false, "producer_api should not be allowed" ); + } else if ( cfa.payload == 202 ) { + // attempt to access non context free api, db_api + db_store_i64( "testapi"_n.value, "testapi"_n.value, "testapi"_n.value, 0, "test", 4 ); + eosio_assert( false, "db_api should not be allowed" ); + } else if ( cfa.payload == 203 ) { + // attempt to access non context free api, db_api + uint64_t i = 0; + db_idx64_store( "testapi"_n.value, "testapi"_n.value, "testapi"_n.value, 0, &i ); + eosio_assert( false, "db_api should not be allowed" ); + } else if ( cfa.payload == 204 ) { + db_find_i64( "testapi"_n.value, "testapi"_n.value, "testapi"_n.value, 1 ); + eosio_assert( false, "db_api should not be allowed" ); + } else if ( cfa.payload == 205 ) { + // attempt to access non context free api, send action + eosio::action dum_act; + dum_act.send(); + eosio_assert( false, "action send should not be allowed" ); + } else if ( cfa.payload == 206 ) { + eosio::require_auth("test"_n); + eosio_assert( false, "authorization_api should not be allowed" ); + } else if ( cfa.payload == 207 ) { + now(); + eosio_assert( false, "system_api should not be allowed" ); + } else if ( cfa.payload == 208 ) { + current_time(); + eosio_assert( false, "system_api should not be allowed" ); + } else if ( cfa.payload == 209 ) { + publication_time(); + eosio_assert( false, "system_api should not be allowed" ); + } else if ( cfa.payload == 210 ) { + send_inline( (char*)"hello", 6 ); + eosio_assert( false, "transaction_api should not be allowed" ); + } else if ( cfa.payload == 211 ) { + send_deferred( "testapi"_n.value, "testapi"_n.value, "hello", 6, 0 ); + eosio_assert( false, "transaction_api should not be allowed" ); + } + +} + +void test_action::require_notice( uint64_t receiver, uint64_t code, uint64_t action ) { + (void)code;(void)action; + if( receiver == "testapi"_n.value ) { + eosio::require_recipient( "acc1"_n ); + eosio::require_recipient( "acc2"_n ); + eosio::require_recipient( "acc1"_n, "acc2"_n ); + eosio_assert( false, "Should've failed" ); + } else if ( receiver == "acc1"_n.value || receiver == "acc2"_n.value ) { + return; + } + eosio_assert( false, "Should've failed" ); +} + +void test_action::require_notice_tests( uint64_t receiver, uint64_t code, uint64_t action ) { + eosio::print( "require_notice_tests" ); + if( receiver == "testapi"_n.value ) { + eosio::print("require_recipient( \"acc5\"_n )"); + eosio::require_recipient("acc5"_n); + } else if( receiver == "acc5"_n.value ) { + eosio::print("require_recipient( \"testapi\"_n )"); + eosio::require_recipient("testapi"_n); + } +} + +void test_action::require_auth() { + prints("require_auth"); + eosio::require_auth("acc3"_n); + eosio::require_auth("acc4"_n); +} + +void test_action::assert_false() { + eosio_assert( false, "test_action::assert_false" ); +} + +void test_action::assert_true() { + eosio_assert( true, "test_action::assert_true" ); +} + +void test_action::assert_true_cf() { + eosio_assert( true, "test_action::assert_true" ); +} + +void test_action::test_abort() { + abort(); + eosio_assert( false, "should've aborted" ); +} + +void test_action::test_publication_time() { + uint64_t pub_time = 0; + uint32_t total = read_action_data( &pub_time, sizeof(uint64_t) ); + eosio_assert( total == sizeof(uint64_t), "total == sizeof(uint64_t)" ); + eosio_assert( pub_time == publication_time(), "pub_time == publication_time()" ); +} + +void test_action::test_current_receiver( uint64_t receiver, uint64_t code, uint64_t action ) { + (void)code;(void)action; + name cur_rec; + read_action_data( &cur_rec, sizeof(name) ); + + eosio_assert( receiver == cur_rec.value, "the current receiver does not match" ); +} + +void test_action::test_current_time() { + uint64_t tmp = 0; + uint32_t total = read_action_data( &tmp, sizeof(uint64_t) ); + eosio_assert( total == sizeof(uint64_t), "total == sizeof(uint64_t)" ); + eosio_assert( tmp == current_time(), "tmp == current_time()" ); +} + +void test_action::test_assert_code() { + uint64_t code = 0; + uint32_t total = read_action_data(&code, sizeof(uint64_t)); + eosio_assert( total == sizeof(uint64_t), "total == sizeof(uint64_t)" ); + eosio_assert_code( false, code ); +} + +void test_action::test_ram_billing_in_notify( uint64_t receiver, uint64_t code, uint64_t action ) { + uint128_t tmp = 0; + uint32_t total = read_action_data( &tmp, sizeof(uint128_t) ); + eosio_assert( total == sizeof(uint128_t), "total == sizeof(uint128_t)" ); + + uint64_t to_notify = tmp >> 64; + uint64_t payer = tmp & 0xFFFFFFFFFFFFFFFFULL; + + if( code == receiver ) { + eosio::require_recipient( name{to_notify} ); + } else { + eosio_assert( to_notify == receiver, "notified recipient other than the one specified in to_notify" ); + + // Remove main table row if it already exists. + int itr = db_find_i64( receiver, "notifytest"_n.value, "notifytest"_n.value, "notifytest"_n.value ); + if( itr >= 0 ) + db_remove_i64( itr ); + + // Create the main table row simply for the purpose of charging code more RAM. + if( payer != 0 ) + db_store_i64( "notifytest"_n.value, "notifytest"_n.value, payer, "notifytest"_n.value, &to_notify, sizeof(to_notify) ); + } +} + +void test_action::test_action_ordinal1(uint64_t receiver, uint64_t code, uint64_t action) { + uint64_t _self = receiver; + if (receiver == "testapi"_n.value) { + print("exec 1"); + eosio::require_recipient( "bob"_n ); //-> exec 2 which would then cause execution of 4, 10 + + eosio::action act1({name(_self), "active"_n}, name(_self), + name(WASM_TEST_ACTION("test_action", "test_action_ordinal2")), + std::tuple<>()); + act1.send(); // -> exec 5 which would then cause execution of 6, 7, 8 + + if (is_account("fail1"_n)) { + eosio_assert(false, "fail at point 1"); + } + + eosio::action act2({name(_self), "active"_n}, name(_self), + name(WASM_TEST_ACTION("test_action", "test_action_ordinal3")), + std::tuple<>()); + act2.send(); // -> exec 9 + + eosio::require_recipient( "charlie"_n ); // -> exec 3 which would then cause execution of 11 + + } else if (receiver == "bob"_n.value) { + print("exec 2"); + eosio::action act1({name(_self), "active"_n}, name(_self), + name(WASM_TEST_ACTION("test_action", "test_action_ordinal_foo")), + std::tuple<>()); + act1.send(); // -> exec 10 + + eosio::require_recipient( "david"_n ); // -> exec 4 + } else if (receiver == "charlie"_n.value) { + print("exec 3"); + eosio::action act1({name(_self), "active"_n}, name(_self), + name(WASM_TEST_ACTION("test_action", "test_action_ordinal_bar")), + std::tuple<>()); // exec 11 + act1.send(); + + if (is_account("fail3"_n)) { + eosio_assert(false, "fail at point 3"); + } + + } else if (receiver == "david"_n.value) { + print("exec 4"); + } else { + eosio_assert(false, "assert failed at test_action::test_action_ordinal1"); + } +} +void test_action::test_action_ordinal2(uint64_t receiver, uint64_t code, uint64_t action) { + uint64_t _self = receiver; + if (receiver == "testapi"_n.value) { + print("exec 5"); + eosio::require_recipient( "david"_n ); // -> exec 6 + eosio::require_recipient( "erin"_n ); // -> exec 7 + + eosio::action act1({name(_self), "active"_n}, name(_self), + name(WASM_TEST_ACTION("test_action", "test_action_ordinal4")), + std::tuple<>()); + act1.send(); // -> exec 8 + } else if (receiver == "david"_n.value) { + print("exec 6"); + } else if (receiver == "erin"_n.value) { + print("exec 7"); + } else { + eosio_assert(false, "assert failed at test_action::test_action_ordinal2"); + } +} +void test_action::test_action_ordinal4(uint64_t receiver, uint64_t code, uint64_t action) { + print("exec 8"); +} +void test_action::test_action_ordinal3(uint64_t receiver, uint64_t code, uint64_t action) { + print("exec 9"); + + if (is_account("failnine"_n)) { + eosio_assert(false, "fail at point 9"); + } +} +void test_action::test_action_ordinal_foo(uint64_t receiver, uint64_t code, uint64_t action) { + print("exec 10"); +} +void test_action::test_action_ordinal_bar(uint64_t receiver, uint64_t code, uint64_t action) { + print("exec 11"); +} diff --git a/unittests/test-contracts/test_api/test_api.cpp b/unittests/test-contracts/test_api/test_api.cpp new file mode 100644 index 00000000000..4bf7adbe1e6 --- /dev/null +++ b/unittests/test-contracts/test_api/test_api.cpp @@ -0,0 +1,166 @@ +#include +#include + +#include "test_api.hpp" + +#include "test_action.cpp" +#include "test_chain.cpp" +#include "test_checktime.cpp" +#include "test_crypto.cpp" +#include "test_datastream.cpp" +#include "test_permission.cpp" +#include "test_print.cpp" +#include "test_transaction.cpp" +#include "test_types.cpp" + +name global_receiver; + +extern "C" { + void apply( uint64_t receiver, uint64_t code, uint64_t action ) { + if( code == "eosio"_n.value && action == "onerror"_n.value ) { + auto error = eosio::onerror::from_current_action(); + eosio::print("onerror called\n"); + auto error_trx = error.unpack_sent_trx(); + auto error_action = error_trx.actions.at(0).name; + + // Error handlers for deferred transactions in these tests currently only support the first action + + WASM_TEST_ERROR_HANDLER( "test_action", "assert_false", test_transaction, assert_false_error_handler ); + + + return; + } + + if ( action == name{"cfaction"}.value ) { + test_action::test_cf_action(); + return; + } + WASM_TEST_HANDLER( test_action, assert_true_cf ); + + if ( action != WASM_TEST_ACTION("test_transaction", "stateful_api") && + action != WASM_TEST_ACTION("test_transaction", "context_free_api") ) + require_auth(code); + + //test_types + WASM_TEST_HANDLER( test_types, types_size ); + WASM_TEST_HANDLER( test_types, char_to_symbol ); + WASM_TEST_HANDLER( test_types, string_to_name ); + + //test_action + WASM_TEST_HANDLER ( test_action, read_action_normal ); + WASM_TEST_HANDLER ( test_action, read_action_to_0 ); + WASM_TEST_HANDLER ( test_action, read_action_to_64k ); + WASM_TEST_HANDLER_EX( test_action, require_notice ); + WASM_TEST_HANDLER_EX( test_action, require_notice_tests ); + WASM_TEST_HANDLER ( test_action, require_auth ); + WASM_TEST_HANDLER ( test_action, assert_false ); + WASM_TEST_HANDLER ( test_action, assert_true ); + WASM_TEST_HANDLER ( test_action, test_current_time ); + WASM_TEST_HANDLER ( test_action, test_abort ); + WASM_TEST_HANDLER_EX( test_action, test_current_receiver ); + WASM_TEST_HANDLER ( test_action, test_publication_time ); + WASM_TEST_HANDLER ( test_action, test_assert_code ); + WASM_TEST_HANDLER_EX( test_action, test_ram_billing_in_notify ); + WASM_TEST_HANDLER_EX( test_action, test_action_ordinal1 ); + WASM_TEST_HANDLER_EX( test_action, test_action_ordinal2 ); + WASM_TEST_HANDLER_EX( test_action, test_action_ordinal3 ); + WASM_TEST_HANDLER_EX( test_action, test_action_ordinal4 ); + WASM_TEST_HANDLER_EX( test_action, test_action_ordinal_foo ); + WASM_TEST_HANDLER_EX( test_action, test_action_ordinal_bar ); + + // test named actions + // We enforce action name matches action data type name, so name mangling will not work for these tests. + if ( action == name{"dummyaction"}.value ) { + test_action::test_dummy_action(); + return; + } + //test_print + WASM_TEST_HANDLER( test_print, test_prints ); + WASM_TEST_HANDLER( test_print, test_prints_l ); + WASM_TEST_HANDLER( test_print, test_printi ); + WASM_TEST_HANDLER( test_print, test_printui ); + WASM_TEST_HANDLER( test_print, test_printi128 ); + WASM_TEST_HANDLER( test_print, test_printui128 ); + WASM_TEST_HANDLER( test_print, test_printn ); + WASM_TEST_HANDLER( test_print, test_printsf ); + WASM_TEST_HANDLER( test_print, test_printdf ); + WASM_TEST_HANDLER( test_print, test_printqf ); + + //test crypto + WASM_TEST_HANDLER( test_crypto, test_recover_key ); +// WASM_TEST_HANDLER( test_crypto, test_recover_key_partial ); + WASM_TEST_HANDLER( test_crypto, test_recover_key_assert_true ); + WASM_TEST_HANDLER( test_crypto, test_recover_key_assert_false ); + WASM_TEST_HANDLER( test_crypto, test_sha1 ); + WASM_TEST_HANDLER( test_crypto, test_sha256 ); + WASM_TEST_HANDLER( test_crypto, test_sha512 ); + WASM_TEST_HANDLER( test_crypto, test_ripemd160 ); + WASM_TEST_HANDLER( test_crypto, sha1_no_data ); + WASM_TEST_HANDLER( test_crypto, sha256_no_data ); + WASM_TEST_HANDLER( test_crypto, sha512_no_data ); + WASM_TEST_HANDLER( test_crypto, ripemd160_no_data ); + WASM_TEST_HANDLER( test_crypto, sha256_null ); + WASM_TEST_HANDLER( test_crypto, assert_sha256_false ); + WASM_TEST_HANDLER( test_crypto, assert_sha256_true ); + WASM_TEST_HANDLER( test_crypto, assert_sha1_false ); + WASM_TEST_HANDLER( test_crypto, assert_sha1_true ); + WASM_TEST_HANDLER( test_crypto, assert_sha512_false ); + WASM_TEST_HANDLER( test_crypto, assert_sha512_true ); + WASM_TEST_HANDLER( test_crypto, assert_ripemd160_false ); + WASM_TEST_HANDLER( test_crypto, assert_ripemd160_true ); + + //test transaction + WASM_TEST_HANDLER ( test_transaction, test_tapos_block_num ); + WASM_TEST_HANDLER ( test_transaction, test_tapos_block_prefix ); + WASM_TEST_HANDLER ( test_transaction, send_action ); + WASM_TEST_HANDLER ( test_transaction, send_action_inline_fail ); + WASM_TEST_HANDLER ( test_transaction, send_action_empty ); + WASM_TEST_HANDLER ( test_transaction, send_action_large ); + WASM_TEST_HANDLER ( test_transaction, send_action_recurse ); + WASM_TEST_HANDLER ( test_transaction, test_read_transaction ); + WASM_TEST_HANDLER ( test_transaction, test_transaction_size ); + WASM_TEST_HANDLER_EX( test_transaction, send_transaction ); + WASM_TEST_HANDLER_EX( test_transaction, send_transaction_empty ); + WASM_TEST_HANDLER_EX( test_transaction, send_transaction_trigger_error_handler ); + WASM_TEST_HANDLER_EX( test_transaction, send_transaction_large ); + WASM_TEST_HANDLER_EX( test_transaction, send_action_sender ); + WASM_TEST_HANDLER ( test_transaction, deferred_print ); + WASM_TEST_HANDLER_EX( test_transaction, send_deferred_transaction ); + WASM_TEST_HANDLER_EX( test_transaction, send_deferred_transaction_replace ); + WASM_TEST_HANDLER ( test_transaction, send_deferred_tx_with_dtt_action ); + WASM_TEST_HANDLER ( test_transaction, cancel_deferred_transaction_success ); + WASM_TEST_HANDLER ( test_transaction, cancel_deferred_transaction_not_found ); + WASM_TEST_HANDLER ( test_transaction, send_cf_action ); + WASM_TEST_HANDLER ( test_transaction, send_cf_action_fail ); + WASM_TEST_HANDLER ( test_transaction, stateful_api ); + WASM_TEST_HANDLER ( test_transaction, context_free_api ); + WASM_TEST_HANDLER_EX( test_transaction, repeat_deferred_transaction ); + + //test chain + WASM_TEST_HANDLER( test_chain, test_activeprods ); + + // test checktime + WASM_TEST_HANDLER( test_checktime, checktime_pass ); + WASM_TEST_HANDLER( test_checktime, checktime_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_sha1_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_assert_sha1_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_sha256_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_assert_sha256_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_sha512_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_assert_sha512_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_ripemd160_failure ); + WASM_TEST_HANDLER( test_checktime, checktime_assert_ripemd160_failure ); + + // test datastream + WASM_TEST_HANDLER( test_datastream, test_basic ); + + // test permission + WASM_TEST_HANDLER_EX( test_permission, check_authorization ); + WASM_TEST_HANDLER_EX( test_permission, test_permission_last_used ); + WASM_TEST_HANDLER_EX( test_permission, test_account_creation_time ); + + //unhandled test call + eosio_assert( false, "Unknown Test" ); + + } +} diff --git a/contracts/test_api/test_api.hpp b/unittests/test-contracts/test_api/test_api.hpp similarity index 67% rename from contracts/test_api/test_api.hpp rename to unittests/test-contracts/test_api/test_api.hpp index 5406dff5520..92fe9c9ddaa 100644 --- a/contracts/test_api/test_api.hpp +++ b/unittests/test-contracts/test_api/test_api.hpp @@ -1,18 +1,10 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ #pragma once -#include "test_api_common.hpp" -#include +#include -namespace eosio { - class transaction; -} - +#include "test_api_common.hpp" -//#include +namespace eosio { class transaction; } // NOTE: including eosiolib/transaction.hpp here causes !"unresolvable": env._ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv // errors in api_tests/memory_tests @@ -30,50 +22,55 @@ namespace eosio { } #define WASM_TEST_ERROR_HANDLER(CALLED_CLASS_STR, CALLED_METHOD_STR, HANDLER_CLASS, HANDLER_METHOD) \ -if( error_action == WASM_TEST_ACTION(CALLED_CLASS_STR, CALLED_METHOD_STR) ) { \ + if( error_action == name{WASM_TEST_ACTION(CALLED_CLASS_STR, CALLED_METHOD_STR)} ) { \ HANDLER_CLASS::HANDLER_METHOD(error_trx); \ return; \ } struct test_types { - static void types_size(); - static void char_to_symbol(); - static void string_to_name(); - static void name_class(); + static void types_size(); + static void char_to_symbol(); + static void string_to_name(); }; struct test_print { - static void test_prints(); - static void test_prints_l(); - static void test_printi(); - static void test_printui(); - static void test_printi128(); - static void test_printui128(); - static void test_printn(); - static void test_printsf(); - static void test_printdf(); - static void test_printqf(); - static void test_print_simple(); + static void test_prints(); + static void test_prints_l(); + static void test_printi(); + static void test_printui(); + static void test_printi128(); + static void test_printui128(); + static void test_printn(); + static void test_printsf(); + static void test_printdf(); + static void test_printqf(); + static void test_print_simple(); }; struct test_action { - static void read_action_normal(); - static void read_action_to_0(); - static void read_action_to_64k(); - static void test_dummy_action(); - static void test_cf_action(); - static void require_notice(uint64_t receiver, uint64_t code, uint64_t action); - static void require_notice_tests(uint64_t receiver, uint64_t code, uint64_t action); - static void require_auth(); - static void assert_false(); - static void assert_true(); - static void assert_true_cf(); - static void test_current_time(); - static void test_abort() __attribute__ ((noreturn)) ; - static void test_current_receiver(uint64_t receiver, uint64_t code, uint64_t action); - static void test_publication_time(); - static void test_assert_code(); - static void test_ram_billing_in_notify(uint64_t receiver, uint64_t code, uint64_t action); + static void read_action_normal(); + static void read_action_to_0(); + static void read_action_to_64k(); + static void test_dummy_action(); + static void test_cf_action(); + static void require_notice(uint64_t receiver, uint64_t code, uint64_t action); + static void require_notice_tests(uint64_t receiver, uint64_t code, uint64_t action); + static void require_auth(); + static void assert_false(); + static void assert_true(); + static void assert_true_cf(); + static void test_current_time(); + static void test_abort() __attribute__ ((noreturn)) ; + static void test_current_receiver(uint64_t receiver, uint64_t code, uint64_t action); + static void test_publication_time(); + static void test_assert_code(); + static void test_ram_billing_in_notify(uint64_t receiver, uint64_t code, uint64_t action); + static void test_action_ordinal1(uint64_t receiver, uint64_t code, uint64_t action); + static void test_action_ordinal2(uint64_t receiver, uint64_t code, uint64_t action); + static void test_action_ordinal3(uint64_t receiver, uint64_t code, uint64_t action); + static void test_action_ordinal4(uint64_t receiver, uint64_t code, uint64_t action); + static void test_action_ordinal_foo(uint64_t receiver, uint64_t code, uint64_t action); + static void test_action_ordinal_bar(uint64_t receiver, uint64_t code, uint64_t action); }; struct test_db { @@ -131,6 +128,7 @@ struct test_multi_index { struct test_crypto { static void test_recover_key(); +// static void test_recover_key_partial(); static void test_recover_key_assert_true(); static void test_recover_key_assert_false(); static void test_sha1(); @@ -153,40 +151,38 @@ struct test_crypto { }; struct test_transaction { - static void test_tapos_block_num(); - static void test_tapos_block_prefix(); - static void send_action(); - static void send_action_empty(); - static void send_action_max(); - static void send_action_large(); - static void send_action_recurse(); - static void send_action_inline_fail(); - static void test_read_transaction(); - static void test_transaction_size(); - static void send_transaction(uint64_t receiver, uint64_t code, uint64_t action); - static void send_transaction_empty(uint64_t receiver, uint64_t code, uint64_t action); - static void send_transaction_trigger_error_handler(uint64_t receiver, uint64_t code, uint64_t action); - static void assert_false_error_handler(const eosio::transaction&); - static void send_transaction_max(); - static void send_transaction_large(uint64_t receiver, uint64_t code, uint64_t action); - static void send_action_sender(uint64_t receiver, uint64_t code, uint64_t action); - static void deferred_print(); - static void send_deferred_transaction(uint64_t receiver, uint64_t code, uint64_t action); - static void send_deferred_transaction_replace(uint64_t receiver, uint64_t code, uint64_t action); - static void send_deferred_tx_with_dtt_action(); - static void cancel_deferred_transaction_success(); - static void cancel_deferred_transaction_not_found(); - static void send_cf_action(); - static void send_cf_action_fail(); - static void stateful_api(); - static void context_free_api(); - static void new_feature(); - static void active_new_feature(); - static void repeat_deferred_transaction(uint64_t receiver, uint64_t code, uint64_t action); + static void test_tapos_block_num(); + static void test_tapos_block_prefix(); + static void send_action(); + static void send_action_empty(); + static void send_action_max(); + static void send_action_large(); + static void send_action_recurse(); + static void send_action_inline_fail(); + static void test_read_transaction(); + static void test_transaction_size(); + static void send_transaction(uint64_t receiver, uint64_t code, uint64_t action); + static void send_transaction_empty(uint64_t receiver, uint64_t code, uint64_t action); + static void send_transaction_trigger_error_handler(uint64_t receiver, uint64_t code, uint64_t action); + static void assert_false_error_handler(const eosio::transaction&); + static void send_transaction_max(); + static void send_transaction_large(uint64_t receiver, uint64_t code, uint64_t action); + static void send_action_sender(uint64_t receiver, uint64_t code, uint64_t action); + static void deferred_print(); + static void send_deferred_transaction(uint64_t receiver, uint64_t code, uint64_t action); + static void send_deferred_transaction_replace(uint64_t receiver, uint64_t code, uint64_t action); + static void send_deferred_tx_with_dtt_action(); + static void cancel_deferred_transaction_success(); + static void cancel_deferred_transaction_not_found(); + static void send_cf_action(); + static void send_cf_action_fail(); + static void stateful_api(); + static void context_free_api(); + static void repeat_deferred_transaction(uint64_t receiver, uint64_t code, uint64_t action); }; struct test_chain { - static void test_activeprods(); + static void test_activeprods(); }; struct test_fixedpoint { @@ -215,10 +211,10 @@ struct test_compiler_builtins { }; struct test_extended_memory { - static void test_initial_buffer(); - static void test_page_memory(); - static void test_page_memory_exceeded(); - static void test_page_memory_negative_bytes(); + static void test_initial_buffer(); + static void test_page_memory(); + static void test_page_memory_exceeded(); + static void test_page_memory_negative_bytes(); }; struct test_memory { @@ -257,23 +253,16 @@ struct test_checktime { static void checktime_assert_sha512_failure(); static void checktime_ripemd160_failure(); static void checktime_assert_ripemd160_failure(); + + static int i; }; -/* -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(); -}; -*/ struct test_permission { - static void check_authorization(uint64_t receiver, uint64_t code, uint64_t action); - static void test_permission_last_used(uint64_t receiver, uint64_t code, uint64_t action); - static void test_account_creation_time(uint64_t receiver, uint64_t code, uint64_t action); + static void check_authorization(uint64_t receiver, uint64_t code, uint64_t action); + static void test_permission_last_used(uint64_t receiver, uint64_t code, uint64_t action); + static void test_account_creation_time(uint64_t receiver, uint64_t code, uint64_t action); }; struct test_datastream { - static void test_basic(); + static void test_basic(); }; diff --git a/unittests/test-contracts/test_api/test_api.wasm b/unittests/test-contracts/test_api/test_api.wasm new file mode 100755 index 00000000000..5909bf11e64 Binary files /dev/null and b/unittests/test-contracts/test_api/test_api.wasm differ diff --git a/contracts/test_api/test_api_common.hpp b/unittests/test-contracts/test_api/test_api_common.hpp similarity index 63% rename from contracts/test_api/test_api_common.hpp rename to unittests/test-contracts/test_api/test_api_common.hpp index d78afa29bb3..1b4ef7db137 100644 --- a/contracts/test_api/test_api_common.hpp +++ b/unittests/test-contracts/test_api/test_api_common.hpp @@ -1,16 +1,9 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ #pragma once -#ifdef DISABLE_EOSLIB_SERIALIZE #include -#undef EOSLIB_SERIALIZE -#define EOSLIB_SERIALIZE(...) -#endif -static constexpr unsigned int DJBH(const char* cp) + +static constexpr unsigned int DJBH( const char* cp ) { unsigned int hash = 5381; while (*cp) @@ -18,18 +11,18 @@ static constexpr unsigned int DJBH(const char* cp) return hash; } -static constexpr unsigned long long WASM_TEST_ACTION(const char* cls, const char* method) +static constexpr unsigned long long WASM_TEST_ACTION( const char* cls, const char* method ) { - return static_cast(DJBH(cls)) << 32 | static_cast(DJBH(method)); + return static_cast( DJBH(cls)) << 32 | static_cast(DJBH(method) ); } #pragma pack(push, 1) struct dummy_action { static uint64_t get_name() { - return N(dummy_action); + return eosio::name{"dummy_action"}.value; } static uint64_t get_account() { - return N(testapi); + return eosio::name{"testapi"}.value; } char a; //1 @@ -47,10 +40,10 @@ struct u128_action { struct cf_action { static uint64_t get_name() { - return N(cf_action); + return eosio::name{"cf_action"}.value; } static uint64_t get_account() { - return N(testapi); + return eosio::name{"testapi"}.value; } uint32_t payload = 100; @@ -62,16 +55,16 @@ struct cf_action { // Deferred Transaction Trigger Action struct dtt_action { static uint64_t get_name() { - return WASM_TEST_ACTION("test_transaction", "send_deferred_tx_with_dtt_action"); + return WASM_TEST_ACTION( "test_transaction", "send_deferred_tx_with_dtt_action" ); } static uint64_t get_account() { - return N(testapi); + return "testapi"_n.value; } - uint64_t payer = N(testapi); - uint64_t deferred_account = N(testapi); - uint64_t deferred_action = WASM_TEST_ACTION("test_transaction", "deferred_print"); - uint64_t permission_name = N(active); + uint64_t payer = "testapi"_n.value; + uint64_t deferred_account = "testapi"_n.value; + uint64_t deferred_action = WASM_TEST_ACTION( "test_transaction", "deferred_print" ); + uint64_t permission_name = "active"_n.value; uint32_t delay_sec = 2; EOSLIB_SERIALIZE( dtt_action, (payer)(deferred_account)(deferred_action)(permission_name)(delay_sec) ) diff --git a/unittests/test-contracts/test_api/test_chain.cpp b/unittests/test-contracts/test_api/test_chain.cpp new file mode 100644 index 00000000000..28cfa2ac485 --- /dev/null +++ b/unittests/test-contracts/test_api/test_chain.cpp @@ -0,0 +1,25 @@ +#include +#include +#include + +#include "test_api.hpp" + +#pragma pack(push, 1) +struct producers { + char len; + capi_name producers[21]; +}; +#pragma pack(pop) + +void test_chain::test_activeprods() { + producers act_prods; + read_action_data( &act_prods, sizeof(producers) ); + + eosio_assert( act_prods.len == 21, "producers.len != 21" ); + + producers api_prods; + get_active_producers( api_prods.producers, sizeof(eosio::name)*21 ); + + for( int i = 0; i < 21 ; ++i ) + eosio_assert( api_prods.producers[i] == act_prods.producers[i], "Active producer" ); +} diff --git a/contracts/test_api/test_checktime.cpp b/unittests/test-contracts/test_api/test_checktime.cpp similarity index 73% rename from contracts/test_api/test_checktime.cpp rename to unittests/test-contracts/test_api/test_checktime.cpp index a227ee91b04..4a14544125e 100644 --- a/contracts/test_api/test_checktime.cpp +++ b/unittests/test-contracts/test_api/test_checktime.cpp @@ -1,14 +1,10 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ +#include -#include #include +#include #include -#include "test_api.hpp" -#include +#include "test_api.hpp" void test_checktime::checktime_pass() { int p = 0; @@ -18,12 +14,15 @@ void test_checktime::checktime_pass() { eosio::print(p); } + void test_checktime::checktime_failure() { - int p = 0; - for ( unsigned long long i = 0; i < 10000000000000000000ULL; i++ ) - for ( unsigned long long j = 0; i < 10000000000000000000ULL; i++ ) - p += i+j; + volatile unsigned long long bound{}; // `volatile' necessary to prevent loop optimization + read_action_data( (char*)&bound, sizeof(bound) ); + int p = 0; + for ( unsigned long long i = 0; i < bound; i++ ) + for ( unsigned long long j = 0; j < bound; j++ ) + p += i+j+bound; eosio::print(p); } @@ -32,48 +31,48 @@ constexpr size_t size = 20000000; void test_checktime::checktime_sha1_failure() { char* ptr = new char[size]; - checksum160 res; + capi_checksum160 res; sha1( ptr, size, &res ); } void test_checktime::checktime_assert_sha1_failure() { char* ptr = new char[size]; - checksum160 res; + capi_checksum160 res; assert_sha1( ptr, size, &res ); } void test_checktime::checktime_sha256_failure() { char* ptr = new char[size]; - checksum256 res; + capi_checksum256 res; sha256( ptr, size, &res ); } void test_checktime::checktime_assert_sha256_failure() { char* ptr = new char[size]; - checksum256 res; + capi_checksum256 res; assert_sha256( ptr, size, &res ); } void test_checktime::checktime_sha512_failure() { char* ptr = new char[size]; - checksum512 res; + capi_checksum512 res; sha512( ptr, size, &res ); } void test_checktime::checktime_assert_sha512_failure() { char* ptr = new char[size]; - checksum512 res; + capi_checksum512 res; assert_sha512( ptr, size, &res ); } void test_checktime::checktime_ripemd160_failure() { char* ptr = new char[size]; - checksum160 res; + capi_checksum160 res; ripemd160( ptr, size, &res ); } void test_checktime::checktime_assert_ripemd160_failure() { char* ptr = new char[size]; - checksum160 res; + capi_checksum160 res; assert_ripemd160( ptr, size, &res ); } diff --git a/unittests/test-contracts/test_api/test_crypto.cpp b/unittests/test-contracts/test_api/test_crypto.cpp new file mode 100644 index 00000000000..c36046558f1 --- /dev/null +++ b/unittests/test-contracts/test_api/test_crypto.cpp @@ -0,0 +1,418 @@ +/** + * @file + * @copyright defined in eos/LICENSE + */ +#include +#include +#include + +#include "test_api.hpp" + +#define WASM_TEST_FAIL 1 + +static const char test1[] = "abc"; +static const unsigned char test1_ok_1[] = { + 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, + 0x6a, 0xba, 0x3e, 0x25, 0x71, 0x78, 0x50, + 0xc2, 0x6c, 0x9c, 0xd0, 0xd8, 0x9d +}; + +static const unsigned char test1_ok_256[] = { + 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, + 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, + 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, + 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad +}; + +static const unsigned char test1_ok_512[] = { + 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, + 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, + 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, + 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, + 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, + 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd, + 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, + 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f +}; + +static const unsigned char test1_ok_ripe[] = { + 0x8e, 0xb2, 0x08, 0xf7, 0xe0, 0x5d, 0x98, 0x7a, + 0x9b, 0x04, 0x4a, 0x8e, 0x98, 0xc6, 0xb0, 0x87, + 0xf1, 0x5a, 0x0b, 0xfc +}; + +const char test2[] = ""; +static const unsigned char test2_ok_1[] = { + 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, + 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, + 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 +}; + +const unsigned char test2_ok_256[] = { + 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, + 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, + 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, + 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55 +}; + +const unsigned char test2_ok_512[] = { + 0xcf, 0x83, 0xe1, 0x35, 0x7e, 0xef, 0xb8, 0xbd, + 0xf1, 0x54, 0x28, 0x50, 0xd6, 0x6d, 0x80, 0x07, + 0xd6, 0x20, 0xe4, 0x05, 0x0b, 0x57, 0x15, 0xdc, + 0x83, 0xf4, 0xa9, 0x21, 0xd3, 0x6c, 0xe9, 0xce, + 0x47, 0xd0, 0xd1, 0x3c, 0x5d, 0x85, 0xf2, 0xb0, + 0xff, 0x83, 0x18, 0xd2, 0x87, 0x7e, 0xec, 0x2f, + 0x63, 0xb9, 0x31, 0xbd, 0x47, 0x41, 0x7a, 0x81, + 0xa5, 0x38, 0x32, 0x7a, 0xf9, 0x27, 0xda, 0x3e +}; + +const unsigned char test2_ok_ripe[] = { + 0x9c, 0x11, 0x85, 0xa5, 0xc5, 0xe9, 0xfc, 0x54, + 0x61, 0x28, 0x08, 0x97, 0x7e, 0xe8, 0xf5, 0x48, + 0xb2, 0x25, 0x8d, 0x31 +}; + +static const char test3[] = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; +static const unsigned char test3_ok_1[] = { + 0x84, 0x98, 0x3e, 0x44, 0x1c, 0x3b, 0xd2, + 0x6e, 0xba, 0xae, 0x4a, 0xa1, 0xf9, 0x51, + 0x29, 0xe5, 0xe5, 0x46, 0x70, 0xf1 +}; + +static const unsigned char test3_ok_256[] = { + 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, + 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39, + 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67, + 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 +}; + +static const unsigned char test3_ok_512[] = { + 0x20, 0x4a, 0x8f, 0xc6, 0xdd, 0xa8, 0x2f, 0x0a, + 0x0c, 0xed, 0x7b, 0xeb, 0x8e, 0x08, 0xa4, 0x16, + 0x57, 0xc1, 0x6e, 0xf4, 0x68, 0xb2, 0x28, 0xa8, + 0x27, 0x9b, 0xe3, 0x31, 0xa7, 0x03, 0xc3, 0x35, + 0x96, 0xfd, 0x15, 0xc1, 0x3b, 0x1b, 0x07, 0xf9, + 0xaa, 0x1d, 0x3b, 0xea, 0x57, 0x78, 0x9c, 0xa0, + 0x31, 0xad, 0x85, 0xc7, 0xa7, 0x1d, 0xd7, 0x03, + 0x54, 0xec, 0x63, 0x12, 0x38, 0xca, 0x34, 0x45 +}; + +static const unsigned char test3_ok_ripe[] = { + 0x12, 0xa0, 0x53, 0x38, 0x4a, 0x9c, 0x0c, 0x88, + 0xe4, 0x05, 0xa0, 0x6c, 0x27, 0xdc, 0xf4, 0x9a, + 0xda, 0x62, 0xeb, 0x2b +}; + +static const char test4[] = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; +static const unsigned char test4_ok_1[] = { + 0xa4, 0x9b, 0x24, 0x46, 0xa0, 0x2c, 0x64, + 0x5b, 0xf4, 0x19, 0xf9, 0x95, 0xb6, 0x70, + 0x91, 0x25, 0x3a, 0x04, 0xa2, 0x59 +}; + +static const unsigned char test4_ok_256[] = { + 0xcf, 0x5b, 0x16, 0xa7, 0x78, 0xaf, 0x83, 0x80, + 0x03, 0x6c, 0xe5, 0x9e, 0x7b, 0x04, 0x92, 0x37, + 0x0b, 0x24, 0x9b, 0x11, 0xe8, 0xf0, 0x7a, 0x51, + 0xaf, 0xac, 0x45, 0x03, 0x7a, 0xfe, 0xe9, 0xd1 +}; + +static const unsigned char test4_ok_512[] = { + 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda, + 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f, + 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1, + 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18, + 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4, + 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a, + 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54, + 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 +}; + +static const unsigned char test4_ok_ripe[] = { + 0x6f, 0x3f, 0xa3, 0x9b, 0x6b, 0x50, 0x3c, 0x38, + 0x4f, 0x91, 0x9a, 0x49, 0xa7, 0xaa, 0x5c, 0x2c, + 0x08, 0xbd, 0xfb, 0x45 +}; + +static const char test5[] = "message digest"; +static const unsigned char test5_ok_1[] = { + 0xc1, 0x22, 0x52, 0xce, 0xda, 0x8b, 0xe8, + 0x99, 0x4d, 0x5f, 0xa0, 0x29, 0x0a, 0x47, + 0x23, 0x1c, 0x1d, 0x16, 0xaa, 0xe3 +}; + +static const unsigned char test5_ok_256[] = { + 0xf7, 0x84, 0x6f, 0x55, 0xcf, 0x23, 0xe1, 0x4e, + 0xeb, 0xea, 0xb5, 0xb4, 0xe1, 0x55, 0x0c, 0xad, + 0x5b, 0x50, 0x9e, 0x33, 0x48, 0xfb, 0xc4, 0xef, + 0xa3, 0xa1, 0x41, 0x3d, 0x39, 0x3c, 0xb6, 0x50 +}; + +static const unsigned char test5_ok_512[] = { + 0x10, 0x7d, 0xbf, 0x38, 0x9d, 0x9e, 0x9f, 0x71, + 0xa3, 0xa9, 0x5f, 0x6c, 0x05, 0x5b, 0x92, 0x51, + 0xbc, 0x52, 0x68, 0xc2, 0xbe, 0x16, 0xd6, 0xc1, + 0x34, 0x92, 0xea, 0x45, 0xb0, 0x19, 0x9f, 0x33, + 0x09, 0xe1, 0x64, 0x55, 0xab, 0x1e, 0x96, 0x11, + 0x8e, 0x8a, 0x90, 0x5d, 0x55, 0x97, 0xb7, 0x20, + 0x38, 0xdd, 0xb3, 0x72, 0xa8, 0x98, 0x26, 0x04, + 0x6d, 0xe6, 0x66, 0x87, 0xbb, 0x42, 0x0e, 0x7c +}; + +static const unsigned char test5_ok_ripe[] = { + 0x5d, 0x06, 0x89, 0xef, 0x49, 0xd2, 0xfa, 0xe5, + 0x72, 0xb8, 0x81, 0xb1, 0x23, 0xa8, 0x5f, 0xfa, + 0x21, 0x59, 0x5f, 0x36 +}; + +extern "C" { +uint32_t my_strlen( const char *str ) { + uint32_t len = 0; + while(str[len]) ++len; + return len; +} + +bool my_memcmp( void *s1, void *s2, uint32_t n ) +{ + unsigned char *c1 = (unsigned char *)s1; + unsigned char *c2 = (unsigned char *)s2; + for (uint32_t i = 0; i < n; ++i) { + if ( c1[i] != c2[i] ) { + return false; + } + } + return true; +} + +} + +struct sig_hash_key { + capi_checksum256 hash; + capi_public_key pk; + capi_signature sig; +}; + +void test_crypto::test_recover_key_assert_true() { + sig_hash_key sh; + read_action_data( (char*)&sh, sizeof(sh) ); + assert_recover_key( &sh.hash, (const char*)&sh.sig, sizeof(sh.sig), (const char*)&sh.pk, sizeof(sh.pk) ); +} + +void test_crypto::test_recover_key_assert_false() { + sig_hash_key sh; + read_action_data( (char*)&sh, sizeof(sh) ); + assert_recover_key( &sh.hash, (const char*)&sh.sig, sizeof(sh.sig), (const char*)&sh.pk, sizeof(sh.pk) ); + eosio_assert( false, "should have thrown an error" ); +} + +void test_crypto::test_recover_key() { + sig_hash_key sh; + read_action_data( (char*)&sh, sizeof(sh) ); + capi_public_key pk; + recover_key( &sh.hash, (const char*)&sh.sig, sizeof(sh.sig), pk.data, sizeof(pk) ); + for ( uint32_t i=0; i < sizeof(pk); i++ ) + if ( pk.data[i] != sh.pk.data[i] ) + eosio_assert( false, "public key does not match" ); +} + +void test_crypto::test_sha1() { + unsigned char tmp[20]; + + ::sha1( test1, my_strlen(test1), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test1_ok_1, &tmp, sizeof(tmp)), "sha1 test1" ); + + ::sha1( test3, my_strlen(test3), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test3_ok_1, &tmp, sizeof(tmp)), "sha1 test3" ); + + ::sha1( test4, my_strlen(test4), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test4_ok_1, &tmp, sizeof(tmp)), "sha1 test4" ); + + ::sha1( test5, my_strlen(test5), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test5_ok_1, &tmp, sizeof(tmp)), "sha1 test5" ); +} + +void test_crypto::test_sha256() { + unsigned char tmp[32]; + + ::sha256( test1, my_strlen(test1), (capi_checksum256*)tmp); + eosio_assert( my_memcmp((void *)test1_ok_256, &tmp, sizeof(tmp)), "sha256 test1" ); + + ::sha256( test3, my_strlen(test3), (capi_checksum256*)tmp); + eosio_assert( my_memcmp((void *)test3_ok_256, &tmp, sizeof(tmp)), "sha256 test3" ); + + ::sha256( test4, my_strlen(test4), (capi_checksum256*)tmp); + eosio_assert( my_memcmp((void *)test4_ok_256, &tmp, sizeof(tmp)), "sha256 test4" ); + + ::sha256( test5, my_strlen(test5), (capi_checksum256*)tmp); + eosio_assert( my_memcmp((void *)test5_ok_256, &tmp, sizeof(tmp)), "sha256 test5" ); +} + +void test_crypto::test_sha512() { + unsigned char tmp[64]; + + ::sha512( test1, my_strlen(test1), (capi_checksum512*)tmp ); + eosio_assert( my_memcmp((void *)test1_ok_512, &tmp, sizeof(tmp)), "sha512 test1" ); + + ::sha512( test3, my_strlen(test3), (capi_checksum512*)tmp ); + eosio_assert( my_memcmp((void *)test3_ok_512, &tmp, sizeof(tmp)), "sha512 test3" ); + + ::sha512( test4, my_strlen(test4), (capi_checksum512*)tmp ); + eosio_assert( my_memcmp((void *)test4_ok_512, &tmp, sizeof(tmp)), "sha512 test4" ); + + ::sha512( test5, my_strlen(test5), (capi_checksum512*)tmp ); + eosio_assert( my_memcmp((void *)test5_ok_512, &tmp, sizeof(tmp)), "sha512 test5" ); +} + +void test_crypto::test_ripemd160() { + unsigned char tmp[20]; + + ::ripemd160( test1, my_strlen(test1), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test1_ok_ripe, &tmp, sizeof(tmp)), "ripemd160 test1" ); + + ::ripemd160( test3, my_strlen(test3), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test3_ok_ripe, &tmp, sizeof(tmp)), "ripemd160 test3" ); + + ::ripemd160( test4, my_strlen(test4), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test4_ok_ripe, &tmp, sizeof(tmp)), "ripemd160 test4" ); + + ::ripemd160( test5, my_strlen(test5), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test5_ok_ripe, &tmp, sizeof(tmp)), "ripemd160 test5" ); +} + +void test_crypto::sha256_null() { + unsigned char tmp[32]; + ::sha256( nullptr, 100, (capi_checksum256*)tmp); + eosio_assert( false, "should've thrown an error" ); +} + +void test_crypto::sha1_no_data() { + unsigned char tmp[20]; + ::sha1( test2, my_strlen(test2), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test2_ok_1, &tmp, sizeof(tmp)), "sha1 test2" ); +} + +void test_crypto::sha256_no_data() { + unsigned char tmp[32]; + ::sha256( test2, my_strlen(test2), (capi_checksum256*)tmp ); + eosio_assert( my_memcmp((void *)test2_ok_256, &tmp, sizeof(tmp)), "sha256 test2" ); +} + +void test_crypto::sha512_no_data() { + unsigned char tmp[64]; + ::sha512( test2, my_strlen(test2), (capi_checksum512*)tmp ); + eosio_assert( my_memcmp((void *)test2_ok_512, &tmp, sizeof(tmp)), "sha512 test2" ); +} + +void test_crypto::ripemd160_no_data() { + unsigned char tmp[20]; + ::ripemd160( test2, my_strlen(test2), (capi_checksum160*)tmp ); + eosio_assert( my_memcmp((void *)test2_ok_ripe, &tmp, sizeof(tmp)), "ripemd160 test2" ); +} + + +void test_crypto::assert_sha256_false() { + eosio::checksum256 tmp; + + tmp = eosio::sha256( test1, my_strlen(test1) ); + tmp.data()[0] ^= (uint64_t)(-1); + assert_sha256( test1, my_strlen(test1), tmp ); + + eosio_assert( false, "should have failed" ); +} + +void test_crypto::assert_sha256_true() { + eosio::checksum256 tmp; + + tmp = eosio::sha256( test1, my_strlen(test1) ); + assert_sha256( test1, my_strlen(test1), tmp ); + + tmp = eosio::sha256( test3, my_strlen(test3) ); + assert_sha256( test3, my_strlen(test3), tmp ); + + tmp = eosio::sha256( test4, my_strlen(test4) ); + assert_sha256( test4, my_strlen(test4), tmp ); + + tmp = eosio::sha256( test5, my_strlen(test5) ); + assert_sha256( test5, my_strlen(test5), tmp ); +} + +void test_crypto::assert_sha1_false() { + eosio::checksum160 tmp; + + tmp = eosio::sha1( test1, my_strlen(test1) ); + tmp.data()[0] ^= (uint64_t)(-1); + assert_sha1( test1, my_strlen(test1), tmp ); + + eosio_assert( false, "should have failed" ); +} + + +void test_crypto::assert_sha1_true() { + eosio::checksum160 tmp; + + tmp = eosio::sha1( test1, my_strlen(test1) ); + assert_sha1( test1, my_strlen(test1), tmp ); + + tmp = eosio::sha1( test3, my_strlen(test3) ); + assert_sha1( test3, my_strlen(test3), tmp ); + + tmp = eosio::sha1( test4, my_strlen(test4) ); + assert_sha1( test4, my_strlen(test4), tmp ); + + tmp = eosio::sha1( test5, my_strlen(test5) ); + assert_sha1( test5, my_strlen(test5), tmp ); +} + +void test_crypto::assert_sha512_false() { + eosio::checksum512 tmp; + + tmp = eosio::sha512( test1, my_strlen(test1) ); + tmp.data()[0] ^= (uint64_t)(-1); + assert_sha512( test1, my_strlen(test1), tmp ); + + eosio_assert(false, "should have failed"); +} + + +void test_crypto::assert_sha512_true() { + eosio::checksum512 tmp; + + tmp = eosio::sha512( test1, my_strlen(test1) ); + assert_sha512( test1, my_strlen(test1), tmp ); + + tmp = eosio::sha512( test3, my_strlen(test3) ); + assert_sha512( test3, my_strlen(test3), tmp ); + + tmp = eosio::sha512( test4, my_strlen(test4) ); + assert_sha512( test4, my_strlen(test4), tmp ); + + tmp = eosio::sha512( test5, my_strlen(test5) ); + assert_sha512( test5, my_strlen(test5), tmp ); +} + +void test_crypto::assert_ripemd160_false() { + eosio::checksum160 tmp; + + tmp = eosio::ripemd160( test1, my_strlen(test1) ); + tmp.data()[0] ^= (uint64_t)(-1); + assert_ripemd160( test1, my_strlen(test1), tmp ); + + eosio_assert( false, "should have failed" ); +} + + +void test_crypto::assert_ripemd160_true() { + eosio::checksum160 tmp; + + tmp = eosio::ripemd160( test1, my_strlen(test1) ); + assert_ripemd160( test1, my_strlen(test1), tmp ); + + tmp = eosio::ripemd160( test3, my_strlen(test3) ); + assert_ripemd160( test3, my_strlen(test3), tmp ); + + tmp = eosio::ripemd160( test4, my_strlen(test4) ); + assert_ripemd160( test4, my_strlen(test4), tmp ); + + tmp = eosio::ripemd160( test5, my_strlen(test5) ); + assert_ripemd160( test5, my_strlen(test5), tmp ); +} diff --git a/unittests/test-contracts/test_api/test_datastream.cpp b/unittests/test-contracts/test_api/test_datastream.cpp new file mode 100644 index 00000000000..e81dbf7c1c7 --- /dev/null +++ b/unittests/test-contracts/test_api/test_datastream.cpp @@ -0,0 +1,87 @@ +#include + +#include +#include + +#include "test_api.hpp" + +template +struct testtype { + static void run( const T &v, const char *errmsg = "" ) { + char buf[128]; + eosio::datastream ds( buf, sizeof(buf) ); + ds << v; + T v2; + ds.seekp(0); + ds >> v2; + eosio_assert ( v == v2, errmsg ); + } +}; + +template <> +struct testtype { + static void run( const double &v, const char *errmsg = "" ) { + char buf[128]; + eosio::datastream ds( buf, sizeof(buf) ); + ds << v; + double v2; + ds.seekp(0); + ds >> v2; + eosio_assert( std::abs(v - v2) < 1e-20, errmsg ); + } +}; + +template <> +struct testtype { + static void run( const float &v, const char *errmsg = "" ) { + char buf[128]; + eosio::datastream ds( buf, sizeof(buf) ); + ds << v; + float v2; + ds.seekp(0); + ds >> v2; + eosio_assert( std::abs(v - v2) < float(1e-10), errmsg ); + } +}; + +void test_datastream::test_basic() +{ + + testtype::run( true, "bool" ); + testtype::run( false, "bool" ); + testtype::run( -123, "int8" ); + testtype::run( 127, "uint8" ); + testtype::run( -12345, "int16" ); + testtype::run( 12345, "uint16" ); + testtype::run( -1234567890, "int32" ); + testtype::run( 3234567890u, "uint32" ); + testtype::run( (long long)0x8000000000000000ll, "int64" ); + testtype::run( 0x7fffffffffffffffull, "uint64" ); + testtype::run( 1.234f, "float" ); + testtype::run( 0.333333333333333333, "double" ); + + // this should generate compile error + //testtype::run((char *)0x12345678, "pointer"); + + struct Pair { + int a; + double d; + bool operator==( const Pair &p ) const { return a == p.a && std::abs(d - p.d) < 1e-20; } + }; + testtype::run({ 1, 1.23456}, "struct" ); + + struct StaticArray { + int a[2]; + bool operator==( const StaticArray &o ) const { return a[0] == o.a[0] && a[1] == o.a[1]; } + }; + testtype::run( {{10,20}}, "StaticArray" ); + + testtype::run( "hello", "string" ); + + testtype >::run( {10,20,30}, "vector" ); + testtype >::run( {}, "empty vector" ); + testtype >::run( {{10,20,30}}, "std::array" ); + testtype >::run( {{1,"apple"}, {2,"cat"}, {3,"panda"}}, "map" ); + testtype >::run( {1, "abc", 3.3333}, "tuple" ); +} + diff --git a/contracts/test_api/test_permission.cpp b/unittests/test-contracts/test_api/test_permission.cpp similarity index 51% rename from contracts/test_api/test_permission.cpp rename to unittests/test-contracts/test_api/test_permission.cpp index f26c120a0a1..c078a65be8e 100644 --- a/contracts/test_api/test_permission.cpp +++ b/unittests/test-contracts/test_api/test_permission.cpp @@ -1,29 +1,25 @@ -/** - * @file action_test.cpp - * @copyright defined in eos/LICENSE - */ -#include -#include +#include +#include +#include #include +#include #include -#include #include -#include #include "test_api.hpp" -#include + struct check_auth_msg { - account_name account; - permission_name permission; - std::vector pubkeys; + eosio::name account; + eosio::name permission; + std::vector pubkeys; EOSLIB_SERIALIZE( check_auth_msg, (account)(permission)(pubkeys) ) }; -void test_permission::check_authorization(uint64_t receiver, uint64_t code, uint64_t action) { +void test_permission::check_authorization( uint64_t receiver, uint64_t code, uint64_t action ) { (void)code; (void)action; using namespace eosio; @@ -31,49 +27,45 @@ void test_permission::check_authorization(uint64_t receiver, uint64_t code, uint auto self = receiver; auto params = unpack_action_data(); auto packed_pubkeys = pack(params.pubkeys); - int64_t res64 = ::check_permission_authorization( params.account, - params.permission, + int64_t res64 = ::check_permission_authorization( params.account.value, + params.permission.value, packed_pubkeys.data(), packed_pubkeys.size(), (const char*)0, 0, - static_cast(std::numeric_limits::max()) + static_cast( std::numeric_limits::max() ) ); - /* - uint64_t res64 = (uint64_t)::check_authorization( params.account, params.permission, - (char*)params.pubkeys.data(), params.pubkeys.size()*sizeof(public_key) ); - */ - auto itr = db_lowerbound_i64(self, self, self, 1); + auto itr = db_lowerbound_i64( self, self, self, 1 ); if(itr == -1) { - db_store_i64(self, self, self, 1, &res64, sizeof(int64_t)); + db_store_i64( self, self, self, 1, &res64, sizeof(int64_t) ); } else { - db_update_i64(itr, self, &res64, sizeof(int64_t)); + db_update_i64( itr, self, &res64, sizeof(int64_t) ); } } struct test_permission_last_used_msg { - account_name account; - permission_name permission; - int64_t last_used_time; + eosio::name account; + eosio::name permission; + int64_t last_used_time; EOSLIB_SERIALIZE( test_permission_last_used_msg, (account)(permission)(last_used_time) ) }; -void test_permission::test_permission_last_used(uint64_t /* receiver */, uint64_t code, uint64_t action) { +void test_permission::test_permission_last_used( uint64_t /* receiver */, uint64_t code, uint64_t action ) { (void)code; (void)action; using namespace eosio; auto params = unpack_action_data(); - eosio_assert( get_permission_last_used(params.account, params.permission) == params.last_used_time, "unexpected last used permission time" ); + eosio_assert( get_permission_last_used(params.account.value, params.permission.value) == params.last_used_time, "unexpected last used permission time" ); } -void test_permission::test_account_creation_time(uint64_t /* receiver */, uint64_t code, uint64_t action) { +void test_permission::test_account_creation_time( uint64_t /* receiver */, uint64_t code, uint64_t action ) { (void)code; (void)action; using namespace eosio; auto params = unpack_action_data(); - eosio_assert( get_account_creation_time(params.account) == params.last_used_time, "unexpected account creation time" ); + eosio_assert( get_account_creation_time(params.account.value) == params.last_used_time, "unexpected account creation time" ); } diff --git a/contracts/test_api/test_print.cpp b/unittests/test-contracts/test_api/test_print.cpp similarity index 72% rename from contracts/test_api/test_print.cpp rename to unittests/test-contracts/test_api/test_print.cpp index a042ff6f57a..3b1f89b3199 100644 --- a/contracts/test_api/test_print.cpp +++ b/unittests/test-contracts/test_api/test_print.cpp @@ -1,13 +1,7 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ #include #include "test_api.hpp" -//using namespace eosio; - void test_print::test_prints_l() { char ab[] = { 'a', 'b' }; const char test[] = "test"; @@ -19,11 +13,8 @@ void test_print::test_prints_l() { void test_print::test_prints() { prints("ab"); - prints(nullptr); prints("c\0test_prints"); - prints(0); prints("efg"); - prints(0); } void test_print::test_printi() { @@ -66,18 +57,28 @@ void test_print::test_printui128() { } void test_print::test_printn() { - printn(N(abcde)); - printn(N(abBde)); - printn(N(1q1q1qAA)); - printn(N()); - printn(N(AAAAAA)); - printn(N(abcdefghijk)); - printn(N(abcdefghijkl)); - printn(N(abcdefghijkl1)); - printn(N(abcdefghijkl12)); - printn(N(abcdefghijkl123)); + printn(eosio::name{"1"}.value); + printn(eosio::name{"5"}.value); + printn(eosio::name{"a"}.value); + printn(eosio::name{"z"}.value); + + printn(eosio::name{"abc"}.value); + printn(eosio::name{"123"}.value); + + printn(eosio::name{"abc.123"}.value); + printn(eosio::name{"123.abc"}.value); + + printn(eosio::name{"12345abcdefgj"}.value); + printn(eosio::name{"ijklmnopqrstj"}.value); + printn(eosio::name{"vwxyz.12345aj"}.value); + + printn(eosio::name{"111111111111j"}.value); + printn(eosio::name{"555555555555j"}.value); + printn(eosio::name{"aaaaaaaaaaaaj"}.value); + printn(eosio::name{"zzzzzzzzzzzzj"}.value); } + void test_print::test_printsf() { float x = 1.0f / 2.0f; float y = 5.0f * -0.75f; @@ -115,8 +116,8 @@ void test_print::test_printqf() { } void test_print::test_print_simple() { - std::string const cvalue = "cvalue"; + const std::string cvalue = "cvalue"; eosio::print(cvalue); std::string value = "value"; - eosio::print(value); + eosio::print(std::move(value)); } diff --git a/unittests/test-contracts/test_api/test_transaction.cpp b/unittests/test-contracts/test_api/test_transaction.cpp new file mode 100644 index 00000000000..9a4c326034f --- /dev/null +++ b/unittests/test-contracts/test_api/test_transaction.cpp @@ -0,0 +1,342 @@ +#include +#include +#include + +#include "test_api.hpp" + +#pragma pack(push, 1) +template +struct test_action_action { + static eosio::name get_account() { + return eosio::name{ACCOUNT}; + } + + static eosio::name get_name() { + return eosio::name{NAME}; + } + + std::vector data; + + template + friend DataStream& operator<< ( DataStream& ds, const test_action_action& a ) { + for ( auto c : a.data ) + ds << c; + return ds; + } +}; + + +template +struct test_dummy_action { + static eosio::name get_account() { + return eosio::name{ACCOUNT}; + } + + static eosio::name get_name() { + return eosio::name{NAME}; + } + char a; + unsigned long long b; + int32_t c; + + template + friend DataStream& operator<< ( DataStream& ds, const test_dummy_action& da ) { + ds << da.a; + ds << da.b; + ds << da.c; + return ds; + } + + template + friend DataStream& operator>> ( DataStream& ds, test_dummy_action& da ) { + ds >> da.a; + ds >> da.b; + ds >> da.c; + return ds; + } +}; +#pragma pack(pop) + +void copy_data( char* data, size_t data_len, std::vector& data_out ) { + for (unsigned int i=0; i < data_len; i++) + data_out.push_back(data[i]); +} + +void test_transaction::send_action() { + using namespace eosio; + test_dummy_action<"testapi"_n.value, WASM_TEST_ACTION( "test_action", "read_action_normal" )> test_action = + { DUMMY_ACTION_DEFAULT_A, DUMMY_ACTION_DEFAULT_B, DUMMY_ACTION_DEFAULT_C }; + + std::vector permissions = { {"testapi"_n, "active"_n} }; + action act( permissions, name{"testapi"}, name{WASM_TEST_ACTION( "test_action", "read_action_normal" )}, test_action ); + + act.send(); +} + +void test_transaction::send_action_empty() { + using namespace eosio; + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_action", "assert_true" )> test_action; + + std::vector permissions = { {"testapi"_n, "active"_n} }; + action act( permissions, name{"testapi"}, name{WASM_TEST_ACTION( "test_action", "assert_true" )}, test_action ); + + act.send(); +} + +/** + * cause failure due to a large action payload + */ +void test_transaction::send_action_large() { + using namespace eosio; + static char large_message[8 * 1024]; + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_action", "read_action_normal" )> test_action; + copy_data( large_message, 8*1024, test_action.data ); + + std::vector permissions = { {"testapi"_n, "active"_n} }; + action act( permissions, name{"testapi"}, name{WASM_TEST_ACTION("test_action", "read_action_normal")}, test_action ); + + act.send(); + eosio_assert( false, "send_message_large() should've thrown an error" ); +} + +/** + * cause failure due recursive loop + */ +void test_transaction::send_action_recurse() { + using namespace eosio; + char buffer[1024]; + read_action_data( buffer, 1024 ); + + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_transaction", "send_action_recurse" )> test_action; + copy_data( buffer, 1024, test_action.data ); + + std::vector permissions = { {"testapi"_n, "active"_n} }; + action act( permissions, name{"testapi"}, name{WASM_TEST_ACTION( "test_transaction", "send_action_recurse" )}, test_action ); + + act.send(); +} + +/** + * cause failure due to inline TX failure + */ +void test_transaction::send_action_inline_fail() { + using namespace eosio; + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_action", "assert_false" )> test_action; + + std::vector permissions = { {"testapi"_n, "active"_n} }; + action act( permissions, name{"testapi"}, name{WASM_TEST_ACTION( "test_action", "assert_false" )}, test_action ); + + act.send(); +} + +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" ); +} + +void test_transaction::test_read_transaction() { + using namespace eosio; + checksum256 h; + auto size = transaction_size(); + char buf[size]; + uint32_t read = read_transaction( buf, size ); + eosio_assert( size == read, "read_transaction failed"); + h = eosio::sha256(buf, read); + print(h); +} + +void test_transaction::test_transaction_size() { + using namespace eosio; + uint32_t trans_size = 0; + read_action_data( (char*)&trans_size, sizeof(uint32_t) ); + print( "size: ", transaction_size() ); + eosio_assert( trans_size == transaction_size(), "transaction size does not match" ); +} + +void test_transaction::send_transaction(uint64_t receiver, uint64_t, uint64_t) { + using namespace eosio; + dummy_action payload = { DUMMY_ACTION_DEFAULT_A, DUMMY_ACTION_DEFAULT_B, DUMMY_ACTION_DEFAULT_C }; + + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_action", "read_action_normal" )> test_action; + copy_data( (char*)&payload, sizeof(dummy_action), test_action.data ); + + auto trx = transaction(); + std::vector permissions = { {"testapi"_n, "active"_n} }; + + trx.actions.emplace_back(permissions, name{"testapi"}, name{WASM_TEST_ACTION( "test_action", "read_action_normal" )}, test_action); + trx.send( 0, name{receiver} ); +} + +void test_transaction::send_action_sender( uint64_t receiver, uint64_t, uint64_t ) { + using namespace eosio; + uint64_t cur_send; + read_action_data( &cur_send, sizeof(name) ); + + auto trx = transaction(); + std::vector permissions = { {"testapi"_n, "active"_n} }; + + trx.actions.emplace_back(permissions, name{"testapi"}, name{WASM_TEST_ACTION( "test_action", "test_current_sender" )}, &cur_send); + trx.send( 0, name{receiver} ); +} + +void test_transaction::send_transaction_empty( uint64_t receiver, uint64_t, uint64_t ) { + using namespace eosio; + auto trx = transaction(); + trx.send( 0, name{receiver} ); + + eosio_assert( false, "send_transaction_empty() should've thrown an error" ); +} + +void test_transaction::send_transaction_trigger_error_handler( uint64_t receiver, uint64_t, uint64_t ) { + using namespace eosio; + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_action", "assert_false" )> test_action; + + auto trx = transaction(); + std::vector permissions = { {"testapi"_n, "active"_n} }; + + trx.actions.emplace_back( permissions, name{"testapi"}, name{WASM_TEST_ACTION("test_action", "assert_false")}, test_action ); + trx.send(0, name{receiver}); +} + +void test_transaction::assert_false_error_handler( const eosio::transaction& dtrx ) { + eosio_assert( dtrx.actions.size() == 1, "transaction should only have one action" ); + eosio_assert( dtrx.actions[0].account == "testapi"_n, "transaction has wrong code" ); + eosio_assert( dtrx.actions[0].name.value == WASM_TEST_ACTION("test_action", "assert_false"), "transaction has wrong name" ); + eosio_assert( dtrx.actions[0].authorization.size() == 1, "action should only have one authorization" ); + eosio_assert( dtrx.actions[0].authorization[0].actor == "testapi"_n, "action's authorization has wrong actor" ); + eosio_assert( dtrx.actions[0].authorization[0].permission == "active"_n, "action's authorization has wrong permission" ); +} + +/** + * cause failure due to a large transaction size + */ +void test_transaction::send_transaction_large( uint64_t receiver, uint64_t, uint64_t ) { + using namespace eosio; + auto trx = transaction(); + std::vector permissions = { {"testapi"_n, "active"_n} }; + for (int i = 0; i < 32; i ++) { + char large_message[1024]; + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_action", "read_action_normal" )> test_action; + copy_data( large_message, 1024, test_action.data ); + trx.actions.emplace_back( permissions, name{"testapi"}, name{WASM_TEST_ACTION("test_action", "read_action_normal")}, test_action ); + } + + trx.send( 0, name{receiver} ); + + eosio_assert( false, "send_transaction_large() should've thrown an error" ); +} + +/** + * deferred transaction + */ +void test_transaction::deferred_print() { + eosio::print("deferred executed\n"); +} + +void test_transaction::send_deferred_transaction( uint64_t receiver, uint64_t, uint64_t ) { + using namespace eosio; + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_transaction", "deferred_print" )> test_action; + + auto trx = transaction(); + std::vector permissions = { {"testapi"_n, "active"_n} }; + + trx.actions.emplace_back( permissions, name{"testapi"}, name{ WASM_TEST_ACTION("test_transaction", "deferred_print" )}, test_action ); + trx.delay_sec = 2; + trx.send( 0xffffffffffffffff, name{receiver} ); +} + +void test_transaction::send_deferred_transaction_replace( uint64_t receiver, uint64_t, uint64_t ) { + using namespace eosio; + test_action_action<"testapi"_n.value, WASM_TEST_ACTION( "test_transaction", "deferred_print" )> test_action; + + auto trx = transaction(); + std::vector permissions = { {"testapi"_n, "active"_n} }; + + trx.actions.emplace_back( permissions, name{"testapi"}, name{WASM_TEST_ACTION( "test_transaction", "deferred_print" )}, test_action ); + trx.delay_sec = 2; + trx.send( 0xffffffffffffffff, name{receiver}, true ); +} + +void test_transaction::send_deferred_tx_with_dtt_action() { + using namespace eosio; + dtt_action dtt_act; + read_action_data( &dtt_act, action_data_size() ); + + action deferred_act; + deferred_act.account = name{dtt_act.deferred_account}; + deferred_act.name = name{dtt_act.deferred_action}; + deferred_act.authorization = std::vector{ {"testapi"_n, name{dtt_act.permission_name}} }; + + auto trx = transaction(); + trx.actions.emplace_back(deferred_act); + trx.delay_sec = dtt_act.delay_sec; + cancel_deferred( 0xffffffffffffffff ); // TODO: Remove this line after fixing deferred trx replacement RAM bug + trx.send( 0xffffffffffffffff, name{dtt_act.payer}, true ); +} + + +void test_transaction::cancel_deferred_transaction_success() { + using namespace eosio; + auto r = cancel_deferred( 0xffffffffffffffff ); //use the same id (0) as in send_deferred_transaction + eosio_assert( (bool)r, "transaction was not found" ); +} + +void test_transaction::cancel_deferred_transaction_not_found() { + using namespace eosio; + auto r = cancel_deferred( 0xffffffffffffffff ); //use the same id (0) as in send_deferred_transaction + eosio_assert( !r, "transaction was canceled, whild should not be found" ); +} + +void test_transaction::send_cf_action() { + using namespace eosio; + action act( std::vector{}, "dummy"_n, "event1"_n, std::vector{} ); + act.send_context_free(); +} + +void test_transaction::send_cf_action_fail() { + using namespace eosio; + action act( std::vector{{"dummy"_n, "active"_n}}, "dummy"_n, "event1"_n, std::vector{} ); + act.send_context_free(); + eosio_assert( false, "send_cfa_action_fail() should've thrown an error" ); +} + +void test_transaction::stateful_api() { + char buf[4] = {1}; + db_store_i64( eosio::name{"testtrans"}.value, eosio::name{"table"}.value, eosio::name{"testtrans"}.value, 0, buf, 4 ); +} + +void test_transaction::context_free_api() { + char buf[128] = {0}; + get_context_free_data( 0, buf, sizeof(buf) ); +} + +void test_transaction::repeat_deferred_transaction( uint64_t receiver, uint64_t code, uint64_t action ) { + using namespace eosio; + + uint128_t sender_id = 0; + + uint32_t payload = unpack_action_data(); + print("repeat_deferred_transaction called: payload = ", payload); + + bool res = cancel_deferred( sender_id ); + + print("\nrepeat_deferred_transaction cancelled trx with sender_id = ", sender_id, ", result is ", res); + + if( payload == 0 ) return; + + --payload; + transaction trx; + std::vector permissions = { {name{receiver}, "active"_n} }; + + trx.actions.emplace_back( permissions, name{code}, name{action}, payload ); + trx.send( sender_id, eosio::name{receiver} ); +} diff --git a/unittests/test-contracts/test_api/test_types.cpp b/unittests/test-contracts/test_api/test_types.cpp new file mode 100644 index 00000000000..0ba34a5e1af --- /dev/null +++ b/unittests/test-contracts/test_api/test_types.cpp @@ -0,0 +1,73 @@ +#include + +#include "test_api.hpp" + +void test_types::types_size() { + + eosio_assert( sizeof(int64_t) == 8, "int64_t size != 8" ); + eosio_assert( sizeof(uint64_t) == 8, "uint64_t size != 8" ); + eosio_assert( sizeof(uint32_t) == 4, "uint32_t size != 4" ); + eosio_assert( sizeof(int32_t) == 4, "int32_t size != 4" ); + eosio_assert( sizeof(uint128_t) == 16, "uint128_t size != 16"); + eosio_assert( sizeof(int128_t) == 16, "int128_t size != 16" ); + eosio_assert( sizeof(uint8_t) == 1, "uint8_t size != 1" ); + + eosio_assert( sizeof(eosio::name) == 8, "name size != 8"); +} + +void test_types::char_to_symbol() { + + eosio_assert( eosio::name::char_to_value('1') == 1, "eosio::char_to_symbol('1') != 1" ); + eosio_assert( eosio::name::char_to_value('2') == 2, "eosio::char_to_symbol('2') != 2" ); + eosio_assert( eosio::name::char_to_value('3') == 3, "eosio::char_to_symbol('3') != 3" ); + eosio_assert( eosio::name::char_to_value('4') == 4, "eosio::char_to_symbol('4') != 4" ); + eosio_assert( eosio::name::char_to_value('5') == 5, "eosio::char_to_symbol('5') != 5" ); + eosio_assert( eosio::name::char_to_value('a') == 6, "eosio::char_to_symbol('a') != 6" ); + eosio_assert( eosio::name::char_to_value('b') == 7, "eosio::char_to_symbol('b') != 7" ); + eosio_assert( eosio::name::char_to_value('c') == 8, "eosio::char_to_symbol('c') != 8" ); + eosio_assert( eosio::name::char_to_value('d') == 9, "eosio::char_to_symbol('d') != 9" ); + eosio_assert( eosio::name::char_to_value('e') == 10, "eosio::char_to_symbol('e') != 10" ); + eosio_assert( eosio::name::char_to_value('f') == 11, "eosio::char_to_symbol('f') != 11" ); + eosio_assert( eosio::name::char_to_value('g') == 12, "eosio::char_to_symbol('g') != 12" ); + eosio_assert( eosio::name::char_to_value('h') == 13, "eosio::char_to_symbol('h') != 13" ); + eosio_assert( eosio::name::char_to_value('i') == 14, "eosio::char_to_symbol('i') != 14" ); + eosio_assert( eosio::name::char_to_value('j') == 15, "eosio::char_to_symbol('j') != 15" ); + eosio_assert( eosio::name::char_to_value('k') == 16, "eosio::char_to_symbol('k') != 16" ); + eosio_assert( eosio::name::char_to_value('l') == 17, "eosio::char_to_symbol('l') != 17" ); + eosio_assert( eosio::name::char_to_value('m') == 18, "eosio::char_to_symbol('m') != 18" ); + eosio_assert( eosio::name::char_to_value('n') == 19, "eosio::char_to_symbol('n') != 19" ); + eosio_assert( eosio::name::char_to_value('o') == 20, "eosio::char_to_symbol('o') != 20" ); + eosio_assert( eosio::name::char_to_value('p') == 21, "eosio::char_to_symbol('p') != 21" ); + eosio_assert( eosio::name::char_to_value('q') == 22, "eosio::char_to_symbol('q') != 22" ); + eosio_assert( eosio::name::char_to_value('r') == 23, "eosio::char_to_symbol('r') != 23" ); + eosio_assert( eosio::name::char_to_value('s') == 24, "eosio::char_to_symbol('s') != 24" ); + eosio_assert( eosio::name::char_to_value('t') == 25, "eosio::char_to_symbol('t') != 25" ); + eosio_assert( eosio::name::char_to_value('u') == 26, "eosio::char_to_symbol('u') != 26" ); + eosio_assert( eosio::name::char_to_value('v') == 27, "eosio::char_to_symbol('v') != 27" ); + eosio_assert( eosio::name::char_to_value('w') == 28, "eosio::char_to_symbol('w') != 28" ); + eosio_assert( eosio::name::char_to_value('x') == 29, "eosio::char_to_symbol('x') != 29" ); + eosio_assert( eosio::name::char_to_value('y') == 30, "eosio::char_to_symbol('y') != 30" ); + eosio_assert( eosio::name::char_to_value('z') == 31, "eosio::char_to_symbol('z') != 31" ); + + for(unsigned char i = 0; i<255; i++) { + if( (i >= 'a' && i <= 'z') || (i >= '1' || i <= '5') ) continue; + eosio_assert( eosio::name::char_to_value((char)i) == 0, "eosio::char_to_symbol() != 0" ); + } +} + +void test_types::string_to_name() { + return; + eosio_assert( eosio::name("a") == "a"_n, "eosio::string_to_name(a)" ); + eosio_assert( eosio::name("ba") == "ba"_n, "eosio::string_to_name(ba)" ); + eosio_assert( eosio::name("cba") == "cba"_n, "eosio::string_to_name(cba)" ); + eosio_assert( eosio::name("dcba") == "dcba"_n, "eosio::string_to_name(dcba)" ); + eosio_assert( eosio::name("edcba") == "edcba"_n, "eosio::string_to_name(edcba)" ); + eosio_assert( eosio::name("fedcba") == "fedcba"_n, "eosio::string_to_name(fedcba)" ); + eosio_assert( eosio::name("gfedcba") == "gfedcba"_n, "eosio::string_to_name(gfedcba)" ); + eosio_assert( eosio::name("hgfedcba") == "hgfedcba"_n, "eosio::string_to_name(hgfedcba)" ); + eosio_assert( eosio::name("ihgfedcba") == "ihgfedcba"_n, "eosio::string_to_name(ihgfedcba)" ); + eosio_assert( eosio::name("jihgfedcba") == "jihgfedcba"_n, "eosio::string_to_name(jihgfedcba)" ); + eosio_assert( eosio::name("kjihgfedcba") == "kjihgfedcba"_n, "eosio::string_to_name(kjihgfedcba)" ); + eosio_assert( eosio::name("lkjihgfedcba") == "lkjihgfedcba"_n, "eosio::string_to_name(lkjihgfedcba)" ); + eosio_assert( eosio::name("mlkjihgfedcba") == "mlkjihgfedcba"_n, "eosio::string_to_name(mlkjihgfedcba)" ); +} diff --git a/unittests/test-contracts/test_api_db/CMakeLists.txt b/unittests/test-contracts/test_api_db/CMakeLists.txt new file mode 100644 index 00000000000..0986dc0cb6c --- /dev/null +++ b/unittests/test-contracts/test_api_db/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( test_api_db test_api_db test_api_db.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_api_db.wasm ${CMAKE_CURRENT_BINARY_DIR}/test_api_db.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_api_db.abi ${CMAKE_CURRENT_BINARY_DIR}/test_api_db.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/test_api_db/test_api_db.abi b/unittests/test-contracts/test_api_db/test_api_db.abi new file mode 100644 index 00000000000..582978a47bf --- /dev/null +++ b/unittests/test-contracts/test_api_db/test_api_db.abi @@ -0,0 +1,144 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "idx64_general", + "base": "", + "fields": [] + }, + { + "name": "idx64_lowerbound", + "base": "", + "fields": [] + }, + { + "name": "idx64_upperbound", + "base": "", + "fields": [] + }, + { + "name": "idx_double_nan_create_fail", + "base": "", + "fields": [] + }, + { + "name": "idx_double_nan_lookup_fail", + "base": "", + "fields": [ + { + "name": "lookup_type", + "type": "uint32" + } + ] + }, + { + "name": "idx_double_nan_modify_fail", + "base": "", + "fields": [] + }, + { + "name": "misaligned_secondary_key256_tests", + "base": "", + "fields": [] + }, + { + "name": "primary_i64_general", + "base": "", + "fields": [] + }, + { + "name": "primary_i64_lowerbound", + "base": "", + "fields": [] + }, + { + "name": "primary_i64_upperbound", + "base": "", + "fields": [] + }, + { + "name": "test_invalid_access", + "base": "", + "fields": [ + { + "name": "code", + "type": "name" + }, + { + "name": "val", + "type": "uint64" + }, + { + "name": "index", + "type": "uint32" + }, + { + "name": "store", + "type": "bool" + } + ] + } + ], + "actions": [ + { + "name": "pg", + "type": "primary_i64_general", + "ricardian_contract": "" + }, + { + "name": "pl", + "type": "primary_i64_lowerbound", + "ricardian_contract": "" + }, + { + "name": "pu", + "type": "primary_i64_upperbound", + "ricardian_contract": "" + }, + { + "name": "s1g", + "type": "idx64_general", + "ricardian_contract": "" + }, + { + "name": "s1l", + "type": "idx64_lowerbound", + "ricardian_contract": "" + }, + { + "name": "s1u", + "type": "idx64_upperbound", + "ricardian_contract": "" + }, + { + "name": "sdnancreate", + "type": "idx_double_nan_create_fail", + "ricardian_contract": "" + }, + { + "name": "sdnanlookup", + "type": "idx_double_nan_lookup_fail", + "ricardian_contract": "" + }, + { + "name": "sdnanmodify", + "type": "idx_double_nan_modify_fail", + "ricardian_contract": "" + }, + { + "name": "sk32align", + "type": "misaligned_secondary_key256_tests", + "ricardian_contract": "" + }, + { + "name": "tia", + "type": "test_invalid_access", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/test_api_db/test_api_db.cpp b/unittests/test-contracts/test_api_db/test_api_db.cpp new file mode 100644 index 00000000000..1c3bc358d77 --- /dev/null +++ b/unittests/test-contracts/test_api_db/test_api_db.cpp @@ -0,0 +1,473 @@ +#include "test_api_db.hpp" + +using namespace eosio; + +using namespace eosio::internal_use_do_not_use; + +void test_api_db::primary_i64_general() +{ + uint64_t receiver = get_self().value; + auto table1 = "table1"_n.value; + + int alice_itr = db_store_i64( receiver, table1, receiver, "alice"_n.value, "alice's info", strlen("alice's info") ); + db_store_i64( receiver, table1, receiver, "bob"_n.value, "bob's info", strlen("bob's info") ); + db_store_i64( receiver, table1, receiver, "charlie"_n.value, "charlie's info", strlen("charlies's info") ); + db_store_i64( receiver, table1, receiver, "allyson"_n.value, "allyson's info", strlen("allyson's info") ); + + + // find + { + uint64_t prim = 0; + int itr_next = db_next_i64( alice_itr, &prim ); + int itr_next_expected = db_find_i64( receiver, receiver, table1, "allyson"_n.value ); + eosio_assert( itr_next == itr_next_expected && prim == "allyson"_n.value, "primary_i64_general - db_find_i64" ); + itr_next = db_next_i64( itr_next, &prim ); + itr_next_expected = db_find_i64( receiver, receiver, table1, "bob"_n.value ); + eosio_assert( itr_next == itr_next_expected && prim == "bob"_n.value, "primary_i64_general - db_next_i64" ); + } + + // next + { + int charlie_itr = db_find_i64( receiver, receiver, table1, "charlie"_n.value ); + // nothing after charlie + uint64_t prim = 0; + int end_itr = db_next_i64( charlie_itr, &prim ); + eosio_assert( end_itr < 0, "primary_i64_general - db_next_i64" ); + // prim didn't change + eosio_assert( prim == 0, "primary_i64_general - db_next_i64" ); + } + + // previous + { + int charlie_itr = db_find_i64( receiver, receiver, table1, "charlie"_n.value ); + uint64_t prim = 0; + int itr_prev = db_previous_i64( charlie_itr, &prim ); + int itr_prev_expected = db_find_i64( receiver, receiver, table1, "bob"_n.value ); + eosio_assert( itr_prev == itr_prev_expected && prim == "bob"_n.value, "primary_i64_general - db_previous_i64" ); + + itr_prev = db_previous_i64( itr_prev, &prim ); + itr_prev_expected = db_find_i64( receiver, receiver, table1, "allyson"_n.value ); + eosio_assert( itr_prev == itr_prev_expected && prim == "allyson"_n.value, "primary_i64_general - db_previous_i64" ); + + itr_prev = db_previous_i64( itr_prev, &prim ); + itr_prev_expected = db_find_i64( receiver, receiver, table1, "alice"_n.value ); + eosio_assert( itr_prev == itr_prev_expected && prim == "alice"_n.value, "primary_i64_general - db_previous_i64" ); + + itr_prev = db_previous_i64( itr_prev, &prim ); + eosio_assert( itr_prev < 0 && prim == "alice"_n.value, "primary_i64_general - db_previous_i64" ); + } + + // remove + { + int itr = db_find_i64( receiver, receiver, table1, "alice"_n.value ); + eosio_assert( itr >= 0, "primary_i64_general - db_find_i64" ); + db_remove_i64( itr ); + itr = db_find_i64( receiver, receiver, table1, "alice"_n.value ); + eosio_assert( itr < 0, "primary_i64_general - db_find_i64" ); + } + + // get + { + int itr = db_find_i64( receiver, receiver, table1, "bob"_n.value ); + eosio_assert( itr >= 0, "" ); + uint32_t buffer_len = 5; + char value[50]; + auto len = db_get_i64( itr, value, buffer_len ); + value[buffer_len] = '\0'; + std::string s(value); + eosio_assert( uint32_t(len) == buffer_len, "primary_i64_general - db_get_i64" ); + eosio_assert( s == "bob's", "primary_i64_general - db_get_i64 - 5" ); + + buffer_len = 20; + len = db_get_i64( itr, value, 0 ); + len = db_get_i64( itr, value, (uint32_t)len ); + value[len] = '\0'; + std::string sfull(value); + eosio_assert( sfull == "bob's info", "primary_i64_general - db_get_i64 - full" ); + } + + // update + { + int itr = db_find_i64( receiver, receiver, table1, "bob"_n.value ); + eosio_assert( itr >= 0, "" ); + const char* new_value = "bob's new info"; + uint32_t new_value_len = strlen(new_value); + db_update_i64( itr, receiver, new_value, new_value_len ); + char ret_value[50]; + db_get_i64( itr, ret_value, new_value_len ); + ret_value[new_value_len] = '\0'; + std::string sret(ret_value); + eosio_assert( sret == "bob's new info", "primary_i64_general - db_update_i64" ); + } +} + +void test_api_db::primary_i64_lowerbound() +{ + uint64_t receiver = get_self().value; + auto table = "mytable"_n.value; + db_store_i64( receiver, table, receiver, "alice"_n.value, "alice's info", strlen("alice's info") ); + db_store_i64( receiver, table, receiver, "bob"_n.value, "bob's info", strlen("bob's info") ); + db_store_i64( receiver, table, receiver, "charlie"_n.value, "charlie's info", strlen("charlies's info") ); + db_store_i64( receiver, table, receiver, "emily"_n.value, "emily's info", strlen("emily's info") ); + db_store_i64( receiver, table, receiver, "allyson"_n.value, "allyson's info", strlen("allyson's info") ); + db_store_i64( receiver, table, receiver, "joe"_n.value, "nothing here", strlen("nothing here") ); + + const std::string err = "primary_i64_lowerbound"; + + { + int lb = db_lowerbound_i64( receiver, receiver, table, "alice"_n.value ); + eosio_assert( lb == db_find_i64(receiver, receiver, table, "alice"_n.value), err.c_str() ); + } + { + int lb = db_lowerbound_i64( receiver, receiver, table, "billy"_n.value ); + eosio_assert( lb == db_find_i64(receiver, receiver, table, "bob"_n.value), err.c_str() ); + } + { + int lb = db_lowerbound_i64( receiver, receiver, table, "frank"_n.value ); + eosio_assert( lb == db_find_i64(receiver, receiver, table, "joe"_n.value), err.c_str() ); + } + { + int lb = db_lowerbound_i64( receiver, receiver, table, "joe"_n.value ); + eosio_assert( lb == db_find_i64(receiver, receiver, table, "joe"_n.value), err.c_str() ); + } + { + int lb = db_lowerbound_i64( receiver, receiver, table, "kevin"_n.value ); + eosio_assert( lb < 0, err.c_str() ); + } +} + +void test_api_db::primary_i64_upperbound() +{ + uint64_t receiver = get_self().value; + auto table = "mytable"_n.value; + const std::string err = "primary_i64_upperbound"; + { + int ub = db_upperbound_i64( receiver, receiver, table, "alice"_n.value ); + eosio_assert( ub == db_find_i64(receiver, receiver, table, "allyson"_n.value), err.c_str() ); + } + { + int ub = db_upperbound_i64( receiver, receiver, table, "billy"_n.value ); + eosio_assert( ub == db_find_i64(receiver, receiver, table, "bob"_n.value), err.c_str() ); + } + { + int ub = db_upperbound_i64( receiver, receiver, table, "frank"_n.value ); + eosio_assert( ub == db_find_i64(receiver, receiver, table, "joe"_n.value), err.c_str() ); + } + { + int ub = db_upperbound_i64( receiver, receiver, table, "joe"_n.value ); + eosio_assert( ub < 0, err.c_str() ); + } + { + int ub = db_upperbound_i64( receiver, receiver, table, "kevin"_n.value ); + eosio_assert( ub < 0, err.c_str() ); + } +} + +void test_api_db::idx64_general() +{ + uint64_t receiver = get_self().value; + const auto table = "myindextable"_n.value; + + typedef uint64_t secondary_type; + + struct record { + uint64_t ssn; + secondary_type name; + }; + + record records[] = { {265, "alice"_n.value}, + {781, "bob"_n.value}, + {234, "charlie"_n.value}, + {650, "allyson"_n.value}, + {540, "bob"_n.value}, + {976, "emily"_n.value}, + {110, "joe"_n.value} }; + + for ( uint32_t i = 0; i < sizeof(records)/sizeof(records[0]); ++i ) { + db_idx64_store( receiver, table, receiver, records[i].ssn, &records[i].name ); + } + + // find_primary + { + secondary_type sec = 0; + int itr = db_idx64_find_primary( receiver, receiver, table, &sec, 999 ); + eosio_assert( itr < 0 && sec == 0, "idx64_general - db_idx64_find_primary" ); + itr = db_idx64_find_primary( receiver, receiver, table, &sec, 110 ); + eosio_assert( itr >= 0 && sec == "joe"_n.value, "idx64_general - db_idx64_find_primary" ); + uint64_t prim_next = 0; + int itr_next = db_idx64_next( itr, &prim_next ); + eosio_assert( itr_next < 0 && prim_next == 0, "idx64_general - db_idx64_find_primary" ); + } + + // iterate forward starting with charlie + { + secondary_type sec = 0; + int itr = db_idx64_find_primary( receiver, receiver, table, &sec, 234 ); + eosio_assert( itr >= 0 && sec == "charlie"_n.value, "idx64_general - db_idx64_find_primary" ); + + uint64_t prim_next = 0; + int itr_next = db_idx64_next( itr, &prim_next ); + eosio_assert( itr_next >= 0 && prim_next == 976, "idx64_general - db_idx64_next" ); + secondary_type sec_next = 0; + int itr_next_expected = db_idx64_find_primary( receiver, receiver, table, &sec_next, prim_next ); + eosio_assert( itr_next == itr_next_expected && sec_next == "emily"_n.value, "idx64_general - db_idx64_next" ); + + itr_next = db_idx64_next( itr_next, &prim_next ); + eosio_assert( itr_next >= 0 && prim_next == 110, "idx64_general - db_idx64_next" ); + itr_next_expected = db_idx64_find_primary( receiver, receiver, table, &sec_next, prim_next ); + eosio_assert( itr_next == itr_next_expected && sec_next == "joe"_n.value, "idx64_general - db_idx64_next" ); + + itr_next = db_idx64_next( itr_next, &prim_next ); + eosio_assert( itr_next < 0 && prim_next == 110, "idx64_general - db_idx64_next" ); + } + + // iterate backward staring with second bob + { + secondary_type sec = 0; + int itr = db_idx64_find_primary( receiver, receiver, table, &sec, 781 ); + eosio_assert( itr >= 0 && sec == "bob"_n.value, "idx64_general - db_idx64_find_primary" ); + + uint64_t prim_prev = 0; + int itr_prev = db_idx64_previous( itr, &prim_prev ); + eosio_assert( itr_prev >= 0 && prim_prev == 540, "idx64_general - db_idx64_previous" ); + + secondary_type sec_prev = 0; + int itr_prev_expected = db_idx64_find_primary( receiver, receiver, table, &sec_prev, prim_prev ); + eosio_assert( itr_prev == itr_prev_expected && sec_prev == "bob"_n.value, "idx64_general - db_idx64_previous" ); + + itr_prev = db_idx64_previous( itr_prev, &prim_prev ); + eosio_assert( itr_prev >= 0 && prim_prev == 650, "idx64_general - db_idx64_previous" ); + itr_prev_expected = db_idx64_find_primary( receiver, receiver, table, &sec_prev, prim_prev ); + eosio_assert( itr_prev == itr_prev_expected && sec_prev == "allyson"_n.value, "idx64_general - db_idx64_previous" ); + + itr_prev = db_idx64_previous( itr_prev, &prim_prev ); + eosio_assert( itr_prev >= 0 && prim_prev == 265, "idx64_general - db_idx64_previous" ); + itr_prev_expected = db_idx64_find_primary( receiver, receiver, table, &sec_prev, prim_prev ); + eosio_assert( itr_prev == itr_prev_expected && sec_prev == "alice"_n.value, "idx64_general - db_idx64_previous" ); + + itr_prev = db_idx64_previous( itr_prev, &prim_prev ); + eosio_assert( itr_prev < 0 && prim_prev == 265, "idx64_general - db_idx64_previous" ); + } + + // find_secondary + { + uint64_t prim = 0; + auto sec = "bob"_n.value; + int itr = db_idx64_find_secondary( receiver, receiver, table, &sec, &prim ); + eosio_assert( itr >= 0 && prim == 540, "idx64_general - db_idx64_find_secondary" ); + + sec = "emily"_n.value; + itr = db_idx64_find_secondary( receiver, receiver, table, &sec, &prim ); + eosio_assert( itr >= 0 && prim == 976, "idx64_general - db_idx64_find_secondary" ); + + sec = "frank"_n.value; + itr = db_idx64_find_secondary( receiver, receiver, table, &sec, &prim ); + eosio_assert( itr < 0 && prim == 976, "idx64_general - db_idx64_find_secondary" ); + } + + // update and remove + { + uint64_t one_more_bob = "bob"_n.value; + const uint64_t ssn = 421; + int itr = db_idx64_store( receiver, table, receiver, ssn, &one_more_bob ); + uint64_t new_name = "billy"_n.value; + db_idx64_update( itr, receiver, &new_name ); + secondary_type sec = 0; + int sec_itr = db_idx64_find_primary( receiver, receiver, table, &sec, ssn ); + eosio_assert( sec_itr == itr && sec == new_name, "idx64_general - db_idx64_update" ); + db_idx64_remove(itr); + int itrf = db_idx64_find_primary( receiver, receiver, table, &sec, ssn ); + eosio_assert( itrf < 0, "idx64_general - db_idx64_remove" ); + } +} + +void test_api_db::idx64_lowerbound() +{ + uint64_t receiver = get_self().value; + const auto table = "myindextable"_n.value; + typedef uint64_t secondary_type; + const std::string err = "idx64_lowerbound"; + { + secondary_type lb_sec = "alice"_n.value; + uint64_t lb_prim = 0; + const uint64_t ssn = 265; + int lb = db_idx64_lowerbound( receiver, receiver, table, &lb_sec, &lb_prim ); + eosio_assert( lb_prim == ssn && lb_sec == "alice"_n.value, err.c_str() ); + eosio_assert( lb == db_idx64_find_primary(receiver, receiver, table, &lb_sec, ssn), err.c_str() ); + } + { + secondary_type lb_sec = "billy"_n.value; + uint64_t lb_prim = 0; + const uint64_t ssn = 540; + int lb = db_idx64_lowerbound( receiver, receiver, table, &lb_sec, &lb_prim ); + eosio_assert( lb_prim == ssn && lb_sec == "bob"_n.value, err.c_str() ); + eosio_assert( lb == db_idx64_find_primary(receiver, receiver, table, &lb_sec, ssn), err.c_str() ); + } + { + secondary_type lb_sec = "joe"_n.value; + uint64_t lb_prim = 0; + const uint64_t ssn = 110; + int lb = db_idx64_lowerbound( receiver, receiver, table, &lb_sec, &lb_prim ); + eosio_assert( lb_prim == ssn && lb_sec == "joe"_n.value, err.c_str() ); + eosio_assert( lb == db_idx64_find_primary(receiver, receiver, table, &lb_sec, ssn), err.c_str() ); + } + { + secondary_type lb_sec = "kevin"_n.value; + uint64_t lb_prim = 0; + int lb = db_idx64_lowerbound( receiver, receiver, table, &lb_sec, &lb_prim ); + eosio_assert( lb_prim == 0 && lb_sec == "kevin"_n.value, err.c_str() ); + eosio_assert( lb < 0, "" ); + } +} + +void test_api_db::idx64_upperbound() +{ + uint64_t receiver = get_self().value; + const auto table = "myindextable"_n.value; + typedef uint64_t secondary_type; + const std::string err = "idx64_upperbound"; + { + secondary_type ub_sec = "alice"_n.value; + uint64_t ub_prim = 0; + const uint64_t allyson_ssn = 650; + int ub = db_idx64_upperbound( receiver, receiver, table, &ub_sec, &ub_prim ); + eosio_assert( ub_prim == allyson_ssn && ub_sec == "allyson"_n.value, "" ); + eosio_assert( ub == db_idx64_find_primary(receiver, receiver, table, &ub_sec, allyson_ssn), err.c_str() ); + } + { + secondary_type ub_sec = "billy"_n.value; + uint64_t ub_prim = 0; + const uint64_t bob_ssn = 540; + int ub = db_idx64_upperbound( receiver, receiver, table, &ub_sec, &ub_prim ); + eosio_assert( ub_prim == bob_ssn && ub_sec == "bob"_n.value, "" ); + eosio_assert( ub == db_idx64_find_primary(receiver, receiver, table, &ub_sec, bob_ssn), err.c_str() ); + } + { + secondary_type ub_sec = "joe"_n.value; + uint64_t ub_prim = 0; + int ub = db_idx64_upperbound( receiver, receiver, table, &ub_sec, &ub_prim ); + eosio_assert( ub_prim == 0 && ub_sec == "joe"_n.value, err.c_str() ); + eosio_assert( ub < 0, err.c_str() ); + } + { + secondary_type ub_sec = "kevin"_n.value; + uint64_t ub_prim = 0; + int ub = db_idx64_upperbound( receiver, receiver, table, &ub_sec, &ub_prim ); + eosio_assert( ub_prim == 0 && ub_sec == "kevin"_n.value, err.c_str() ); + eosio_assert( ub < 0, err.c_str() ); + } +} + +void test_api_db::test_invalid_access( name _code, uint64_t val, uint32_t index, bool store ) +{ + uint64_t code = _code.value; + uint64_t receiver = get_self().value; + uint64_t scope = "access"_n.value; + uint64_t table = scope; + uint64_t pk = scope; + + int32_t itr = -1; + uint64_t value = 0; + switch( index ) { + case 1: + itr = db_idx64_find_primary( code, scope, table, &value, pk ); + break; + case 0: + default: + itr = db_find_i64( code, scope, table, pk ); + break; + } + if(store) { + uint64_t value_to_store = val; + if( itr < 0 ) { + switch(index) { + case 1: + db_idx64_store( scope, table, receiver, pk, &value_to_store ); + break; + case 0: + default: + db_store_i64( scope, table, receiver, pk, &value_to_store, sizeof(value_to_store) ); + break; + } + } else { + switch(index) { + case 1: + db_idx64_update( itr, receiver, &value_to_store); + break; + case 0: + default: + db_update_i64( itr, receiver, &value_to_store, sizeof(value_to_store) ); + break; + } + } + //eosio::print("test_invalid_access: stored ", value_to_store, "\n"); + } else { + eosio_assert( itr >= 0, "test_invalid_access: could not find row" ); + switch(index) { + case 1: + break; + case 0: + default: + eosio_assert( db_get_i64( itr, &value, sizeof(value) ) == sizeof(value), + "test_invalid_access: value in primary table was incorrect size" ); + break; + } + //eosio::print("test_invalid_access: expected ", val, " and retrieved ", value, "\n"); + eosio_assert( value == val, "test_invalid_access: value did not match" ); + } +} + +void test_api_db::idx_double_nan_create_fail() { + uint64_t receiver = get_self().value; + double x = 0.0; + x = x / x; // create a NaN + db_idx_double_store( "nan"_n.value, "nan"_n.value, receiver, 0, &x ); // should fail +} + +void test_api_db::idx_double_nan_modify_fail() { + uint64_t receiver = get_self().value; + double x = 0.0; + db_idx_double_store( "nan"_n.value, "nan"_n.value, receiver, 0, &x ); + auto itr = db_idx_double_find_primary( receiver, "nan"_n.value, "nan"_n.value, &x, 0 ); + x = 0.0; + x = x / x; // create a NaN + db_idx_double_update( itr, 0, &x ); // should fail +} + +void test_api_db::idx_double_nan_lookup_fail( uint32_t lookup_type ) { + uint64_t receiver = get_self().value; + + uint64_t pk; + double x = 0.0; + db_idx_double_store( "nan"_n.value, "nan"_n.value, receiver, 0, &x ); + x = x / x; // create a NaN + switch(lookup_type) { + case 0: // find + db_idx_double_find_secondary( receiver, "nan"_n.value, "nan"_n.value, &x, &pk ); + break; + case 1: // lower bound + db_idx_double_lowerbound( receiver, "nan"_n.value, "nan"_n.value, &x, &pk ); + break; + case 2: // upper bound + db_idx_double_upperbound( receiver, "nan"_n.value, "nan"_n.value, &x, &pk ); + break; + default: + eosio_assert( false, "idx_double_nan_lookup_fail: unexpected lookup_type" ); + } +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcast-align" + +void test_api_db::misaligned_secondary_key256_tests() { + uint64_t receiver = get_self().value; + auto key = eosio::checksum256::make_from_word_sequence( 0ULL, 0ULL, 0ULL, 42ULL ); + char* ptr = (char*)(&key); + ptr += 1; + // test that store doesn't crash on unaligned data + db_idx256_store( "testapi"_n.value, "testtable"_n.value, "testapi"_n.value, 1, (uint128_t*)(ptr), 2 ); + // test that find_primary doesn't crash on unaligned data + db_idx256_find_primary( "testapi"_n.value, "testtable"_n.value, "testapi"_n.value, (uint128_t*)(ptr), 2,0 ); +} + +#pragma clang diagnostic pop diff --git a/unittests/test-contracts/test_api_db/test_api_db.hpp b/unittests/test-contracts/test_api_db/test_api_db.hpp new file mode 100644 index 00000000000..6196e9db103 --- /dev/null +++ b/unittests/test-contracts/test_api_db/test_api_db.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include + +class [[eosio::contract]] test_api_db : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action("pg")]] + void primary_i64_general(); + + [[eosio::action("pl")]] + void primary_i64_lowerbound(); + + [[eosio::action("pu")]] + void primary_i64_upperbound(); + + [[eosio::action("s1g")]] + void idx64_general(); + + [[eosio::action("s1l")]] + void idx64_lowerbound(); + + [[eosio::action("s1u")]] + void idx64_upperbound(); + + [[eosio::action("tia")]] + void test_invalid_access( eosio::name code, uint64_t val, uint32_t index, bool store ); + + [[eosio::action("sdnancreate")]] + void idx_double_nan_create_fail(); + + [[eosio::action("sdnanmodify")]] + void idx_double_nan_modify_fail(); + + [[eosio::action("sdnanlookup")]] + void idx_double_nan_lookup_fail( uint32_t lookup_type ); + + [[eosio::action("sk32align")]] + void misaligned_secondary_key256_tests(); + +}; diff --git a/unittests/test-contracts/test_api_db/test_api_db.wasm b/unittests/test-contracts/test_api_db/test_api_db.wasm new file mode 100755 index 00000000000..5aefa71cd1a Binary files /dev/null and b/unittests/test-contracts/test_api_db/test_api_db.wasm differ diff --git a/unittests/test-contracts/test_api_multi_index/CMakeLists.txt b/unittests/test-contracts/test_api_multi_index/CMakeLists.txt new file mode 100644 index 00000000000..cd1264fb473 --- /dev/null +++ b/unittests/test-contracts/test_api_multi_index/CMakeLists.txt @@ -0,0 +1,6 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( test_api_multi_index test_api_multi_index test_api_multi_index.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_api_multi_index.wasm ${CMAKE_CURRENT_BINARY_DIR}/test_api_multi_index.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_api_multi_index.abi ${CMAKE_CURRENT_BINARY_DIR}/test_api_multi_index.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/test_api_multi_index/test_api_multi_index.abi b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.abi new file mode 100644 index 00000000000..9bf6b7601de --- /dev/null +++ b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.abi @@ -0,0 +1,332 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "idx128_autoincrement_test", + "base": "", + "fields": [] + }, + { + "name": "idx128_autoincrement_test_part1", + "base": "", + "fields": [] + }, + { + "name": "idx128_autoincrement_test_part2", + "base": "", + "fields": [] + }, + { + "name": "idx128_check_without_storing", + "base": "", + "fields": [] + }, + { + "name": "idx128_general", + "base": "", + "fields": [] + }, + { + "name": "idx128_store_only", + "base": "", + "fields": [] + }, + { + "name": "idx256_general", + "base": "", + "fields": [] + }, + { + "name": "idx64_check_without_storing", + "base": "", + "fields": [] + }, + { + "name": "idx64_general", + "base": "", + "fields": [] + }, + { + "name": "idx64_modify_primary_key", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_pk_end_itr_to_erase", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_pk_end_itr_to_iterator_to", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_pk_end_itr_to_modify", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_pk_ref_to_other_table", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_sk_end_itr_to_erase", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_sk_end_itr_to_iterator_to", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_sk_end_itr_to_modify", + "base": "", + "fields": [] + }, + { + "name": "idx64_pass_sk_ref_to_other_table", + "base": "", + "fields": [] + }, + { + "name": "idx64_pk_cache_sk_lookup", + "base": "", + "fields": [] + }, + { + "name": "idx64_pk_iterator_exceed_begin", + "base": "", + "fields": [] + }, + { + "name": "idx64_pk_iterator_exceed_end", + "base": "", + "fields": [] + }, + { + "name": "idx64_require_find_fail", + "base": "", + "fields": [] + }, + { + "name": "idx64_require_find_fail_with_msg", + "base": "", + "fields": [] + }, + { + "name": "idx64_require_find_sk_fail", + "base": "", + "fields": [] + }, + { + "name": "idx64_require_find_sk_fail_with_msg", + "base": "", + "fields": [] + }, + { + "name": "idx64_run_out_of_avl_pk", + "base": "", + "fields": [] + }, + { + "name": "idx64_sk_cache_pk_lookup", + "base": "", + "fields": [] + }, + { + "name": "idx64_sk_iterator_exceed_begin", + "base": "", + "fields": [] + }, + { + "name": "idx64_sk_iterator_exceed_end", + "base": "", + "fields": [] + }, + { + "name": "idx64_store_only", + "base": "", + "fields": [] + }, + { + "name": "idx_double_general", + "base": "", + "fields": [] + }, + { + "name": "idx_long_double_general", + "base": "", + "fields": [] + } + ], + "actions": [ + { + "name": "s1check", + "type": "idx64_check_without_storing", + "ricardian_contract": "" + }, + { + "name": "s1exhaustpk", + "type": "idx64_run_out_of_avl_pk", + "ricardian_contract": "" + }, + { + "name": "s1findfail1", + "type": "idx64_require_find_fail", + "ricardian_contract": "" + }, + { + "name": "s1findfail2", + "type": "idx64_require_find_fail_with_msg", + "ricardian_contract": "" + }, + { + "name": "s1findfail3", + "type": "idx64_require_find_sk_fail", + "ricardian_contract": "" + }, + { + "name": "s1findfail4", + "type": "idx64_require_find_sk_fail_with_msg", + "ricardian_contract": "" + }, + { + "name": "s1g", + "type": "idx64_general", + "ricardian_contract": "" + }, + { + "name": "s1modpk", + "type": "idx64_modify_primary_key", + "ricardian_contract": "" + }, + { + "name": "s1pkbegin", + "type": "idx64_pk_iterator_exceed_begin", + "ricardian_contract": "" + }, + { + "name": "s1pkcache", + "type": "idx64_pk_cache_sk_lookup", + "ricardian_contract": "" + }, + { + "name": "s1pkend", + "type": "idx64_pk_iterator_exceed_end", + "ricardian_contract": "" + }, + { + "name": "s1pkerase", + "type": "idx64_pass_pk_end_itr_to_erase", + "ricardian_contract": "" + }, + { + "name": "s1pkitrto", + "type": "idx64_pass_pk_end_itr_to_iterator_to", + "ricardian_contract": "" + }, + { + "name": "s1pkmodify", + "type": "idx64_pass_pk_end_itr_to_modify", + "ricardian_contract": "" + }, + { + "name": "s1pkref", + "type": "idx64_pass_pk_ref_to_other_table", + "ricardian_contract": "" + }, + { + "name": "s1skbegin", + "type": "idx64_sk_iterator_exceed_begin", + "ricardian_contract": "" + }, + { + "name": "s1skcache", + "type": "idx64_sk_cache_pk_lookup", + "ricardian_contract": "" + }, + { + "name": "s1skend", + "type": "idx64_sk_iterator_exceed_end", + "ricardian_contract": "" + }, + { + "name": "s1skerase", + "type": "idx64_pass_sk_end_itr_to_erase", + "ricardian_contract": "" + }, + { + "name": "s1skitrto", + "type": "idx64_pass_sk_end_itr_to_iterator_to", + "ricardian_contract": "" + }, + { + "name": "s1skmodify", + "type": "idx64_pass_sk_end_itr_to_modify", + "ricardian_contract": "" + }, + { + "name": "s1skref", + "type": "idx64_pass_sk_ref_to_other_table", + "ricardian_contract": "" + }, + { + "name": "s1store", + "type": "idx64_store_only", + "ricardian_contract": "" + }, + { + "name": "s2autoinc", + "type": "idx128_autoincrement_test", + "ricardian_contract": "" + }, + { + "name": "s2autoinc1", + "type": "idx128_autoincrement_test_part1", + "ricardian_contract": "" + }, + { + "name": "s2autoinc2", + "type": "idx128_autoincrement_test_part2", + "ricardian_contract": "" + }, + { + "name": "s2check", + "type": "idx128_check_without_storing", + "ricardian_contract": "" + }, + { + "name": "s2g", + "type": "idx128_general", + "ricardian_contract": "" + }, + { + "name": "s2store", + "type": "idx128_store_only", + "ricardian_contract": "" + }, + { + "name": "s3g", + "type": "idx256_general", + "ricardian_contract": "" + }, + { + "name": "sdg", + "type": "idx_double_general", + "ricardian_contract": "" + }, + { + "name": "sldg", + "type": "idx_long_double_general", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/test_api_multi_index/test_api_multi_index.cpp b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.cpp new file mode 100644 index 00000000000..14a819932d9 --- /dev/null +++ b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.cpp @@ -0,0 +1,921 @@ +#include "test_api_multi_index.hpp" + +using namespace eosio; + +#include +#include + +namespace _test_multi_index { + + using eosio::checksum256; + + struct record_idx64 { + uint64_t id; + uint64_t sec; + + auto primary_key()const { return id; } + uint64_t get_secondary()const { return sec; } + + EOSLIB_SERIALIZE( record_idx64, (id)(sec) ) + }; + + struct record_idx128 { + uint64_t id; + uint128_t sec; + + auto primary_key()const { return id; } + uint128_t get_secondary()const { return sec; } + + EOSLIB_SERIALIZE( record_idx128, (id)(sec) ) + }; + + struct record_idx256 { + uint64_t id; + checksum256 sec; + + auto primary_key()const { return id; } + const checksum256& get_secondary()const { return sec; } + + EOSLIB_SERIALIZE( record_idx256, (id)(sec) ) + }; + + struct record_idx_double { + uint64_t id; + double sec; + + auto primary_key()const { return id; } + double get_secondary()const { return sec; } + + EOSLIB_SERIALIZE( record_idx_double, (id)(sec) ) + }; + + struct record_idx_long_double { + uint64_t id; + long double sec; + + auto primary_key()const { return id; } + long double get_secondary()const { return sec; } + + EOSLIB_SERIALIZE( record_idx_long_double, (id)(sec) ) + }; + + template + void idx64_store_only( name receiver ) + { + typedef record_idx64 record; + + record records[] = {{265, "alice"_n.value}, + {781, "bob"_n.value}, + {234, "charlie"_n.value}, + {650, "allyson"_n.value}, + {540, "bob"_n.value}, + {976, "emily"_n.value}, + {110, "joe"_n.value} + }; + size_t num_records = sizeof(records)/sizeof(records[0]); + + // Construct and fill table using multi_index + multi_index> + > table( receiver, receiver.value ); + + auto payer = receiver; + + for ( size_t i = 0; i < num_records; ++i ) { + table.emplace( payer, [&](auto& r) { + r.id = records[i].id; + r.sec = records[i].sec; + }); + } + } + + template + void idx64_check_without_storing( name receiver ) + { + typedef record_idx64 record; + + // Load table using multi_index + multi_index> + > table( receiver, receiver.value ); + + auto payer = receiver; + + auto secondary_index = table.template get_index<"bysecondary"_n>(); + + // find by primary key + { + auto itr = table.find(999); + check( itr == table.end(), "idx64_general - table.find() of non-existing primary key" ); + + itr = table.find(976); + check( itr != table.end() && itr->sec == "emily"_n.value, "idx64_general - table.find() of existing primary key" ); + + ++itr; + check( itr == table.end(), "idx64_general - increment primary iterator to end" ); + + itr = table.require_find(976); + check( itr != table.end() && itr->sec == "emily"_n.value, "idx64_general - table.require_find() of existing primary key" ); + + ++itr; + check( itr == table.end(), "idx64_general - increment primary iterator to end" ); + } + + // iterate forward starting with charlie + { + auto itr = secondary_index.lower_bound("charlie"_n.value); + check( itr != secondary_index.end() && itr->sec == "charlie"_n.value, "idx64_general - secondary_index.lower_bound()" ); + + ++itr; + check( itr != secondary_index.end() && itr->id == 976 && itr->sec == "emily"_n.value, "idx64_general - increment secondary iterator" ); + + ++itr; + check( itr != secondary_index.end() && itr->id == 110 && itr->sec == "joe"_n.value, "idx64_general - increment secondary iterator again" ); + + ++itr; + check( itr == secondary_index.end(), "idx64_general - increment secondary iterator to end" ); + } + + // iterate backward starting with second bob + { + auto pk_itr = table.find(781); + check( pk_itr != table.end() && pk_itr->sec == "bob"_n.value, "idx64_general - table.find() of existing primary key" ); + + auto itr = secondary_index.iterator_to(*pk_itr); + check( itr->id == 781 && itr->sec == "bob"_n.value, "idx64_general - iterator to existing object in secondary index" ); + + --itr; + check( itr != secondary_index.end() && itr->id == 540 && itr->sec == "bob"_n.value, "idx64_general - decrement secondary iterator" ); + + --itr; + check( itr != secondary_index.end() && itr->id == 650 && itr->sec == "allyson"_n.value, "idx64_general - decrement secondary iterator again" ); + + --itr; + check( itr == secondary_index.begin() && itr->id == 265 && itr->sec == "alice"_n.value, "idx64_general - decrement secondary iterator to beginning" ); + } + + // iterate backward starting with emily using const_reverse_iterator + { + std::array pks{{976, 234, 781, 540, 650, 265}}; + + auto pk_itr = pks.begin(); + + auto itr = --std::make_reverse_iterator( secondary_index.find("emily"_n.value) ); + for( ; itr != secondary_index.rend(); ++itr ) { + check( pk_itr != pks.end(), "idx64_general - unexpected continuation of secondary index in reverse iteration" ); + check( *pk_itr == itr->id, "idx64_general - primary key mismatch in reverse iteration" ); + ++pk_itr; + } + check( pk_itr == pks.end(), "idx64_general - did not iterate backwards through secondary index properly" ); + } + + // require_find secondary key + { + auto itr = secondary_index.require_find("bob"_n.value); + check( itr != secondary_index.end(), "idx64_general - require_find must never return end iterator" ); + check( itr->id == 540, "idx64_general - require_find test" ); + + ++itr; + check( itr->id == 781, "idx64_general - require_find secondary key test" ); + } + + // modify and erase + { + const uint64_t ssn = 421; + auto new_person = table.emplace( payer, [&](auto& r) { + r.id = ssn; + r.sec = "bob"_n.value; + }); + + table.modify( new_person, payer, [&](auto& r) { + r.sec = "billy"_n.value; + }); + + auto itr1 = table.find(ssn); + check( itr1 != table.end() && itr1->sec == "billy"_n.value, "idx64_general - table.modify()" ); + + table.erase(itr1); + auto itr2 = table.find(ssn); + check( itr2 == table.end(), "idx64_general - table.erase()" ); + } + } + + template + void idx64_require_find_fail(name receiver) + { + typedef record_idx64 record; + + // Load table using multi_index + multi_index table( receiver, receiver.value ); + + // make sure we're looking at the right table + auto itr = table.require_find( 781, "table not loaded" ); + check( itr != table.end(), "table not loaded" ); + + // require_find by primary key + // should fail + itr = table.require_find(999); + } + + template + void idx64_require_find_fail_with_msg(name receiver) + { + typedef record_idx64 record; + + // Load table using multi_index + multi_index table( receiver, receiver.value ); + + // make sure we're looking at the right table + auto itr = table.require_find( 234, "table not loaded" ); + check( itr != table.end(), "table not loaded" ); + + // require_find by primary key + // should fail + itr = table.require_find( 335, "unable to find primary key in require_find" ); + } + + template + void idx64_require_find_sk_fail(name receiver) + { + typedef record_idx64 record; + + // Load table using multi_index + multi_index>> table( receiver, receiver.value ); + auto sec_index = table.template get_index<"bysecondary"_n>(); + + // make sure we're looking at the right table + auto itr = sec_index.require_find( "charlie"_n.value, "table not loaded" ); + check( itr != sec_index.end(), "table not loaded" ); + + // require_find by secondary key + // should fail + itr = sec_index.require_find("bill"_n.value); + } + + template + void idx64_require_find_sk_fail_with_msg(name receiver) + { + typedef record_idx64 record; + + // Load table using multi_index + multi_index>> table( receiver, receiver.value ); + auto sec_index = table.template get_index<"bysecondary"_n>(); + + // make sure we're looking at the right table + auto itr = sec_index.require_find( "emily"_n.value, "table not loaded" ); + check( itr != sec_index.end(), "table not loaded" ); + + // require_find by secondary key + // should fail + itr = sec_index.require_find( "frank"_n.value, "unable to find sec key" ); + } + + template + void idx128_store_only(name receiver) + { + typedef record_idx128 record; + + + // Construct and fill table using multi_index + multi_index> + > table( receiver, receiver.value ); + + auto payer = receiver; + + for (uint64_t i = 0; i < 5; ++i) { + table.emplace( payer, [&](auto& r) { + r.id = i; + r.sec = static_cast(1ULL << 63) * i; + }); + } + } + + template + void idx128_check_without_storing( name receiver ) + { + typedef record_idx128 record; + + // Load table using multi_index + multi_index> + > table( receiver, receiver.value ); + + auto payer = receiver; + + auto secondary_index = table.template get_index<"bysecondary"_n>(); + + table.modify( table.get(3), payer, [&](auto& r) { + r.sec *= 2; + }); + + { + uint128_t multiplier = 1ULL << 63; + + auto itr = secondary_index.begin(); + check( itr->primary_key() == 0 && itr->get_secondary() == multiplier*0, "idx128_general - secondary key sort" ); + ++itr; + check( itr->primary_key() == 1 && itr->get_secondary() == multiplier*1, "idx128_general - secondary key sort" ); + ++itr; + check( itr->primary_key() == 2 && itr->get_secondary() == multiplier*2, "idx128_general - secondary key sort" ); + ++itr; + check( itr->primary_key() == 4 && itr->get_secondary() == multiplier*4, "idx128_general - secondary key sort" ); + ++itr; + check( itr->primary_key() == 3 && itr->get_secondary() == multiplier*6, "idx128_general - secondary key sort" ); + ++itr; + check( itr == secondary_index.end(), "idx128_general - secondary key sort" ); + } + + } + + template + auto idx64_table( name receiver ) + { + typedef record_idx64 record; + // Load table using multi_index + multi_index> + > table( receiver, receiver.value ); + return table; + } + +} /// _test_multi_index + +void test_api_multi_index::idx64_store_only() +{ + _test_multi_index::idx64_store_only<"indextable1"_n.value>( get_self() ); +} + +void test_api_multi_index::idx64_check_without_storing() +{ + _test_multi_index::idx64_check_without_storing<"indextable1"_n.value>( get_self() ); +} + +void test_api_multi_index::idx64_general() +{ + _test_multi_index::idx64_store_only<"indextable2"_n.value>( get_self() ); + _test_multi_index::idx64_check_without_storing<"indextable2"_n.value>( get_self() ); +} + +void test_api_multi_index::idx128_store_only() +{ + _test_multi_index::idx128_store_only<"indextable3"_n.value>( get_self() ); +} + +void test_api_multi_index::idx128_check_without_storing() +{ + _test_multi_index::idx128_check_without_storing<"indextable3"_n.value>( get_self() ); +} + +void test_api_multi_index::idx128_general() +{ + _test_multi_index::idx128_store_only<"indextable4"_n.value>( get_self() ); + _test_multi_index::idx128_check_without_storing<"indextable4"_n.value>( get_self() ); +} + +void test_api_multi_index::idx64_require_find_fail() +{ + _test_multi_index::idx64_store_only<"indextable5"_n.value>( get_self() ); + _test_multi_index::idx64_require_find_fail<"indextable5"_n.value>( get_self() ); +} + +void test_api_multi_index::idx64_require_find_fail_with_msg() +{ + _test_multi_index::idx64_store_only<"indextablea"_n.value>( get_self() ); // Making the name smaller fixes this? + _test_multi_index::idx64_require_find_fail_with_msg<"indextablea"_n.value>( get_self() ); // Making the name smaller fixes this? +} + +void test_api_multi_index::idx64_require_find_sk_fail() +{ + _test_multi_index::idx64_store_only<"indextableb"_n.value>( get_self() ); + _test_multi_index::idx64_require_find_sk_fail<"indextableb"_n.value>( get_self() ); +} + +void test_api_multi_index::idx64_require_find_sk_fail_with_msg() +{ + _test_multi_index::idx64_store_only<"indextablec"_n.value>( get_self() ); + _test_multi_index::idx64_require_find_sk_fail_with_msg<"indextablec"_n.value>( get_self() ); +} + +void test_api_multi_index::idx128_autoincrement_test() +{ + using namespace _test_multi_index; + + typedef record_idx128 record; + + auto payer = get_self(); + + multi_index<"autoinctbl1"_n, record, + indexed_by<"bysecondary"_n, const_mem_fun> + > table( get_self(), get_self().value ); + + for( int i = 0; i < 5; ++i ) { + table.emplace( payer, [&](auto& r) { + r.id = table.available_primary_key(); + r.sec = 1000 - static_cast(r.id); + }); + } + + uint64_t expected_key = 4; + for( const auto& r : table.get_index<"bysecondary"_n>() ) + { + check( r.primary_key() == expected_key, "idx128_autoincrement_test - unexpected primary key" ); + --expected_key; + } + check( expected_key == static_cast(-1), "idx128_autoincrement_test - did not iterate through secondary index properly" ); + + auto itr = table.find(3); + check( itr != table.end(), "idx128_autoincrement_test - could not find object with primary key of 3" ); + + // The modification below would trigger an error: + /* + table.modify(itr, payer, [&](auto& r) { + r.id = 100; + }); + */ + + table.emplace( payer, [&](auto& r) { + r.id = 100; + r.sec = itr->sec; + }); + table.erase(itr); + + check( table.available_primary_key() == 101, "idx128_autoincrement_test - next_primary_key was not correct after record modify" ); +} + +void test_api_multi_index::idx128_autoincrement_test_part1() +{ + using namespace _test_multi_index; + + typedef record_idx128 record; + + auto payer = get_self(); + + multi_index<"autoinctbl2"_n, record, + indexed_by<"bysecondary"_n, const_mem_fun> + > table( get_self(), get_self().value ); + + for( int i = 0; i < 3; ++i ) { + table.emplace( payer, [&](auto& r) { + r.id = table.available_primary_key(); + r.sec = 1000 - static_cast(r.id); + }); + } + + table.erase(table.get(0)); + + uint64_t expected_key = 2; + for( const auto& r : table.get_index<"bysecondary"_n>() ) + { + check( r.primary_key() == expected_key, "idx128_autoincrement_test_part1 - unexpected primary key" ); + --expected_key; + } + check( expected_key == 0, "idx128_autoincrement_test_part1 - did not iterate through secondary index properly" ); + +} + +void test_api_multi_index::idx128_autoincrement_test_part2() +{ + using namespace _test_multi_index; + + typedef record_idx128 record; + + const name::raw table_name = "autoinctbl2"_n; + auto payer = get_self(); + + { + multi_index> + > table( get_self(), get_self().value ); + + check( table.available_primary_key() == 3, "idx128_autoincrement_test_part2 - did not recover expected next primary key" ); + } + + multi_index> + > table( get_self(), get_self().value ); + + table.emplace( payer, [&](auto& r) { + r.id = 0; + r.sec = 1000; + }); + // Done this way to make sure that table._next_primary_key is not incorrectly set to 1. + + for( int i = 3; i < 5; ++i ) { + table.emplace( payer, [&](auto& r) { + auto itr = table.available_primary_key(); + r.id = itr; + r.sec = 1000 - static_cast(r.id); + }); + } + + uint64_t expected_key = 4; + for( const auto& r : table.get_index<"bysecondary"_n>() ) + { + check( r.primary_key() == expected_key, "idx128_autoincrement_test_part2 - unexpected primary key" ); + --expected_key; + } + check( expected_key == static_cast(-1), "idx128_autoincrement_test_part2 - did not iterate through secondary index properly" ); + + auto itr = table.find(3); + check( itr != table.end(), "idx128_autoincrement_test_part2 - could not find object with primary key of 3" ); + + table.emplace( payer, [&](auto& r) { + r.id = 100; + r.sec = itr->sec; + }); + table.erase(itr); + + check( table.available_primary_key() == 101, "idx128_autoincrement_test_part2 - next_primary_key was not correct after record update" ); +} + +void test_api_multi_index::idx256_general() +{ + using namespace _test_multi_index; + + typedef record_idx256 record; + + auto payer = get_self(); + + print("Testing checksum256 secondary index.\n"); + multi_index<"indextable5"_n, record, + indexed_by<"bysecondary"_n, const_mem_fun> + > table( get_self(), get_self().value ); + + auto fourtytwo = checksum256::make_from_word_sequence( 0ULL, 0ULL, 0ULL, 42ULL ); + //auto onetwothreefour = checksum256::make_from_word_sequence(1ULL, 2ULL, 3ULL, 4ULL); + auto onetwothreefour = checksum256{std::array{ {0,1, 0,2, 0,3, 0,4} }}; + + table.emplace( payer, [&](auto& o) { + o.id = 1; + o.sec = fourtytwo; + }); + + table.emplace( payer, [&](auto& o) { + o.id = 2; + o.sec = onetwothreefour; + }); + + table.emplace( payer, [&](auto& o) { + o.id = 3; + o.sec = fourtytwo; + }); + + auto e = table.find(2); + + print("Items sorted by primary key:\n"); + for( const auto& item : table ) { + print(" ID=", item.primary_key(), ", secondary=", item.sec, "\n"); + } + + { + auto itr = table.begin(); + check( itr->primary_key() == 1 && itr->get_secondary() == fourtytwo, "idx256_general - primary key sort" ); + ++itr; + check( itr->primary_key() == 2 && itr->get_secondary() == onetwothreefour, "idx256_general - primary key sort" ); + ++itr; + check( itr->primary_key() == 3 && itr->get_secondary() == fourtytwo, "idx256_general - primary key sort" ); + ++itr; + check( itr == table.end(), "idx256_general - primary key sort" ); + } + + auto secidx = table.get_index<"bysecondary"_n>(); + + auto lower1 = secidx.lower_bound( checksum256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 40ULL) ); + print("First entry with a secondary key of at least 40 has ID=", lower1->id, ".\n"); + check( lower1->id == 1, "idx256_general - lower_bound" ); + + auto lower2 = secidx.lower_bound( checksum256::make_from_word_sequence(0ULL, 0ULL, 0ULL, 50ULL) ); + print("First entry with a secondary key of at least 50 has ID=", lower2->id, ".\n"); + check( lower2->id == 2, "idx256_general - lower_bound" ); + + if( table.iterator_to(*lower2) == e ) { + print("Previously found entry is the same as the one found earlier with a primary key value of 2.\n"); + } + + print("Items sorted by secondary key (checksum256):\n"); + for( const auto& item : secidx ) { + print(" ID=", item.primary_key(), ", secondary=", item.sec, "\n"); + } + + { + auto itr = secidx.begin(); + check( itr->primary_key() == 1, "idx256_general - secondary key sort" ); + ++itr; + check( itr->primary_key() == 3, "idx256_general - secondary key sort" ); + ++itr; + check( itr->primary_key() == 2, "idx256_general - secondary key sort" ); + ++itr; + check( itr == secidx.end(), "idx256_general - secondary key sort" ); + } + + auto upper = secidx.upper_bound( checksum256{std::array{{0, 0, 0, 42}}} ); + + print("First entry with a secondary key greater than 42 has ID=", upper->id, ".\n"); + check( upper->id == 2, "idx256_general - upper_bound" ); + check( upper->id == secidx.get(onetwothreefour).id, "idx256_general - secondary index get" ); + + print("Removed entry with ID=", lower1->id, ".\n"); + secidx.erase( lower1 ); + + print("Items reverse sorted by primary key:\n"); + for( auto itr = table.rbegin(); itr != table.rend(); ++itr ) { + const auto& item = *itr; + print(" ID=", item.primary_key(), ", secondary=", item.sec, "\n"); + } + + { + auto itr = table.rbegin(); + check( itr->primary_key() == 3 && itr->get_secondary() == fourtytwo, "idx256_general - primary key sort after remove" ); + ++itr; + check( itr->primary_key() == 2 && itr->get_secondary() == onetwothreefour, "idx256_general - primary key sort after remove" ); + ++itr; + check( itr == table.rend(), "idx256_general - primary key sort after remove" ); + } +} + +void test_api_multi_index::idx_double_general() +{ + using namespace _test_multi_index; + + typedef record_idx_double record; + + auto payer = get_self(); + + print("Testing double secondary index.\n"); + multi_index<"floattable1"_n, record, + indexed_by<"bysecondary"_n, const_mem_fun> + > table( get_self(), get_self().value ); + + auto secidx = table.get_index<"bysecondary"_n>(); + + double tolerance = std::numeric_limits::epsilon(); + print("tolerance = ", tolerance, "\n"); + + for( uint64_t i = 1; i <= 10; ++i ) { + table.emplace( payer, [&]( auto& o ) { + o.id = i; + o.sec = 1.0 / (i * 1000000.0); + }); + } + + double expected_product = 1.0 / 1000000.0; + print( "expected_product = ", expected_product, "\n" ); + + uint64_t expected_key = 10; + for( const auto& obj : secidx ) { + check( obj.primary_key() == expected_key, "idx_double_general - unexpected primary key" ); + + double prod = obj.sec * obj.id; + + print(" id = ", obj.id, ", sec = ", obj.sec, ", sec * id = ", prod, "\n"); + + check( std::abs(prod - expected_product) <= tolerance, + "idx_double_general - product of secondary and id not equal to expected_product within tolerance" ); + + --expected_key; + } + check( expected_key == 0, "idx_double_general - did not iterate through secondary index properly" ); + + { + auto itr = secidx.lower_bound( expected_product / 5.5 ); + check( std::abs(1.0 / itr->sec - 5000000.0) <= tolerance, "idx_double_general - lower_bound" ); + + itr = secidx.upper_bound( expected_product / 5.0 ); + check( std::abs(1.0 / itr->sec - 4000000.0) <= tolerance, "idx_double_general - upper_bound" ); + + } +} + +void test_api_multi_index::idx_long_double_general() +{ + using namespace _test_multi_index; + + typedef record_idx_long_double record; + + auto payer = get_self(); + + print("Testing long double secondary index.\n"); + multi_index<"floattable2"_n, record, + indexed_by<"bysecondary"_n, const_mem_fun> + > table( get_self(), get_self().value ); + + auto secidx = table.get_index<"bysecondary"_n>(); + + long double tolerance = std::min( static_cast(std::numeric_limits::epsilon()), + std::numeric_limits::epsilon() * 1e7l ); + print("tolerance = ", tolerance, "\n"); + + long double f = 1.0l; + for( uint64_t i = 1; i <= 10; ++i, f += 1.0l ) { + table.emplace( payer, [&](auto& o) { + o.id = i; + o.sec = 1.0l / (i * 1000000.0l); + }); + } + + long double expected_product = 1.0l / 1000000.0l; + print( "expected_product = ", expected_product, "\n" ); + + uint64_t expected_key = 10; + for( const auto& obj : secidx ) { + check( obj.primary_key() == expected_key, "idx_long_double_general - unexpected primary key" ); + + long double prod = obj.sec * obj.id; + + print(" id = ", obj.id, ", sec = ", obj.sec, ", sec * id = ", prod, "\n"); + + check( std::abs(prod - expected_product) <= tolerance, + "idx_long_double_general - product of secondary and id not equal to expected_product within tolerance" ); + + --expected_key; + } + check( expected_key == 0, "idx_long_double_general - did not iterate through secondary index properly" ); + + { + auto itr = secidx.lower_bound( expected_product / 5.5l ); + check( std::abs(1.0l / itr->sec - 5000000.0l) <= tolerance, "idx_long_double_general - lower_bound" ); + + itr = secidx.upper_bound( expected_product / 5.0l ); + check( std::abs(1.0l / itr->sec - 4000000.0l) <= tolerance, "idx_long_double_general - upper_bound" ); + + } +} + +void test_api_multi_index::idx64_pk_iterator_exceed_end() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto end_itr = table.end(); + // Should fail + ++end_itr; +} + +void test_api_multi_index::idx64_sk_iterator_exceed_end() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto end_itr = table.get_index<"bysecondary"_n>().end(); + // Should fail + ++end_itr; +} + +void test_api_multi_index::idx64_pk_iterator_exceed_begin() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto begin_itr = table.begin(); + // Should fail + --begin_itr; +} + +void test_api_multi_index::idx64_sk_iterator_exceed_begin() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto begin_itr = table.get_index<"bysecondary"_n>().begin(); + // Should fail + --begin_itr; +} + +void test_api_multi_index::idx64_pass_pk_ref_to_other_table() +{ + auto table1 = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto table2 = _test_multi_index::idx64_table<"indextable2"_n.value, "bysecondary"_n.value>( get_self() ); + + auto table1_pk_itr = table1.find(781); + check( table1_pk_itr != table1.end() && table1_pk_itr->sec == "bob"_n.value, "idx64_pass_pk_ref_to_other_table - table.find() of existing primary key" ); + + // Should fail + table2.iterator_to(*table1_pk_itr); +} + +void test_api_multi_index::idx64_pass_sk_ref_to_other_table() +{ + auto table1 = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto table2 = _test_multi_index::idx64_table<"indextable2"_n.value, "bysecondary"_n.value>( get_self() ); + + auto table1_pk_itr = table1.find(781); + check( table1_pk_itr != table1.end() && table1_pk_itr->sec == "bob"_n.value, "idx64_pass_sk_ref_to_other_table - table.find() of existing primary key" ); + + auto table2_sec_index = table2.get_index<"bysecondary"_n>(); + // Should fail + table2_sec_index.iterator_to(*table1_pk_itr); +} + +void test_api_multi_index::idx64_pass_pk_end_itr_to_iterator_to() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto end_itr = table.end(); + // Should fail + table.iterator_to(*end_itr); +} + +void test_api_multi_index::idx64_pass_pk_end_itr_to_modify() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto end_itr = table.end(); + + // Should fail + table.modify( end_itr, get_self(), [](auto&){} ); +} + +void test_api_multi_index::idx64_pass_pk_end_itr_to_erase() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto end_itr = table.end(); + + // Should fail + table.erase(end_itr); +} + +void test_api_multi_index::idx64_pass_sk_end_itr_to_iterator_to() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto sec_index = table.get_index<"bysecondary"_n>(); + auto end_itr = sec_index.end(); + + // Should fail + sec_index.iterator_to(*end_itr); +} + +void test_api_multi_index::idx64_pass_sk_end_itr_to_modify() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto sec_index = table.get_index<"bysecondary"_n>(); + auto end_itr = sec_index.end(); + + // Should fail + sec_index.modify( end_itr, get_self(), [](auto&){} ); +} + + +void test_api_multi_index::idx64_pass_sk_end_itr_to_erase() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + auto sec_index = table.get_index<"bysecondary"_n>(); + auto end_itr = sec_index.end(); + + // Should fail + sec_index.erase(end_itr); +} + +void test_api_multi_index::idx64_modify_primary_key() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + + auto pk_itr = table.find(781); + check( pk_itr != table.end() && pk_itr->sec == "bob"_n.value, "idx64_modify_primary_key - table.find() of existing primary key" ); + + // Should fail + table.modify( pk_itr, get_self(), [](auto& r){ + r.id = 1100; + }); +} + +void test_api_multi_index::idx64_run_out_of_avl_pk() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + + auto pk_itr = table.find(781); + check( pk_itr != table.end() && pk_itr->sec == "bob"_n.value, "idx64_modify_primary_key - table.find() of existing primary key" ); + + auto payer = get_self(); + + table.emplace( payer, [&](auto& r) { + r.id = static_cast(-4); + r.sec = "alice"_n.value; + }); + check( 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 = "bob"_n.value; + }); + + // Should fail + table.available_primary_key(); +} + +void test_api_multi_index::idx64_sk_cache_pk_lookup() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + + auto sec_index = table.get_index<"bysecondary"_n>(); + auto sk_itr = sec_index.find("bob"_n.value); + check( 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; + check( prev_itr->id == 265 && prev_itr->sec == "alice"_n.value, "idx64_sk_cache_pk_lookup - previous record" ); +} + +void test_api_multi_index::idx64_pk_cache_sk_lookup() +{ + auto table = _test_multi_index::idx64_table<"indextable1"_n.value, "bysecondary"_n.value>( get_self() ); + + + auto pk_itr = table.find(540); + check( pk_itr != table.end() && pk_itr->sec == "bob"_n.value, "idx64_pk_cache_sk_lookup - table.find() of existing primary key" ); + + auto sec_index = table.get_index<"bysecondary"_n>(); + auto sk_itr = sec_index.iterator_to(*pk_itr); + auto next_itr = ++sk_itr; + check( next_itr->id == 781 && next_itr->sec == "bob"_n.value, "idx64_pk_cache_sk_lookup - next record" ); +} diff --git a/unittests/test-contracts/test_api_multi_index/test_api_multi_index.hpp b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.hpp new file mode 100644 index 00000000000..03253e3fa67 --- /dev/null +++ b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.hpp @@ -0,0 +1,105 @@ +#pragma once + +#include + +class [[eosio::contract]] test_api_multi_index : public eosio::contract { +public: + using eosio::contract::contract; + + [[eosio::action("s1g")]] + void idx64_general(); + + [[eosio::action("s1store")]] + void idx64_store_only(); + + [[eosio::action("s1check")]] + void idx64_check_without_storing(); + + [[eosio::action("s1findfail1")]] + void idx64_require_find_fail(); + + [[eosio::action("s1findfail2")]] + void idx64_require_find_fail_with_msg(); + + [[eosio::action("s1findfail3")]] + void idx64_require_find_sk_fail(); + + [[eosio::action("s1findfail4")]] + void idx64_require_find_sk_fail_with_msg(); + + [[eosio::action("s1pkend")]] + void idx64_pk_iterator_exceed_end(); + + [[eosio::action("s1skend")]] + void idx64_sk_iterator_exceed_end(); + + [[eosio::action("s1pkbegin")]] + void idx64_pk_iterator_exceed_begin(); + + [[eosio::action("s1skbegin")]] + void idx64_sk_iterator_exceed_begin(); + + [[eosio::action("s1pkref")]] + void idx64_pass_pk_ref_to_other_table(); + + [[eosio::action("s1skref")]] + void idx64_pass_sk_ref_to_other_table(); + + [[eosio::action("s1pkitrto")]] + void idx64_pass_pk_end_itr_to_iterator_to(); + + [[eosio::action("s1pkmodify")]] + void idx64_pass_pk_end_itr_to_modify(); + + [[eosio::action("s1pkerase")]] + void idx64_pass_pk_end_itr_to_erase(); + + [[eosio::action("s1skitrto")]] + void idx64_pass_sk_end_itr_to_iterator_to(); + + [[eosio::action("s1skmodify")]] + void idx64_pass_sk_end_itr_to_modify(); + + [[eosio::action("s1skerase")]] + void idx64_pass_sk_end_itr_to_erase(); + + [[eosio::action("s1modpk")]] + void idx64_modify_primary_key(); + + [[eosio::action("s1exhaustpk")]] + void idx64_run_out_of_avl_pk(); + + [[eosio::action("s1skcache")]] + void idx64_sk_cache_pk_lookup(); + + [[eosio::action("s1pkcache")]] + void idx64_pk_cache_sk_lookup(); + + [[eosio::action("s2g")]] + void idx128_general(); + + [[eosio::action("s2store")]] + void idx128_store_only(); + + [[eosio::action("s2check")]] + void idx128_check_without_storing(); + + [[eosio::action("s2autoinc")]] + void idx128_autoincrement_test(); + + [[eosio::action("s2autoinc1")]] + void idx128_autoincrement_test_part1(); + + [[eosio::action("s2autoinc2")]] + void idx128_autoincrement_test_part2(); + + [[eosio::action("s3g")]] + void idx256_general(); + + [[eosio::action("sdg")]] + void idx_double_general(); + + [[eosio::action("sldg")]] + void idx_long_double_general(); + +}; diff --git a/unittests/test-contracts/test_api_multi_index/test_api_multi_index.wasm b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.wasm new file mode 100755 index 00000000000..c4cbb5f2584 Binary files /dev/null and b/unittests/test-contracts/test_api_multi_index/test_api_multi_index.wasm differ diff --git a/unittests/test-contracts/test_ram_limit/CMakeLists.txt b/unittests/test-contracts/test_ram_limit/CMakeLists.txt new file mode 100644 index 00000000000..ebd35ffd749 --- /dev/null +++ b/unittests/test-contracts/test_ram_limit/CMakeLists.txt @@ -0,0 +1,8 @@ +if( EOSIO_COMPILE_TEST_CONTRACTS ) + message(STATUS "Not building test_ram_limit, read README.txt in eos/unittests/test-contracts/test_ram_limit") + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_ram_limit.wasm ${CMAKE_CURRENT_BINARY_DIR}/test_ram_limit.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_ram_limit.abi ${CMAKE_CURRENT_BINARY_DIR}/test_ram_limit.abi COPYONLY ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_ram_limit.wasm ${CMAKE_CURRENT_BINARY_DIR}/test_ram_limit.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/test_ram_limit.abi ${CMAKE_CURRENT_BINARY_DIR}/test_ram_limit.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/test_ram_limit/test_ram_limit.abi b/unittests/test-contracts/test_ram_limit/test_ram_limit.abi new file mode 100644 index 00000000000..0874a7cb964 --- /dev/null +++ b/unittests/test-contracts/test_ram_limit/test_ram_limit.abi @@ -0,0 +1,100 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT Fri Dec 7 11:56:43 2018", + "version": "eosio::abi/1.1", + "structs": [ + { + "name": "printentry", + "base": "", + "fields": [ + { + "name": "from", + "type": "uint64" + }, + { + "name": "to", + "type": "uint64" + } + ] + }, + { + "name": "rmentry", + "base": "", + "fields": [ + { + "name": "from", + "type": "uint64" + }, + { + "name": "to", + "type": "uint64" + } + ] + }, + { + "name": "setentry", + "base": "", + "fields": [ + { + "name": "payer", + "type": "name" + }, + { + "name": "from", + "type": "uint64" + }, + { + "name": "to", + "type": "uint64" + }, + { + "name": "size", + "type": "uint64" + } + ] + }, + { + "name": "test", + "base": "", + "fields": [ + { + "name": "key", + "type": "uint64" + }, + { + "name": "data", + "type": "bytes" + } + ] + } + ], + "types": [], + "actions": [ + { + "name": "printentry", + "type": "printentry", + "ricardian_contract": "" + }, + { + "name": "rmentry", + "type": "rmentry", + "ricardian_contract": "" + }, + { + "name": "setentry", + "type": "setentry", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "test.table", + "type": "test", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [], + "abi_extensions": [] +} diff --git a/contracts/test_ram_limit/test_ram_limit.cpp b/unittests/test-contracts/test_ram_limit/test_ram_limit.cpp similarity index 50% rename from contracts/test_ram_limit/test_ram_limit.cpp rename to unittests/test-contracts/test_ram_limit/test_ram_limit.cpp index c162cea6585..a7ea39e31ed 100644 --- a/contracts/test_ram_limit/test_ram_limit.cpp +++ b/unittests/test-contracts/test_ram_limit/test_ram_limit.cpp @@ -1,73 +1,66 @@ -/** - * @file - * @copyright defined in eos/LICENSE - */ #include #include #include + #include -#include #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wsign-conversion" #pragma clang diagnostic ignored "-Wshorten-64-to-32" #pragma clang diagnostic ignored "-Wsign-compare" -class test_ram_limit : public eosio::contract { +using namespace eosio; + +CONTRACT test_ram_limit : public contract { public: + using contract::contract; + const uint32_t FIVE_MINUTES = 5*60; - test_ram_limit(account_name self) - :eosio::contract(self) - {} - - //@abi action - void setentry(account_name payer, uint64_t from, uint64_t to, uint64_t size) { + ACTION setentry( name payer, uint64_t from, uint64_t to, uint64_t size ) { const auto self = get_self(); eosio::print("test_ram_limit::setentry ", eosio::name{self}, "\n"); - test_table table(self, self); - for (int key = from; key <=to; ++key) { + test_table table( self, self.value ); + for ( int key = from; key <=to; ++key ) { auto itr = table.find(key); - if (itr != table.end()) { - table.modify(itr, payer, [size](test& t) { - t.data.assign(size, (int8_t)size); + if ( itr != table.end() ) { + table.modify( itr, payer, [size](test& t) { + t.data.assign( size, (int8_t)size ); }); } else { - table.emplace(payer, [key,size](test& t) { + table.emplace( payer, [key,size](test& t) { t.key = key; - t.data.assign(size, (int8_t)size); + t.data.assign( size, (int8_t)size ); }); } } } - //@abi action - void rmentry(uint64_t from, uint64_t to) { + ACTION rmentry( uint64_t from, uint64_t to ) { const auto self = get_self(); eosio::print("test_ram_limit::rmentry ", eosio::name{self}, "\n"); - test_table table(self, self); - for (int key = from; key <=to; ++key) { + test_table table( self, self.value ); + for ( int key = from; key <=to; ++key ) { auto itr = table.find(key); - eosio_assert (itr != table.end(), "could not find test_table entry"); + eosio_assert ( itr != table.end(), "could not find test_table entry" ); table.erase(itr); } } - //@abi action - void printentry(uint64_t from, uint64_t to) { + ACTION printentry( uint64_t from, uint64_t to ) { const auto self = get_self(); eosio::print("test_ram_limit::printout ", eosio::name{self}, ":"); - test_table table(self, self); - for (int key = from; key <=to; ++key) { + test_table table( self, self.value ); + for ( int key = from; key <= to; ++key ) { auto itr = table.find(key); eosio::print("\nkey=", key); - eosio_assert (itr != table.end(), "could not find test_table entry"); + eosio_assert ( itr != table.end(), "could not find test_table entry" ); eosio::print(" size=", itr->data.size()); } } private: - struct test { + TABLE test { uint64_t key; std::vector data; @@ -75,9 +68,9 @@ class test_ram_limit : public eosio::contract { EOSLIB_SERIALIZE( test, (key)(data) ) }; - typedef eosio::multi_index< N(test.table), test> test_table; + typedef eosio::multi_index< "test.table"_n, test> test_table; }; #pragma clang diagnostic pop -EOSIO_ABI( test_ram_limit, (setentry)(rmentry)(printentry) ) +EOSIO_DISPATCH( test_ram_limit, (setentry)(rmentry)(printentry) ) diff --git a/unittests/test-contracts/test_ram_limit/test_ram_limit.wasm b/unittests/test-contracts/test_ram_limit/test_ram_limit.wasm new file mode 100644 index 00000000000..94f25bde89c Binary files /dev/null and b/unittests/test-contracts/test_ram_limit/test_ram_limit.wasm differ diff --git a/unittests/tic_tac_toe_tests.cpp b/unittests/tic_tac_toe_tests.cpp deleted file mode 100644 index 939b4e203c5..00000000000 --- a/unittests/tic_tac_toe_tests.cpp +++ /dev/null @@ -1,193 +0,0 @@ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-compare" -#include -#pragma GCC diagnostic pop -#include -#include -#include - -#include -#include - -#include - -#include -#include - -#ifdef NON_VALIDATING_TEST -#define TESTER tester -#else -#define TESTER validating_tester -#endif - -using namespace eosio; -using namespace eosio::chain; -using namespace eosio::testing; -using namespace fc; - -const static uint32_t board_len = 9; -struct game { - account_name challenger; - account_name host; - account_name turn; // = account name of host/ challenger - account_name winner = N(none); // = none/ draw/ account name of host/ challenger - uint8_t board[board_len]; -}; -FC_REFLECT(game, (challenger)(host)(turn)(winner)(board)); - - -struct ttt_tester : TESTER { - void get_game(game& game, account_name scope, account_name key) { - auto* maybe_tid = find_table(N(tic.tac.toe), scope, N(games)); - if(maybe_tid == nullptr) - BOOST_FAIL("table for code=\"tic.tac.toe\" scope=\"" + scope.to_string() + "\" table=\"games\" does not exist"); - - auto* o = control->db().find(boost::make_tuple(maybe_tid->id, key)); - if(o == nullptr) - BOOST_FAIL("game for does not exist for challenger=\"" + key.to_string() + "\""); - - fc::raw::unpack(o->value.data(), o->value.size(), game); - } -}; - -BOOST_AUTO_TEST_SUITE(tic_tac_toe_tests) - -BOOST_AUTO_TEST_CASE( tic_tac_toe_game ) try { - TESTER chain; - abi_serializer abi_ser{json::from_string(tic_tac_toe_abi).as(), chain.abi_serializer_max_time}; - chain.create_account(N(tic.tac.toe)); - chain.produce_blocks(10); - - chain.set_code(N(tic.tac.toe), tic_tac_toe_wast); - chain.set_abi(N(tic.tac.toe), tic_tac_toe_abi); - - chain.produce_blocks(); - chain.create_account(N(player1)); - chain.create_account(N(player2)); - chain.produce_blocks(10); - - chain.push_action(N(tic.tac.toe), N(create), N(player1), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ); - - chain.produce_blocks(); - - chain.push_action(N(tic.tac.toe), N(move), N(player1), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player1") - ("row", 1) - ("column", 1) - ); - - BOOST_CHECK_EXCEPTION(chain.push_action(N(tic.tac.toe), N(move), N(player1), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player1") - ("row", 0) - ("column", 1) - ), eosio_assert_message_exception, eosio_assert_message_starts_with("it's not your turn yet")); - - BOOST_CHECK_EXCEPTION(chain.push_action(N(tic.tac.toe), N(move), N(player2), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player2") - ("row", 1) - ("column", 1) - ), eosio_assert_message_exception, eosio_assert_message_starts_with("not a valid movement")); - - chain.push_action(N(tic.tac.toe), N(move), N(player2), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player2") - ("row", 0) - ("column", 1) - ); - - chain.push_action(N(tic.tac.toe), N(move), N(player1), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player1") - ("row", 0) - ("column", 0 ) - ); - - chain.push_action(N(tic.tac.toe), N(move), N(player2), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player2") - ("row", 0) - ("column", 2) - ); - - chain.push_action(N(tic.tac.toe), N(move), N(player1), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player1") - ("row", 2) - ("column", 2) - ); - - BOOST_CHECK_EXCEPTION(chain.push_action(N(tic.tac.toe), N(move), N(player2), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player2") - ("row", 2) - ("column", 0) - ), eosio_assert_message_exception, eosio_assert_message_starts_with("the game has ended")); - - game current; - chain.get_table_entry(current, N(tic.tac.toe), N(player1), N(games), N(player2)); - BOOST_REQUIRE_EQUAL("player1", account_name(current.winner).to_string()); - - chain.push_action(N(tic.tac.toe), N(close), N(player1), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ); - - BOOST_CHECK_EXCEPTION(chain.push_action(N(tic.tac.toe), N(move), N(player2), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player2") - ("row", 2) - ("column", 0) - ), eosio_assert_message_exception, eosio_assert_message_starts_with("game doesn't exists")); - - BOOST_CHECK_EXCEPTION(chain.push_action(N(tic.tac.toe), N(restart), N(player2), mutable_variant_object() - ("challenger", "player2") - ("host", "player1") - ("by", "player2") - ), eosio_assert_message_exception, eosio_assert_message_starts_with("game doesn't exists")); - - chain.push_action(N(tic.tac.toe), N(create), N(player2), mutable_variant_object() - ("challenger", "player1") - ("host", "player2") - ); - - chain.push_action(N(tic.tac.toe), N(restart), N(player1), mutable_variant_object() - ("challenger", "player1") - ("host", "player2") - ("by", "player1") - ); - - // making a move and ... - chain.push_action(N(tic.tac.toe), N(move), N(player2), mutable_variant_object() - ("challenger", "player1") - ("host", "player2") - ("by", "player2") - ("row", 1) - ("column", 1) - ); - - // ... repeating to get exception to ensure restart above actually did something - BOOST_CHECK_EXCEPTION(chain.push_action(N(tic.tac.toe), N(move), N(player2), mutable_variant_object() - ("challenger", "player1") - ("host", "player2") - ("by", "player2") - ("row", 0) - ("column", 1) - ), eosio_assert_message_exception, eosio_assert_message_starts_with("it's not your turn yet")); -} FC_LOG_AND_RETHROW() - -BOOST_AUTO_TEST_SUITE_END() diff --git a/unittests/wasm_tests.cpp b/unittests/wasm_tests.cpp index cc8a2537767..1e3d31b24c9 100644 --- a/unittests/wasm_tests.cpp +++ b/unittests/wasm_tests.cpp @@ -1,35 +1,30 @@ -#include -#include +#include +#include -#include #include -#include -#include #include +#include +#include #include -#include -#include +#include -#include -#include +#include +#include +#include +#include -#include -#include +#include +#include #include - -#include - -#include #include +#include +#include "incbin.h" #include "test_wasts.hpp" #include "test_softfloat_wasts.hpp" -#include -#include - -#include "incbin.h" +#include #ifdef NON_VALIDATING_TEST #define TESTER tester @@ -81,7 +76,7 @@ BOOST_FIXTURE_TEST_CASE( basic_test, TESTER ) try { create_accounts( {N(asserter)} ); produce_block(); - set_code(N(asserter), asserter_wast); + set_code(N(asserter), contracts::asserter_wasm()); produce_blocks(1); transaction_id_type no_assert_id; @@ -140,7 +135,7 @@ BOOST_FIXTURE_TEST_CASE( prove_mem_reset, TESTER ) try { create_accounts( {N(asserter)} ); produce_block(); - set_code(N(asserter), asserter_wast); + set_code(N(asserter), contracts::asserter_wasm()); produce_blocks(1); // repeat the action multiple times, each time the action handler checks for the expected @@ -170,22 +165,22 @@ BOOST_FIXTURE_TEST_CASE( abi_from_variant, TESTER ) try { create_accounts( {N(asserter)} ); produce_block(); - set_code(N(asserter), asserter_wast); - set_abi(N(asserter), asserter_abi); + set_code(N(asserter), contracts::asserter_wasm()); + set_abi(N(asserter), contracts::asserter_abi().data()); produce_blocks(1); - auto resolver = [&,this]( const account_name& name ) -> optional { + auto resolver = [&,this]( const account_name& name ) -> fc::optional { try { - const auto& accnt = this->control->db().get( name ); + const auto& accnt = this->control->db().get( name ); abi_def abi; if (abi_serializer::to_abi(accnt.abi, abi)) { return abi_serializer(abi, abi_serializer_max_time); } - return optional(); + return fc::optional(); } FC_RETHROW_EXCEPTIONS(error, "Failed to find or parse ABI for ${name}", ("name", name)) }; - variant pretty_trx = mutable_variant_object() + fc::variant pretty_trx = mutable_variant_object() ("actions", variants({ mutable_variant_object() ("account", "asserter") @@ -514,69 +509,6 @@ BOOST_FIXTURE_TEST_CASE(misaligned_tests, tester ) try { check_aligned(misaligned_const_ref_wast); } FC_LOG_AND_RETHROW() -// test weighted cpu limit -BOOST_FIXTURE_TEST_CASE(weighted_cpu_limit_tests, tester ) try { -// TODO Increase the robustness of this test. - resource_limits_manager mgr = control->get_mutable_resource_limits_manager(); - create_accounts( {N(f_tests)} ); - create_accounts( {N(acc2)} ); - bool pass = false; - - std::string code = R"=====( -(module - (import "env" "require_auth" (func $require_auth (param i64))) - (import "env" "eosio_assert" (func $eosio_assert (param i32 i32))) - (table 0 anyfunc) - (memory $0 1) - (export "apply" (func $apply)) - (func $i64_trunc_u_f64 (param $0 f64) (result i64) (i64.trunc_u/f64 (get_local $0))) - (func $test (param $0 i64)) - (func $apply (param $0 i64)(param $1 i64)(param $2 i64) - )====="; - for (int i = 0; i < 1024; ++i) { - code += "(call $test (call $i64_trunc_u_f64 (f64.const 1)))\n"; - } - code += "))"; - - produce_blocks(1); - set_code(N(f_tests), code.c_str()); - produce_blocks(10); - - mgr.set_account_limits(N(f_tests), -1, -1, 1); - int count = 0; - while (count < 4) { - signed_transaction trx; - - for (int i = 0; i < 2; ++i) { - action act; - act.account = N(f_tests); - act.name = N() + (i * 16); - act.authorization = vector{{N(f_tests),config::active_name}}; - trx.actions.push_back(act); - } - - set_transaction_headers(trx); - trx.sign(get_private_key( N(f_tests), "active" ), control->get_chain_id()); - - try { - push_transaction(trx, fc::time_point::maximum(), 0); - produce_block(); - BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); - pass = true; - count++; - } catch( eosio::chain::leeway_deadline_exception& ) { - BOOST_REQUIRE_EQUAL(count, 3); - break; - } - BOOST_REQUIRE_EQUAL(true, validate()); - - if (count == 2) { // add a big weight on acc2, making f_tests out of resource - mgr.set_account_limits(N(acc2), -1, -1, 100000000); - } - } - BOOST_REQUIRE_EQUAL(count, 4); -} FC_LOG_AND_RETHROW() - /** * Make sure WASM "start" method is used correctly */ @@ -628,6 +560,23 @@ BOOST_FIXTURE_TEST_CASE( check_entry_behavior_2, TESTER ) try { BOOST_CHECK_EQUAL(transaction_receipt::executed, receipt.status); } FC_LOG_AND_RETHROW() +BOOST_FIXTURE_TEST_CASE( entry_import, TESTER ) try { + create_accounts( {N(enterimport)} ); + produce_block(); + + set_code(N(enterimport), entry_import_wast); + + signed_transaction trx; + action act; + act.account = N(enterimport); + act.name = N(); + act.authorization = vector{{N(enterimport),config::active_name}}; + trx.actions.push_back(act); + + set_transaction_headers(trx); + trx.sign(get_private_key( N(enterimport), "active" ), control->get_chain_id()); + BOOST_CHECK_THROW(push_transaction(trx), abort_called); +} FC_LOG_AND_RETHROW() /** * Ensure we can load a wasm w/o memory @@ -689,45 +638,6 @@ BOOST_FIXTURE_TEST_CASE( check_global_reset, TESTER ) try { BOOST_CHECK_EQUAL(transaction_receipt::executed, receipt.status); } FC_LOG_AND_RETHROW() -BOOST_FIXTURE_TEST_CASE( stl_test, TESTER ) try { - produce_blocks(2); - - create_accounts( {N(stltest), N(alice), N(bob)} ); - produce_block(); - - set_code(N(stltest), stltest_wast); - set_abi(N(stltest), stltest_abi); - produce_blocks(1); - - const auto& accnt = control->db().get( N(stltest) ); - abi_def abi; - BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); - abi_serializer abi_ser(abi, abi_serializer_max_time); - - //send message - { - signed_transaction trx; - action msg_act; - msg_act.account = N(stltest); - msg_act.name = N(message); - msg_act.authorization = {{N(stltest), config::active_name}}; - msg_act.data = abi_ser.variant_to_binary("message", mutable_variant_object() - ("from", "bob") - ("to", "alice") - ("message","Hi Alice!"), - abi_serializer_max_time - ); - trx.actions.push_back(std::move(msg_act)); - - set_transaction_headers(trx); - trx.sign(get_private_key(N(stltest), "active"), control->get_chain_id()); - push_transaction(trx); - produce_block(); - - BOOST_REQUIRE_EQUAL(true, chain_has_transaction(trx.id())); - } -} FC_LOG_AND_RETHROW() /// stltest - //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); @@ -1012,10 +922,10 @@ BOOST_FIXTURE_TEST_CASE(noop, TESTER) try { create_accounts( {N(noop), N(alice)} ); produce_block(); - set_code(N(noop), noop_wast); + set_code(N(noop), contracts::noop_wasm()); - set_abi(N(noop), noop_abi); - const auto& accnt = control->db().get(N(noop)); + set_abi(N(noop), contracts::noop_abi().data()); + const auto& accnt = control->db().get(N(noop)); abi_def abi; BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); abi_serializer abi_ser(abi, abi_serializer_max_time); @@ -1078,7 +988,7 @@ BOOST_FIXTURE_TEST_CASE(noop, TESTER) try { BOOST_FIXTURE_TEST_CASE(eosio_abi, TESTER) try { produce_blocks(2); - const auto& accnt = control->db().get(config::system_account_name); + const auto& accnt = control->db().get(config::system_account_name); abi_def abi; BOOST_REQUIRE_EQUAL(abi_serializer::to_abi(accnt.abi, abi), true); abi_serializer abi_ser(abi, abi_serializer_max_time); @@ -1439,7 +1349,7 @@ BOOST_FIXTURE_TEST_CASE( lotso_stack_4, TESTER ) try { ss << "(local i32)"; ss << " )"; ss << ")"; - BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), fc::exception); + BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), wasm_serialization_error); produce_blocks(1); } } FC_LOG_AND_RETHROW() @@ -1502,7 +1412,7 @@ BOOST_FIXTURE_TEST_CASE( lotso_stack_7, TESTER ) try { ss << "(param i32)"; ss << " )"; ss << ")"; - BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), fc::exception); + BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), wasm_execution_error); produce_blocks(1); } } FC_LOG_AND_RETHROW() @@ -1543,7 +1453,7 @@ BOOST_FIXTURE_TEST_CASE( lotso_stack_9, TESTER ) try { ss << "(local f32)"; ss << " )"; ss << ")"; - BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), fc::exception); + BOOST_CHECK_THROW(set_code(N(stackz), ss.str().c_str()), wasm_execution_error); produce_blocks(1); } } FC_LOG_AND_RETHROW() diff --git a/unittests/whitelist_blacklist_tests.cpp b/unittests/whitelist_blacklist_tests.cpp index 54b011d0e3d..d2734681f60 100644 --- a/unittests/whitelist_blacklist_tests.cpp +++ b/unittests/whitelist_blacklist_tests.cpp @@ -1,16 +1,13 @@ -#include +#include +#include #include #include -#include - #include -#include -#include +#include -#include -#include +#include #ifdef NON_VALIDATING_TEST #define TESTER tester @@ -70,8 +67,8 @@ class whitelist_blacklist_tester { if( !bootstrap ) return; chain->create_accounts({N(eosio.token), N(alice), N(bob), N(charlie)}); - chain->set_code(N(eosio.token), eosio_token_wast); - chain->set_abi(N(eosio.token), eosio_token_abi); + chain->set_code(N(eosio.token), contracts::eosio_token_wasm() ); + chain->set_abi(N(eosio.token), contracts::eosio_token_abi().data() ); chain->push_action( N(eosio.token), N(create), N(eosio.token), mvo() ( "issuer", "eosio.token" ) ( "maximum_supply", "1000000.00 TOK" ) @@ -89,6 +86,7 @@ class whitelist_blacklist_tester { last_produced_block = chain->get_last_produced_block_map(); wdump((last_produced_block)); chain.reset(); + shutdown_called = true; } transaction_trace_ptr transfer( account_name from, account_name to, string quantity = "1.00 TOK" ) { @@ -100,7 +98,9 @@ class whitelist_blacklist_tester { ); } + private: fc::temp_directory tempdir; // Must come before chain + public: fc::optional chain; flat_set sender_bypass_whiteblacklist; flat_set actor_whitelist; @@ -109,6 +109,7 @@ class whitelist_blacklist_tester { flat_set contract_blacklist; flat_set< pair > action_blacklist; map last_produced_block; + bool shutdown_called = false; }; struct transfer_args { @@ -206,13 +207,13 @@ BOOST_AUTO_TEST_CASE( contract_whitelist ) { try { test.chain->produce_blocks(); - test.chain->set_code(N(bob), eosio_token_wast); - test.chain->set_abi(N(bob), eosio_token_abi); + test.chain->set_code(N(bob), contracts::eosio_token_wasm() ); + test.chain->set_abi(N(bob), contracts::eosio_token_abi().data() ); test.chain->produce_blocks(); - test.chain->set_code(N(charlie), eosio_token_wast); - test.chain->set_abi(N(charlie), eosio_token_abi); + test.chain->set_code(N(charlie), contracts::eosio_token_wasm() ); + test.chain->set_abi(N(charlie), contracts::eosio_token_abi().data() ); test.chain->produce_blocks(); @@ -255,13 +256,13 @@ BOOST_AUTO_TEST_CASE( contract_blacklist ) { try { test.chain->produce_blocks(); - test.chain->set_code(N(bob), eosio_token_wast); - test.chain->set_abi(N(bob), eosio_token_abi); + test.chain->set_code(N(bob), contracts::eosio_token_wasm() ); + test.chain->set_abi(N(bob), contracts::eosio_token_abi().data() ); test.chain->produce_blocks(); - test.chain->set_code(N(charlie), eosio_token_wast); - test.chain->set_abi(N(charlie), eosio_token_abi); + test.chain->set_code(N(charlie), contracts::eosio_token_wasm() ); + test.chain->set_abi(N(charlie), contracts::eosio_token_abi().data() ); test.chain->produce_blocks(); @@ -298,13 +299,13 @@ BOOST_AUTO_TEST_CASE( action_blacklist ) { try { test.chain->produce_blocks(); - test.chain->set_code(N(bob), eosio_token_wast); - test.chain->set_abi(N(bob), eosio_token_abi); + test.chain->set_code(N(bob), contracts::eosio_token_wasm() ); + test.chain->set_abi(N(bob), contracts::eosio_token_abi().data() ); test.chain->produce_blocks(); - test.chain->set_code(N(charlie), eosio_token_wast); - test.chain->set_abi(N(charlie), eosio_token_abi); + test.chain->set_code(N(charlie), contracts::eosio_token_wasm() ); + test.chain->set_abi(N(charlie), contracts::eosio_token_abi().data() ); test.chain->produce_blocks(); @@ -331,7 +332,7 @@ BOOST_AUTO_TEST_CASE( blacklist_eosio ) { try { whitelist_blacklist_tester tester1; tester1.init(); tester1.chain->produce_blocks(); - tester1.chain->set_code(config::system_account_name, eosio_token_wast); + tester1.chain->set_code(config::system_account_name, contracts::eosio_token_wasm() ); tester1.chain->produce_blocks(); tester1.shutdown(); tester1.contract_blacklist = {config::system_account_name}; @@ -357,10 +358,10 @@ BOOST_AUTO_TEST_CASE( deferred_blacklist_failure ) { try { whitelist_blacklist_tester tester1; tester1.init(); tester1.chain->produce_blocks(); - tester1.chain->set_code( N(bob), deferred_test_wast ); - tester1.chain->set_abi( N(bob), deferred_test_abi ); - tester1.chain->set_code( N(charlie), deferred_test_wast ); - tester1.chain->set_abi( N(charlie), deferred_test_abi ); + tester1.chain->set_code( N(bob), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(bob), contracts::deferred_test_abi().data() ); + tester1.chain->set_code( N(charlie), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(charlie), contracts::deferred_test_abi().data() ); tester1.chain->produce_blocks(); tester1.chain->push_action( N(bob), N(defercall), N(alice), mvo() @@ -408,10 +409,10 @@ BOOST_AUTO_TEST_CASE( blacklist_onerror ) { try { whitelist_blacklist_tester tester1; tester1.init(); tester1.chain->produce_blocks(); - tester1.chain->set_code( N(bob), deferred_test_wast ); - tester1.chain->set_abi( N(bob), deferred_test_abi ); - tester1.chain->set_code( N(charlie), deferred_test_wast ); - tester1.chain->set_abi( N(charlie), deferred_test_abi ); + tester1.chain->set_code( N(bob), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(bob), contracts::deferred_test_abi().data() ); + tester1.chain->set_code( N(charlie), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(charlie), contracts::deferred_test_abi().data() ); tester1.chain->produce_blocks(); tester1.chain->push_action( N(bob), N(defercall), N(alice), mvo() @@ -444,12 +445,12 @@ BOOST_AUTO_TEST_CASE( actor_blacklist_inline_deferred ) { try { whitelist_blacklist_tester tester1; tester1.init(); tester1.chain->produce_blocks(); - tester1.chain->set_code( N(alice), deferred_test_wast ); - tester1.chain->set_abi( N(alice), deferred_test_abi ); - tester1.chain->set_code( N(bob), deferred_test_wast ); - tester1.chain->set_abi( N(bob), deferred_test_abi ); - tester1.chain->set_code( N(charlie), deferred_test_wast ); - tester1.chain->set_abi( N(charlie), deferred_test_abi ); + tester1.chain->set_code( N(alice), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(alice), contracts::deferred_test_abi().data() ); + tester1.chain->set_code( N(bob), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(bob), contracts::deferred_test_abi().data() ); + tester1.chain->set_code( N(charlie), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(charlie), contracts::deferred_test_abi().data() ); tester1.chain->produce_blocks(); auto auth = authority(eosio::testing::base_tester::get_public_key("alice", "active")); @@ -587,12 +588,12 @@ BOOST_AUTO_TEST_CASE( blacklist_sender_bypass ) { try { whitelist_blacklist_tester tester1; tester1.init(); tester1.chain->produce_blocks(); - tester1.chain->set_code( N(alice), deferred_test_wast ); - tester1.chain->set_abi( N(alice), deferred_test_abi ); - tester1.chain->set_code( N(bob), deferred_test_wast ); - tester1.chain->set_abi( N(bob), deferred_test_abi ); - tester1.chain->set_code( N(charlie), deferred_test_wast ); - tester1.chain->set_abi( N(charlie), deferred_test_abi ); + tester1.chain->set_code( N(alice), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(alice), contracts::deferred_test_abi().data() ); + tester1.chain->set_code( N(bob), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(bob), contracts::deferred_test_abi().data() ); + tester1.chain->set_code( N(charlie), contracts::deferred_test_wasm() ); + tester1.chain->set_abi( N(charlie), contracts::deferred_test_abi().data() ); tester1.chain->produce_blocks(); auto auth = authority(eosio::testing::base_tester::get_public_key("alice", "active"));