diff --git a/Cargo.lock b/Cargo.lock index fe8cb3665..d456c454e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2777,6 +2777,7 @@ dependencies = [ name = "miden-integration-tests" version = "0.1.0" dependencies = [ + "cargo_metadata", "concat-idents", "expect-test", "miden-assembly", diff --git a/Makefile.toml b/Makefile.toml index 2bd332d39..1d2e0759f 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -169,18 +169,30 @@ description = "Install wasm32-unknown-unknown target" command = "rustup" args = ["target", "add", "wasm32-unknown-unknown", "--toolchain", "${CARGO_MAKE_TOOLCHAIN}"] +[tasks.install-wasm-wasi-target] +category = "Test" +description = "Install wasm32-wasi target" +command = "rustup" +args = ["target", "add", "wasm32-wasi", "--toolchain", "${CARGO_MAKE_TOOLCHAIN}"] + [tasks.install-rust-src] category = "Test" description = "Install rust-src component" command = "rustup" args = ["component", "add", "rust-src", "--toolchain", "${CARGO_MAKE_TOOLCHAIN}"] +[tasks.install-cargo-component] +category = "Test" +description = "Install cargo-component extension" +command = "cargo" +args = ["install", "cargo-component"] + [tasks.test-rust] category = "Test" description = "Runs tests written in Rust" command = "rustup" args = ["run", "${CARGO_MAKE_TOOLCHAIN}", "cargo", "test", "@@remove-empty(CARGO_MAKE_CARGO_VERBOSE_FLAGS)", "@@split(CARGO_MAKE_CARGO_BUILD_TEST_FLAGS, )", "${@}"] -dependencies = ["install-wasm-target", "install-rust-src"] +dependencies = ["install-wasm-target", "install-wasm-wasi-target", "install-rust-src", "install-cargo-component"] [tasks.test-filecheck] category = "Test" diff --git a/tests/integration/Cargo.toml b/tests/integration/Cargo.toml index 854acb7f3..9bde2f86b 100644 --- a/tests/integration/Cargo.toml +++ b/tests/integration/Cargo.toml @@ -26,6 +26,7 @@ miden-integration-tests-rust-fib = {path = "../rust-apps/fib"} wasmprinter = "0.2.63" sha2 = "0.10" rustc-demangle = {version = "0.1.19", features = ["std"]} +cargo_metadata = "0.18" [dev-dependencies] proptest.workspace = true diff --git a/tests/integration/expected/sdk_basic_wallet/basic_wallet.wat b/tests/integration/expected/sdk_basic_wallet/basic_wallet.wat new file mode 100644 index 000000000..79e21aeb9 --- /dev/null +++ b/tests/integration/expected/sdk_basic_wallet/basic_wallet.wat @@ -0,0 +1,6379 @@ +(component + (type (;0;) + (instance + (type (;0;) u64) + (export (;1;) "felt" (type (eq 0))) + (export (;2;) "account-id" (type (eq 1))) + (type (;3;) (record (field "asset" 2) (field "amount" u64))) + (export (;4;) "fungible-asset" (type (eq 3))) + (type (;5;) (tuple 1 1 1 1)) + (export (;6;) "word" (type (eq 5))) + (export (;7;) "non-fungible-asset" (type (eq 6))) + (type (;8;) (variant (case "fungible" 4) (case "non-fungible" 7))) + (export (;9;) "asset" (type (eq 8))) + (export (;10;) "tag" (type (eq 1))) + (export (;11;) "recipient" (type (eq 6))) + ) + ) + (import "miden:base/types@1.0.0" (instance (;0;) (type 0))) + (alias export 0 "asset" (type (;1;))) + (alias export 0 "tag" (type (;2;))) + (alias export 0 "recipient" (type (;3;))) + (type (;4;) + (instance + (alias outer 1 1 (type (;0;))) + (export (;1;) "asset" (type (eq 0))) + (alias outer 1 2 (type (;2;))) + (export (;3;) "tag" (type (eq 2))) + (alias outer 1 3 (type (;4;))) + (export (;5;) "recipient" (type (eq 4))) + (type (;6;) (func (param "asset" 1) (result 1))) + (export (;0;) "add-asset" (func (type 6))) + (export (;1;) "remove-asset" (func (type 6))) + (type (;7;) (func (param "asset" 1) (param "tag" 3) (param "recipient" 5))) + (export (;2;) "create-note" (func (type 7))) + ) + ) + (import "miden:base/tx-kernel@1.0.0" (instance (;1;) (type 4))) + (core module (;0;) + (type (;0;) (func (param i32 i64 i64 i64 i64 i32))) + (type (;1;) (func (param i32 i64 i64 i64 i64 i64 i64 i64 i64 i64))) + (type (;2;) (func)) + (type (;3;) (func (param i32 i64 i64 i64 i64))) + (type (;4;) (func (param i32 i32) (result i32))) + (type (;5;) (func (param i32 i32 i32 i32) (result i32))) + (type (;6;) (func (param i32) (result i32))) + (type (;7;) (func (param i32))) + (type (;8;) (func (param i32 i32))) + (type (;9;) (func (param i32 i32 i32) (result i32))) + (import "miden:base/tx-kernel@1.0.0" "add-asset" (func $basic_wallet::bindings::miden::base::tx_kernel::add_asset::wit_import (;0;) (type 0))) + (import "miden:base/tx-kernel@1.0.0" "remove-asset" (func $basic_wallet::bindings::miden::base::tx_kernel::remove_asset::wit_import (;1;) (type 0))) + (import "miden:base/tx-kernel@1.0.0" "create-note" (func $basic_wallet::bindings::miden::base::tx_kernel::create_note::wit_import (;2;) (type 1))) + (func $__wasm_call_ctors (;3;) (type 2)) + (func $miden:basic-wallet/basic-wallet@1.0.0#receive-asset (;4;) (type 3) (param i32 i64 i64 i64 i64) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 5 + global.set $__stack_pointer + call $wit_bindgen::rt::run_ctors_once + local.get 0 + i32.const 0 + i32.ne + local.get 1 + local.get 2 + local.get 3 + i64.const 0 + local.get 0 + select + local.get 4 + i64.const 0 + local.get 0 + select + local.get 5 + i32.const 8 + i32.add + call $basic_wallet::bindings::miden::base::tx_kernel::add_asset::wit_import + local.get 5 + i32.const 48 + i32.add + global.set $__stack_pointer + ) + (func $miden:basic-wallet/basic-wallet@1.0.0#send-asset (;5;) (type 1) (param i32 i64 i64 i64 i64 i64 i64 i64 i64 i64) + (local i32 i64 i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 10 + global.set $__stack_pointer + i64.const 0 + local.set 11 + i32.const 0 + local.set 12 + call $wit_bindgen::rt::run_ctors_once + local.get 0 + i32.const 0 + i32.ne + local.get 1 + local.get 2 + local.get 3 + i64.const 0 + local.get 0 + select + local.get 4 + i64.const 0 + local.get 0 + select + local.get 10 + i32.const 8 + i32.add + call $basic_wallet::bindings::miden::base::tx_kernel::remove_asset::wit_import + block ;; label = @1 + block ;; label = @2 + local.get 10 + i32.load8_u offset=8 + br_if 0 (;@2;) + local.get 10 + i32.const 24 + i32.add + i64.load + local.set 4 + local.get 10 + i32.const 16 + i32.add + i64.load + local.set 3 + i64.const 0 + local.set 2 + br 1 (;@1;) + end + local.get 10 + i32.const 24 + i32.add + i64.load + local.set 4 + local.get 10 + i32.const 16 + i32.add + i64.load + local.set 3 + local.get 10 + i32.const 40 + i32.add + i64.load + local.set 11 + local.get 10 + i32.const 32 + i32.add + i64.load + local.set 2 + i32.const 1 + local.set 12 + end + local.get 12 + local.get 3 + local.get 4 + local.get 2 + local.get 11 + local.get 5 + local.get 6 + local.get 7 + local.get 8 + local.get 9 + call $basic_wallet::bindings::miden::base::tx_kernel::create_note::wit_import + local.get 10 + i32.const 48 + i32.add + global.set $__stack_pointer + ) + (func $__rust_alloc (;6;) (type 4) (param i32 i32) (result i32) + (local i32) + local.get 0 + local.get 1 + call $__rdl_alloc + local.set 2 + local.get 2 + return + ) + (func $__rust_realloc (;7;) (type 5) (param i32 i32 i32 i32) (result i32) + (local i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call $__rdl_realloc + local.set 4 + local.get 4 + return + ) + (func $wit_bindgen::rt::run_ctors_once (;8;) (type 2) + block ;; label = @1 + i32.const 0 + i32.load8_u offset=1048577 + br_if 0 (;@1;) + call $__wasm_call_ctors + i32.const 0 + i32.const 1 + i32.store8 offset=1048577 + end + ) + (func $cabi_realloc (;9;) (type 5) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + br_if 0 (;@3;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + i32.const 0 + i32.load8_u offset=1048576 + drop + local.get 3 + local.get 2 + call $__rust_alloc + local.set 2 + br 1 (;@2;) + end + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call $__rust_realloc + local.set 2 + end + local.get 2 + br_if 0 (;@1;) + unreachable + unreachable + end + local.get 2 + ) + (func $__rdl_alloc (;10;) (type 4) (param i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.const 8 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + local.get 0 + i32.le_u + br_if 1 (;@1;) + end + local.get 1 + local.get 0 + call $aligned_alloc + return + end + local.get 0 + call $malloc + ) + (func $__rdl_realloc (;11;) (type 5) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + local.get 2 + i32.const 8 + i32.gt_u + br_if 0 (;@2;) + local.get 2 + local.get 3 + i32.le_u + br_if 1 (;@1;) + end + block ;; label = @2 + local.get 2 + local.get 3 + call $aligned_alloc + local.tee 2 + br_if 0 (;@2;) + i32.const 0 + return + end + local.get 2 + local.get 0 + local.get 1 + local.get 3 + local.get 1 + local.get 3 + i32.lt_u + select + call $memcpy + local.set 3 + local.get 0 + call $free + local.get 3 + return + end + local.get 0 + local.get 3 + call $realloc + ) + (func $malloc (;12;) (type 6) (param i32) (result i32) + local.get 0 + call $dlmalloc + ) + (func $dlmalloc (;13;) (type 6) (param i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 1 + global.set $__stack_pointer + block ;; label = @1 + i32.const 0 + i32.load offset=1048604 + local.tee 2 + br_if 0 (;@1;) + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1049052 + local.tee 3 + i32.eqz + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1049056 + local.set 4 + br 1 (;@2;) + end + i32.const 0 + i64.const -1 + i64.store offset=1049064 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049056 align=4 + i32.const 0 + local.get 1 + i32.const 8 + i32.add + i32.const -16 + i32.and + i32.const 1431655768 + i32.xor + local.tee 3 + i32.store offset=1049052 + i32.const 0 + i32.const 0 + i32.store offset=1049072 + i32.const 0 + i32.const 0 + i32.store offset=1049024 + i32.const 65536 + local.set 4 + end + i32.const 0 + local.set 2 + i32.const 1114112 + i32.const 1049088 + local.get 4 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.const 1114112 + select + i32.const 1049088 + i32.sub + local.tee 5 + i32.const 89 + i32.lt_u + br_if 0 (;@1;) + i32.const 0 + local.set 4 + i32.const 0 + local.get 5 + i32.store offset=1049032 + i32.const 0 + i32.const 1049088 + i32.store offset=1049028 + i32.const 0 + i32.const 1049088 + i32.store offset=1048596 + i32.const 0 + local.get 3 + i32.store offset=1048616 + i32.const 0 + i32.const -1 + i32.store offset=1048612 + loop ;; label = @2 + local.get 4 + i32.const 1048640 + i32.add + local.get 4 + i32.const 1048628 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1048620 + i32.add + local.tee 6 + i32.store + local.get 4 + i32.const 1048632 + i32.add + local.get 6 + i32.store + local.get 4 + i32.const 1048648 + i32.add + local.get 4 + i32.const 1048636 + i32.add + local.tee 6 + i32.store + local.get 6 + local.get 3 + i32.store + local.get 4 + i32.const 1048656 + i32.add + local.get 4 + i32.const 1048644 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 6 + i32.store + local.get 4 + i32.const 1048652 + i32.add + local.get 3 + i32.store + local.get 4 + i32.const 32 + i32.add + local.tee 4 + i32.const 256 + i32.ne + br_if 0 (;@2;) + end + i32.const 1049088 + i32.const -8 + i32.const 1049088 + i32.sub + i32.const 15 + i32.and + i32.const 0 + i32.const 1049088 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 2 + i32.const 4 + i32.add + local.get 5 + i32.const -56 + i32.add + local.tee 3 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 2 + i32.store offset=1048604 + i32.const 1049088 + local.get 3 + i32.add + i32.const 56 + i32.store offset=4 + end + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + local.get 0 + i32.const 236 + i32.gt_u + br_if 0 (;@12;) + block ;; label = @13 + i32.const 0 + i32.load offset=1048580 + local.tee 7 + i32.const 16 + local.get 0 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 0 + i32.const 11 + i32.lt_u + select + local.tee 5 + i32.const 3 + i32.shr_u + local.tee 3 + i32.shr_u + local.tee 4 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@13;) + block ;; label = @14 + block ;; label = @15 + local.get 4 + i32.const 1 + i32.and + local.get 3 + i32.or + i32.const 1 + i32.xor + local.tee 6 + i32.const 3 + i32.shl + local.tee 3 + i32.const 1048620 + i32.add + local.tee 4 + local.get 3 + i32.const 1048628 + i32.add + i32.load + local.tee 3 + i32.load offset=8 + local.tee 5 + i32.ne + br_if 0 (;@15;) + i32.const 0 + local.get 7 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048580 + br 1 (;@14;) + end + local.get 4 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 4 + i32.store offset=12 + end + local.get 3 + i32.const 8 + i32.add + local.set 4 + local.get 3 + local.get 6 + i32.const 3 + i32.shl + local.tee 6 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + local.get 6 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 12 (;@1;) + end + local.get 5 + i32.const 0 + i32.load offset=1048588 + local.tee 8 + i32.le_u + br_if 1 (;@11;) + block ;; label = @13 + local.get 4 + i32.eqz + br_if 0 (;@13;) + block ;; label = @14 + block ;; label = @15 + local.get 4 + local.get 3 + i32.shl + i32.const 2 + local.get 3 + i32.shl + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.or + i32.and + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.ctz + local.tee 3 + i32.const 3 + i32.shl + local.tee 4 + i32.const 1048620 + i32.add + local.tee 6 + local.get 4 + i32.const 1048628 + i32.add + i32.load + local.tee 4 + i32.load offset=8 + local.tee 0 + i32.ne + br_if 0 (;@15;) + i32.const 0 + local.get 7 + i32.const -2 + local.get 3 + i32.rotl + i32.and + local.tee 7 + i32.store offset=1048580 + br 1 (;@14;) + end + local.get 6 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 6 + i32.store offset=12 + end + local.get 4 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 4 + local.get 3 + i32.const 3 + i32.shl + local.tee 3 + i32.add + local.get 3 + local.get 5 + i32.sub + local.tee 6 + i32.store + local.get 4 + local.get 5 + i32.add + local.tee 0 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @14 + local.get 8 + i32.eqz + br_if 0 (;@14;) + local.get 8 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1048600 + local.set 3 + block ;; label = @15 + block ;; label = @16 + local.get 7 + i32.const 1 + local.get 8 + i32.const 3 + i32.shr_u + i32.shl + local.tee 9 + i32.and + br_if 0 (;@16;) + i32.const 0 + local.get 7 + local.get 9 + i32.or + i32.store offset=1048580 + local.get 5 + local.set 9 + br 1 (;@15;) + end + local.get 5 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 3 + i32.store offset=12 + local.get 5 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 9 + i32.store offset=8 + end + local.get 4 + i32.const 8 + i32.add + local.set 4 + i32.const 0 + local.get 0 + i32.store offset=1048600 + i32.const 0 + local.get 6 + i32.store offset=1048588 + br 12 (;@1;) + end + i32.const 0 + i32.load offset=1048584 + local.tee 10 + i32.eqz + br_if 1 (;@11;) + local.get 10 + i32.const 0 + local.get 10 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + i32.load + local.tee 0 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.set 3 + local.get 0 + local.set 6 + block ;; label = @13 + loop ;; label = @14 + block ;; label = @15 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@15;) + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 2 (;@13;) + end + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 6 + local.get 3 + local.get 6 + local.get 3 + i32.lt_u + local.tee 6 + select + local.set 3 + local.get 4 + local.get 0 + local.get 6 + select + local.set 0 + local.get 4 + local.set 6 + br 0 (;@14;) + end + end + local.get 0 + i32.load offset=24 + local.set 11 + block ;; label = @13 + local.get 0 + i32.load offset=12 + local.tee 9 + local.get 0 + i32.eq + br_if 0 (;@13;) + local.get 0 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 9 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 9 + i32.store offset=12 + br 11 (;@2;) + end + block ;; label = @13 + local.get 0 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 0 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 3 (;@10;) + local.get 0 + i32.const 16 + i32.add + local.set 6 + end + loop ;; label = @13 + local.get 6 + local.set 2 + local.get 4 + local.tee 9 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 9 + i32.const 16 + i32.add + local.set 6 + local.get 9 + i32.load offset=16 + local.tee 4 + br_if 0 (;@13;) + end + local.get 2 + i32.const 0 + i32.store + br 10 (;@2;) + end + i32.const -1 + local.set 5 + local.get 0 + i32.const -65 + i32.gt_u + br_if 0 (;@11;) + local.get 0 + i32.const 19 + i32.add + local.tee 4 + i32.const -16 + i32.and + local.set 5 + i32.const 0 + i32.load offset=1048584 + local.tee 10 + i32.eqz + br_if 0 (;@11;) + i32.const 0 + local.set 8 + block ;; label = @12 + local.get 5 + i32.const 256 + i32.lt_u + br_if 0 (;@12;) + i32.const 31 + local.set 8 + local.get 5 + i32.const 16777215 + i32.gt_u + br_if 0 (;@12;) + local.get 5 + i32.const 38 + local.get 4 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 8 + end + i32.const 0 + local.get 5 + i32.sub + local.set 3 + block ;; label = @12 + block ;; label = @13 + block ;; label = @14 + block ;; label = @15 + local.get 8 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + i32.load + local.tee 6 + br_if 0 (;@15;) + i32.const 0 + local.set 4 + i32.const 0 + local.set 9 + br 1 (;@14;) + end + i32.const 0 + local.set 4 + local.get 5 + i32.const 0 + i32.const 25 + local.get 8 + i32.const 1 + i32.shr_u + i32.sub + local.get 8 + i32.const 31 + i32.eq + select + i32.shl + local.set 0 + i32.const 0 + local.set 9 + loop ;; label = @15 + block ;; label = @16 + local.get 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 7 + local.get 3 + i32.ge_u + br_if 0 (;@16;) + local.get 7 + local.set 3 + local.get 6 + local.set 9 + local.get 7 + br_if 0 (;@16;) + i32.const 0 + local.set 3 + local.get 6 + local.set 9 + local.get 6 + local.set 4 + br 3 (;@13;) + end + local.get 4 + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 7 + local.get 7 + local.get 6 + local.get 0 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + i32.load + local.tee 6 + i32.eq + select + local.get 4 + local.get 7 + select + local.set 4 + local.get 0 + i32.const 1 + i32.shl + local.set 0 + local.get 6 + br_if 0 (;@15;) + end + end + block ;; label = @14 + local.get 4 + local.get 9 + i32.or + br_if 0 (;@14;) + i32.const 0 + local.set 9 + i32.const 2 + local.get 8 + i32.shl + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.or + local.get 10 + i32.and + local.tee 4 + i32.eqz + br_if 3 (;@11;) + local.get 4 + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + i32.load + local.set 4 + end + local.get 4 + i32.eqz + br_if 1 (;@12;) + end + loop ;; label = @13 + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 7 + local.get 3 + i32.lt_u + local.set 0 + block ;; label = @14 + local.get 4 + i32.load offset=16 + local.tee 6 + br_if 0 (;@14;) + local.get 4 + i32.const 20 + i32.add + i32.load + local.set 6 + end + local.get 7 + local.get 3 + local.get 0 + select + local.set 3 + local.get 4 + local.get 9 + local.get 0 + select + local.set 9 + local.get 6 + local.set 4 + local.get 6 + br_if 0 (;@13;) + end + end + local.get 9 + i32.eqz + br_if 0 (;@11;) + local.get 3 + i32.const 0 + i32.load offset=1048588 + local.get 5 + i32.sub + i32.ge_u + br_if 0 (;@11;) + local.get 9 + i32.load offset=24 + local.set 2 + block ;; label = @12 + local.get 9 + i32.load offset=12 + local.tee 0 + local.get 9 + i32.eq + br_if 0 (;@12;) + local.get 9 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 0 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 0 + i32.store offset=12 + br 9 (;@3;) + end + block ;; label = @12 + local.get 9 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@12;) + local.get 9 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 3 (;@9;) + local.get 9 + i32.const 16 + i32.add + local.set 6 + end + loop ;; label = @12 + local.get 6 + local.set 7 + local.get 4 + local.tee 0 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@12;) + local.get 0 + i32.const 16 + i32.add + local.set 6 + local.get 0 + i32.load offset=16 + local.tee 4 + br_if 0 (;@12;) + end + local.get 7 + i32.const 0 + i32.store + br 8 (;@3;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1048588 + local.tee 4 + local.get 5 + i32.lt_u + br_if 0 (;@11;) + i32.const 0 + i32.load offset=1048600 + local.set 3 + block ;; label = @12 + block ;; label = @13 + local.get 4 + local.get 5 + i32.sub + local.tee 6 + i32.const 16 + i32.lt_u + br_if 0 (;@13;) + local.get 3 + local.get 5 + i32.add + local.tee 0 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 4 + i32.add + local.get 6 + i32.store + local.get 3 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + br 1 (;@12;) + end + local.get 3 + local.get 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 0 + i32.const 0 + local.set 6 + end + i32.const 0 + local.get 6 + i32.store offset=1048588 + i32.const 0 + local.get 0 + i32.store offset=1048600 + local.get 3 + i32.const 8 + i32.add + local.set 4 + br 10 (;@1;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1048592 + local.tee 6 + local.get 5 + i32.le_u + br_if 0 (;@11;) + local.get 2 + local.get 5 + i32.add + local.tee 4 + local.get 6 + local.get 5 + i32.sub + local.tee 3 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048604 + i32.const 0 + local.get 3 + i32.store offset=1048592 + local.get 2 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 2 + i32.const 8 + i32.add + local.set 4 + br 10 (;@1;) + end + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1049052 + i32.eqz + br_if 0 (;@12;) + i32.const 0 + i32.load offset=1049060 + local.set 3 + br 1 (;@11;) + end + i32.const 0 + i64.const -1 + i64.store offset=1049064 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049056 align=4 + i32.const 0 + local.get 1 + i32.const 12 + i32.add + i32.const -16 + i32.and + i32.const 1431655768 + i32.xor + i32.store offset=1049052 + i32.const 0 + i32.const 0 + i32.store offset=1049072 + i32.const 0 + i32.const 0 + i32.store offset=1049024 + i32.const 65536 + local.set 3 + end + i32.const 0 + local.set 4 + block ;; label = @11 + local.get 3 + local.get 5 + i32.const 71 + i32.add + local.tee 8 + i32.add + local.tee 0 + i32.const 0 + local.get 3 + i32.sub + local.tee 7 + i32.and + local.tee 9 + local.get 5 + i32.gt_u + br_if 0 (;@11;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + br 10 (;@1;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1049020 + local.tee 4 + i32.eqz + br_if 0 (;@11;) + block ;; label = @12 + i32.const 0 + i32.load offset=1049012 + local.tee 3 + local.get 9 + i32.add + local.tee 10 + local.get 3 + i32.le_u + br_if 0 (;@12;) + local.get 10 + local.get 4 + i32.le_u + br_if 1 (;@11;) + end + i32.const 0 + local.set 4 + i32.const 0 + i32.const 48 + i32.store offset=1049076 + br 10 (;@1;) + end + i32.const 0 + i32.load8_u offset=1049024 + i32.const 4 + i32.and + br_if 4 (;@6;) + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + local.get 2 + i32.eqz + br_if 0 (;@13;) + i32.const 1049028 + local.set 4 + loop ;; label = @14 + block ;; label = @15 + local.get 4 + i32.load + local.tee 3 + local.get 2 + i32.gt_u + br_if 0 (;@15;) + local.get 3 + local.get 4 + i32.load offset=4 + i32.add + local.get 2 + i32.gt_u + br_if 3 (;@12;) + end + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@14;) + end + end + i32.const 0 + call $sbrk + local.tee 0 + i32.const -1 + i32.eq + br_if 5 (;@7;) + local.get 9 + local.set 7 + block ;; label = @13 + i32.const 0 + i32.load offset=1049056 + local.tee 4 + i32.const -1 + i32.add + local.tee 3 + local.get 0 + i32.and + i32.eqz + br_if 0 (;@13;) + local.get 9 + local.get 0 + i32.sub + local.get 3 + local.get 0 + i32.add + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.add + local.set 7 + end + local.get 7 + local.get 5 + i32.le_u + br_if 5 (;@7;) + local.get 7 + i32.const 2147483646 + i32.gt_u + br_if 5 (;@7;) + block ;; label = @13 + i32.const 0 + i32.load offset=1049020 + local.tee 4 + i32.eqz + br_if 0 (;@13;) + i32.const 0 + i32.load offset=1049012 + local.tee 3 + local.get 7 + i32.add + local.tee 6 + local.get 3 + i32.le_u + br_if 6 (;@7;) + local.get 6 + local.get 4 + i32.gt_u + br_if 6 (;@7;) + end + local.get 7 + call $sbrk + local.tee 4 + local.get 0 + i32.ne + br_if 1 (;@11;) + br 7 (;@5;) + end + local.get 0 + local.get 6 + i32.sub + local.get 7 + i32.and + local.tee 7 + i32.const 2147483646 + i32.gt_u + br_if 4 (;@7;) + local.get 7 + call $sbrk + local.tee 0 + local.get 4 + i32.load + local.get 4 + i32.load offset=4 + i32.add + i32.eq + br_if 3 (;@8;) + local.get 0 + local.set 4 + end + block ;; label = @11 + local.get 4 + i32.const -1 + i32.eq + br_if 0 (;@11;) + local.get 5 + i32.const 72 + i32.add + local.get 7 + i32.le_u + br_if 0 (;@11;) + block ;; label = @12 + local.get 8 + local.get 7 + i32.sub + i32.const 0 + i32.load offset=1049060 + local.tee 3 + i32.add + i32.const 0 + local.get 3 + i32.sub + i32.and + local.tee 3 + i32.const 2147483646 + i32.le_u + br_if 0 (;@12;) + local.get 4 + local.set 0 + br 7 (;@5;) + end + block ;; label = @12 + local.get 3 + call $sbrk + i32.const -1 + i32.eq + br_if 0 (;@12;) + local.get 3 + local.get 7 + i32.add + local.set 7 + local.get 4 + local.set 0 + br 7 (;@5;) + end + i32.const 0 + local.get 7 + i32.sub + call $sbrk + drop + br 4 (;@7;) + end + local.get 4 + local.set 0 + local.get 4 + i32.const -1 + i32.ne + br_if 5 (;@5;) + br 3 (;@7;) + end + i32.const 0 + local.set 9 + br 7 (;@2;) + end + i32.const 0 + local.set 0 + br 5 (;@3;) + end + local.get 0 + i32.const -1 + i32.ne + br_if 2 (;@5;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049024 + i32.const 4 + i32.or + i32.store offset=1049024 + end + local.get 9 + i32.const 2147483646 + i32.gt_u + br_if 1 (;@4;) + local.get 9 + call $sbrk + local.set 0 + i32.const 0 + call $sbrk + local.set 4 + local.get 0 + i32.const -1 + i32.eq + br_if 1 (;@4;) + local.get 4 + i32.const -1 + i32.eq + br_if 1 (;@4;) + local.get 0 + local.get 4 + i32.ge_u + br_if 1 (;@4;) + local.get 4 + local.get 0 + i32.sub + local.tee 7 + local.get 5 + i32.const 56 + i32.add + i32.le_u + br_if 1 (;@4;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049012 + local.get 7 + i32.add + local.tee 4 + i32.store offset=1049012 + block ;; label = @5 + local.get 4 + i32.const 0 + i32.load offset=1049016 + i32.le_u + br_if 0 (;@5;) + i32.const 0 + local.get 4 + i32.store offset=1049016 + end + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + i32.const 0 + i32.load offset=1048604 + local.tee 3 + i32.eqz + br_if 0 (;@8;) + i32.const 1049028 + local.set 4 + loop ;; label = @9 + local.get 0 + local.get 4 + i32.load + local.tee 6 + local.get 4 + i32.load offset=4 + local.tee 9 + i32.add + i32.eq + br_if 2 (;@7;) + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@9;) + br 3 (;@6;) + end + end + block ;; label = @8 + block ;; label = @9 + i32.const 0 + i32.load offset=1048596 + local.tee 4 + i32.eqz + br_if 0 (;@9;) + local.get 0 + local.get 4 + i32.ge_u + br_if 1 (;@8;) + end + i32.const 0 + local.get 0 + i32.store offset=1048596 + end + i32.const 0 + local.set 4 + i32.const 0 + local.get 7 + i32.store offset=1049032 + i32.const 0 + local.get 0 + i32.store offset=1049028 + i32.const 0 + i32.const -1 + i32.store offset=1048612 + i32.const 0 + i32.const 0 + i32.load offset=1049052 + i32.store offset=1048616 + i32.const 0 + i32.const 0 + i32.store offset=1049040 + loop ;; label = @8 + local.get 4 + i32.const 1048640 + i32.add + local.get 4 + i32.const 1048628 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1048620 + i32.add + local.tee 6 + i32.store + local.get 4 + i32.const 1048632 + i32.add + local.get 6 + i32.store + local.get 4 + i32.const 1048648 + i32.add + local.get 4 + i32.const 1048636 + i32.add + local.tee 6 + i32.store + local.get 6 + local.get 3 + i32.store + local.get 4 + i32.const 1048656 + i32.add + local.get 4 + i32.const 1048644 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 6 + i32.store + local.get 4 + i32.const 1048652 + i32.add + local.get 3 + i32.store + local.get 4 + i32.const 32 + i32.add + local.tee 4 + i32.const 256 + i32.ne + br_if 0 (;@8;) + end + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 3 + local.get 7 + i32.const -56 + i32.add + local.tee 6 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 3 + i32.store offset=1048604 + local.get 0 + local.get 6 + i32.add + i32.const 56 + i32.store offset=4 + br 2 (;@5;) + end + local.get 4 + i32.load8_u offset=12 + i32.const 8 + i32.and + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.lt_u + br_if 0 (;@6;) + local.get 3 + local.get 0 + i32.ge_u + br_if 0 (;@6;) + local.get 3 + i32.const -8 + local.get 3 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 3 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 6 + i32.add + local.tee 0 + i32.const 0 + i32.load offset=1048592 + local.get 7 + i32.add + local.tee 2 + local.get 6 + i32.sub + local.tee 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 4 + local.get 9 + local.get 7 + i32.add + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 6 + i32.store offset=1048592 + i32.const 0 + local.get 0 + i32.store offset=1048604 + local.get 3 + local.get 2 + i32.add + i32.const 56 + i32.store offset=4 + br 1 (;@5;) + end + block ;; label = @6 + local.get 0 + i32.const 0 + i32.load offset=1048596 + local.tee 9 + i32.ge_u + br_if 0 (;@6;) + i32.const 0 + local.get 0 + i32.store offset=1048596 + local.get 0 + local.set 9 + end + local.get 0 + local.get 7 + i32.add + local.set 6 + i32.const 1049028 + local.set 4 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + loop ;; label = @13 + local.get 4 + i32.load + local.get 6 + i32.eq + br_if 1 (;@12;) + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@13;) + br 2 (;@11;) + end + end + local.get 4 + i32.load8_u offset=12 + i32.const 8 + i32.and + i32.eqz + br_if 1 (;@10;) + end + i32.const 1049028 + local.set 4 + loop ;; label = @11 + block ;; label = @12 + local.get 4 + i32.load + local.tee 6 + local.get 3 + i32.gt_u + br_if 0 (;@12;) + local.get 6 + local.get 4 + i32.load offset=4 + i32.add + local.tee 6 + local.get 3 + i32.gt_u + br_if 3 (;@9;) + end + local.get 4 + i32.load offset=8 + local.set 4 + br 0 (;@11;) + end + end + local.get 4 + local.get 0 + i32.store + local.get 4 + local.get 4 + i32.load offset=4 + local.get 7 + i32.add + i32.store offset=4 + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + i32.add + local.tee 2 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + i32.const -8 + local.get 6 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 6 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + i32.add + local.tee 7 + local.get 2 + local.get 5 + i32.add + local.tee 5 + i32.sub + local.set 4 + block ;; label = @10 + local.get 7 + local.get 3 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 5 + i32.store offset=1048604 + i32.const 0 + i32.const 0 + i32.load offset=1048592 + local.get 4 + i32.add + local.tee 4 + i32.store offset=1048592 + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + br 3 (;@7;) + end + block ;; label = @10 + local.get 7 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 5 + i32.store offset=1048600 + i32.const 0 + i32.const 0 + i32.load offset=1048588 + local.get 4 + i32.add + local.tee 4 + i32.store offset=1048588 + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 5 + local.get 4 + i32.add + local.get 4 + i32.store + br 3 (;@7;) + end + block ;; label = @10 + local.get 7 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.const 1 + i32.ne + br_if 0 (;@10;) + local.get 3 + i32.const -8 + i32.and + local.set 8 + block ;; label = @11 + block ;; label = @12 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@12;) + local.get 7 + i32.load offset=8 + local.tee 6 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 9 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 0 + i32.eq + drop + block ;; label = @13 + local.get 7 + i32.load offset=12 + local.tee 3 + local.get 6 + i32.ne + br_if 0 (;@13;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 9 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@11;) + end + local.get 3 + local.get 0 + i32.eq + drop + local.get 3 + local.get 6 + i32.store offset=8 + local.get 6 + local.get 3 + i32.store offset=12 + br 1 (;@11;) + end + local.get 7 + i32.load offset=24 + local.set 10 + block ;; label = @12 + block ;; label = @13 + local.get 7 + i32.load offset=12 + local.tee 0 + local.get 7 + i32.eq + br_if 0 (;@13;) + local.get 7 + i32.load offset=8 + local.tee 3 + local.get 9 + i32.lt_u + drop + local.get 0 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 0 + i32.store offset=12 + br 1 (;@12;) + end + block ;; label = @13 + local.get 7 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + local.get 7 + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + i32.const 0 + local.set 0 + br 1 (;@12;) + end + loop ;; label = @13 + local.get 3 + local.set 9 + local.get 6 + local.tee 0 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + local.get 0 + i32.const 16 + i32.add + local.set 3 + local.get 0 + i32.load offset=16 + local.tee 6 + br_if 0 (;@13;) + end + local.get 9 + i32.const 0 + i32.store + end + local.get 10 + i32.eqz + br_if 0 (;@11;) + block ;; label = @12 + block ;; label = @13 + local.get 7 + local.get 7 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@13;) + local.get 3 + local.get 0 + i32.store + local.get 0 + br_if 1 (;@12;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@11;) + end + local.get 10 + i32.const 16 + i32.const 20 + local.get 10 + i32.load offset=16 + local.get 7 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 1 (;@11;) + end + local.get 0 + local.get 10 + i32.store offset=24 + block ;; label = @12 + local.get 7 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@12;) + local.get 0 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 0 + i32.store offset=24 + end + local.get 7 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 0 (;@11;) + local.get 0 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 0 + i32.store offset=24 + end + local.get 8 + local.get 4 + i32.add + local.set 4 + local.get 7 + local.get 8 + i32.add + local.tee 7 + i32.load offset=4 + local.set 3 + end + local.get 7 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + local.get 5 + local.get 4 + i32.add + local.get 4 + i32.store + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @10 + local.get 4 + i32.const 255 + i32.gt_u + br_if 0 (;@10;) + local.get 4 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 3 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048580 + local.tee 6 + i32.const 1 + local.get 4 + i32.const 3 + i32.shr_u + i32.shl + local.tee 4 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 6 + local.get 4 + i32.or + i32.store offset=1048580 + local.get 3 + local.set 4 + br 1 (;@11;) + end + local.get 3 + i32.load offset=8 + local.set 4 + end + local.get 4 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 3 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + br 3 (;@7;) + end + i32.const 31 + local.set 3 + block ;; label = @10 + local.get 4 + i32.const 16777215 + i32.gt_u + br_if 0 (;@10;) + local.get 4 + i32.const 38 + local.get 4 + i32.const 8 + i32.shr_u + i32.clz + local.tee 3 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 3 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 3 + end + local.get 5 + local.get 3 + i32.store offset=28 + local.get 5 + i64.const 0 + i64.store offset=16 align=4 + local.get 3 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 6 + block ;; label = @10 + i32.const 0 + i32.load offset=1048584 + local.tee 0 + i32.const 1 + local.get 3 + i32.shl + local.tee 9 + i32.and + br_if 0 (;@10;) + local.get 6 + local.get 5 + i32.store + i32.const 0 + local.get 0 + local.get 9 + i32.or + i32.store offset=1048584 + local.get 5 + local.get 6 + i32.store offset=24 + local.get 5 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 5 + i32.store offset=12 + br 3 (;@7;) + end + local.get 4 + i32.const 0 + i32.const 25 + local.get 3 + i32.const 1 + i32.shr_u + i32.sub + local.get 3 + i32.const 31 + i32.eq + select + i32.shl + local.set 3 + local.get 6 + i32.load + local.set 0 + loop ;; label = @10 + local.get 0 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 4 + i32.eq + br_if 2 (;@8;) + local.get 3 + i32.const 29 + i32.shr_u + local.set 0 + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 6 + local.get 0 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 9 + i32.load + local.tee 0 + br_if 0 (;@10;) + end + local.get 9 + local.get 5 + i32.store + local.get 5 + local.get 6 + i32.store offset=24 + local.get 5 + local.get 5 + i32.store offset=12 + local.get 5 + local.get 5 + i32.store offset=8 + br 2 (;@7;) + end + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 2 + local.get 7 + i32.const -56 + i32.add + local.tee 9 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 9 + i32.add + i32.const 56 + i32.store offset=4 + local.get 3 + local.get 6 + i32.const 55 + local.get 6 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 6 + i32.const -55 + i32.add + i32.const 15 + i32.and + select + i32.add + i32.const -63 + i32.add + local.tee 9 + local.get 9 + local.get 3 + i32.const 16 + i32.add + i32.lt_u + select + local.tee 9 + i32.const 35 + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 2 + i32.store offset=1048604 + local.get 9 + i32.const 16 + i32.add + i32.const 0 + i64.load offset=1049036 align=4 + i64.store align=4 + local.get 9 + i32.const 0 + i64.load offset=1049028 align=4 + i64.store offset=8 align=4 + i32.const 0 + local.get 9 + i32.const 8 + i32.add + i32.store offset=1049036 + i32.const 0 + local.get 7 + i32.store offset=1049032 + i32.const 0 + local.get 0 + i32.store offset=1049028 + i32.const 0 + i32.const 0 + i32.store offset=1049040 + local.get 9 + i32.const 36 + i32.add + local.set 4 + loop ;; label = @9 + local.get 4 + i32.const 7 + i32.store + local.get 4 + i32.const 4 + i32.add + local.tee 4 + local.get 6 + i32.lt_u + br_if 0 (;@9;) + end + local.get 9 + local.get 3 + i32.eq + br_if 3 (;@5;) + local.get 9 + local.get 9 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 9 + local.get 9 + local.get 3 + i32.sub + local.tee 0 + i32.store + local.get 3 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @9 + local.get 0 + i32.const 255 + i32.gt_u + br_if 0 (;@9;) + local.get 0 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 4 + block ;; label = @10 + block ;; label = @11 + i32.const 0 + i32.load offset=1048580 + local.tee 6 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@11;) + i32.const 0 + local.get 6 + local.get 0 + i32.or + i32.store offset=1048580 + local.get 4 + local.set 6 + br 1 (;@10;) + end + local.get 4 + i32.load offset=8 + local.set 6 + end + local.get 6 + local.get 3 + i32.store offset=12 + local.get 4 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 4 + i32.store offset=12 + local.get 3 + local.get 6 + i32.store offset=8 + br 4 (;@5;) + end + i32.const 31 + local.set 4 + block ;; label = @9 + local.get 0 + i32.const 16777215 + i32.gt_u + br_if 0 (;@9;) + local.get 0 + i32.const 38 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + local.get 3 + local.get 4 + i32.store offset=28 + local.get 3 + i64.const 0 + i64.store offset=16 align=4 + local.get 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 6 + block ;; label = @9 + i32.const 0 + i32.load offset=1048584 + local.tee 9 + i32.const 1 + local.get 4 + i32.shl + local.tee 7 + i32.and + br_if 0 (;@9;) + local.get 6 + local.get 3 + i32.store + i32.const 0 + local.get 9 + local.get 7 + i32.or + i32.store offset=1048584 + local.get 3 + local.get 6 + i32.store offset=24 + local.get 3 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 3 + i32.store offset=12 + br 4 (;@5;) + end + local.get 0 + i32.const 0 + i32.const 25 + local.get 4 + i32.const 1 + i32.shr_u + i32.sub + local.get 4 + i32.const 31 + i32.eq + select + i32.shl + local.set 4 + local.get 6 + i32.load + local.set 9 + loop ;; label = @9 + local.get 9 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 0 + i32.eq + br_if 3 (;@6;) + local.get 4 + i32.const 29 + i32.shr_u + local.set 9 + local.get 4 + i32.const 1 + i32.shl + local.set 4 + local.get 6 + local.get 9 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 7 + i32.load + local.tee 9 + br_if 0 (;@9;) + end + local.get 7 + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + local.get 3 + local.get 3 + i32.store offset=12 + local.get 3 + local.get 3 + i32.store offset=8 + br 3 (;@5;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 5 + i32.store offset=12 + local.get 6 + local.get 5 + i32.store offset=8 + local.get 5 + i32.const 0 + i32.store offset=24 + local.get 5 + local.get 6 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + end + local.get 2 + i32.const 8 + i32.add + local.set 4 + br 5 (;@1;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.store offset=12 + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + i32.const 0 + i32.store offset=24 + local.get 3 + local.get 6 + i32.store offset=12 + local.get 3 + local.get 4 + i32.store offset=8 + end + i32.const 0 + i32.load offset=1048592 + local.tee 4 + local.get 5 + i32.le_u + br_if 0 (;@4;) + i32.const 0 + i32.load offset=1048604 + local.tee 3 + local.get 5 + i32.add + local.tee 6 + local.get 4 + local.get 5 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 6 + i32.store offset=1048604 + local.get 3 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + i32.const 8 + i32.add + local.set 4 + br 3 (;@1;) + end + i32.const 0 + local.set 4 + i32.const 0 + i32.const 48 + i32.store offset=1049076 + br 2 (;@1;) + end + block ;; label = @3 + local.get 2 + i32.eqz + br_if 0 (;@3;) + block ;; label = @4 + block ;; label = @5 + local.get 9 + local.get 9 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 4 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 4 + local.get 0 + i32.store + local.get 0 + br_if 1 (;@4;) + i32.const 0 + local.get 10 + i32.const -2 + local.get 6 + i32.rotl + i32.and + local.tee 10 + i32.store offset=1048584 + br 2 (;@3;) + end + local.get 2 + i32.const 16 + i32.const 20 + local.get 2 + i32.load offset=16 + local.get 9 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 1 (;@3;) + end + local.get 0 + local.get 2 + i32.store offset=24 + block ;; label = @4 + local.get 9 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 0 (;@4;) + local.get 0 + local.get 4 + i32.store offset=16 + local.get 4 + local.get 0 + i32.store offset=24 + end + local.get 9 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 0 (;@3;) + local.get 0 + i32.const 20 + i32.add + local.get 4 + i32.store + local.get 4 + local.get 0 + i32.store offset=24 + end + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.const 15 + i32.gt_u + br_if 0 (;@4;) + local.get 9 + local.get 3 + local.get 5 + i32.add + local.tee 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 9 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@3;) + end + local.get 9 + local.get 5 + i32.add + local.tee 0 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 9 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 3 + i32.add + local.get 3 + i32.store + block ;; label = @4 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 3 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 4 + block ;; label = @5 + block ;; label = @6 + i32.const 0 + i32.load offset=1048580 + local.tee 6 + i32.const 1 + local.get 3 + i32.const 3 + i32.shr_u + i32.shl + local.tee 3 + i32.and + br_if 0 (;@6;) + i32.const 0 + local.get 6 + local.get 3 + i32.or + i32.store offset=1048580 + local.get 4 + local.set 3 + br 1 (;@5;) + end + local.get 4 + i32.load offset=8 + local.set 3 + end + local.get 3 + local.get 0 + i32.store offset=12 + local.get 4 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 4 + i32.store offset=12 + local.get 0 + local.get 3 + i32.store offset=8 + br 1 (;@3;) + end + i32.const 31 + local.set 4 + block ;; label = @4 + local.get 3 + i32.const 16777215 + i32.gt_u + br_if 0 (;@4;) + local.get 3 + i32.const 38 + local.get 3 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + local.get 0 + local.get 4 + i32.store offset=28 + local.get 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 6 + block ;; label = @4 + local.get 10 + i32.const 1 + local.get 4 + i32.shl + local.tee 5 + i32.and + br_if 0 (;@4;) + local.get 6 + local.get 0 + i32.store + i32.const 0 + local.get 10 + local.get 5 + i32.or + i32.store offset=1048584 + local.get 0 + local.get 6 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 0 + i32.store offset=12 + br 1 (;@3;) + end + local.get 3 + i32.const 0 + i32.const 25 + local.get 4 + i32.const 1 + i32.shr_u + i32.sub + local.get 4 + i32.const 31 + i32.eq + select + i32.shl + local.set 4 + local.get 6 + i32.load + local.set 5 + block ;; label = @4 + loop ;; label = @5 + local.get 5 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 3 + i32.eq + br_if 1 (;@4;) + local.get 4 + i32.const 29 + i32.shr_u + local.set 5 + local.get 4 + i32.const 1 + i32.shl + local.set 4 + local.get 6 + local.get 5 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 7 + i32.load + local.tee 5 + br_if 0 (;@5;) + end + local.get 7 + local.get 0 + i32.store + local.get 0 + local.get 6 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + br 1 (;@3;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 0 + i32.store offset=12 + local.get 6 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 6 + i32.store offset=12 + local.get 0 + local.get 4 + i32.store offset=8 + end + local.get 9 + i32.const 8 + i32.add + local.set 4 + br 1 (;@1;) + end + block ;; label = @2 + local.get 11 + i32.eqz + br_if 0 (;@2;) + block ;; label = @3 + block ;; label = @4 + local.get 0 + local.get 0 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 4 + i32.load + i32.ne + br_if 0 (;@4;) + local.get 4 + local.get 9 + i32.store + local.get 9 + br_if 1 (;@3;) + i32.const 0 + local.get 10 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@2;) + end + local.get 11 + i32.const 16 + i32.const 20 + local.get 11 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 9 + i32.store + local.get 9 + i32.eqz + br_if 1 (;@2;) + end + local.get 9 + local.get 11 + i32.store offset=24 + block ;; label = @3 + local.get 0 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 0 (;@3;) + local.get 9 + local.get 4 + i32.store offset=16 + local.get 4 + local.get 9 + i32.store offset=24 + end + local.get 0 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 0 (;@2;) + local.get 9 + i32.const 20 + i32.add + local.get 4 + i32.store + local.get 4 + local.get 9 + i32.store offset=24 + end + block ;; label = @2 + block ;; label = @3 + local.get 3 + i32.const 15 + i32.gt_u + br_if 0 (;@3;) + local.get 0 + local.get 3 + local.get 5 + i32.add + local.tee 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@2;) + end + local.get 0 + local.get 5 + i32.add + local.tee 6 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 3 + i32.add + local.get 3 + i32.store + block ;; label = @3 + local.get 8 + i32.eqz + br_if 0 (;@3;) + local.get 8 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1048600 + local.set 4 + block ;; label = @4 + block ;; label = @5 + i32.const 1 + local.get 8 + i32.const 3 + i32.shr_u + i32.shl + local.tee 9 + local.get 7 + i32.and + br_if 0 (;@5;) + i32.const 0 + local.get 9 + local.get 7 + i32.or + i32.store offset=1048580 + local.get 5 + local.set 9 + br 1 (;@4;) + end + local.get 5 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 4 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 5 + i32.store offset=12 + local.get 4 + local.get 9 + i32.store offset=8 + end + i32.const 0 + local.get 6 + i32.store offset=1048600 + i32.const 0 + local.get 3 + i32.store offset=1048588 + end + local.get 0 + i32.const 8 + i32.add + local.set 4 + end + local.get 1 + i32.const 16 + i32.add + global.set $__stack_pointer + local.get 4 + ) + (func $free (;14;) (type 7) (param i32) + local.get 0 + call $dlfree + ) + (func $dlfree (;15;) (type 7) (param i32) + (local i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + local.get 0 + i32.eqz + br_if 0 (;@1;) + local.get 0 + i32.const -8 + i32.add + local.tee 1 + local.get 0 + i32.const -4 + i32.add + i32.load + local.tee 2 + i32.const -8 + i32.and + local.tee 0 + i32.add + local.set 3 + block ;; label = @2 + local.get 2 + i32.const 1 + i32.and + br_if 0 (;@2;) + local.get 2 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 1 + local.get 1 + i32.load + local.tee 2 + i32.sub + local.tee 1 + i32.const 0 + i32.load offset=1048596 + local.tee 4 + i32.lt_u + br_if 1 (;@1;) + local.get 2 + local.get 0 + i32.add + local.set 0 + block ;; label = @3 + local.get 1 + i32.const 0 + i32.load offset=1048600 + i32.eq + br_if 0 (;@3;) + block ;; label = @4 + local.get 2 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 1 + i32.load offset=8 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @5 + local.get 1 + i32.load offset=12 + local.tee 2 + local.get 4 + i32.ne + br_if 0 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 3 (;@2;) + end + local.get 2 + local.get 6 + i32.eq + drop + local.get 2 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 2 + i32.store offset=12 + br 2 (;@2;) + end + local.get 1 + i32.load offset=24 + local.set 7 + block ;; label = @4 + block ;; label = @5 + local.get 1 + i32.load offset=12 + local.tee 6 + local.get 1 + i32.eq + br_if 0 (;@5;) + local.get 1 + i32.load offset=8 + local.tee 2 + local.get 4 + i32.lt_u + drop + local.get 6 + local.get 2 + i32.store offset=8 + local.get 2 + local.get 6 + i32.store offset=12 + br 1 (;@4;) + end + block ;; label = @5 + local.get 1 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + local.get 1 + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + i32.const 0 + local.set 6 + br 1 (;@4;) + end + loop ;; label = @5 + local.get 2 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + local.get 6 + i32.const 16 + i32.add + local.set 2 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@5;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 1 (;@2;) + block ;; label = @4 + block ;; label = @5 + local.get 1 + local.get 1 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 2 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 2 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@4;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 3 (;@2;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 1 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 2 (;@2;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @4 + local.get 1 + i32.load offset=16 + local.tee 2 + i32.eqz + br_if 0 (;@4;) + local.get 6 + local.get 2 + i32.store offset=16 + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 1 + i32.load offset=20 + local.tee 2 + i32.eqz + br_if 1 (;@2;) + local.get 6 + i32.const 20 + i32.add + local.get 2 + i32.store + local.get 2 + local.get 6 + i32.store offset=24 + br 1 (;@2;) + end + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 0 (;@2;) + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + i32.const 0 + local.get 0 + i32.store offset=1048588 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + return + end + local.get 1 + local.get 3 + i32.ge_u + br_if 0 (;@1;) + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 1 + i32.and + i32.eqz + br_if 0 (;@1;) + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.const 2 + i32.and + br_if 0 (;@3;) + block ;; label = @4 + local.get 3 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048604 + i32.const 0 + i32.const 0 + i32.load offset=1048592 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048592 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048588 + i32.const 0 + i32.const 0 + i32.store offset=1048600 + return + end + block ;; label = @4 + local.get 3 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048600 + i32.const 0 + i32.const 0 + i32.load offset=1048588 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048588 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + return + end + local.get 2 + i32.const -8 + i32.and + local.get 0 + i32.add + local.set 0 + block ;; label = @4 + block ;; label = @5 + local.get 2 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 3 + i32.load offset=8 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @6 + local.get 3 + i32.load offset=12 + local.tee 2 + local.get 4 + i32.ne + br_if 0 (;@6;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@4;) + end + local.get 2 + local.get 6 + i32.eq + drop + local.get 2 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 2 + i32.store offset=12 + br 1 (;@4;) + end + local.get 3 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.load offset=12 + local.tee 6 + local.get 3 + i32.eq + br_if 0 (;@6;) + local.get 3 + i32.load offset=8 + local.tee 2 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 6 + local.get 2 + i32.store offset=8 + local.get 2 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 3 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 3 + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 2 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 2 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + block ;; label = @6 + local.get 3 + local.get 3 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 2 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 2 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@4;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 3 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 1 (;@4;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 3 + i32.load offset=16 + local.tee 2 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 2 + i32.store offset=16 + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 3 + i32.load offset=20 + local.tee 2 + i32.eqz + br_if 0 (;@4;) + local.get 6 + i32.const 20 + i32.add + local.get 2 + i32.store + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 0 + i32.store offset=1048588 + return + end + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + end + block ;; label = @2 + local.get 0 + i32.const 255 + i32.gt_u + br_if 0 (;@2;) + local.get 0 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 2 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048580 + local.tee 4 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@4;) + i32.const 0 + local.get 4 + local.get 0 + i32.or + i32.store offset=1048580 + local.get 2 + local.set 0 + br 1 (;@3;) + end + local.get 2 + i32.load offset=8 + local.set 0 + end + local.get 0 + local.get 1 + i32.store offset=12 + local.get 2 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 2 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + return + end + i32.const 31 + local.set 2 + block ;; label = @2 + local.get 0 + i32.const 16777215 + i32.gt_u + br_if 0 (;@2;) + local.get 0 + i32.const 38 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 2 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 2 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 2 + end + local.get 1 + local.get 2 + i32.store offset=28 + local.get 1 + i64.const 0 + i64.store offset=16 align=4 + local.get 2 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 4 + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1048584 + local.tee 6 + i32.const 1 + local.get 2 + i32.shl + local.tee 3 + i32.and + br_if 0 (;@3;) + local.get 4 + local.get 1 + i32.store + i32.const 0 + local.get 6 + local.get 3 + i32.or + i32.store offset=1048584 + local.get 1 + local.get 4 + i32.store offset=24 + local.get 1 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 1 + i32.store offset=12 + br 1 (;@2;) + end + local.get 0 + i32.const 0 + i32.const 25 + local.get 2 + i32.const 1 + i32.shr_u + i32.sub + local.get 2 + i32.const 31 + i32.eq + select + i32.shl + local.set 2 + local.get 4 + i32.load + local.set 6 + block ;; label = @3 + loop ;; label = @4 + local.get 6 + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 0 + i32.eq + br_if 1 (;@3;) + local.get 2 + i32.const 29 + i32.shr_u + local.set 6 + local.get 2 + i32.const 1 + i32.shl + local.set 2 + local.get 4 + local.get 6 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@4;) + end + local.get 3 + local.get 1 + i32.store + local.get 1 + local.get 4 + i32.store offset=24 + local.get 1 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 1 + i32.store offset=8 + br 1 (;@2;) + end + local.get 4 + i32.load offset=8 + local.tee 0 + local.get 1 + i32.store offset=12 + local.get 4 + local.get 1 + i32.store offset=8 + local.get 1 + i32.const 0 + i32.store offset=24 + local.get 1 + local.get 4 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + end + i32.const 0 + i32.const 0 + i32.load offset=1048612 + i32.const -1 + i32.add + local.tee 1 + i32.const -1 + local.get 1 + select + i32.store offset=1048612 + end + ) + (func $realloc (;16;) (type 4) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + local.get 1 + call $dlmalloc + return + end + block ;; label = @1 + local.get 1 + i32.const -64 + i32.lt_u + br_if 0 (;@1;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + i32.const 0 + return + end + i32.const 16 + local.get 1 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.set 2 + local.get 0 + i32.const -4 + i32.add + local.tee 3 + i32.load + local.tee 4 + i32.const -8 + i32.and + local.set 5 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 4 + i32.const 3 + i32.and + br_if 0 (;@3;) + local.get 2 + i32.const 256 + i32.lt_u + br_if 1 (;@2;) + local.get 5 + local.get 2 + i32.const 4 + i32.or + i32.lt_u + br_if 1 (;@2;) + local.get 5 + local.get 2 + i32.sub + i32.const 0 + i32.load offset=1049060 + i32.const 1 + i32.shl + i32.le_u + br_if 2 (;@1;) + br 1 (;@2;) + end + local.get 0 + i32.const -8 + i32.add + local.tee 6 + local.get 5 + i32.add + local.set 7 + block ;; label = @3 + local.get 5 + local.get 2 + i32.lt_u + br_if 0 (;@3;) + local.get 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 16 + i32.lt_u + br_if 2 (;@1;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.const 3 + i32.or + i32.store offset=4 + local.get 7 + local.get 7 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 1 + call $dispose_chunk + local.get 0 + return + end + block ;; label = @3 + local.get 7 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1048592 + local.get 5 + i32.add + local.tee 5 + local.get 2 + i32.le_u + br_if 1 (;@2;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + i32.const 0 + local.get 6 + local.get 2 + i32.add + local.tee 1 + i32.store offset=1048604 + i32.const 0 + local.get 5 + local.get 2 + i32.sub + local.tee 2 + i32.store offset=1048592 + local.get 1 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + return + end + block ;; label = @3 + local.get 7 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1048588 + local.get 5 + i32.add + local.tee 5 + local.get 2 + i32.lt_u + br_if 1 (;@2;) + block ;; label = @4 + block ;; label = @5 + local.get 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 16 + i32.lt_u + br_if 0 (;@5;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 5 + i32.add + local.tee 5 + local.get 1 + i32.store + local.get 5 + local.get 5 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + br 1 (;@4;) + end + local.get 3 + local.get 4 + i32.const 1 + i32.and + local.get 5 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 5 + i32.add + local.tee 1 + local.get 1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 1 + i32.const 0 + local.set 2 + end + i32.const 0 + local.get 2 + i32.store offset=1048600 + i32.const 0 + local.get 1 + i32.store offset=1048588 + local.get 0 + return + end + local.get 7 + i32.load offset=4 + local.tee 8 + i32.const 2 + i32.and + br_if 0 (;@2;) + local.get 8 + i32.const -8 + i32.and + local.get 5 + i32.add + local.tee 9 + local.get 2 + i32.lt_u + br_if 0 (;@2;) + local.get 9 + local.get 2 + i32.sub + local.set 10 + block ;; label = @3 + block ;; label = @4 + local.get 8 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 7 + i32.load offset=8 + local.tee 1 + local.get 8 + i32.const 3 + i32.shr_u + local.tee 11 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 8 + i32.eq + drop + block ;; label = @5 + local.get 7 + i32.load offset=12 + local.tee 5 + local.get 1 + i32.ne + br_if 0 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 11 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@3;) + end + local.get 5 + local.get 8 + i32.eq + drop + local.get 5 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 5 + i32.store offset=12 + br 1 (;@3;) + end + local.get 7 + i32.load offset=24 + local.set 12 + block ;; label = @4 + block ;; label = @5 + local.get 7 + i32.load offset=12 + local.tee 8 + local.get 7 + i32.eq + br_if 0 (;@5;) + local.get 7 + i32.load offset=8 + local.tee 1 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 8 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 8 + i32.store offset=12 + br 1 (;@4;) + end + block ;; label = @5 + local.get 7 + i32.const 20 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + local.get 7 + i32.const 16 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + i32.const 0 + local.set 8 + br 1 (;@4;) + end + loop ;; label = @5 + local.get 1 + local.set 11 + local.get 5 + local.tee 8 + i32.const 20 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + local.get 8 + i32.const 16 + i32.add + local.set 1 + local.get 8 + i32.load offset=16 + local.tee 5 + br_if 0 (;@5;) + end + local.get 11 + i32.const 0 + i32.store + end + local.get 12 + i32.eqz + br_if 0 (;@3;) + block ;; label = @4 + block ;; label = @5 + local.get 7 + local.get 7 + i32.load offset=28 + local.tee 5 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 1 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 1 + local.get 8 + i32.store + local.get 8 + br_if 1 (;@4;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@3;) + end + local.get 12 + i32.const 16 + i32.const 20 + local.get 12 + i32.load offset=16 + local.get 7 + i32.eq + select + i32.add + local.get 8 + i32.store + local.get 8 + i32.eqz + br_if 1 (;@3;) + end + local.get 8 + local.get 12 + i32.store offset=24 + block ;; label = @4 + local.get 7 + i32.load offset=16 + local.tee 1 + i32.eqz + br_if 0 (;@4;) + local.get 8 + local.get 1 + i32.store offset=16 + local.get 1 + local.get 8 + i32.store offset=24 + end + local.get 7 + i32.load offset=20 + local.tee 1 + i32.eqz + br_if 0 (;@3;) + local.get 8 + i32.const 20 + i32.add + local.get 1 + i32.store + local.get 1 + local.get 8 + i32.store offset=24 + end + block ;; label = @3 + local.get 10 + i32.const 15 + i32.gt_u + br_if 0 (;@3;) + local.get 3 + local.get 4 + i32.const 1 + i32.and + local.get 9 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 9 + i32.add + local.tee 1 + local.get 1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + return + end + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 1 + local.get 10 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 9 + i32.add + local.tee 2 + local.get 2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 10 + call $dispose_chunk + local.get 0 + return + end + block ;; label = @2 + local.get 1 + call $dlmalloc + local.tee 2 + br_if 0 (;@2;) + i32.const 0 + return + end + local.get 2 + local.get 0 + i32.const -4 + i32.const -8 + local.get 3 + i32.load + local.tee 5 + i32.const 3 + i32.and + select + local.get 5 + i32.const -8 + i32.and + i32.add + local.tee 5 + local.get 1 + local.get 5 + local.get 1 + i32.lt_u + select + call $memcpy + local.set 1 + local.get 0 + call $dlfree + local.get 1 + local.set 0 + end + local.get 0 + ) + (func $dispose_chunk (;17;) (type 8) (param i32 i32) + (local i32 i32 i32 i32 i32 i32) + local.get 0 + local.get 1 + i32.add + local.set 2 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.load offset=4 + local.tee 3 + i32.const 1 + i32.and + br_if 0 (;@2;) + local.get 3 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 0 + i32.load + local.tee 3 + local.get 1 + i32.add + local.set 1 + block ;; label = @3 + block ;; label = @4 + local.get 0 + local.get 3 + i32.sub + local.tee 0 + i32.const 0 + i32.load offset=1048600 + i32.eq + br_if 0 (;@4;) + block ;; label = @5 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 0 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + local.get 0 + i32.load offset=12 + local.tee 3 + local.get 4 + i32.ne + br_if 2 (;@3;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 3 (;@2;) + end + local.get 0 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 0 + i32.load offset=12 + local.tee 6 + local.get 0 + i32.eq + br_if 0 (;@6;) + local.get 0 + i32.load offset=8 + local.tee 3 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 0 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 0 + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 3 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 3 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 2 (;@2;) + block ;; label = @5 + block ;; label = @6 + local.get 0 + local.get 0 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 4 (;@2;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 3 (;@2;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 0 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 0 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 2 (;@2;) + local.get 6 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + br 2 (;@2;) + end + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 1 (;@2;) + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + i32.const 0 + local.get 1 + i32.store offset=1048588 + local.get 2 + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + return + end + local.get 3 + local.get 6 + i32.eq + drop + local.get 3 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 3 + i32.store offset=12 + end + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 2 + i32.and + br_if 0 (;@3;) + block ;; label = @4 + local.get 2 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048604 + i32.const 0 + i32.const 0 + i32.load offset=1048592 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048592 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048588 + i32.const 0 + i32.const 0 + i32.store offset=1048600 + return + end + block ;; label = @4 + local.get 2 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048600 + i32.const 0 + i32.const 0 + i32.load offset=1048588 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048588 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + return + end + local.get 3 + i32.const -8 + i32.and + local.get 1 + i32.add + local.set 1 + block ;; label = @4 + block ;; label = @5 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 2 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @6 + local.get 2 + i32.load offset=12 + local.tee 3 + local.get 4 + i32.ne + br_if 0 (;@6;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@4;) + end + local.get 3 + local.get 6 + i32.eq + drop + local.get 3 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 3 + i32.store offset=12 + br 1 (;@4;) + end + local.get 2 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 2 + i32.load offset=12 + local.tee 6 + local.get 2 + i32.eq + br_if 0 (;@6;) + local.get 2 + i32.load offset=8 + local.tee 3 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 2 + i32.const 20 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + local.get 2 + i32.const 16 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 4 + local.set 5 + local.get 3 + local.tee 6 + i32.const 20 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 4 + local.get 6 + i32.load offset=16 + local.tee 3 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + block ;; label = @6 + local.get 2 + local.get 2 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@4;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 2 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 1 (;@4;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 2 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 2 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 0 (;@4;) + local.get 6 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 1 + i32.store offset=1048588 + return + end + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + end + block ;; label = @2 + local.get 1 + i32.const 255 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 3 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048580 + local.tee 4 + i32.const 1 + local.get 1 + i32.const 3 + i32.shr_u + i32.shl + local.tee 1 + i32.and + br_if 0 (;@4;) + i32.const 0 + local.get 4 + local.get 1 + i32.or + i32.store offset=1048580 + local.get 3 + local.set 1 + br 1 (;@3;) + end + local.get 3 + i32.load offset=8 + local.set 1 + end + local.get 1 + local.get 0 + i32.store offset=12 + local.get 3 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 3 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + return + end + i32.const 31 + local.set 3 + block ;; label = @2 + local.get 1 + i32.const 16777215 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + i32.const 38 + local.get 1 + i32.const 8 + i32.shr_u + i32.clz + local.tee 3 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 3 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 3 + end + local.get 0 + local.get 3 + i32.store offset=28 + local.get 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 3 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 4 + block ;; label = @2 + i32.const 0 + i32.load offset=1048584 + local.tee 6 + i32.const 1 + local.get 3 + i32.shl + local.tee 2 + i32.and + br_if 0 (;@2;) + local.get 4 + local.get 0 + i32.store + i32.const 0 + local.get 6 + local.get 2 + i32.or + i32.store offset=1048584 + local.get 0 + local.get 4 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 0 + i32.store offset=12 + return + end + local.get 1 + i32.const 0 + i32.const 25 + local.get 3 + i32.const 1 + i32.shr_u + i32.sub + local.get 3 + i32.const 31 + i32.eq + select + i32.shl + local.set 3 + local.get 4 + i32.load + local.set 6 + block ;; label = @2 + loop ;; label = @3 + local.get 6 + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 1 + i32.eq + br_if 1 (;@2;) + local.get 3 + i32.const 29 + i32.shr_u + local.set 6 + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 4 + local.get 6 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 6 + br_if 0 (;@3;) + end + local.get 2 + local.get 0 + i32.store + local.get 0 + local.get 4 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + return + end + local.get 4 + i32.load offset=8 + local.tee 1 + local.get 0 + i32.store offset=12 + local.get 4 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 4 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + end + ) + (func $internal_memalign (;18;) (type 4) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.const 16 + local.get 0 + i32.const 16 + i32.gt_u + select + local.tee 2 + local.get 2 + i32.const -1 + i32.add + i32.and + br_if 0 (;@2;) + local.get 2 + local.set 0 + br 1 (;@1;) + end + i32.const 32 + local.set 3 + loop ;; label = @2 + local.get 3 + local.tee 0 + i32.const 1 + i32.shl + local.set 3 + local.get 0 + local.get 2 + i32.lt_u + br_if 0 (;@2;) + end + end + block ;; label = @1 + i32.const -64 + local.get 0 + i32.sub + local.get 1 + i32.gt_u + br_if 0 (;@1;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + i32.const 0 + return + end + block ;; label = @1 + local.get 0 + i32.const 16 + local.get 1 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.tee 1 + i32.add + i32.const 12 + i32.add + call $dlmalloc + local.tee 3 + br_if 0 (;@1;) + i32.const 0 + return + end + local.get 3 + i32.const -8 + i32.add + local.set 2 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.const -1 + i32.add + local.get 3 + i32.and + br_if 0 (;@2;) + local.get 2 + local.set 0 + br 1 (;@1;) + end + local.get 3 + i32.const -4 + i32.add + local.tee 4 + i32.load + local.tee 5 + i32.const -8 + i32.and + local.get 3 + local.get 0 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 0 + i32.sub + i32.and + i32.const -8 + i32.add + local.tee 3 + i32.const 0 + local.get 0 + local.get 3 + local.get 2 + i32.sub + i32.const 15 + i32.gt_u + select + i32.add + local.tee 0 + local.get 2 + i32.sub + local.tee 3 + i32.sub + local.set 6 + block ;; label = @2 + local.get 5 + i32.const 3 + i32.and + br_if 0 (;@2;) + local.get 0 + local.get 6 + i32.store offset=4 + local.get 0 + local.get 2 + i32.load + local.get 3 + i32.add + i32.store + br 1 (;@1;) + end + local.get 0 + local.get 6 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 6 + i32.add + local.tee 6 + local.get 6 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 4 + local.get 3 + local.get 4 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 2 + local.get 3 + i32.add + local.tee 6 + local.get 6 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 3 + call $dispose_chunk + end + block ;; label = @1 + local.get 0 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@1;) + local.get 3 + i32.const -8 + i32.and + local.tee 2 + local.get 1 + i32.const 16 + i32.add + i32.le_u + br_if 0 (;@1;) + local.get 0 + local.get 1 + local.get 3 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.tee 3 + local.get 2 + local.get 1 + i32.sub + local.tee 1 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.tee 2 + local.get 2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 1 + call $dispose_chunk + end + local.get 0 + i32.const 8 + i32.add + ) + (func $aligned_alloc (;19;) (type 4) (param i32 i32) (result i32) + block ;; label = @1 + local.get 0 + i32.const 16 + i32.gt_u + br_if 0 (;@1;) + local.get 1 + call $dlmalloc + return + end + local.get 0 + local.get 1 + call $internal_memalign + ) + (func $abort (;20;) (type 2) + unreachable + unreachable + ) + (func $sbrk (;21;) (type 6) (param i32) (result i32) + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + memory.size + i32.const 16 + i32.shl + return + end + block ;; label = @1 + local.get 0 + i32.const 65535 + i32.and + br_if 0 (;@1;) + local.get 0 + i32.const -1 + i32.le_s + br_if 0 (;@1;) + block ;; label = @2 + local.get 0 + i32.const 16 + i32.shr_u + memory.grow + local.tee 0 + i32.const -1 + i32.ne + br_if 0 (;@2;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + i32.const -1 + return + end + local.get 0 + i32.const 16 + i32.shl + return + end + call $abort + unreachable + ) + (func $memcpy (;22;) (type 9) (param i32 i32 i32) (result i32) + (local i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.const 32 + i32.gt_u + br_if 0 (;@3;) + local.get 1 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@2;) + local.get 2 + i32.eqz + br_if 1 (;@2;) + local.get 0 + local.get 1 + i32.load8_u + i32.store8 + local.get 2 + i32.const -1 + i32.add + local.set 3 + local.get 0 + i32.const 1 + i32.add + local.set 4 + local.get 1 + i32.const 1 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get 2 + i32.const -2 + i32.add + local.set 3 + local.get 0 + i32.const 2 + i32.add + local.set 4 + local.get 1 + i32.const 2 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=2 + i32.store8 offset=2 + local.get 2 + i32.const -3 + i32.add + local.set 3 + local.get 0 + i32.const 3 + i32.add + local.set 4 + local.get 1 + i32.const 3 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=3 + i32.store8 offset=3 + local.get 2 + i32.const -4 + i32.add + local.set 3 + local.get 0 + i32.const 4 + i32.add + local.set 4 + local.get 1 + i32.const 4 + i32.add + local.set 5 + br 2 (;@1;) + end + local.get 0 + local.get 1 + local.get 2 + memory.copy + local.get 0 + return + end + local.get 2 + local.set 3 + local.get 0 + local.set 4 + local.get 1 + local.set 5 + end + block ;; label = @1 + block ;; label = @2 + local.get 4 + i32.const 3 + i32.and + local.tee 2 + br_if 0 (;@2;) + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.const 16 + i32.ge_u + br_if 0 (;@4;) + local.get 3 + local.set 2 + br 1 (;@3;) + end + block ;; label = @4 + local.get 3 + i32.const -16 + i32.add + local.tee 2 + i32.const 16 + i32.and + br_if 0 (;@4;) + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 4 + local.get 5 + i64.load offset=8 align=4 + i64.store offset=8 align=4 + local.get 4 + i32.const 16 + i32.add + local.set 4 + local.get 5 + i32.const 16 + i32.add + local.set 5 + local.get 2 + local.set 3 + end + local.get 2 + i32.const 16 + i32.lt_u + br_if 0 (;@3;) + local.get 3 + local.set 2 + loop ;; label = @4 + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 4 + local.get 5 + i64.load offset=8 align=4 + i64.store offset=8 align=4 + local.get 4 + local.get 5 + i64.load offset=16 align=4 + i64.store offset=16 align=4 + local.get 4 + local.get 5 + i64.load offset=24 align=4 + i64.store offset=24 align=4 + local.get 4 + i32.const 32 + i32.add + local.set 4 + local.get 5 + i32.const 32 + i32.add + local.set 5 + local.get 2 + i32.const -32 + i32.add + local.tee 2 + i32.const 15 + i32.gt_u + br_if 0 (;@4;) + end + end + block ;; label = @3 + local.get 2 + i32.const 8 + i32.lt_u + br_if 0 (;@3;) + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 5 + i32.const 8 + i32.add + local.set 5 + local.get 4 + i32.const 8 + i32.add + local.set 4 + end + block ;; label = @3 + local.get 2 + i32.const 4 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 4 + local.get 5 + i32.load + i32.store + local.get 5 + i32.const 4 + i32.add + local.set 5 + local.get 4 + i32.const 4 + i32.add + local.set 4 + end + block ;; label = @3 + local.get 2 + i32.const 2 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 4 + local.get 5 + i32.load16_u align=1 + i32.store16 align=1 + local.get 4 + i32.const 2 + i32.add + local.set 4 + local.get 5 + i32.const 2 + i32.add + local.set 5 + end + local.get 2 + i32.const 1 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 4 + local.get 5 + i32.load8_u + i32.store8 + local.get 0 + return + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.const 32 + i32.lt_u + br_if 0 (;@6;) + block ;; label = @7 + block ;; label = @8 + local.get 2 + i32.const -1 + i32.add + br_table 3 (;@5;) 0 (;@8;) 1 (;@7;) 7 (;@1;) + end + local.get 4 + local.get 5 + i32.load + i32.store16 align=1 + local.get 4 + local.get 5 + i32.const 2 + i32.add + i32.load align=2 + i32.store offset=2 + local.get 4 + local.get 5 + i32.const 6 + i32.add + i64.load align=2 + i64.store offset=6 align=4 + local.get 4 + i32.const 18 + i32.add + local.set 2 + local.get 5 + i32.const 18 + i32.add + local.set 1 + i32.const 14 + local.set 6 + local.get 5 + i32.const 14 + i32.add + i32.load align=2 + local.set 5 + i32.const 14 + local.set 3 + br 3 (;@4;) + end + local.get 4 + local.get 5 + i32.load + i32.store8 + local.get 4 + local.get 5 + i32.const 1 + i32.add + i32.load align=1 + i32.store offset=1 + local.get 4 + local.get 5 + i32.const 5 + i32.add + i64.load align=1 + i64.store offset=5 align=4 + local.get 4 + i32.const 17 + i32.add + local.set 2 + local.get 5 + i32.const 17 + i32.add + local.set 1 + i32.const 13 + local.set 6 + local.get 5 + i32.const 13 + i32.add + i32.load align=1 + local.set 5 + i32.const 15 + local.set 3 + br 2 (;@4;) + end + block ;; label = @6 + block ;; label = @7 + local.get 3 + i32.const 16 + i32.ge_u + br_if 0 (;@7;) + local.get 4 + local.set 2 + local.get 5 + local.set 1 + br 1 (;@6;) + end + local.get 4 + local.get 5 + i32.load8_u + i32.store8 + local.get 4 + local.get 5 + i32.load offset=1 align=1 + i32.store offset=1 align=1 + local.get 4 + local.get 5 + i64.load offset=5 align=1 + i64.store offset=5 align=1 + local.get 4 + local.get 5 + i32.load16_u offset=13 align=1 + i32.store16 offset=13 align=1 + local.get 4 + local.get 5 + i32.load8_u offset=15 + i32.store8 offset=15 + local.get 4 + i32.const 16 + i32.add + local.set 2 + local.get 5 + i32.const 16 + i32.add + local.set 1 + end + local.get 3 + i32.const 8 + i32.and + br_if 2 (;@3;) + br 3 (;@2;) + end + local.get 4 + local.get 5 + i32.load + local.tee 2 + i32.store8 + local.get 4 + local.get 2 + i32.const 16 + i32.shr_u + i32.store8 offset=2 + local.get 4 + local.get 2 + i32.const 8 + i32.shr_u + i32.store8 offset=1 + local.get 4 + local.get 5 + i32.const 3 + i32.add + i32.load align=1 + i32.store offset=3 + local.get 4 + local.get 5 + i32.const 7 + i32.add + i64.load align=1 + i64.store offset=7 align=4 + local.get 4 + i32.const 19 + i32.add + local.set 2 + local.get 5 + i32.const 19 + i32.add + local.set 1 + i32.const 15 + local.set 6 + local.get 5 + i32.const 15 + i32.add + i32.load align=1 + local.set 5 + i32.const 13 + local.set 3 + end + local.get 4 + local.get 6 + i32.add + local.get 5 + i32.store + end + local.get 2 + local.get 1 + i64.load align=1 + i64.store align=1 + local.get 2 + i32.const 8 + i32.add + local.set 2 + local.get 1 + i32.const 8 + i32.add + local.set 1 + end + block ;; label = @2 + local.get 3 + i32.const 4 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.load align=1 + i32.store align=1 + local.get 2 + i32.const 4 + i32.add + local.set 2 + local.get 1 + i32.const 4 + i32.add + local.set 1 + end + block ;; label = @2 + local.get 3 + i32.const 2 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.load16_u align=1 + i32.store16 align=1 + local.get 2 + i32.const 2 + i32.add + local.set 2 + local.get 1 + i32.const 2 + i32.add + local.set 1 + end + local.get 3 + i32.const 1 + i32.and + i32.eqz + br_if 0 (;@1;) + local.get 2 + local.get 1 + i32.load8_u + i32.store8 + end + local.get 0 + ) + (table (;0;) 1 1 funcref) + (memory (;0;) 17) + (global $__stack_pointer (;0;) (mut i32) i32.const 1048576) + (export "memory" (memory 0)) + (export "miden:basic-wallet/basic-wallet@1.0.0#receive-asset" (func $miden:basic-wallet/basic-wallet@1.0.0#receive-asset)) + (export "miden:basic-wallet/basic-wallet@1.0.0#send-asset" (func $miden:basic-wallet/basic-wallet@1.0.0#send-asset)) + (export "cabi_realloc" (func $cabi_realloc)) + ) + (core module (;1;) + (type (;0;) (func (param i32 i64 i64 i64 i64 i32))) + (func $indirect-miden:base/tx-kernel@1.0.0-add-asset (;0;) (type 0) (param i32 i64 i64 i64 i64 i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + local.get 4 + local.get 5 + i32.const 0 + call_indirect (type 0) + ) + (func $indirect-miden:base/tx-kernel@1.0.0-remove-asset (;1;) (type 0) (param i32 i64 i64 i64 i64 i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + local.get 4 + local.get 5 + i32.const 1 + call_indirect (type 0) + ) + (table (;0;) 2 2 funcref) + (export "0" (func $indirect-miden:base/tx-kernel@1.0.0-add-asset)) + (export "1" (func $indirect-miden:base/tx-kernel@1.0.0-remove-asset)) + (export "$imports" (table 0)) + ) + (core module (;2;) + (type (;0;) (func (param i32 i64 i64 i64 i64 i32))) + (import "" "0" (func (;0;) (type 0))) + (import "" "1" (func (;1;) (type 0))) + (import "" "$imports" (table (;0;) 2 2 funcref)) + (elem (;0;) (i32.const 0) func 0 1) + ) + (core instance (;0;) (instantiate 1)) + (alias core export 0 "0" (core func (;0;))) + (alias core export 0 "1" (core func (;1;))) + (alias export 1 "create-note" (func (;0;))) + (core func (;2;) (canon lower (func 0))) + (core instance (;1;) + (export "add-asset" (func 0)) + (export "remove-asset" (func 1)) + (export "create-note" (func 2)) + ) + (core instance (;2;) (instantiate 0 + (with "miden:base/tx-kernel@1.0.0" (instance 1)) + ) + ) + (alias core export 2 "memory" (core memory (;0;))) + (alias core export 2 "cabi_realloc" (core func (;3;))) + (alias core export 0 "$imports" (core table (;0;))) + (alias export 1 "add-asset" (func (;1;))) + (core func (;4;) (canon lower (func 1) (memory 0))) + (alias export 1 "remove-asset" (func (;2;))) + (core func (;5;) (canon lower (func 2) (memory 0))) + (core instance (;3;) + (export "$imports" (table 0)) + (export "0" (func 4)) + (export "1" (func 5)) + ) + (core instance (;4;) (instantiate 2 + (with "" (instance 3)) + ) + ) + (component (;0;)) + (instance (;2;) (instantiate 0)) + (export (;3;) "miden:base/account@1.0.0" (instance 2)) + (alias export 0 "asset" (type (;5;))) + (type (;6;) (func (param "asset" 5))) + (alias core export 2 "miden:basic-wallet/basic-wallet@1.0.0#receive-asset" (core func (;6;))) + (func (;3;) (type 6) (canon lift (core func 6))) + (alias export 0 "tag" (type (;7;))) + (alias export 0 "recipient" (type (;8;))) + (type (;9;) (func (param "asset" 5) (param "tag" 7) (param "recipient" 8))) + (alias core export 2 "miden:basic-wallet/basic-wallet@1.0.0#send-asset" (core func (;7;))) + (func (;4;) (type 9) (canon lift (core func 7))) + (alias export 0 "felt" (type (;10;))) + (alias export 0 "account-id" (type (;11;))) + (alias export 0 "fungible-asset" (type (;12;))) + (alias export 0 "word" (type (;13;))) + (alias export 0 "non-fungible-asset" (type (;14;))) + (alias export 0 "asset" (type (;15;))) + (alias export 0 "tag" (type (;16;))) + (alias export 0 "recipient" (type (;17;))) + (component (;1;) + (type (;0;) u64) + (import "import-type-felt" (type (;1;) (eq 0))) + (import "import-type-account-id" (type (;2;) (eq 1))) + (type (;3;) (record (field "asset" 2) (field "amount" u64))) + (import "import-type-fungible-asset" (type (;4;) (eq 3))) + (type (;5;) (tuple 1 1 1 1)) + (import "import-type-word" (type (;6;) (eq 5))) + (import "import-type-non-fungible-asset" (type (;7;) (eq 6))) + (type (;8;) (variant (case "fungible" 4) (case "non-fungible" 7))) + (import "import-type-asset" (type (;9;) (eq 8))) + (import "import-type-tag" (type (;10;) (eq 1))) + (import "import-type-recipient" (type (;11;) (eq 6))) + (import "import-type-asset0" (type (;12;) (eq 9))) + (type (;13;) (func (param "asset" 12))) + (import "import-func-receive-asset" (func (;0;) (type 13))) + (import "import-type-tag0" (type (;14;) (eq 10))) + (import "import-type-recipient0" (type (;15;) (eq 11))) + (type (;16;) (func (param "asset" 12) (param "tag" 14) (param "recipient" 15))) + (import "import-func-send-asset" (func (;1;) (type 16))) + (export (;17;) "asset" (type 9)) + (export (;18;) "tag" (type 10)) + (export (;19;) "recipient" (type 11)) + (type (;20;) (func (param "asset" 17))) + (export (;2;) "receive-asset" (func 0) (func (type 20))) + (type (;21;) (func (param "asset" 17) (param "tag" 18) (param "recipient" 19))) + (export (;3;) "send-asset" (func 1) (func (type 21))) + ) + (instance (;4;) (instantiate 1 + (with "import-func-receive-asset" (func 3)) + (with "import-func-send-asset" (func 4)) + (with "import-type-felt" (type 10)) + (with "import-type-account-id" (type 11)) + (with "import-type-fungible-asset" (type 12)) + (with "import-type-word" (type 13)) + (with "import-type-non-fungible-asset" (type 14)) + (with "import-type-asset" (type 15)) + (with "import-type-tag" (type 16)) + (with "import-type-recipient" (type 17)) + (with "import-type-asset0" (type 5)) + (with "import-type-tag0" (type 7)) + (with "import-type-recipient0" (type 8)) + ) + ) + (export (;5;) "miden:basic-wallet/basic-wallet@1.0.0" (instance 4)) +) \ No newline at end of file diff --git a/tests/integration/expected/sdk_basic_wallet/basic_wallet_p2id_note.wat b/tests/integration/expected/sdk_basic_wallet/basic_wallet_p2id_note.wat new file mode 100644 index 000000000..6670b75e9 --- /dev/null +++ b/tests/integration/expected/sdk_basic_wallet/basic_wallet_p2id_note.wat @@ -0,0 +1,13027 @@ +(component + (type (;0;) + (instance + (type (;0;) u64) + (export (;1;) "felt" (type (eq 0))) + (export (;2;) "account-id" (type (eq 1))) + (type (;3;) (list 1)) + (export (;4;) "note-inputs" (type (eq 3))) + (type (;5;) (record (field "asset" 2) (field "amount" u64))) + (export (;6;) "fungible-asset" (type (eq 5))) + (type (;7;) (tuple 1 1 1 1)) + (export (;8;) "word" (type (eq 7))) + (export (;9;) "non-fungible-asset" (type (eq 8))) + (type (;10;) (variant (case "fungible" 6) (case "non-fungible" 9))) + (export (;11;) "asset" (type (eq 10))) + ) + ) + (import "miden:base/types@1.0.0" (instance (;0;) (type 0))) + (alias export 0 "account-id" (type (;1;))) + (alias export 0 "note-inputs" (type (;2;))) + (alias export 0 "asset" (type (;3;))) + (type (;4;) + (instance + (alias outer 1 1 (type (;0;))) + (export (;1;) "account-id" (type (eq 0))) + (alias outer 1 2 (type (;2;))) + (export (;3;) "note-inputs" (type (eq 2))) + (alias outer 1 3 (type (;4;))) + (export (;5;) "asset" (type (eq 4))) + (type (;6;) (func (result 1))) + (export (;0;) "get-id" (func (type 6))) + (type (;7;) (func (result 3))) + (export (;1;) "get-inputs" (func (type 7))) + (type (;8;) (list 5)) + (type (;9;) (func (result 8))) + (export (;2;) "get-assets" (func (type 9))) + ) + ) + (import "miden:base/tx-kernel@1.0.0" (instance (;1;) (type 4))) + (alias export 0 "asset" (type (;5;))) + (type (;6;) + (instance + (alias outer 1 5 (type (;0;))) + (export (;1;) "asset" (type (eq 0))) + (type (;2;) (func (param "asset" 1))) + (export (;0;) "receive-asset" (func (type 2))) + ) + ) + (import "miden:basic-wallet/basic-wallet@1.0.0" (instance (;2;) (type 6))) + (type (;7;) + (instance + (export (;0;) "error" (type (sub resource))) + ) + ) + (import "wasi:io/error@0.2.0-rc-2023-11-10" (instance (;3;) (type 7))) + (alias export 3 "error" (type (;8;))) + (type (;9;) + (instance + (export (;0;) "output-stream" (type (sub resource))) + (alias outer 1 8 (type (;1;))) + (export (;2;) "error" (type (eq 1))) + (type (;3;) (own 2)) + (type (;4;) (variant (case "last-operation-failed" 3) (case "closed"))) + (export (;5;) "stream-error" (type (eq 4))) + (export (;6;) "input-stream" (type (sub resource))) + (type (;7;) (borrow 0)) + (type (;8;) (result u64 (error 5))) + (type (;9;) (func (param "self" 7) (result 8))) + (export (;0;) "[method]output-stream.check-write" (func (type 9))) + (type (;10;) (list u8)) + (type (;11;) (result (error 5))) + (type (;12;) (func (param "self" 7) (param "contents" 10) (result 11))) + (export (;1;) "[method]output-stream.write" (func (type 12))) + (export (;2;) "[method]output-stream.blocking-write-and-flush" (func (type 12))) + (type (;13;) (func (param "self" 7) (result 11))) + (export (;3;) "[method]output-stream.blocking-flush" (func (type 13))) + ) + ) + (import "wasi:io/streams@0.2.0-rc-2023-11-10" (instance (;4;) (type 9))) + (alias export 4 "input-stream" (type (;10;))) + (type (;11;) + (instance + (alias outer 1 10 (type (;0;))) + (export (;1;) "input-stream" (type (eq 0))) + (type (;2;) (own 1)) + (type (;3;) (func (result 2))) + (export (;0;) "get-stdin" (func (type 3))) + ) + ) + (import "wasi:cli/stdin@0.2.0-rc-2023-12-05" (instance (;5;) (type 11))) + (alias export 4 "output-stream" (type (;12;))) + (type (;13;) + (instance + (alias outer 1 12 (type (;0;))) + (export (;1;) "output-stream" (type (eq 0))) + (type (;2;) (own 1)) + (type (;3;) (func (result 2))) + (export (;0;) "get-stdout" (func (type 3))) + ) + ) + (import "wasi:cli/stdout@0.2.0-rc-2023-12-05" (instance (;6;) (type 13))) + (alias export 4 "output-stream" (type (;14;))) + (type (;15;) + (instance + (alias outer 1 14 (type (;0;))) + (export (;1;) "output-stream" (type (eq 0))) + (type (;2;) (own 1)) + (type (;3;) (func (result 2))) + (export (;0;) "get-stderr" (func (type 3))) + ) + ) + (import "wasi:cli/stderr@0.2.0-rc-2023-12-05" (instance (;7;) (type 15))) + (type (;16;) + (instance + (type (;0;) (record (field "seconds" u64) (field "nanoseconds" u32))) + (export (;1;) "datetime" (type (eq 0))) + ) + ) + (import "wasi:clocks/wall-clock@0.2.0-rc-2023-11-10" (instance (;8;) (type 16))) + (alias export 4 "output-stream" (type (;17;))) + (alias export 8 "datetime" (type (;18;))) + (alias export 4 "error" (type (;19;))) + (type (;20;) + (instance + (export (;0;) "descriptor" (type (sub resource))) + (type (;1;) u64) + (export (;2;) "filesize" (type (eq 1))) + (alias outer 1 17 (type (;3;))) + (export (;4;) "output-stream" (type (eq 3))) + (type (;5;) (enum "access" "would-block" "already" "bad-descriptor" "busy" "deadlock" "quota" "exist" "file-too-large" "illegal-byte-sequence" "in-progress" "interrupted" "invalid" "io" "is-directory" "loop" "too-many-links" "message-size" "name-too-long" "no-device" "no-entry" "no-lock" "insufficient-memory" "insufficient-space" "not-directory" "not-empty" "not-recoverable" "unsupported" "no-tty" "no-such-device" "overflow" "not-permitted" "pipe" "read-only" "invalid-seek" "text-file-busy" "cross-device")) + (export (;6;) "error-code" (type (eq 5))) + (type (;7;) (enum "unknown" "block-device" "character-device" "directory" "fifo" "symbolic-link" "regular-file" "socket")) + (export (;8;) "descriptor-type" (type (eq 7))) + (type (;9;) u64) + (export (;10;) "link-count" (type (eq 9))) + (alias outer 1 18 (type (;11;))) + (export (;12;) "datetime" (type (eq 11))) + (type (;13;) (option 12)) + (type (;14;) (record (field "type" 8) (field "link-count" 10) (field "size" 2) (field "data-access-timestamp" 13) (field "data-modification-timestamp" 13) (field "status-change-timestamp" 13))) + (export (;15;) "descriptor-stat" (type (eq 14))) + (alias outer 1 19 (type (;16;))) + (export (;17;) "error" (type (eq 16))) + (type (;18;) (borrow 0)) + (type (;19;) (own 4)) + (type (;20;) (result 19 (error 6))) + (type (;21;) (func (param "self" 18) (param "offset" 2) (result 20))) + (export (;0;) "[method]descriptor.write-via-stream" (func (type 21))) + (type (;22;) (func (param "self" 18) (result 20))) + (export (;1;) "[method]descriptor.append-via-stream" (func (type 22))) + (type (;23;) (result 8 (error 6))) + (type (;24;) (func (param "self" 18) (result 23))) + (export (;2;) "[method]descriptor.get-type" (func (type 24))) + (type (;25;) (result 15 (error 6))) + (type (;26;) (func (param "self" 18) (result 25))) + (export (;3;) "[method]descriptor.stat" (func (type 26))) + (type (;27;) (borrow 17)) + (type (;28;) (option 6)) + (type (;29;) (func (param "err" 27) (result 28))) + (export (;4;) "filesystem-error-code" (func (type 29))) + ) + ) + (import "wasi:filesystem/types@0.2.0-rc-2023-11-10" (instance (;9;) (type 20))) + (alias export 9 "descriptor" (type (;21;))) + (type (;22;) + (instance + (alias outer 1 21 (type (;0;))) + (export (;1;) "descriptor" (type (eq 0))) + (type (;2;) (own 1)) + (type (;3;) (tuple 2 string)) + (type (;4;) (list 3)) + (type (;5;) (func (result 4))) + (export (;0;) "get-directories" (func (type 5))) + ) + ) + (import "wasi:filesystem/preopens@0.2.0-rc-2023-11-10" (instance (;10;) (type 22))) + (core module (;0;) + (type $.rodata (;0;) (func (param i32))) + (type (;1;) (func (param i32 i32))) + (type (;2;) (func (param i32 i32 i32) (result i32))) + (type (;3;) (func (param i32 i32) (result i32))) + (type (;4;) (func (result i64))) + (type (;5;) (func (param i32 i64 i64 i64 i64))) + (type (;6;) (func (param i32 i32 i32 i32) (result i32))) + (type (;7;) (func)) + (type (;8;) (func (param i32 i32 i32 i32))) + (type (;9;) (func (param i32 i32 i32))) + (type (;10;) (func (param i32) (result i32))) + (type (;11;) (func (param i32 i32 i32 i32 i32 i32) (result i32))) + (type (;12;) (func (param i32 i32 i32 i32 i32) (result i32))) + (type (;13;) (func (param i64 i32 i32) (result i32))) + (import "miden:base/tx-kernel@1.0.0" "get-inputs" (func $basic_wallet_p2id_note::bindings::miden::base::tx_kernel::get_inputs::wit_import (;0;) (type $.rodata))) + (import "miden:base/tx-kernel@1.0.0" "get-id" (func $basic_wallet_p2id_note::bindings::miden::base::tx_kernel::get_id::wit_import (;1;) (type 4))) + (import "miden:base/tx-kernel@1.0.0" "get-assets" (func $basic_wallet_p2id_note::bindings::miden::base::tx_kernel::get_assets::wit_import (;2;) (type $.rodata))) + (import "miden:basic-wallet/basic-wallet@1.0.0" "receive-asset" (func $basic_wallet_p2id_note::bindings::miden::basic_wallet::basic_wallet::receive_asset::wit_import (;3;) (type 5))) + (import "wasi_snapshot_preview1" "fd_write" (func $wasi::lib_generated::wasi_snapshot_preview1::fd_write (;4;) (type 6))) + (func $__wasm_call_ctors (;5;) (type 7)) + (func $alloc::raw_vec::finish_grow (;6;) (type 8) (param i32 i32 i32 i32) + (local i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + i32.eqz + br_if 0 (;@3;) + local.get 2 + i32.const -1 + i32.le_s + br_if 1 (;@2;) + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.load offset=4 + i32.eqz + br_if 0 (;@6;) + block ;; label = @7 + local.get 3 + i32.const 8 + i32.add + i32.load + local.tee 4 + br_if 0 (;@7;) + block ;; label = @8 + local.get 2 + br_if 0 (;@8;) + local.get 1 + local.set 3 + br 4 (;@4;) + end + i32.const 0 + i32.load8_u offset=1048953 + drop + br 2 (;@5;) + end + local.get 3 + i32.load + local.get 4 + local.get 1 + local.get 2 + call $__rust_realloc + local.set 3 + br 2 (;@4;) + end + block ;; label = @6 + local.get 2 + br_if 0 (;@6;) + local.get 1 + local.set 3 + br 2 (;@4;) + end + i32.const 0 + i32.load8_u offset=1048953 + drop + end + local.get 2 + local.get 1 + call $__rust_alloc + local.set 3 + end + block ;; label = @4 + local.get 3 + i32.eqz + br_if 0 (;@4;) + local.get 0 + local.get 3 + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + local.get 2 + i32.store + local.get 0 + i32.const 0 + i32.store + return + end + local.get 0 + local.get 1 + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + local.get 2 + i32.store + br 2 (;@1;) + end + local.get 0 + i32.const 0 + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + local.get 2 + i32.store + br 1 (;@1;) + end + local.get 0 + i32.const 0 + i32.store offset=4 + end + local.get 0 + i32.const 1 + i32.store + ) + (func $alloc::raw_vec::RawVec::reserve_for_push (;7;) (type 1) (param i32 i32) + (local i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 32 + i32.sub + local.tee 2 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.const 1 + i32.add + local.tee 1 + i32.eqz + br_if 0 (;@2;) + local.get 0 + i32.load offset=4 + local.tee 3 + i32.const 1 + i32.shl + local.tee 4 + local.get 1 + local.get 4 + local.get 1 + i32.gt_u + select + local.tee 1 + i32.const 4 + local.get 1 + i32.const 4 + i32.gt_u + select + local.tee 1 + i32.const 40 + i32.mul + local.set 4 + local.get 1 + i32.const 53687092 + i32.lt_u + i32.const 3 + i32.shl + local.set 5 + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.eqz + br_if 0 (;@4;) + local.get 2 + i32.const 8 + i32.store offset=24 + local.get 2 + local.get 3 + i32.const 40 + i32.mul + i32.store offset=28 + local.get 2 + local.get 0 + i32.load + i32.store offset=20 + br 1 (;@3;) + end + local.get 2 + i32.const 0 + i32.store offset=24 + end + local.get 2 + i32.const 8 + i32.add + local.get 5 + local.get 4 + local.get 2 + i32.const 20 + i32.add + call $alloc::raw_vec::finish_grow + local.get 2 + i32.load offset=12 + local.set 3 + block ;; label = @3 + local.get 2 + i32.load offset=8 + br_if 0 (;@3;) + local.get 0 + local.get 1 + i32.store offset=4 + local.get 0 + local.get 3 + i32.store + br 2 (;@1;) + end + local.get 3 + i32.const -2147483647 + i32.eq + br_if 1 (;@1;) + local.get 3 + i32.eqz + br_if 0 (;@2;) + local.get 3 + local.get 2 + i32.const 16 + i32.add + i32.load + call $alloc::alloc::handle_alloc_error + unreachable + end + call $alloc::raw_vec::capacity_overflow + unreachable + end + local.get 2 + i32.const 32 + i32.add + global.set $__stack_pointer + ) + (func $miden:base/note@1.0.0#note-script (;8;) (type 7) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i64 i64 i64 i64 i64 i32) + global.get $__stack_pointer + i32.const 32 + i32.sub + local.tee 0 + global.set $__stack_pointer + call $wit_bindgen::rt::run_ctors_once + local.get 0 + i32.const 20 + i32.add + call $basic_wallet_p2id_note::bindings::miden::base::tx_kernel::get_inputs::wit_import + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 0 + i32.const 24 + i32.add + i32.load + local.tee 1 + i32.eqz + br_if 0 (;@4;) + local.get 0 + i32.load offset=20 + local.tee 2 + i64.load + call $basic_wallet_p2id_note::bindings::miden::base::tx_kernel::get_id::wit_import + i64.ne + br_if 0 (;@4;) + local.get 0 + i32.const 12 + i32.add + call $basic_wallet_p2id_note::bindings::miden::base::tx_kernel::get_assets::wit_import + local.get 0 + i32.load offset=12 + local.set 3 + block ;; label = @5 + block ;; label = @6 + local.get 0 + i32.const 16 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 0 (;@6;) + local.get 4 + i32.const 53687091 + i32.gt_u + br_if 1 (;@5;) + local.get 4 + i32.const 40 + i32.mul + local.tee 5 + i32.const -1 + i32.le_s + br_if 1 (;@5;) + i32.const 8 + local.set 6 + block ;; label = @7 + local.get 5 + i32.eqz + br_if 0 (;@7;) + i32.const 0 + i32.load8_u offset=1048953 + drop + local.get 5 + i32.const 8 + call $__rust_alloc + local.tee 6 + i32.eqz + br_if 4 (;@3;) + end + i32.const 0 + local.set 7 + local.get 0 + i32.const 0 + i32.store offset=28 + local.get 0 + local.get 4 + i32.store offset=24 + local.get 0 + local.get 6 + i32.store offset=20 + local.get 3 + local.set 8 + loop ;; label = @7 + block ;; label = @8 + block ;; label = @9 + local.get 8 + i32.load8_u + br_if 0 (;@9;) + i64.const 0 + local.set 9 + br 1 (;@8;) + end + local.get 8 + i32.const 32 + i32.add + i64.load + local.set 10 + local.get 8 + i32.const 24 + i32.add + i64.load + local.set 11 + i64.const 1 + local.set 9 + end + local.get 8 + i32.const 8 + i32.add + i64.load + local.set 12 + local.get 8 + i32.const 16 + i32.add + i64.load + local.set 13 + block ;; label = @8 + local.get 7 + local.get 0 + i32.load offset=24 + i32.ne + br_if 0 (;@8;) + local.get 0 + i32.const 20 + i32.add + local.get 7 + call $alloc::raw_vec::RawVec::reserve_for_push + local.get 0 + i32.load offset=20 + local.set 6 + local.get 0 + i32.load offset=28 + local.set 7 + end + local.get 6 + local.get 7 + i32.const 40 + i32.mul + i32.add + local.tee 14 + local.get 10 + i64.store offset=32 + local.get 14 + local.get 11 + i64.store offset=24 + local.get 14 + local.get 13 + i64.store offset=16 + local.get 14 + local.get 12 + i64.store offset=8 + local.get 14 + local.get 9 + i64.store + local.get 0 + local.get 7 + i32.const 1 + i32.add + local.tee 7 + i32.store offset=28 + local.get 8 + i32.const 40 + i32.add + local.set 8 + local.get 4 + i32.const -1 + i32.add + local.tee 4 + br_if 0 (;@7;) + end + local.get 0 + i32.load offset=24 + local.set 6 + local.get 0 + i32.load offset=20 + local.set 4 + local.get 3 + local.get 5 + i32.const 8 + call $wit_bindgen::rt::dealloc + local.get 7 + i32.eqz + br_if 4 (;@2;) + local.get 4 + local.get 7 + i32.const 40 + i32.mul + i32.add + local.set 14 + local.get 4 + local.set 8 + loop ;; label = @7 + local.get 8 + i64.load + local.tee 9 + i64.const 2 + i64.eq + br_if 5 (;@2;) + local.get 9 + i64.const 0 + i64.ne + local.tee 7 + local.get 8 + i64.load offset=8 + local.get 8 + i64.load offset=16 + local.get 8 + i64.load offset=24 + i64.const 0 + local.get 7 + select + local.get 8 + i64.load offset=32 + i64.const 0 + local.get 7 + select + call $basic_wallet_p2id_note::bindings::miden::basic_wallet::basic_wallet::receive_asset::wit_import + local.get 8 + i32.const 40 + i32.add + local.tee 8 + local.get 14 + i32.ne + br_if 0 (;@7;) + br 5 (;@2;) + end + end + local.get 3 + i32.const 0 + i32.const 8 + call $wit_bindgen::rt::dealloc + br 4 (;@1;) + end + call $alloc::raw_vec::capacity_overflow + unreachable + end + unreachable + unreachable + end + i32.const 8 + local.get 5 + call $alloc::alloc::handle_alloc_error + unreachable + end + local.get 6 + i32.eqz + br_if 0 (;@1;) + local.get 4 + local.get 6 + i32.const 40 + i32.mul + i32.const 8 + call $__rust_dealloc + end + local.get 2 + local.get 1 + i32.const 3 + i32.shl + i32.const 8 + call $__rust_dealloc + local.get 0 + i32.const 32 + i32.add + global.set $__stack_pointer + ) + (func $__rust_alloc (;9;) (type 3) (param i32 i32) (result i32) + (local i32) + local.get 0 + local.get 1 + call $__rdl_alloc + local.set 2 + local.get 2 + return + ) + (func $__rust_dealloc (;10;) (type 9) (param i32 i32 i32) + local.get 0 + local.get 1 + local.get 2 + call $__rdl_dealloc + return + ) + (func $__rust_realloc (;11;) (type 6) (param i32 i32 i32 i32) (result i32) + (local i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call $__rdl_realloc + local.set 4 + local.get 4 + return + ) + (func $__rust_alloc_error_handler (;12;) (type 1) (param i32 i32) + local.get 0 + local.get 1 + call $__rg_oom + return + ) + (func $wit_bindgen::rt::run_ctors_once (;13;) (type 7) + block ;; label = @1 + i32.const 0 + i32.load8_u offset=1048954 + br_if 0 (;@1;) + call $__wasm_call_ctors + i32.const 0 + i32.const 1 + i32.store8 offset=1048954 + end + ) + (func $cabi_realloc (;14;) (type 6) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + br_if 0 (;@3;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + i32.const 0 + i32.load8_u offset=1048953 + drop + local.get 3 + local.get 2 + call $__rust_alloc + local.set 2 + br 1 (;@2;) + end + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call $__rust_realloc + local.set 2 + end + local.get 2 + br_if 0 (;@1;) + unreachable + unreachable + end + local.get 2 + ) + (func $wit_bindgen::rt::dealloc (;15;) (type 9) (param i32 i32 i32) + block ;; label = @1 + local.get 1 + i32.eqz + br_if 0 (;@1;) + local.get 0 + local.get 1 + local.get 2 + call $__rust_dealloc + end + ) + (func $core::ptr::drop_in_place> (;16;) (type $.rodata) (param i32) + (local i32 i32 i32) + local.get 0 + i32.load offset=4 + local.set 1 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.load8_u + local.tee 0 + i32.const 4 + i32.gt_u + br_if 0 (;@2;) + local.get 0 + i32.const 3 + i32.ne + br_if 1 (;@1;) + end + local.get 1 + i32.load + local.tee 2 + local.get 1 + i32.const 4 + i32.add + i32.load + local.tee 0 + i32.load + call_indirect (type $.rodata) + block ;; label = @2 + local.get 0 + i32.load offset=4 + local.tee 3 + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 3 + local.get 0 + i32.load offset=8 + call $__rust_dealloc + end + local.get 1 + i32.const 12 + i32.const 4 + call $__rust_dealloc + end + ) + (func $core::fmt::Write::write_char (;17;) (type 3) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 32 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 2 + i32.const 0 + i32.store offset=8 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 1 + i32.const 128 + i32.lt_u + br_if 0 (;@4;) + local.get 1 + i32.const 2048 + i32.lt_u + br_if 1 (;@3;) + local.get 1 + i32.const 65536 + i32.ge_u + br_if 2 (;@2;) + local.get 2 + local.get 1 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=10 + local.get 2 + local.get 1 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 offset=8 + local.get 2 + local.get 1 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=9 + i32.const 3 + local.set 1 + br 3 (;@1;) + end + local.get 2 + local.get 1 + i32.store8 offset=8 + i32.const 1 + local.set 1 + br 2 (;@1;) + end + local.get 2 + local.get 1 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=9 + local.get 2 + local.get 1 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + i32.store8 offset=8 + i32.const 2 + local.set 1 + br 1 (;@1;) + end + local.get 2 + local.get 1 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=11 + local.get 2 + local.get 1 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=10 + local.get 2 + local.get 1 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=9 + local.get 2 + local.get 1 + i32.const 18 + i32.shr_u + i32.const 7 + i32.and + i32.const 240 + i32.or + i32.store8 offset=8 + i32.const 4 + local.set 1 + end + local.get 2 + i32.const 8 + i32.add + local.set 3 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + loop ;; label = @4 + local.get 2 + local.get 1 + i32.store offset=16 + local.get 2 + local.get 3 + i32.store offset=12 + local.get 2 + i32.const 20 + i32.add + i32.const 2 + local.get 2 + i32.const 12 + i32.add + i32.const 1 + call $wasi::lib_generated::fd_write + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 2 + i32.load16_u offset=20 + br_if 0 (;@7;) + local.get 2 + i32.load offset=24 + local.tee 4 + br_if 1 (;@6;) + i32.const 2 + local.set 1 + i32.const 1048604 + local.set 4 + br 5 (;@2;) + end + local.get 2 + local.get 2 + i32.load16_u offset=22 + i32.store16 offset=30 + local.get 2 + i32.const 30 + i32.add + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.tee 4 + call $std::sys::wasi::decode_error_kind + i32.const 255 + i32.and + i32.const 35 + i32.eq + br_if 1 (;@5;) + i32.const 0 + local.set 1 + br 4 (;@2;) + end + local.get 1 + local.get 4 + i32.lt_u + br_if 2 (;@3;) + local.get 3 + local.get 4 + i32.add + local.set 3 + local.get 1 + local.get 4 + i32.sub + local.set 1 + end + local.get 1 + br_if 0 (;@4;) + end + i32.const 0 + local.set 1 + br 2 (;@1;) + end + unreachable + unreachable + end + local.get 0 + i32.load offset=4 + local.set 5 + block ;; label = @2 + block ;; label = @3 + local.get 0 + i32.load8_u + local.tee 3 + i32.const 4 + i32.gt_u + br_if 0 (;@3;) + local.get 3 + i32.const 3 + i32.ne + br_if 1 (;@2;) + end + local.get 5 + i32.load + local.tee 6 + local.get 5 + i32.const 4 + i32.add + i32.load + local.tee 3 + i32.load + call_indirect (type $.rodata) + block ;; label = @3 + local.get 3 + i32.load offset=4 + local.tee 7 + i32.eqz + br_if 0 (;@3;) + local.get 6 + local.get 7 + local.get 3 + i32.load offset=8 + call $__rust_dealloc + end + local.get 5 + i32.const 12 + i32.const 4 + call $__rust_dealloc + end + local.get 0 + local.get 4 + i32.store offset=4 + local.get 0 + local.get 1 + i32.store + i32.const 1 + local.set 1 + end + local.get 2 + i32.const 32 + i32.add + global.set $__stack_pointer + local.get 1 + ) + (func $core::fmt::Write::write_fmt (;18;) (type 3) (param i32 i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 2 + local.get 0 + i32.store offset=12 + local.get 2 + i32.const 12 + i32.add + i32.const 1048640 + local.get 1 + call $core::fmt::write + local.set 0 + local.get 2 + i32.const 16 + i32.add + global.set $__stack_pointer + local.get 0 + ) + (func $core::ptr::drop_in_place<&mut std::io::Write::write_fmt::Adapter>> (;19;) (type $.rodata) (param i32)) + (func $<&mut W as core::fmt::Write>::write_char (;20;) (type 3) (param i32 i32) (result i32) + local.get 0 + i32.load + local.get 1 + call $core::fmt::Write::write_char + ) + (func $<&mut W as core::fmt::Write>::write_fmt (;21;) (type 3) (param i32 i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 2 + local.get 0 + i32.load + i32.store offset=12 + local.get 2 + i32.const 12 + i32.add + i32.const 1048640 + local.get 1 + call $core::fmt::write + local.set 0 + local.get 2 + i32.const 16 + i32.add + global.set $__stack_pointer + local.get 0 + ) + (func $<&mut W as core::fmt::Write>::write_str (;22;) (type 2) (param i32 i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 32 + i32.sub + local.tee 3 + global.set $__stack_pointer + i32.const 0 + local.set 4 + block ;; label = @1 + local.get 2 + i32.eqz + br_if 0 (;@1;) + local.get 0 + i32.load + local.set 5 + block ;; label = @2 + block ;; label = @3 + loop ;; label = @4 + local.get 3 + local.get 2 + i32.store offset=16 + local.get 3 + local.get 1 + i32.store offset=12 + local.get 3 + i32.const 20 + i32.add + i32.const 2 + local.get 3 + i32.const 12 + i32.add + i32.const 1 + call $wasi::lib_generated::fd_write + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 3 + i32.load16_u offset=20 + br_if 0 (;@7;) + local.get 3 + i32.load offset=24 + local.tee 0 + br_if 1 (;@6;) + i32.const 2 + local.set 2 + i32.const 1048604 + local.set 0 + br 5 (;@2;) + end + local.get 3 + local.get 3 + i32.load16_u offset=22 + i32.store16 offset=30 + local.get 3 + i32.const 30 + i32.add + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.tee 0 + call $std::sys::wasi::decode_error_kind + i32.const 255 + i32.and + i32.const 35 + i32.eq + br_if 1 (;@5;) + i32.const 0 + local.set 2 + br 4 (;@2;) + end + local.get 2 + local.get 0 + i32.lt_u + br_if 2 (;@3;) + local.get 1 + local.get 0 + i32.add + local.set 1 + local.get 2 + local.get 0 + i32.sub + local.set 2 + end + local.get 2 + br_if 0 (;@4;) + br 3 (;@1;) + end + end + unreachable + unreachable + end + local.get 5 + i32.load offset=4 + local.set 4 + block ;; label = @2 + block ;; label = @3 + local.get 5 + i32.load8_u + local.tee 1 + i32.const 4 + i32.gt_u + br_if 0 (;@3;) + local.get 1 + i32.const 3 + i32.ne + br_if 1 (;@2;) + end + local.get 4 + i32.load + local.tee 6 + local.get 4 + i32.const 4 + i32.add + i32.load + local.tee 1 + i32.load + call_indirect (type $.rodata) + block ;; label = @3 + local.get 1 + i32.load offset=4 + local.tee 7 + i32.eqz + br_if 0 (;@3;) + local.get 6 + local.get 7 + local.get 1 + i32.load offset=8 + call $__rust_dealloc + end + local.get 4 + i32.const 12 + i32.const 4 + call $__rust_dealloc + end + local.get 5 + local.get 0 + i32.store offset=4 + local.get 5 + local.get 2 + i32.store + i32.const 1 + local.set 4 + end + local.get 3 + i32.const 32 + i32.add + global.set $__stack_pointer + local.get 4 + ) + (func $ as core::fmt::Write>::write_str (;23;) (type 2) (param i32 i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 32 + i32.sub + local.tee 3 + global.set $__stack_pointer + i32.const 0 + local.set 4 + block ;; label = @1 + local.get 2 + i32.eqz + br_if 0 (;@1;) + block ;; label = @2 + block ;; label = @3 + loop ;; label = @4 + local.get 3 + local.get 2 + i32.store offset=16 + local.get 3 + local.get 1 + i32.store offset=12 + local.get 3 + i32.const 20 + i32.add + i32.const 2 + local.get 3 + i32.const 12 + i32.add + i32.const 1 + call $wasi::lib_generated::fd_write + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 3 + i32.load16_u offset=20 + br_if 0 (;@7;) + local.get 3 + i32.load offset=24 + local.tee 5 + br_if 1 (;@6;) + i32.const 2 + local.set 2 + i32.const 1048604 + local.set 5 + br 5 (;@2;) + end + local.get 3 + local.get 3 + i32.load16_u offset=22 + i32.store16 offset=30 + local.get 3 + i32.const 30 + i32.add + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.tee 5 + call $std::sys::wasi::decode_error_kind + i32.const 255 + i32.and + i32.const 35 + i32.eq + br_if 1 (;@5;) + i32.const 0 + local.set 2 + br 4 (;@2;) + end + local.get 2 + local.get 5 + i32.lt_u + br_if 2 (;@3;) + local.get 1 + local.get 5 + i32.add + local.set 1 + local.get 2 + local.get 5 + i32.sub + local.set 2 + end + local.get 2 + br_if 0 (;@4;) + br 3 (;@1;) + end + end + unreachable + unreachable + end + local.get 0 + i32.load offset=4 + local.set 4 + block ;; label = @2 + block ;; label = @3 + local.get 0 + i32.load8_u + local.tee 1 + i32.const 4 + i32.gt_u + br_if 0 (;@3;) + local.get 1 + i32.const 3 + i32.ne + br_if 1 (;@2;) + end + local.get 4 + i32.load + local.tee 6 + local.get 4 + i32.const 4 + i32.add + i32.load + local.tee 1 + i32.load + call_indirect (type $.rodata) + block ;; label = @3 + local.get 1 + i32.load offset=4 + local.tee 7 + i32.eqz + br_if 0 (;@3;) + local.get 6 + local.get 7 + local.get 1 + i32.load offset=8 + call $__rust_dealloc + end + local.get 4 + i32.const 12 + i32.const 4 + call $__rust_dealloc + end + local.get 0 + local.get 5 + i32.store offset=4 + local.get 0 + local.get 2 + i32.store + i32.const 1 + local.set 4 + end + local.get 3 + i32.const 32 + i32.add + global.set $__stack_pointer + local.get 4 + ) + (func $__rdl_alloc (;24;) (type 3) (param i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.const 8 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + local.get 0 + i32.le_u + br_if 1 (;@1;) + end + local.get 1 + local.get 0 + call $aligned_alloc + return + end + local.get 0 + call $malloc + ) + (func $__rdl_dealloc (;25;) (type 9) (param i32 i32 i32) + local.get 0 + call $free + ) + (func $__rdl_realloc (;26;) (type 6) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + local.get 2 + i32.const 8 + i32.gt_u + br_if 0 (;@2;) + local.get 2 + local.get 3 + i32.le_u + br_if 1 (;@1;) + end + block ;; label = @2 + local.get 2 + local.get 3 + call $aligned_alloc + local.tee 2 + br_if 0 (;@2;) + i32.const 0 + return + end + local.get 2 + local.get 0 + local.get 1 + local.get 3 + local.get 1 + local.get 3 + i32.lt_u + select + call $memcpy + local.set 3 + local.get 0 + call $free + local.get 3 + return + end + local.get 0 + local.get 3 + call $realloc + ) + (func $std::alloc::default_alloc_error_hook (;27;) (type 1) (param i32 i32) + (local i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 64 + i32.sub + local.tee 2 + global.set $__stack_pointer + block ;; label = @1 + i32.const 0 + i32.load8_u offset=1048952 + br_if 0 (;@1;) + local.get 2 + i32.const 24 + i32.add + i64.const 1 + i64.store align=4 + local.get 2 + i32.const 2 + i32.store offset=16 + local.get 2 + i32.const 1048700 + i32.store offset=12 + local.get 2 + i32.const 9 + i32.store offset=40 + local.get 2 + local.get 1 + i32.store offset=44 + local.get 2 + local.get 2 + i32.const 36 + i32.add + i32.store offset=20 + local.get 2 + local.get 2 + i32.const 44 + i32.add + i32.store offset=36 + local.get 2 + i32.const 4 + i32.store8 offset=48 + local.get 2 + local.get 2 + i32.const 63 + i32.add + i32.store offset=56 + local.get 2 + i32.const 48 + i32.add + i32.const 1048616 + local.get 2 + i32.const 12 + i32.add + call $core::fmt::write + local.set 3 + local.get 2 + i32.load8_u offset=48 + local.set 1 + block ;; label = @2 + block ;; label = @3 + local.get 3 + i32.eqz + br_if 0 (;@3;) + local.get 1 + i32.const 4 + i32.eq + br_if 1 (;@2;) + local.get 2 + i32.load offset=52 + local.set 3 + block ;; label = @4 + local.get 2 + i32.load8_u offset=48 + local.tee 1 + i32.const 4 + i32.gt_u + br_if 0 (;@4;) + local.get 1 + i32.const 3 + i32.ne + br_if 2 (;@2;) + end + local.get 3 + i32.load + local.tee 4 + local.get 3 + i32.const 4 + i32.add + i32.load + local.tee 1 + i32.load + call_indirect (type $.rodata) + block ;; label = @4 + local.get 1 + i32.load offset=4 + local.tee 5 + i32.eqz + br_if 0 (;@4;) + local.get 4 + local.get 5 + local.get 1 + i32.load offset=8 + call $__rust_dealloc + end + local.get 3 + i32.const 12 + i32.const 4 + call $__rust_dealloc + br 1 (;@2;) + end + local.get 2 + i32.load offset=52 + local.set 3 + block ;; label = @3 + local.get 1 + i32.const 4 + i32.gt_u + br_if 0 (;@3;) + local.get 1 + i32.const 3 + i32.ne + br_if 1 (;@2;) + end + local.get 3 + i32.load + local.tee 4 + local.get 3 + i32.const 4 + i32.add + i32.load + local.tee 1 + i32.load + call_indirect (type $.rodata) + block ;; label = @3 + local.get 1 + i32.load offset=4 + local.tee 5 + i32.eqz + br_if 0 (;@3;) + local.get 4 + local.get 5 + local.get 1 + i32.load offset=8 + call $__rust_dealloc + end + local.get 3 + i32.const 12 + i32.const 4 + call $__rust_dealloc + end + local.get 2 + i32.const 64 + i32.add + global.set $__stack_pointer + return + end + unreachable + unreachable + ) + (func $std::alloc::rust_oom (;28;) (type 1) (param i32 i32) + (local i32) + local.get 0 + local.get 1 + i32.const 0 + i32.load offset=1048956 + local.tee 2 + i32.const 10 + local.get 2 + select + call_indirect (type 1) + call $std::process::abort + unreachable + ) + (func $__rg_oom (;29;) (type 1) (param i32 i32) + local.get 1 + local.get 0 + call $std::alloc::rust_oom + unreachable + ) + (func $std::sys::wasi::decode_error_kind (;30;) (type 10) (param i32) (result i32) + (local i32) + i32.const 40 + local.set 1 + block ;; label = @1 + local.get 0 + i32.const 65535 + i32.gt_u + br_if 0 (;@1;) + i32.const 2 + local.set 1 + i32.const 1048716 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 3 + local.set 1 + i32.const 1048718 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 1 + local.set 1 + i32.const 1048720 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 1048722 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 11 + local.set 1 + i32.const 1048724 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 7 + local.set 1 + i32.const 1048726 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 6 + local.set 1 + i32.const 1048728 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 9 + local.set 1 + i32.const 1048730 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 8 + local.set 1 + i32.const 1048732 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 0 + local.set 1 + i32.const 1048734 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 35 + local.set 1 + i32.const 1048736 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 20 + local.set 1 + i32.const 1048738 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 22 + local.set 1 + i32.const 1048740 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 12 + local.set 1 + i32.const 1048742 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 13 + local.set 1 + i32.const 1048744 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 36 + local.set 1 + i32.const 1048746 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + br_if 0 (;@1;) + i32.const 38 + i32.const 40 + i32.const 1048748 + call $wasi::lib_generated::Errno::raw + i32.const 65535 + i32.and + local.get 0 + i32.eq + select + local.set 1 + end + local.get 1 + ) + (func $std::sys::wasi::abort_internal (;31;) (type 7) + call $abort + unreachable + ) + (func $std::process::abort (;32;) (type 7) + call $std::sys::wasi::abort_internal + unreachable + ) + (func $wasi::lib_generated::Errno::raw (;33;) (type 10) (param i32) (result i32) + local.get 0 + i32.load16_u + ) + (func $wasi::lib_generated::fd_write (;34;) (type 8) (param i32 i32 i32 i32) + (local i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 4 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + local.get 1 + local.get 2 + local.get 3 + local.get 4 + i32.const 12 + i32.add + call $wasi::lib_generated::wasi_snapshot_preview1::fd_write + local.tee 3 + br_if 0 (;@2;) + local.get 0 + local.get 4 + i32.load offset=12 + i32.store offset=4 + i32.const 0 + local.set 3 + br 1 (;@1;) + end + local.get 0 + local.get 3 + i32.store16 offset=2 + i32.const 1 + local.set 3 + end + local.get 0 + local.get 3 + i32.store16 + local.get 4 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $malloc (;35;) (type 10) (param i32) (result i32) + local.get 0 + call $dlmalloc + ) + (func $dlmalloc (;36;) (type 10) (param i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 1 + global.set $__stack_pointer + block ;; label = @1 + i32.const 0 + i32.load offset=1048984 + local.tee 2 + br_if 0 (;@1;) + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1049432 + local.tee 3 + i32.eqz + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1049436 + local.set 4 + br 1 (;@2;) + end + i32.const 0 + i64.const -1 + i64.store offset=1049444 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049436 align=4 + i32.const 0 + local.get 1 + i32.const 8 + i32.add + i32.const -16 + i32.and + i32.const 1431655768 + i32.xor + local.tee 3 + i32.store offset=1049432 + i32.const 0 + i32.const 0 + i32.store offset=1049452 + i32.const 0 + i32.const 0 + i32.store offset=1049404 + i32.const 65536 + local.set 4 + end + i32.const 0 + local.set 2 + i32.const 1114112 + i32.const 1049472 + local.get 4 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.const 1114112 + select + i32.const 1049472 + i32.sub + local.tee 5 + i32.const 89 + i32.lt_u + br_if 0 (;@1;) + i32.const 0 + local.set 4 + i32.const 0 + local.get 5 + i32.store offset=1049412 + i32.const 0 + i32.const 1049472 + i32.store offset=1049408 + i32.const 0 + i32.const 1049472 + i32.store offset=1048976 + i32.const 0 + local.get 3 + i32.store offset=1048996 + i32.const 0 + i32.const -1 + i32.store offset=1048992 + loop ;; label = @2 + local.get 4 + i32.const 1049020 + i32.add + local.get 4 + i32.const 1049008 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1049000 + i32.add + local.tee 6 + i32.store + local.get 4 + i32.const 1049012 + i32.add + local.get 6 + i32.store + local.get 4 + i32.const 1049028 + i32.add + local.get 4 + i32.const 1049016 + i32.add + local.tee 6 + i32.store + local.get 6 + local.get 3 + i32.store + local.get 4 + i32.const 1049036 + i32.add + local.get 4 + i32.const 1049024 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 6 + i32.store + local.get 4 + i32.const 1049032 + i32.add + local.get 3 + i32.store + local.get 4 + i32.const 32 + i32.add + local.tee 4 + i32.const 256 + i32.ne + br_if 0 (;@2;) + end + i32.const 1049472 + i32.const -8 + i32.const 1049472 + i32.sub + i32.const 15 + i32.and + i32.const 0 + i32.const 1049472 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 2 + i32.const 4 + i32.add + local.get 5 + i32.const -56 + i32.add + local.tee 3 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store + i32.const 0 + i32.const 0 + i32.load offset=1049448 + i32.store offset=1048988 + i32.const 0 + local.get 4 + i32.store offset=1048972 + i32.const 0 + local.get 2 + i32.store offset=1048984 + i32.const 1049472 + local.get 3 + i32.add + i32.const 56 + i32.store offset=4 + end + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + local.get 0 + i32.const 236 + i32.gt_u + br_if 0 (;@12;) + block ;; label = @13 + i32.const 0 + i32.load offset=1048960 + local.tee 7 + i32.const 16 + local.get 0 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 0 + i32.const 11 + i32.lt_u + select + local.tee 5 + i32.const 3 + i32.shr_u + local.tee 3 + i32.shr_u + local.tee 4 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@13;) + block ;; label = @14 + block ;; label = @15 + local.get 4 + i32.const 1 + i32.and + local.get 3 + i32.or + i32.const 1 + i32.xor + local.tee 6 + i32.const 3 + i32.shl + local.tee 3 + i32.const 1049000 + i32.add + local.tee 4 + local.get 3 + i32.const 1049008 + i32.add + i32.load + local.tee 3 + i32.load offset=8 + local.tee 5 + i32.ne + br_if 0 (;@15;) + i32.const 0 + local.get 7 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048960 + br 1 (;@14;) + end + local.get 4 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 4 + i32.store offset=12 + end + local.get 3 + i32.const 8 + i32.add + local.set 4 + local.get 3 + local.get 6 + i32.const 3 + i32.shl + local.tee 6 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + local.get 6 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 12 (;@1;) + end + local.get 5 + i32.const 0 + i32.load offset=1048968 + local.tee 8 + i32.le_u + br_if 1 (;@11;) + block ;; label = @13 + local.get 4 + i32.eqz + br_if 0 (;@13;) + block ;; label = @14 + block ;; label = @15 + local.get 4 + local.get 3 + i32.shl + i32.const 2 + local.get 3 + i32.shl + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.or + i32.and + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.ctz + local.tee 3 + i32.const 3 + i32.shl + local.tee 4 + i32.const 1049000 + i32.add + local.tee 6 + local.get 4 + i32.const 1049008 + i32.add + i32.load + local.tee 4 + i32.load offset=8 + local.tee 0 + i32.ne + br_if 0 (;@15;) + i32.const 0 + local.get 7 + i32.const -2 + local.get 3 + i32.rotl + i32.and + local.tee 7 + i32.store offset=1048960 + br 1 (;@14;) + end + local.get 6 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 6 + i32.store offset=12 + end + local.get 4 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 4 + local.get 3 + i32.const 3 + i32.shl + local.tee 3 + i32.add + local.get 3 + local.get 5 + i32.sub + local.tee 6 + i32.store + local.get 4 + local.get 5 + i32.add + local.tee 0 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @14 + local.get 8 + i32.eqz + br_if 0 (;@14;) + local.get 8 + i32.const -8 + i32.and + i32.const 1049000 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1048980 + local.set 3 + block ;; label = @15 + block ;; label = @16 + local.get 7 + i32.const 1 + local.get 8 + i32.const 3 + i32.shr_u + i32.shl + local.tee 9 + i32.and + br_if 0 (;@16;) + i32.const 0 + local.get 7 + local.get 9 + i32.or + i32.store offset=1048960 + local.get 5 + local.set 9 + br 1 (;@15;) + end + local.get 5 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 3 + i32.store offset=12 + local.get 5 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 9 + i32.store offset=8 + end + local.get 4 + i32.const 8 + i32.add + local.set 4 + i32.const 0 + local.get 0 + i32.store offset=1048980 + i32.const 0 + local.get 6 + i32.store offset=1048968 + br 12 (;@1;) + end + i32.const 0 + i32.load offset=1048964 + local.tee 10 + i32.eqz + br_if 1 (;@11;) + local.get 10 + i32.const 0 + local.get 10 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + i32.load + local.tee 0 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.set 3 + local.get 0 + local.set 6 + block ;; label = @13 + loop ;; label = @14 + block ;; label = @15 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@15;) + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 2 (;@13;) + end + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 6 + local.get 3 + local.get 6 + local.get 3 + i32.lt_u + local.tee 6 + select + local.set 3 + local.get 4 + local.get 0 + local.get 6 + select + local.set 0 + local.get 4 + local.set 6 + br 0 (;@14;) + end + end + local.get 0 + i32.load offset=24 + local.set 11 + block ;; label = @13 + local.get 0 + i32.load offset=12 + local.tee 9 + local.get 0 + i32.eq + br_if 0 (;@13;) + local.get 0 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048976 + i32.lt_u + drop + local.get 9 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 9 + i32.store offset=12 + br 11 (;@2;) + end + block ;; label = @13 + local.get 0 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 0 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 3 (;@10;) + local.get 0 + i32.const 16 + i32.add + local.set 6 + end + loop ;; label = @13 + local.get 6 + local.set 2 + local.get 4 + local.tee 9 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 9 + i32.const 16 + i32.add + local.set 6 + local.get 9 + i32.load offset=16 + local.tee 4 + br_if 0 (;@13;) + end + local.get 2 + i32.const 0 + i32.store + br 10 (;@2;) + end + i32.const -1 + local.set 5 + local.get 0 + i32.const -65 + i32.gt_u + br_if 0 (;@11;) + local.get 0 + i32.const 19 + i32.add + local.tee 4 + i32.const -16 + i32.and + local.set 5 + i32.const 0 + i32.load offset=1048964 + local.tee 10 + i32.eqz + br_if 0 (;@11;) + i32.const 0 + local.set 8 + block ;; label = @12 + local.get 5 + i32.const 256 + i32.lt_u + br_if 0 (;@12;) + i32.const 31 + local.set 8 + local.get 5 + i32.const 16777215 + i32.gt_u + br_if 0 (;@12;) + local.get 5 + i32.const 38 + local.get 4 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 8 + end + i32.const 0 + local.get 5 + i32.sub + local.set 3 + block ;; label = @12 + block ;; label = @13 + block ;; label = @14 + block ;; label = @15 + local.get 8 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + i32.load + local.tee 6 + br_if 0 (;@15;) + i32.const 0 + local.set 4 + i32.const 0 + local.set 9 + br 1 (;@14;) + end + i32.const 0 + local.set 4 + local.get 5 + i32.const 0 + i32.const 25 + local.get 8 + i32.const 1 + i32.shr_u + i32.sub + local.get 8 + i32.const 31 + i32.eq + select + i32.shl + local.set 0 + i32.const 0 + local.set 9 + loop ;; label = @15 + block ;; label = @16 + local.get 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 7 + local.get 3 + i32.ge_u + br_if 0 (;@16;) + local.get 7 + local.set 3 + local.get 6 + local.set 9 + local.get 7 + br_if 0 (;@16;) + i32.const 0 + local.set 3 + local.get 6 + local.set 9 + local.get 6 + local.set 4 + br 3 (;@13;) + end + local.get 4 + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 7 + local.get 7 + local.get 6 + local.get 0 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + i32.load + local.tee 6 + i32.eq + select + local.get 4 + local.get 7 + select + local.set 4 + local.get 0 + i32.const 1 + i32.shl + local.set 0 + local.get 6 + br_if 0 (;@15;) + end + end + block ;; label = @14 + local.get 4 + local.get 9 + i32.or + br_if 0 (;@14;) + i32.const 0 + local.set 9 + i32.const 2 + local.get 8 + i32.shl + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.or + local.get 10 + i32.and + local.tee 4 + i32.eqz + br_if 3 (;@11;) + local.get 4 + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + i32.load + local.set 4 + end + local.get 4 + i32.eqz + br_if 1 (;@12;) + end + loop ;; label = @13 + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 7 + local.get 3 + i32.lt_u + local.set 0 + block ;; label = @14 + local.get 4 + i32.load offset=16 + local.tee 6 + br_if 0 (;@14;) + local.get 4 + i32.const 20 + i32.add + i32.load + local.set 6 + end + local.get 7 + local.get 3 + local.get 0 + select + local.set 3 + local.get 4 + local.get 9 + local.get 0 + select + local.set 9 + local.get 6 + local.set 4 + local.get 6 + br_if 0 (;@13;) + end + end + local.get 9 + i32.eqz + br_if 0 (;@11;) + local.get 3 + i32.const 0 + i32.load offset=1048968 + local.get 5 + i32.sub + i32.ge_u + br_if 0 (;@11;) + local.get 9 + i32.load offset=24 + local.set 2 + block ;; label = @12 + local.get 9 + i32.load offset=12 + local.tee 0 + local.get 9 + i32.eq + br_if 0 (;@12;) + local.get 9 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048976 + i32.lt_u + drop + local.get 0 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 0 + i32.store offset=12 + br 9 (;@3;) + end + block ;; label = @12 + local.get 9 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@12;) + local.get 9 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 3 (;@9;) + local.get 9 + i32.const 16 + i32.add + local.set 6 + end + loop ;; label = @12 + local.get 6 + local.set 7 + local.get 4 + local.tee 0 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@12;) + local.get 0 + i32.const 16 + i32.add + local.set 6 + local.get 0 + i32.load offset=16 + local.tee 4 + br_if 0 (;@12;) + end + local.get 7 + i32.const 0 + i32.store + br 8 (;@3;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1048968 + local.tee 4 + local.get 5 + i32.lt_u + br_if 0 (;@11;) + i32.const 0 + i32.load offset=1048980 + local.set 3 + block ;; label = @12 + block ;; label = @13 + local.get 4 + local.get 5 + i32.sub + local.tee 6 + i32.const 16 + i32.lt_u + br_if 0 (;@13;) + local.get 3 + local.get 5 + i32.add + local.tee 0 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 4 + i32.add + local.get 6 + i32.store + local.get 3 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + br 1 (;@12;) + end + local.get 3 + local.get 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 0 + i32.const 0 + local.set 6 + end + i32.const 0 + local.get 6 + i32.store offset=1048968 + i32.const 0 + local.get 0 + i32.store offset=1048980 + local.get 3 + i32.const 8 + i32.add + local.set 4 + br 10 (;@1;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1048972 + local.tee 6 + local.get 5 + i32.le_u + br_if 0 (;@11;) + local.get 2 + local.get 5 + i32.add + local.tee 4 + local.get 6 + local.get 5 + i32.sub + local.tee 3 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048984 + i32.const 0 + local.get 3 + i32.store offset=1048972 + local.get 2 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 2 + i32.const 8 + i32.add + local.set 4 + br 10 (;@1;) + end + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1049432 + i32.eqz + br_if 0 (;@12;) + i32.const 0 + i32.load offset=1049440 + local.set 3 + br 1 (;@11;) + end + i32.const 0 + i64.const -1 + i64.store offset=1049444 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049436 align=4 + i32.const 0 + local.get 1 + i32.const 12 + i32.add + i32.const -16 + i32.and + i32.const 1431655768 + i32.xor + i32.store offset=1049432 + i32.const 0 + i32.const 0 + i32.store offset=1049452 + i32.const 0 + i32.const 0 + i32.store offset=1049404 + i32.const 65536 + local.set 3 + end + i32.const 0 + local.set 4 + block ;; label = @11 + local.get 3 + local.get 5 + i32.const 71 + i32.add + local.tee 8 + i32.add + local.tee 0 + i32.const 0 + local.get 3 + i32.sub + local.tee 7 + i32.and + local.tee 9 + local.get 5 + i32.gt_u + br_if 0 (;@11;) + i32.const 0 + i32.const 48 + i32.store offset=1049456 + br 10 (;@1;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1049400 + local.tee 4 + i32.eqz + br_if 0 (;@11;) + block ;; label = @12 + i32.const 0 + i32.load offset=1049392 + local.tee 3 + local.get 9 + i32.add + local.tee 10 + local.get 3 + i32.le_u + br_if 0 (;@12;) + local.get 10 + local.get 4 + i32.le_u + br_if 1 (;@11;) + end + i32.const 0 + local.set 4 + i32.const 0 + i32.const 48 + i32.store offset=1049456 + br 10 (;@1;) + end + i32.const 0 + i32.load8_u offset=1049404 + i32.const 4 + i32.and + br_if 4 (;@6;) + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + local.get 2 + i32.eqz + br_if 0 (;@13;) + i32.const 1049408 + local.set 4 + loop ;; label = @14 + block ;; label = @15 + local.get 4 + i32.load + local.tee 3 + local.get 2 + i32.gt_u + br_if 0 (;@15;) + local.get 3 + local.get 4 + i32.load offset=4 + i32.add + local.get 2 + i32.gt_u + br_if 3 (;@12;) + end + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@14;) + end + end + i32.const 0 + call $sbrk + local.tee 0 + i32.const -1 + i32.eq + br_if 5 (;@7;) + local.get 9 + local.set 7 + block ;; label = @13 + i32.const 0 + i32.load offset=1049436 + local.tee 4 + i32.const -1 + i32.add + local.tee 3 + local.get 0 + i32.and + i32.eqz + br_if 0 (;@13;) + local.get 9 + local.get 0 + i32.sub + local.get 3 + local.get 0 + i32.add + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.add + local.set 7 + end + local.get 7 + local.get 5 + i32.le_u + br_if 5 (;@7;) + local.get 7 + i32.const 2147483646 + i32.gt_u + br_if 5 (;@7;) + block ;; label = @13 + i32.const 0 + i32.load offset=1049400 + local.tee 4 + i32.eqz + br_if 0 (;@13;) + i32.const 0 + i32.load offset=1049392 + local.tee 3 + local.get 7 + i32.add + local.tee 6 + local.get 3 + i32.le_u + br_if 6 (;@7;) + local.get 6 + local.get 4 + i32.gt_u + br_if 6 (;@7;) + end + local.get 7 + call $sbrk + local.tee 4 + local.get 0 + i32.ne + br_if 1 (;@11;) + br 7 (;@5;) + end + local.get 0 + local.get 6 + i32.sub + local.get 7 + i32.and + local.tee 7 + i32.const 2147483646 + i32.gt_u + br_if 4 (;@7;) + local.get 7 + call $sbrk + local.tee 0 + local.get 4 + i32.load + local.get 4 + i32.load offset=4 + i32.add + i32.eq + br_if 3 (;@8;) + local.get 0 + local.set 4 + end + block ;; label = @11 + local.get 4 + i32.const -1 + i32.eq + br_if 0 (;@11;) + local.get 5 + i32.const 72 + i32.add + local.get 7 + i32.le_u + br_if 0 (;@11;) + block ;; label = @12 + local.get 8 + local.get 7 + i32.sub + i32.const 0 + i32.load offset=1049440 + local.tee 3 + i32.add + i32.const 0 + local.get 3 + i32.sub + i32.and + local.tee 3 + i32.const 2147483646 + i32.le_u + br_if 0 (;@12;) + local.get 4 + local.set 0 + br 7 (;@5;) + end + block ;; label = @12 + local.get 3 + call $sbrk + i32.const -1 + i32.eq + br_if 0 (;@12;) + local.get 3 + local.get 7 + i32.add + local.set 7 + local.get 4 + local.set 0 + br 7 (;@5;) + end + i32.const 0 + local.get 7 + i32.sub + call $sbrk + drop + br 4 (;@7;) + end + local.get 4 + local.set 0 + local.get 4 + i32.const -1 + i32.ne + br_if 5 (;@5;) + br 3 (;@7;) + end + i32.const 0 + local.set 9 + br 7 (;@2;) + end + i32.const 0 + local.set 0 + br 5 (;@3;) + end + local.get 0 + i32.const -1 + i32.ne + br_if 2 (;@5;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049404 + i32.const 4 + i32.or + i32.store offset=1049404 + end + local.get 9 + i32.const 2147483646 + i32.gt_u + br_if 1 (;@4;) + local.get 9 + call $sbrk + local.set 0 + i32.const 0 + call $sbrk + local.set 4 + local.get 0 + i32.const -1 + i32.eq + br_if 1 (;@4;) + local.get 4 + i32.const -1 + i32.eq + br_if 1 (;@4;) + local.get 0 + local.get 4 + i32.ge_u + br_if 1 (;@4;) + local.get 4 + local.get 0 + i32.sub + local.tee 7 + local.get 5 + i32.const 56 + i32.add + i32.le_u + br_if 1 (;@4;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049392 + local.get 7 + i32.add + local.tee 4 + i32.store offset=1049392 + block ;; label = @5 + local.get 4 + i32.const 0 + i32.load offset=1049396 + i32.le_u + br_if 0 (;@5;) + i32.const 0 + local.get 4 + i32.store offset=1049396 + end + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + i32.const 0 + i32.load offset=1048984 + local.tee 3 + i32.eqz + br_if 0 (;@8;) + i32.const 1049408 + local.set 4 + loop ;; label = @9 + local.get 0 + local.get 4 + i32.load + local.tee 6 + local.get 4 + i32.load offset=4 + local.tee 9 + i32.add + i32.eq + br_if 2 (;@7;) + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@9;) + br 3 (;@6;) + end + end + block ;; label = @8 + block ;; label = @9 + i32.const 0 + i32.load offset=1048976 + local.tee 4 + i32.eqz + br_if 0 (;@9;) + local.get 0 + local.get 4 + i32.ge_u + br_if 1 (;@8;) + end + i32.const 0 + local.get 0 + i32.store offset=1048976 + end + i32.const 0 + local.set 4 + i32.const 0 + local.get 7 + i32.store offset=1049412 + i32.const 0 + local.get 0 + i32.store offset=1049408 + i32.const 0 + i32.const -1 + i32.store offset=1048992 + i32.const 0 + i32.const 0 + i32.load offset=1049432 + i32.store offset=1048996 + i32.const 0 + i32.const 0 + i32.store offset=1049420 + loop ;; label = @8 + local.get 4 + i32.const 1049020 + i32.add + local.get 4 + i32.const 1049008 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1049000 + i32.add + local.tee 6 + i32.store + local.get 4 + i32.const 1049012 + i32.add + local.get 6 + i32.store + local.get 4 + i32.const 1049028 + i32.add + local.get 4 + i32.const 1049016 + i32.add + local.tee 6 + i32.store + local.get 6 + local.get 3 + i32.store + local.get 4 + i32.const 1049036 + i32.add + local.get 4 + i32.const 1049024 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 6 + i32.store + local.get 4 + i32.const 1049032 + i32.add + local.get 3 + i32.store + local.get 4 + i32.const 32 + i32.add + local.tee 4 + i32.const 256 + i32.ne + br_if 0 (;@8;) + end + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 3 + local.get 7 + i32.const -56 + i32.add + local.tee 6 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049448 + i32.store offset=1048988 + i32.const 0 + local.get 4 + i32.store offset=1048972 + i32.const 0 + local.get 3 + i32.store offset=1048984 + local.get 0 + local.get 6 + i32.add + i32.const 56 + i32.store offset=4 + br 2 (;@5;) + end + local.get 4 + i32.load8_u offset=12 + i32.const 8 + i32.and + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.lt_u + br_if 0 (;@6;) + local.get 3 + local.get 0 + i32.ge_u + br_if 0 (;@6;) + local.get 3 + i32.const -8 + local.get 3 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 3 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 6 + i32.add + local.tee 0 + i32.const 0 + i32.load offset=1048972 + local.get 7 + i32.add + local.tee 2 + local.get 6 + i32.sub + local.tee 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 4 + local.get 9 + local.get 7 + i32.add + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049448 + i32.store offset=1048988 + i32.const 0 + local.get 6 + i32.store offset=1048972 + i32.const 0 + local.get 0 + i32.store offset=1048984 + local.get 3 + local.get 2 + i32.add + i32.const 56 + i32.store offset=4 + br 1 (;@5;) + end + block ;; label = @6 + local.get 0 + i32.const 0 + i32.load offset=1048976 + local.tee 9 + i32.ge_u + br_if 0 (;@6;) + i32.const 0 + local.get 0 + i32.store offset=1048976 + local.get 0 + local.set 9 + end + local.get 0 + local.get 7 + i32.add + local.set 6 + i32.const 1049408 + local.set 4 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + loop ;; label = @13 + local.get 4 + i32.load + local.get 6 + i32.eq + br_if 1 (;@12;) + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@13;) + br 2 (;@11;) + end + end + local.get 4 + i32.load8_u offset=12 + i32.const 8 + i32.and + i32.eqz + br_if 1 (;@10;) + end + i32.const 1049408 + local.set 4 + loop ;; label = @11 + block ;; label = @12 + local.get 4 + i32.load + local.tee 6 + local.get 3 + i32.gt_u + br_if 0 (;@12;) + local.get 6 + local.get 4 + i32.load offset=4 + i32.add + local.tee 6 + local.get 3 + i32.gt_u + br_if 3 (;@9;) + end + local.get 4 + i32.load offset=8 + local.set 4 + br 0 (;@11;) + end + end + local.get 4 + local.get 0 + i32.store + local.get 4 + local.get 4 + i32.load offset=4 + local.get 7 + i32.add + i32.store offset=4 + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + i32.add + local.tee 2 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + i32.const -8 + local.get 6 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 6 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + i32.add + local.tee 7 + local.get 2 + local.get 5 + i32.add + local.tee 5 + i32.sub + local.set 4 + block ;; label = @10 + local.get 7 + local.get 3 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 5 + i32.store offset=1048984 + i32.const 0 + i32.const 0 + i32.load offset=1048972 + local.get 4 + i32.add + local.tee 4 + i32.store offset=1048972 + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + br 3 (;@7;) + end + block ;; label = @10 + local.get 7 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 5 + i32.store offset=1048980 + i32.const 0 + i32.const 0 + i32.load offset=1048968 + local.get 4 + i32.add + local.tee 4 + i32.store offset=1048968 + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 5 + local.get 4 + i32.add + local.get 4 + i32.store + br 3 (;@7;) + end + block ;; label = @10 + local.get 7 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.const 1 + i32.ne + br_if 0 (;@10;) + local.get 3 + i32.const -8 + i32.and + local.set 8 + block ;; label = @11 + block ;; label = @12 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@12;) + local.get 7 + i32.load offset=8 + local.tee 6 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 9 + i32.const 3 + i32.shl + i32.const 1049000 + i32.add + local.tee 0 + i32.eq + drop + block ;; label = @13 + local.get 7 + i32.load offset=12 + local.tee 3 + local.get 6 + i32.ne + br_if 0 (;@13;) + i32.const 0 + i32.const 0 + i32.load offset=1048960 + i32.const -2 + local.get 9 + i32.rotl + i32.and + i32.store offset=1048960 + br 2 (;@11;) + end + local.get 3 + local.get 0 + i32.eq + drop + local.get 3 + local.get 6 + i32.store offset=8 + local.get 6 + local.get 3 + i32.store offset=12 + br 1 (;@11;) + end + local.get 7 + i32.load offset=24 + local.set 10 + block ;; label = @12 + block ;; label = @13 + local.get 7 + i32.load offset=12 + local.tee 0 + local.get 7 + i32.eq + br_if 0 (;@13;) + local.get 7 + i32.load offset=8 + local.tee 3 + local.get 9 + i32.lt_u + drop + local.get 0 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 0 + i32.store offset=12 + br 1 (;@12;) + end + block ;; label = @13 + local.get 7 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + local.get 7 + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + i32.const 0 + local.set 0 + br 1 (;@12;) + end + loop ;; label = @13 + local.get 3 + local.set 9 + local.get 6 + local.tee 0 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + local.get 0 + i32.const 16 + i32.add + local.set 3 + local.get 0 + i32.load offset=16 + local.tee 6 + br_if 0 (;@13;) + end + local.get 9 + i32.const 0 + i32.store + end + local.get 10 + i32.eqz + br_if 0 (;@11;) + block ;; label = @12 + block ;; label = @13 + local.get 7 + local.get 7 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@13;) + local.get 3 + local.get 0 + i32.store + local.get 0 + br_if 1 (;@12;) + i32.const 0 + i32.const 0 + i32.load offset=1048964 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048964 + br 2 (;@11;) + end + local.get 10 + i32.const 16 + i32.const 20 + local.get 10 + i32.load offset=16 + local.get 7 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 1 (;@11;) + end + local.get 0 + local.get 10 + i32.store offset=24 + block ;; label = @12 + local.get 7 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@12;) + local.get 0 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 0 + i32.store offset=24 + end + local.get 7 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 0 (;@11;) + local.get 0 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 0 + i32.store offset=24 + end + local.get 8 + local.get 4 + i32.add + local.set 4 + local.get 7 + local.get 8 + i32.add + local.tee 7 + i32.load offset=4 + local.set 3 + end + local.get 7 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + local.get 5 + local.get 4 + i32.add + local.get 4 + i32.store + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @10 + local.get 4 + i32.const 255 + i32.gt_u + br_if 0 (;@10;) + local.get 4 + i32.const -8 + i32.and + i32.const 1049000 + i32.add + local.set 3 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048960 + local.tee 6 + i32.const 1 + local.get 4 + i32.const 3 + i32.shr_u + i32.shl + local.tee 4 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 6 + local.get 4 + i32.or + i32.store offset=1048960 + local.get 3 + local.set 4 + br 1 (;@11;) + end + local.get 3 + i32.load offset=8 + local.set 4 + end + local.get 4 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 3 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + br 3 (;@7;) + end + i32.const 31 + local.set 3 + block ;; label = @10 + local.get 4 + i32.const 16777215 + i32.gt_u + br_if 0 (;@10;) + local.get 4 + i32.const 38 + local.get 4 + i32.const 8 + i32.shr_u + i32.clz + local.tee 3 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 3 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 3 + end + local.get 5 + local.get 3 + i32.store offset=28 + local.get 5 + i64.const 0 + i64.store offset=16 align=4 + local.get 3 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.set 6 + block ;; label = @10 + i32.const 0 + i32.load offset=1048964 + local.tee 0 + i32.const 1 + local.get 3 + i32.shl + local.tee 9 + i32.and + br_if 0 (;@10;) + local.get 6 + local.get 5 + i32.store + i32.const 0 + local.get 0 + local.get 9 + i32.or + i32.store offset=1048964 + local.get 5 + local.get 6 + i32.store offset=24 + local.get 5 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 5 + i32.store offset=12 + br 3 (;@7;) + end + local.get 4 + i32.const 0 + i32.const 25 + local.get 3 + i32.const 1 + i32.shr_u + i32.sub + local.get 3 + i32.const 31 + i32.eq + select + i32.shl + local.set 3 + local.get 6 + i32.load + local.set 0 + loop ;; label = @10 + local.get 0 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 4 + i32.eq + br_if 2 (;@8;) + local.get 3 + i32.const 29 + i32.shr_u + local.set 0 + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 6 + local.get 0 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 9 + i32.load + local.tee 0 + br_if 0 (;@10;) + end + local.get 9 + local.get 5 + i32.store + local.get 5 + local.get 6 + i32.store offset=24 + local.get 5 + local.get 5 + i32.store offset=12 + local.get 5 + local.get 5 + i32.store offset=8 + br 2 (;@7;) + end + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 2 + local.get 7 + i32.const -56 + i32.add + local.tee 9 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 9 + i32.add + i32.const 56 + i32.store offset=4 + local.get 3 + local.get 6 + i32.const 55 + local.get 6 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 6 + i32.const -55 + i32.add + i32.const 15 + i32.and + select + i32.add + i32.const -63 + i32.add + local.tee 9 + local.get 9 + local.get 3 + i32.const 16 + i32.add + i32.lt_u + select + local.tee 9 + i32.const 35 + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049448 + i32.store offset=1048988 + i32.const 0 + local.get 4 + i32.store offset=1048972 + i32.const 0 + local.get 2 + i32.store offset=1048984 + local.get 9 + i32.const 16 + i32.add + i32.const 0 + i64.load offset=1049416 align=4 + i64.store align=4 + local.get 9 + i32.const 0 + i64.load offset=1049408 align=4 + i64.store offset=8 align=4 + i32.const 0 + local.get 9 + i32.const 8 + i32.add + i32.store offset=1049416 + i32.const 0 + local.get 7 + i32.store offset=1049412 + i32.const 0 + local.get 0 + i32.store offset=1049408 + i32.const 0 + i32.const 0 + i32.store offset=1049420 + local.get 9 + i32.const 36 + i32.add + local.set 4 + loop ;; label = @9 + local.get 4 + i32.const 7 + i32.store + local.get 4 + i32.const 4 + i32.add + local.tee 4 + local.get 6 + i32.lt_u + br_if 0 (;@9;) + end + local.get 9 + local.get 3 + i32.eq + br_if 3 (;@5;) + local.get 9 + local.get 9 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 9 + local.get 9 + local.get 3 + i32.sub + local.tee 0 + i32.store + local.get 3 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @9 + local.get 0 + i32.const 255 + i32.gt_u + br_if 0 (;@9;) + local.get 0 + i32.const -8 + i32.and + i32.const 1049000 + i32.add + local.set 4 + block ;; label = @10 + block ;; label = @11 + i32.const 0 + i32.load offset=1048960 + local.tee 6 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@11;) + i32.const 0 + local.get 6 + local.get 0 + i32.or + i32.store offset=1048960 + local.get 4 + local.set 6 + br 1 (;@10;) + end + local.get 4 + i32.load offset=8 + local.set 6 + end + local.get 6 + local.get 3 + i32.store offset=12 + local.get 4 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 4 + i32.store offset=12 + local.get 3 + local.get 6 + i32.store offset=8 + br 4 (;@5;) + end + i32.const 31 + local.set 4 + block ;; label = @9 + local.get 0 + i32.const 16777215 + i32.gt_u + br_if 0 (;@9;) + local.get 0 + i32.const 38 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + local.get 3 + local.get 4 + i32.store offset=28 + local.get 3 + i64.const 0 + i64.store offset=16 align=4 + local.get 4 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.set 6 + block ;; label = @9 + i32.const 0 + i32.load offset=1048964 + local.tee 9 + i32.const 1 + local.get 4 + i32.shl + local.tee 7 + i32.and + br_if 0 (;@9;) + local.get 6 + local.get 3 + i32.store + i32.const 0 + local.get 9 + local.get 7 + i32.or + i32.store offset=1048964 + local.get 3 + local.get 6 + i32.store offset=24 + local.get 3 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 3 + i32.store offset=12 + br 4 (;@5;) + end + local.get 0 + i32.const 0 + i32.const 25 + local.get 4 + i32.const 1 + i32.shr_u + i32.sub + local.get 4 + i32.const 31 + i32.eq + select + i32.shl + local.set 4 + local.get 6 + i32.load + local.set 9 + loop ;; label = @9 + local.get 9 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 0 + i32.eq + br_if 3 (;@6;) + local.get 4 + i32.const 29 + i32.shr_u + local.set 9 + local.get 4 + i32.const 1 + i32.shl + local.set 4 + local.get 6 + local.get 9 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 7 + i32.load + local.tee 9 + br_if 0 (;@9;) + end + local.get 7 + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + local.get 3 + local.get 3 + i32.store offset=12 + local.get 3 + local.get 3 + i32.store offset=8 + br 3 (;@5;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 5 + i32.store offset=12 + local.get 6 + local.get 5 + i32.store offset=8 + local.get 5 + i32.const 0 + i32.store offset=24 + local.get 5 + local.get 6 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + end + local.get 2 + i32.const 8 + i32.add + local.set 4 + br 5 (;@1;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.store offset=12 + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + i32.const 0 + i32.store offset=24 + local.get 3 + local.get 6 + i32.store offset=12 + local.get 3 + local.get 4 + i32.store offset=8 + end + i32.const 0 + i32.load offset=1048972 + local.tee 4 + local.get 5 + i32.le_u + br_if 0 (;@4;) + i32.const 0 + i32.load offset=1048984 + local.tee 3 + local.get 5 + i32.add + local.tee 6 + local.get 4 + local.get 5 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048972 + i32.const 0 + local.get 6 + i32.store offset=1048984 + local.get 3 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + i32.const 8 + i32.add + local.set 4 + br 3 (;@1;) + end + i32.const 0 + local.set 4 + i32.const 0 + i32.const 48 + i32.store offset=1049456 + br 2 (;@1;) + end + block ;; label = @3 + local.get 2 + i32.eqz + br_if 0 (;@3;) + block ;; label = @4 + block ;; label = @5 + local.get 9 + local.get 9 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 4 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 4 + local.get 0 + i32.store + local.get 0 + br_if 1 (;@4;) + i32.const 0 + local.get 10 + i32.const -2 + local.get 6 + i32.rotl + i32.and + local.tee 10 + i32.store offset=1048964 + br 2 (;@3;) + end + local.get 2 + i32.const 16 + i32.const 20 + local.get 2 + i32.load offset=16 + local.get 9 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 1 (;@3;) + end + local.get 0 + local.get 2 + i32.store offset=24 + block ;; label = @4 + local.get 9 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 0 (;@4;) + local.get 0 + local.get 4 + i32.store offset=16 + local.get 4 + local.get 0 + i32.store offset=24 + end + local.get 9 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 0 (;@3;) + local.get 0 + i32.const 20 + i32.add + local.get 4 + i32.store + local.get 4 + local.get 0 + i32.store offset=24 + end + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.const 15 + i32.gt_u + br_if 0 (;@4;) + local.get 9 + local.get 3 + local.get 5 + i32.add + local.tee 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 9 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@3;) + end + local.get 9 + local.get 5 + i32.add + local.tee 0 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 9 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 3 + i32.add + local.get 3 + i32.store + block ;; label = @4 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 3 + i32.const -8 + i32.and + i32.const 1049000 + i32.add + local.set 4 + block ;; label = @5 + block ;; label = @6 + i32.const 0 + i32.load offset=1048960 + local.tee 6 + i32.const 1 + local.get 3 + i32.const 3 + i32.shr_u + i32.shl + local.tee 3 + i32.and + br_if 0 (;@6;) + i32.const 0 + local.get 6 + local.get 3 + i32.or + i32.store offset=1048960 + local.get 4 + local.set 3 + br 1 (;@5;) + end + local.get 4 + i32.load offset=8 + local.set 3 + end + local.get 3 + local.get 0 + i32.store offset=12 + local.get 4 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 4 + i32.store offset=12 + local.get 0 + local.get 3 + i32.store offset=8 + br 1 (;@3;) + end + i32.const 31 + local.set 4 + block ;; label = @4 + local.get 3 + i32.const 16777215 + i32.gt_u + br_if 0 (;@4;) + local.get 3 + i32.const 38 + local.get 3 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + local.get 0 + local.get 4 + i32.store offset=28 + local.get 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 4 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.set 6 + block ;; label = @4 + local.get 10 + i32.const 1 + local.get 4 + i32.shl + local.tee 5 + i32.and + br_if 0 (;@4;) + local.get 6 + local.get 0 + i32.store + i32.const 0 + local.get 10 + local.get 5 + i32.or + i32.store offset=1048964 + local.get 0 + local.get 6 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 0 + i32.store offset=12 + br 1 (;@3;) + end + local.get 3 + i32.const 0 + i32.const 25 + local.get 4 + i32.const 1 + i32.shr_u + i32.sub + local.get 4 + i32.const 31 + i32.eq + select + i32.shl + local.set 4 + local.get 6 + i32.load + local.set 5 + block ;; label = @4 + loop ;; label = @5 + local.get 5 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 3 + i32.eq + br_if 1 (;@4;) + local.get 4 + i32.const 29 + i32.shr_u + local.set 5 + local.get 4 + i32.const 1 + i32.shl + local.set 4 + local.get 6 + local.get 5 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 7 + i32.load + local.tee 5 + br_if 0 (;@5;) + end + local.get 7 + local.get 0 + i32.store + local.get 0 + local.get 6 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + br 1 (;@3;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 0 + i32.store offset=12 + local.get 6 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 6 + i32.store offset=12 + local.get 0 + local.get 4 + i32.store offset=8 + end + local.get 9 + i32.const 8 + i32.add + local.set 4 + br 1 (;@1;) + end + block ;; label = @2 + local.get 11 + i32.eqz + br_if 0 (;@2;) + block ;; label = @3 + block ;; label = @4 + local.get 0 + local.get 0 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 4 + i32.load + i32.ne + br_if 0 (;@4;) + local.get 4 + local.get 9 + i32.store + local.get 9 + br_if 1 (;@3;) + i32.const 0 + local.get 10 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048964 + br 2 (;@2;) + end + local.get 11 + i32.const 16 + i32.const 20 + local.get 11 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 9 + i32.store + local.get 9 + i32.eqz + br_if 1 (;@2;) + end + local.get 9 + local.get 11 + i32.store offset=24 + block ;; label = @3 + local.get 0 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 0 (;@3;) + local.get 9 + local.get 4 + i32.store offset=16 + local.get 4 + local.get 9 + i32.store offset=24 + end + local.get 0 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 0 (;@2;) + local.get 9 + i32.const 20 + i32.add + local.get 4 + i32.store + local.get 4 + local.get 9 + i32.store offset=24 + end + block ;; label = @2 + block ;; label = @3 + local.get 3 + i32.const 15 + i32.gt_u + br_if 0 (;@3;) + local.get 0 + local.get 3 + local.get 5 + i32.add + local.tee 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@2;) + end + local.get 0 + local.get 5 + i32.add + local.tee 6 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 3 + i32.add + local.get 3 + i32.store + block ;; label = @3 + local.get 8 + i32.eqz + br_if 0 (;@3;) + local.get 8 + i32.const -8 + i32.and + i32.const 1049000 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1048980 + local.set 4 + block ;; label = @4 + block ;; label = @5 + i32.const 1 + local.get 8 + i32.const 3 + i32.shr_u + i32.shl + local.tee 9 + local.get 7 + i32.and + br_if 0 (;@5;) + i32.const 0 + local.get 9 + local.get 7 + i32.or + i32.store offset=1048960 + local.get 5 + local.set 9 + br 1 (;@4;) + end + local.get 5 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 4 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 5 + i32.store offset=12 + local.get 4 + local.get 9 + i32.store offset=8 + end + i32.const 0 + local.get 6 + i32.store offset=1048980 + i32.const 0 + local.get 3 + i32.store offset=1048968 + end + local.get 0 + i32.const 8 + i32.add + local.set 4 + end + local.get 1 + i32.const 16 + i32.add + global.set $__stack_pointer + local.get 4 + ) + (func $free (;37;) (type $.rodata) (param i32) + local.get 0 + call $dlfree + ) + (func $dlfree (;38;) (type $.rodata) (param i32) + (local i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + local.get 0 + i32.eqz + br_if 0 (;@1;) + local.get 0 + i32.const -8 + i32.add + local.tee 1 + local.get 0 + i32.const -4 + i32.add + i32.load + local.tee 2 + i32.const -8 + i32.and + local.tee 0 + i32.add + local.set 3 + block ;; label = @2 + local.get 2 + i32.const 1 + i32.and + br_if 0 (;@2;) + local.get 2 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 1 + local.get 1 + i32.load + local.tee 2 + i32.sub + local.tee 1 + i32.const 0 + i32.load offset=1048976 + local.tee 4 + i32.lt_u + br_if 1 (;@1;) + local.get 2 + local.get 0 + i32.add + local.set 0 + block ;; label = @3 + local.get 1 + i32.const 0 + i32.load offset=1048980 + i32.eq + br_if 0 (;@3;) + block ;; label = @4 + local.get 2 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 1 + i32.load offset=8 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1049000 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @5 + local.get 1 + i32.load offset=12 + local.tee 2 + local.get 4 + i32.ne + br_if 0 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048960 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048960 + br 3 (;@2;) + end + local.get 2 + local.get 6 + i32.eq + drop + local.get 2 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 2 + i32.store offset=12 + br 2 (;@2;) + end + local.get 1 + i32.load offset=24 + local.set 7 + block ;; label = @4 + block ;; label = @5 + local.get 1 + i32.load offset=12 + local.tee 6 + local.get 1 + i32.eq + br_if 0 (;@5;) + local.get 1 + i32.load offset=8 + local.tee 2 + local.get 4 + i32.lt_u + drop + local.get 6 + local.get 2 + i32.store offset=8 + local.get 2 + local.get 6 + i32.store offset=12 + br 1 (;@4;) + end + block ;; label = @5 + local.get 1 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + local.get 1 + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + i32.const 0 + local.set 6 + br 1 (;@4;) + end + loop ;; label = @5 + local.get 2 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + local.get 6 + i32.const 16 + i32.add + local.set 2 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@5;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 1 (;@2;) + block ;; label = @4 + block ;; label = @5 + local.get 1 + local.get 1 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 2 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 2 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@4;) + i32.const 0 + i32.const 0 + i32.load offset=1048964 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048964 + br 3 (;@2;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 1 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 2 (;@2;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @4 + local.get 1 + i32.load offset=16 + local.tee 2 + i32.eqz + br_if 0 (;@4;) + local.get 6 + local.get 2 + i32.store offset=16 + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 1 + i32.load offset=20 + local.tee 2 + i32.eqz + br_if 1 (;@2;) + local.get 6 + i32.const 20 + i32.add + local.get 2 + i32.store + local.get 2 + local.get 6 + i32.store offset=24 + br 1 (;@2;) + end + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 0 (;@2;) + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + i32.const 0 + local.get 0 + i32.store offset=1048968 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + return + end + local.get 1 + local.get 3 + i32.ge_u + br_if 0 (;@1;) + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 1 + i32.and + i32.eqz + br_if 0 (;@1;) + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.const 2 + i32.and + br_if 0 (;@3;) + block ;; label = @4 + local.get 3 + i32.const 0 + i32.load offset=1048984 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048984 + i32.const 0 + i32.const 0 + i32.load offset=1048972 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048972 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048968 + i32.const 0 + i32.const 0 + i32.store offset=1048980 + return + end + block ;; label = @4 + local.get 3 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048980 + i32.const 0 + i32.const 0 + i32.load offset=1048968 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048968 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + return + end + local.get 2 + i32.const -8 + i32.and + local.get 0 + i32.add + local.set 0 + block ;; label = @4 + block ;; label = @5 + local.get 2 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 3 + i32.load offset=8 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1049000 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @6 + local.get 3 + i32.load offset=12 + local.tee 2 + local.get 4 + i32.ne + br_if 0 (;@6;) + i32.const 0 + i32.const 0 + i32.load offset=1048960 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048960 + br 2 (;@4;) + end + local.get 2 + local.get 6 + i32.eq + drop + local.get 2 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 2 + i32.store offset=12 + br 1 (;@4;) + end + local.get 3 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.load offset=12 + local.tee 6 + local.get 3 + i32.eq + br_if 0 (;@6;) + local.get 3 + i32.load offset=8 + local.tee 2 + i32.const 0 + i32.load offset=1048976 + i32.lt_u + drop + local.get 6 + local.get 2 + i32.store offset=8 + local.get 2 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 3 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 3 + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 2 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 2 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + block ;; label = @6 + local.get 3 + local.get 3 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 2 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 2 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048964 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048964 + br 2 (;@4;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 3 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 1 (;@4;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 3 + i32.load offset=16 + local.tee 2 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 2 + i32.store offset=16 + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 3 + i32.load offset=20 + local.tee 2 + i32.eqz + br_if 0 (;@4;) + local.get 6 + i32.const 20 + i32.add + local.get 2 + i32.store + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 0 + i32.store offset=1048968 + return + end + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + end + block ;; label = @2 + local.get 0 + i32.const 255 + i32.gt_u + br_if 0 (;@2;) + local.get 0 + i32.const -8 + i32.and + i32.const 1049000 + i32.add + local.set 2 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048960 + local.tee 4 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@4;) + i32.const 0 + local.get 4 + local.get 0 + i32.or + i32.store offset=1048960 + local.get 2 + local.set 0 + br 1 (;@3;) + end + local.get 2 + i32.load offset=8 + local.set 0 + end + local.get 0 + local.get 1 + i32.store offset=12 + local.get 2 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 2 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + return + end + i32.const 31 + local.set 2 + block ;; label = @2 + local.get 0 + i32.const 16777215 + i32.gt_u + br_if 0 (;@2;) + local.get 0 + i32.const 38 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 2 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 2 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 2 + end + local.get 1 + local.get 2 + i32.store offset=28 + local.get 1 + i64.const 0 + i64.store offset=16 align=4 + local.get 2 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.set 4 + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1048964 + local.tee 6 + i32.const 1 + local.get 2 + i32.shl + local.tee 3 + i32.and + br_if 0 (;@3;) + local.get 4 + local.get 1 + i32.store + i32.const 0 + local.get 6 + local.get 3 + i32.or + i32.store offset=1048964 + local.get 1 + local.get 4 + i32.store offset=24 + local.get 1 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 1 + i32.store offset=12 + br 1 (;@2;) + end + local.get 0 + i32.const 0 + i32.const 25 + local.get 2 + i32.const 1 + i32.shr_u + i32.sub + local.get 2 + i32.const 31 + i32.eq + select + i32.shl + local.set 2 + local.get 4 + i32.load + local.set 6 + block ;; label = @3 + loop ;; label = @4 + local.get 6 + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 0 + i32.eq + br_if 1 (;@3;) + local.get 2 + i32.const 29 + i32.shr_u + local.set 6 + local.get 2 + i32.const 1 + i32.shl + local.set 2 + local.get 4 + local.get 6 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@4;) + end + local.get 3 + local.get 1 + i32.store + local.get 1 + local.get 4 + i32.store offset=24 + local.get 1 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 1 + i32.store offset=8 + br 1 (;@2;) + end + local.get 4 + i32.load offset=8 + local.tee 0 + local.get 1 + i32.store offset=12 + local.get 4 + local.get 1 + i32.store offset=8 + local.get 1 + i32.const 0 + i32.store offset=24 + local.get 1 + local.get 4 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + end + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -1 + i32.add + local.tee 1 + i32.const -1 + local.get 1 + select + i32.store offset=1048992 + end + ) + (func $realloc (;39;) (type 3) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + local.get 1 + call $dlmalloc + return + end + block ;; label = @1 + local.get 1 + i32.const -64 + i32.lt_u + br_if 0 (;@1;) + i32.const 0 + i32.const 48 + i32.store offset=1049456 + i32.const 0 + return + end + i32.const 16 + local.get 1 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.set 2 + local.get 0 + i32.const -4 + i32.add + local.tee 3 + i32.load + local.tee 4 + i32.const -8 + i32.and + local.set 5 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 4 + i32.const 3 + i32.and + br_if 0 (;@3;) + local.get 2 + i32.const 256 + i32.lt_u + br_if 1 (;@2;) + local.get 5 + local.get 2 + i32.const 4 + i32.or + i32.lt_u + br_if 1 (;@2;) + local.get 5 + local.get 2 + i32.sub + i32.const 0 + i32.load offset=1049440 + i32.const 1 + i32.shl + i32.le_u + br_if 2 (;@1;) + br 1 (;@2;) + end + local.get 0 + i32.const -8 + i32.add + local.tee 6 + local.get 5 + i32.add + local.set 7 + block ;; label = @3 + local.get 5 + local.get 2 + i32.lt_u + br_if 0 (;@3;) + local.get 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 16 + i32.lt_u + br_if 2 (;@1;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.const 3 + i32.or + i32.store offset=4 + local.get 7 + local.get 7 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 1 + call $dispose_chunk + local.get 0 + return + end + block ;; label = @3 + local.get 7 + i32.const 0 + i32.load offset=1048984 + i32.ne + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1048972 + local.get 5 + i32.add + local.tee 5 + local.get 2 + i32.le_u + br_if 1 (;@2;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + i32.const 0 + local.get 6 + local.get 2 + i32.add + local.tee 1 + i32.store offset=1048984 + i32.const 0 + local.get 5 + local.get 2 + i32.sub + local.tee 2 + i32.store offset=1048972 + local.get 1 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + return + end + block ;; label = @3 + local.get 7 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1048968 + local.get 5 + i32.add + local.tee 5 + local.get 2 + i32.lt_u + br_if 1 (;@2;) + block ;; label = @4 + block ;; label = @5 + local.get 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 16 + i32.lt_u + br_if 0 (;@5;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 5 + i32.add + local.tee 5 + local.get 1 + i32.store + local.get 5 + local.get 5 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + br 1 (;@4;) + end + local.get 3 + local.get 4 + i32.const 1 + i32.and + local.get 5 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 5 + i32.add + local.tee 1 + local.get 1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 1 + i32.const 0 + local.set 2 + end + i32.const 0 + local.get 2 + i32.store offset=1048980 + i32.const 0 + local.get 1 + i32.store offset=1048968 + local.get 0 + return + end + local.get 7 + i32.load offset=4 + local.tee 8 + i32.const 2 + i32.and + br_if 0 (;@2;) + local.get 8 + i32.const -8 + i32.and + local.get 5 + i32.add + local.tee 9 + local.get 2 + i32.lt_u + br_if 0 (;@2;) + local.get 9 + local.get 2 + i32.sub + local.set 10 + block ;; label = @3 + block ;; label = @4 + local.get 8 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 7 + i32.load offset=8 + local.tee 1 + local.get 8 + i32.const 3 + i32.shr_u + local.tee 11 + i32.const 3 + i32.shl + i32.const 1049000 + i32.add + local.tee 8 + i32.eq + drop + block ;; label = @5 + local.get 7 + i32.load offset=12 + local.tee 5 + local.get 1 + i32.ne + br_if 0 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048960 + i32.const -2 + local.get 11 + i32.rotl + i32.and + i32.store offset=1048960 + br 2 (;@3;) + end + local.get 5 + local.get 8 + i32.eq + drop + local.get 5 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 5 + i32.store offset=12 + br 1 (;@3;) + end + local.get 7 + i32.load offset=24 + local.set 12 + block ;; label = @4 + block ;; label = @5 + local.get 7 + i32.load offset=12 + local.tee 8 + local.get 7 + i32.eq + br_if 0 (;@5;) + local.get 7 + i32.load offset=8 + local.tee 1 + i32.const 0 + i32.load offset=1048976 + i32.lt_u + drop + local.get 8 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 8 + i32.store offset=12 + br 1 (;@4;) + end + block ;; label = @5 + local.get 7 + i32.const 20 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + local.get 7 + i32.const 16 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + i32.const 0 + local.set 8 + br 1 (;@4;) + end + loop ;; label = @5 + local.get 1 + local.set 11 + local.get 5 + local.tee 8 + i32.const 20 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + local.get 8 + i32.const 16 + i32.add + local.set 1 + local.get 8 + i32.load offset=16 + local.tee 5 + br_if 0 (;@5;) + end + local.get 11 + i32.const 0 + i32.store + end + local.get 12 + i32.eqz + br_if 0 (;@3;) + block ;; label = @4 + block ;; label = @5 + local.get 7 + local.get 7 + i32.load offset=28 + local.tee 5 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 1 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 1 + local.get 8 + i32.store + local.get 8 + br_if 1 (;@4;) + i32.const 0 + i32.const 0 + i32.load offset=1048964 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048964 + br 2 (;@3;) + end + local.get 12 + i32.const 16 + i32.const 20 + local.get 12 + i32.load offset=16 + local.get 7 + i32.eq + select + i32.add + local.get 8 + i32.store + local.get 8 + i32.eqz + br_if 1 (;@3;) + end + local.get 8 + local.get 12 + i32.store offset=24 + block ;; label = @4 + local.get 7 + i32.load offset=16 + local.tee 1 + i32.eqz + br_if 0 (;@4;) + local.get 8 + local.get 1 + i32.store offset=16 + local.get 1 + local.get 8 + i32.store offset=24 + end + local.get 7 + i32.load offset=20 + local.tee 1 + i32.eqz + br_if 0 (;@3;) + local.get 8 + i32.const 20 + i32.add + local.get 1 + i32.store + local.get 1 + local.get 8 + i32.store offset=24 + end + block ;; label = @3 + local.get 10 + i32.const 15 + i32.gt_u + br_if 0 (;@3;) + local.get 3 + local.get 4 + i32.const 1 + i32.and + local.get 9 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 9 + i32.add + local.tee 1 + local.get 1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + return + end + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 1 + local.get 10 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 9 + i32.add + local.tee 2 + local.get 2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 10 + call $dispose_chunk + local.get 0 + return + end + block ;; label = @2 + local.get 1 + call $dlmalloc + local.tee 2 + br_if 0 (;@2;) + i32.const 0 + return + end + local.get 2 + local.get 0 + i32.const -4 + i32.const -8 + local.get 3 + i32.load + local.tee 5 + i32.const 3 + i32.and + select + local.get 5 + i32.const -8 + i32.and + i32.add + local.tee 5 + local.get 1 + local.get 5 + local.get 1 + i32.lt_u + select + call $memcpy + local.set 1 + local.get 0 + call $dlfree + local.get 1 + local.set 0 + end + local.get 0 + ) + (func $dispose_chunk (;40;) (type 1) (param i32 i32) + (local i32 i32 i32 i32 i32 i32) + local.get 0 + local.get 1 + i32.add + local.set 2 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.load offset=4 + local.tee 3 + i32.const 1 + i32.and + br_if 0 (;@2;) + local.get 3 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 0 + i32.load + local.tee 3 + local.get 1 + i32.add + local.set 1 + block ;; label = @3 + block ;; label = @4 + local.get 0 + local.get 3 + i32.sub + local.tee 0 + i32.const 0 + i32.load offset=1048980 + i32.eq + br_if 0 (;@4;) + block ;; label = @5 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 0 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1049000 + i32.add + local.tee 6 + i32.eq + drop + local.get 0 + i32.load offset=12 + local.tee 3 + local.get 4 + i32.ne + br_if 2 (;@3;) + i32.const 0 + i32.const 0 + i32.load offset=1048960 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048960 + br 3 (;@2;) + end + local.get 0 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 0 + i32.load offset=12 + local.tee 6 + local.get 0 + i32.eq + br_if 0 (;@6;) + local.get 0 + i32.load offset=8 + local.tee 3 + i32.const 0 + i32.load offset=1048976 + i32.lt_u + drop + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 0 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 0 + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 3 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 3 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 2 (;@2;) + block ;; label = @5 + block ;; label = @6 + local.get 0 + local.get 0 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048964 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048964 + br 4 (;@2;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 3 (;@2;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 0 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 0 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 2 (;@2;) + local.get 6 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + br 2 (;@2;) + end + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 1 (;@2;) + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + i32.const 0 + local.get 1 + i32.store offset=1048968 + local.get 2 + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + return + end + local.get 3 + local.get 6 + i32.eq + drop + local.get 3 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 3 + i32.store offset=12 + end + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 2 + i32.and + br_if 0 (;@3;) + block ;; label = @4 + local.get 2 + i32.const 0 + i32.load offset=1048984 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048984 + i32.const 0 + i32.const 0 + i32.load offset=1048972 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048972 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048968 + i32.const 0 + i32.const 0 + i32.store offset=1048980 + return + end + block ;; label = @4 + local.get 2 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048980 + i32.const 0 + i32.const 0 + i32.load offset=1048968 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048968 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + return + end + local.get 3 + i32.const -8 + i32.and + local.get 1 + i32.add + local.set 1 + block ;; label = @4 + block ;; label = @5 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 2 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1049000 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @6 + local.get 2 + i32.load offset=12 + local.tee 3 + local.get 4 + i32.ne + br_if 0 (;@6;) + i32.const 0 + i32.const 0 + i32.load offset=1048960 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048960 + br 2 (;@4;) + end + local.get 3 + local.get 6 + i32.eq + drop + local.get 3 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 3 + i32.store offset=12 + br 1 (;@4;) + end + local.get 2 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 2 + i32.load offset=12 + local.tee 6 + local.get 2 + i32.eq + br_if 0 (;@6;) + local.get 2 + i32.load offset=8 + local.tee 3 + i32.const 0 + i32.load offset=1048976 + i32.lt_u + drop + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 2 + i32.const 20 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + local.get 2 + i32.const 16 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 4 + local.set 5 + local.get 3 + local.tee 6 + i32.const 20 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 4 + local.get 6 + i32.load offset=16 + local.tee 3 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + block ;; label = @6 + local.get 2 + local.get 2 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048964 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048964 + br 2 (;@4;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 2 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 1 (;@4;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 2 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 2 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 0 (;@4;) + local.get 6 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1048980 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 1 + i32.store offset=1048968 + return + end + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + end + block ;; label = @2 + local.get 1 + i32.const 255 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + i32.const -8 + i32.and + i32.const 1049000 + i32.add + local.set 3 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048960 + local.tee 4 + i32.const 1 + local.get 1 + i32.const 3 + i32.shr_u + i32.shl + local.tee 1 + i32.and + br_if 0 (;@4;) + i32.const 0 + local.get 4 + local.get 1 + i32.or + i32.store offset=1048960 + local.get 3 + local.set 1 + br 1 (;@3;) + end + local.get 3 + i32.load offset=8 + local.set 1 + end + local.get 1 + local.get 0 + i32.store offset=12 + local.get 3 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 3 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + return + end + i32.const 31 + local.set 3 + block ;; label = @2 + local.get 1 + i32.const 16777215 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + i32.const 38 + local.get 1 + i32.const 8 + i32.shr_u + i32.clz + local.tee 3 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 3 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 3 + end + local.get 0 + local.get 3 + i32.store offset=28 + local.get 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 3 + i32.const 2 + i32.shl + i32.const 1049264 + i32.add + local.set 4 + block ;; label = @2 + i32.const 0 + i32.load offset=1048964 + local.tee 6 + i32.const 1 + local.get 3 + i32.shl + local.tee 2 + i32.and + br_if 0 (;@2;) + local.get 4 + local.get 0 + i32.store + i32.const 0 + local.get 6 + local.get 2 + i32.or + i32.store offset=1048964 + local.get 0 + local.get 4 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 0 + i32.store offset=12 + return + end + local.get 1 + i32.const 0 + i32.const 25 + local.get 3 + i32.const 1 + i32.shr_u + i32.sub + local.get 3 + i32.const 31 + i32.eq + select + i32.shl + local.set 3 + local.get 4 + i32.load + local.set 6 + block ;; label = @2 + loop ;; label = @3 + local.get 6 + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 1 + i32.eq + br_if 1 (;@2;) + local.get 3 + i32.const 29 + i32.shr_u + local.set 6 + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 4 + local.get 6 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 6 + br_if 0 (;@3;) + end + local.get 2 + local.get 0 + i32.store + local.get 0 + local.get 4 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + return + end + local.get 4 + i32.load offset=8 + local.tee 1 + local.get 0 + i32.store offset=12 + local.get 4 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 4 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + end + ) + (func $internal_memalign (;41;) (type 3) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.const 16 + local.get 0 + i32.const 16 + i32.gt_u + select + local.tee 2 + local.get 2 + i32.const -1 + i32.add + i32.and + br_if 0 (;@2;) + local.get 2 + local.set 0 + br 1 (;@1;) + end + i32.const 32 + local.set 3 + loop ;; label = @2 + local.get 3 + local.tee 0 + i32.const 1 + i32.shl + local.set 3 + local.get 0 + local.get 2 + i32.lt_u + br_if 0 (;@2;) + end + end + block ;; label = @1 + i32.const -64 + local.get 0 + i32.sub + local.get 1 + i32.gt_u + br_if 0 (;@1;) + i32.const 0 + i32.const 48 + i32.store offset=1049456 + i32.const 0 + return + end + block ;; label = @1 + local.get 0 + i32.const 16 + local.get 1 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.tee 1 + i32.add + i32.const 12 + i32.add + call $dlmalloc + local.tee 3 + br_if 0 (;@1;) + i32.const 0 + return + end + local.get 3 + i32.const -8 + i32.add + local.set 2 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.const -1 + i32.add + local.get 3 + i32.and + br_if 0 (;@2;) + local.get 2 + local.set 0 + br 1 (;@1;) + end + local.get 3 + i32.const -4 + i32.add + local.tee 4 + i32.load + local.tee 5 + i32.const -8 + i32.and + local.get 3 + local.get 0 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 0 + i32.sub + i32.and + i32.const -8 + i32.add + local.tee 3 + i32.const 0 + local.get 0 + local.get 3 + local.get 2 + i32.sub + i32.const 15 + i32.gt_u + select + i32.add + local.tee 0 + local.get 2 + i32.sub + local.tee 3 + i32.sub + local.set 6 + block ;; label = @2 + local.get 5 + i32.const 3 + i32.and + br_if 0 (;@2;) + local.get 0 + local.get 6 + i32.store offset=4 + local.get 0 + local.get 2 + i32.load + local.get 3 + i32.add + i32.store + br 1 (;@1;) + end + local.get 0 + local.get 6 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 6 + i32.add + local.tee 6 + local.get 6 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 4 + local.get 3 + local.get 4 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 2 + local.get 3 + i32.add + local.tee 6 + local.get 6 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 3 + call $dispose_chunk + end + block ;; label = @1 + local.get 0 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@1;) + local.get 3 + i32.const -8 + i32.and + local.tee 2 + local.get 1 + i32.const 16 + i32.add + i32.le_u + br_if 0 (;@1;) + local.get 0 + local.get 1 + local.get 3 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.tee 3 + local.get 2 + local.get 1 + i32.sub + local.tee 1 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.tee 2 + local.get 2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 1 + call $dispose_chunk + end + local.get 0 + i32.const 8 + i32.add + ) + (func $aligned_alloc (;42;) (type 3) (param i32 i32) (result i32) + block ;; label = @1 + local.get 0 + i32.const 16 + i32.gt_u + br_if 0 (;@1;) + local.get 1 + call $dlmalloc + return + end + local.get 0 + local.get 1 + call $internal_memalign + ) + (func $abort (;43;) (type 7) + unreachable + unreachable + ) + (func $sbrk (;44;) (type 10) (param i32) (result i32) + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + memory.size + i32.const 16 + i32.shl + return + end + block ;; label = @1 + local.get 0 + i32.const 65535 + i32.and + br_if 0 (;@1;) + local.get 0 + i32.const -1 + i32.le_s + br_if 0 (;@1;) + block ;; label = @2 + local.get 0 + i32.const 16 + i32.shr_u + memory.grow + local.tee 0 + i32.const -1 + i32.ne + br_if 0 (;@2;) + i32.const 0 + i32.const 48 + i32.store offset=1049456 + i32.const -1 + return + end + local.get 0 + i32.const 16 + i32.shl + return + end + call $abort + unreachable + ) + (func $memcpy (;45;) (type 2) (param i32 i32 i32) (result i32) + (local i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.const 32 + i32.gt_u + br_if 0 (;@3;) + local.get 1 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@2;) + local.get 2 + i32.eqz + br_if 1 (;@2;) + local.get 0 + local.get 1 + i32.load8_u + i32.store8 + local.get 2 + i32.const -1 + i32.add + local.set 3 + local.get 0 + i32.const 1 + i32.add + local.set 4 + local.get 1 + i32.const 1 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get 2 + i32.const -2 + i32.add + local.set 3 + local.get 0 + i32.const 2 + i32.add + local.set 4 + local.get 1 + i32.const 2 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=2 + i32.store8 offset=2 + local.get 2 + i32.const -3 + i32.add + local.set 3 + local.get 0 + i32.const 3 + i32.add + local.set 4 + local.get 1 + i32.const 3 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=3 + i32.store8 offset=3 + local.get 2 + i32.const -4 + i32.add + local.set 3 + local.get 0 + i32.const 4 + i32.add + local.set 4 + local.get 1 + i32.const 4 + i32.add + local.set 5 + br 2 (;@1;) + end + local.get 0 + local.get 1 + local.get 2 + memory.copy + local.get 0 + return + end + local.get 2 + local.set 3 + local.get 0 + local.set 4 + local.get 1 + local.set 5 + end + block ;; label = @1 + block ;; label = @2 + local.get 4 + i32.const 3 + i32.and + local.tee 2 + br_if 0 (;@2;) + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.const 16 + i32.ge_u + br_if 0 (;@4;) + local.get 3 + local.set 2 + br 1 (;@3;) + end + block ;; label = @4 + local.get 3 + i32.const -16 + i32.add + local.tee 2 + i32.const 16 + i32.and + br_if 0 (;@4;) + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 4 + local.get 5 + i64.load offset=8 align=4 + i64.store offset=8 align=4 + local.get 4 + i32.const 16 + i32.add + local.set 4 + local.get 5 + i32.const 16 + i32.add + local.set 5 + local.get 2 + local.set 3 + end + local.get 2 + i32.const 16 + i32.lt_u + br_if 0 (;@3;) + local.get 3 + local.set 2 + loop ;; label = @4 + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 4 + local.get 5 + i64.load offset=8 align=4 + i64.store offset=8 align=4 + local.get 4 + local.get 5 + i64.load offset=16 align=4 + i64.store offset=16 align=4 + local.get 4 + local.get 5 + i64.load offset=24 align=4 + i64.store offset=24 align=4 + local.get 4 + i32.const 32 + i32.add + local.set 4 + local.get 5 + i32.const 32 + i32.add + local.set 5 + local.get 2 + i32.const -32 + i32.add + local.tee 2 + i32.const 15 + i32.gt_u + br_if 0 (;@4;) + end + end + block ;; label = @3 + local.get 2 + i32.const 8 + i32.lt_u + br_if 0 (;@3;) + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 5 + i32.const 8 + i32.add + local.set 5 + local.get 4 + i32.const 8 + i32.add + local.set 4 + end + block ;; label = @3 + local.get 2 + i32.const 4 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 4 + local.get 5 + i32.load + i32.store + local.get 5 + i32.const 4 + i32.add + local.set 5 + local.get 4 + i32.const 4 + i32.add + local.set 4 + end + block ;; label = @3 + local.get 2 + i32.const 2 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 4 + local.get 5 + i32.load16_u align=1 + i32.store16 align=1 + local.get 4 + i32.const 2 + i32.add + local.set 4 + local.get 5 + i32.const 2 + i32.add + local.set 5 + end + local.get 2 + i32.const 1 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 4 + local.get 5 + i32.load8_u + i32.store8 + local.get 0 + return + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.const 32 + i32.lt_u + br_if 0 (;@6;) + block ;; label = @7 + block ;; label = @8 + local.get 2 + i32.const -1 + i32.add + br_table 3 (;@5;) 0 (;@8;) 1 (;@7;) 7 (;@1;) + end + local.get 4 + local.get 5 + i32.load + i32.store16 align=1 + local.get 4 + local.get 5 + i32.const 2 + i32.add + i32.load align=2 + i32.store offset=2 + local.get 4 + local.get 5 + i32.const 6 + i32.add + i64.load align=2 + i64.store offset=6 align=4 + local.get 4 + i32.const 18 + i32.add + local.set 2 + local.get 5 + i32.const 18 + i32.add + local.set 1 + i32.const 14 + local.set 6 + local.get 5 + i32.const 14 + i32.add + i32.load align=2 + local.set 5 + i32.const 14 + local.set 3 + br 3 (;@4;) + end + local.get 4 + local.get 5 + i32.load + i32.store8 + local.get 4 + local.get 5 + i32.const 1 + i32.add + i32.load align=1 + i32.store offset=1 + local.get 4 + local.get 5 + i32.const 5 + i32.add + i64.load align=1 + i64.store offset=5 align=4 + local.get 4 + i32.const 17 + i32.add + local.set 2 + local.get 5 + i32.const 17 + i32.add + local.set 1 + i32.const 13 + local.set 6 + local.get 5 + i32.const 13 + i32.add + i32.load align=1 + local.set 5 + i32.const 15 + local.set 3 + br 2 (;@4;) + end + block ;; label = @6 + block ;; label = @7 + local.get 3 + i32.const 16 + i32.ge_u + br_if 0 (;@7;) + local.get 4 + local.set 2 + local.get 5 + local.set 1 + br 1 (;@6;) + end + local.get 4 + local.get 5 + i32.load8_u + i32.store8 + local.get 4 + local.get 5 + i32.load offset=1 align=1 + i32.store offset=1 align=1 + local.get 4 + local.get 5 + i64.load offset=5 align=1 + i64.store offset=5 align=1 + local.get 4 + local.get 5 + i32.load16_u offset=13 align=1 + i32.store16 offset=13 align=1 + local.get 4 + local.get 5 + i32.load8_u offset=15 + i32.store8 offset=15 + local.get 4 + i32.const 16 + i32.add + local.set 2 + local.get 5 + i32.const 16 + i32.add + local.set 1 + end + local.get 3 + i32.const 8 + i32.and + br_if 2 (;@3;) + br 3 (;@2;) + end + local.get 4 + local.get 5 + i32.load + local.tee 2 + i32.store8 + local.get 4 + local.get 2 + i32.const 16 + i32.shr_u + i32.store8 offset=2 + local.get 4 + local.get 2 + i32.const 8 + i32.shr_u + i32.store8 offset=1 + local.get 4 + local.get 5 + i32.const 3 + i32.add + i32.load align=1 + i32.store offset=3 + local.get 4 + local.get 5 + i32.const 7 + i32.add + i64.load align=1 + i64.store offset=7 align=4 + local.get 4 + i32.const 19 + i32.add + local.set 2 + local.get 5 + i32.const 19 + i32.add + local.set 1 + i32.const 15 + local.set 6 + local.get 5 + i32.const 15 + i32.add + i32.load align=1 + local.set 5 + i32.const 13 + local.set 3 + end + local.get 4 + local.get 6 + i32.add + local.get 5 + i32.store + end + local.get 2 + local.get 1 + i64.load align=1 + i64.store align=1 + local.get 2 + i32.const 8 + i32.add + local.set 2 + local.get 1 + i32.const 8 + i32.add + local.set 1 + end + block ;; label = @2 + local.get 3 + i32.const 4 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.load align=1 + i32.store align=1 + local.get 2 + i32.const 4 + i32.add + local.set 2 + local.get 1 + i32.const 4 + i32.add + local.set 1 + end + block ;; label = @2 + local.get 3 + i32.const 2 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.load16_u align=1 + i32.store16 align=1 + local.get 2 + i32.const 2 + i32.add + local.set 2 + local.get 1 + i32.const 2 + i32.add + local.set 1 + end + local.get 3 + i32.const 1 + i32.and + i32.eqz + br_if 0 (;@1;) + local.get 2 + local.get 1 + i32.load8_u + i32.store8 + end + local.get 0 + ) + (func $alloc::raw_vec::capacity_overflow (;46;) (type 7) + unreachable + unreachable + ) + (func $alloc::alloc::handle_alloc_error (;47;) (type 1) (param i32 i32) + local.get 0 + local.get 1 + call $alloc::alloc::handle_alloc_error::rt_error + unreachable + ) + (func $alloc::alloc::handle_alloc_error::rt_error (;48;) (type 1) (param i32 i32) + local.get 1 + local.get 0 + call $__rust_alloc_error_handler + unreachable + ) + (func $core::fmt::write (;49;) (type 2) (param i32 i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 3 + global.set $__stack_pointer + local.get 3 + i32.const 36 + i32.add + local.get 1 + i32.store + local.get 3 + i32.const 3 + i32.store8 offset=44 + local.get 3 + i32.const 32 + i32.store offset=28 + i32.const 0 + local.set 4 + local.get 3 + i32.const 0 + i32.store offset=40 + local.get 3 + local.get 0 + i32.store offset=32 + local.get 3 + i32.const 0 + i32.store offset=20 + local.get 3 + i32.const 0 + i32.store offset=12 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 2 + i32.load offset=16 + local.tee 5 + br_if 0 (;@4;) + local.get 2 + i32.const 12 + i32.add + i32.load + local.tee 0 + i32.eqz + br_if 1 (;@3;) + local.get 2 + i32.load offset=8 + local.set 1 + local.get 0 + i32.const 3 + i32.shl + local.set 6 + local.get 0 + i32.const -1 + i32.add + i32.const 536870911 + i32.and + i32.const 1 + i32.add + local.set 4 + local.get 2 + i32.load + local.set 0 + loop ;; label = @5 + block ;; label = @6 + local.get 0 + i32.const 4 + i32.add + i32.load + local.tee 7 + i32.eqz + br_if 0 (;@6;) + local.get 3 + i32.load offset=32 + local.get 0 + i32.load + local.get 7 + local.get 3 + i32.load offset=36 + i32.load offset=12 + call_indirect (type 2) + br_if 4 (;@2;) + end + local.get 1 + i32.load + local.get 3 + i32.const 12 + i32.add + local.get 1 + i32.const 4 + i32.add + i32.load + call_indirect (type 3) + br_if 3 (;@2;) + local.get 1 + i32.const 8 + i32.add + local.set 1 + local.get 0 + i32.const 8 + i32.add + local.set 0 + local.get 6 + i32.const -8 + i32.add + local.tee 6 + br_if 0 (;@5;) + br 2 (;@3;) + end + end + local.get 2 + i32.const 20 + i32.add + i32.load + local.tee 1 + i32.eqz + br_if 0 (;@3;) + local.get 1 + i32.const 5 + i32.shl + local.set 8 + local.get 1 + i32.const -1 + i32.add + i32.const 134217727 + i32.and + i32.const 1 + i32.add + local.set 4 + local.get 2 + i32.load offset=8 + local.set 9 + local.get 2 + i32.load + local.set 0 + i32.const 0 + local.set 6 + loop ;; label = @4 + block ;; label = @5 + local.get 0 + i32.const 4 + i32.add + i32.load + local.tee 1 + i32.eqz + br_if 0 (;@5;) + local.get 3 + i32.load offset=32 + local.get 0 + i32.load + local.get 1 + local.get 3 + i32.load offset=36 + i32.load offset=12 + call_indirect (type 2) + br_if 3 (;@2;) + end + local.get 3 + local.get 5 + local.get 6 + i32.add + local.tee 1 + i32.const 16 + i32.add + i32.load + i32.store offset=28 + local.get 3 + local.get 1 + i32.const 28 + i32.add + i32.load8_u + i32.store8 offset=44 + local.get 3 + local.get 1 + i32.const 24 + i32.add + i32.load + i32.store offset=40 + local.get 1 + i32.const 12 + i32.add + i32.load + local.set 10 + i32.const 0 + local.set 11 + i32.const 0 + local.set 7 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 1 + i32.const 8 + i32.add + i32.load + br_table 1 (;@6;) 0 (;@7;) 2 (;@5;) 1 (;@6;) + end + local.get 10 + i32.const 3 + i32.shl + local.set 12 + i32.const 0 + local.set 7 + local.get 9 + local.get 12 + i32.add + local.tee 12 + i32.load offset=4 + i32.const 11 + i32.ne + br_if 1 (;@5;) + local.get 12 + i32.load + i32.load + local.set 10 + end + i32.const 1 + local.set 7 + end + local.get 3 + local.get 10 + i32.store offset=16 + local.get 3 + local.get 7 + i32.store offset=12 + local.get 1 + i32.const 4 + i32.add + i32.load + local.set 7 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 1 + i32.load + br_table 1 (;@6;) 0 (;@7;) 2 (;@5;) 1 (;@6;) + end + local.get 7 + i32.const 3 + i32.shl + local.set 10 + local.get 9 + local.get 10 + i32.add + local.tee 10 + i32.load offset=4 + i32.const 11 + i32.ne + br_if 1 (;@5;) + local.get 10 + i32.load + i32.load + local.set 7 + end + i32.const 1 + local.set 11 + end + local.get 3 + local.get 7 + i32.store offset=24 + local.get 3 + local.get 11 + i32.store offset=20 + local.get 9 + local.get 1 + i32.const 20 + i32.add + i32.load + i32.const 3 + i32.shl + i32.add + local.tee 1 + i32.load + local.get 3 + i32.const 12 + i32.add + local.get 1 + i32.load offset=4 + call_indirect (type 3) + br_if 2 (;@2;) + local.get 0 + i32.const 8 + i32.add + local.set 0 + local.get 8 + local.get 6 + i32.const 32 + i32.add + local.tee 6 + i32.ne + br_if 0 (;@4;) + end + end + block ;; label = @3 + local.get 4 + local.get 2 + i32.load offset=4 + i32.ge_u + br_if 0 (;@3;) + local.get 3 + i32.load offset=32 + local.get 2 + i32.load + local.get 4 + i32.const 3 + i32.shl + i32.add + local.tee 1 + i32.load + local.get 1 + i32.load offset=4 + local.get 3 + i32.load offset=36 + i32.load offset=12 + call_indirect (type 2) + br_if 1 (;@2;) + end + i32.const 0 + local.set 1 + br 1 (;@1;) + end + i32.const 1 + local.set 1 + end + local.get 3 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 1 + ) + (func $core::fmt::Formatter::pad_integral (;50;) (type 11) (param i32 i32 i32 i32 i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.eqz + br_if 0 (;@2;) + i32.const 43 + i32.const 1114112 + local.get 0 + i32.load offset=28 + local.tee 6 + i32.const 1 + i32.and + local.tee 1 + select + local.set 7 + local.get 1 + local.get 5 + i32.add + local.set 8 + br 1 (;@1;) + end + local.get 5 + i32.const 1 + i32.add + local.set 8 + local.get 0 + i32.load offset=28 + local.set 6 + i32.const 45 + local.set 7 + end + block ;; label = @1 + block ;; label = @2 + local.get 6 + i32.const 4 + i32.and + br_if 0 (;@2;) + i32.const 0 + local.set 2 + br 1 (;@1;) + end + block ;; label = @2 + block ;; label = @3 + local.get 3 + i32.const 16 + i32.lt_u + br_if 0 (;@3;) + local.get 2 + local.get 3 + call $core::str::count::do_count_chars + local.set 1 + br 1 (;@2;) + end + block ;; label = @3 + local.get 3 + br_if 0 (;@3;) + i32.const 0 + local.set 1 + br 1 (;@2;) + end + local.get 3 + i32.const 3 + i32.and + local.set 9 + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.const 4 + i32.ge_u + br_if 0 (;@4;) + i32.const 0 + local.set 1 + i32.const 0 + local.set 10 + br 1 (;@3;) + end + local.get 3 + i32.const -4 + i32.and + local.set 11 + i32.const 0 + local.set 1 + i32.const 0 + local.set 10 + loop ;; label = @4 + local.get 1 + local.get 2 + local.get 10 + i32.add + local.tee 12 + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 12 + i32.const 1 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 12 + i32.const 2 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 12 + i32.const 3 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.set 1 + local.get 11 + local.get 10 + i32.const 4 + i32.add + local.tee 10 + i32.ne + br_if 0 (;@4;) + end + end + local.get 9 + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 10 + i32.add + local.set 12 + loop ;; label = @3 + local.get 1 + local.get 12 + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.set 1 + local.get 12 + i32.const 1 + i32.add + local.set 12 + local.get 9 + i32.const -1 + i32.add + local.tee 9 + br_if 0 (;@3;) + end + end + local.get 1 + local.get 8 + i32.add + local.set 8 + end + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.load + br_if 0 (;@2;) + i32.const 1 + local.set 1 + local.get 0 + i32.load offset=20 + local.tee 12 + local.get 0 + i32.load offset=24 + local.tee 10 + local.get 7 + local.get 2 + local.get 3 + call $core::fmt::Formatter::pad_integral::write_prefix + br_if 1 (;@1;) + local.get 12 + local.get 4 + local.get 5 + local.get 10 + i32.load offset=12 + call_indirect (type 2) + return + end + block ;; label = @2 + local.get 0 + i32.load offset=4 + local.tee 9 + local.get 8 + i32.gt_u + br_if 0 (;@2;) + i32.const 1 + local.set 1 + local.get 0 + i32.load offset=20 + local.tee 12 + local.get 0 + i32.load offset=24 + local.tee 10 + local.get 7 + local.get 2 + local.get 3 + call $core::fmt::Formatter::pad_integral::write_prefix + br_if 1 (;@1;) + local.get 12 + local.get 4 + local.get 5 + local.get 10 + i32.load offset=12 + call_indirect (type 2) + return + end + block ;; label = @2 + local.get 6 + i32.const 8 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 0 + i32.load offset=16 + local.set 11 + local.get 0 + i32.const 48 + i32.store offset=16 + local.get 0 + i32.load8_u offset=32 + local.set 6 + i32.const 1 + local.set 1 + local.get 0 + i32.const 1 + i32.store8 offset=32 + local.get 0 + i32.load offset=20 + local.tee 12 + local.get 0 + i32.load offset=24 + local.tee 10 + local.get 7 + local.get 2 + local.get 3 + call $core::fmt::Formatter::pad_integral::write_prefix + br_if 1 (;@1;) + local.get 9 + local.get 8 + i32.sub + i32.const 1 + i32.add + local.set 1 + block ;; label = @3 + loop ;; label = @4 + local.get 1 + i32.const -1 + i32.add + local.tee 1 + i32.eqz + br_if 1 (;@3;) + local.get 12 + i32.const 48 + local.get 10 + i32.load offset=16 + call_indirect (type 3) + i32.eqz + br_if 0 (;@4;) + end + i32.const 1 + return + end + i32.const 1 + local.set 1 + local.get 12 + local.get 4 + local.get 5 + local.get 10 + i32.load offset=12 + call_indirect (type 2) + br_if 1 (;@1;) + local.get 0 + local.get 6 + i32.store8 offset=32 + local.get 0 + local.get 11 + i32.store offset=16 + i32.const 0 + local.set 1 + br 1 (;@1;) + end + local.get 9 + local.get 8 + i32.sub + local.set 8 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 0 + i32.load8_u offset=32 + local.tee 1 + br_table 2 (;@2;) 0 (;@4;) 1 (;@3;) 0 (;@4;) 2 (;@2;) + end + local.get 8 + local.set 1 + i32.const 0 + local.set 8 + br 1 (;@2;) + end + local.get 8 + i32.const 1 + i32.shr_u + local.set 1 + local.get 8 + i32.const 1 + i32.add + i32.const 1 + i32.shr_u + local.set 8 + end + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 0 + i32.const 24 + i32.add + i32.load + local.set 12 + local.get 0 + i32.load offset=16 + local.set 9 + local.get 0 + i32.load offset=20 + local.set 10 + block ;; label = @2 + loop ;; label = @3 + local.get 1 + i32.const -1 + i32.add + local.tee 1 + i32.eqz + br_if 1 (;@2;) + local.get 10 + local.get 9 + local.get 12 + i32.load offset=16 + call_indirect (type 3) + i32.eqz + br_if 0 (;@3;) + end + i32.const 1 + return + end + i32.const 1 + local.set 1 + local.get 10 + local.get 12 + local.get 7 + local.get 2 + local.get 3 + call $core::fmt::Formatter::pad_integral::write_prefix + br_if 0 (;@1;) + local.get 10 + local.get 4 + local.get 5 + local.get 12 + i32.load offset=12 + call_indirect (type 2) + br_if 0 (;@1;) + i32.const 0 + local.set 1 + loop ;; label = @2 + block ;; label = @3 + local.get 8 + local.get 1 + i32.ne + br_if 0 (;@3;) + local.get 8 + local.get 8 + i32.lt_u + return + end + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 10 + local.get 9 + local.get 12 + i32.load offset=16 + call_indirect (type 3) + i32.eqz + br_if 0 (;@2;) + end + local.get 1 + i32.const -1 + i32.add + local.get 8 + i32.lt_u + return + end + local.get 1 + ) + (func $core::fmt::Formatter::pad_integral::write_prefix (;51;) (type 12) (param i32 i32 i32 i32 i32) (result i32) + (local i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.const 1114112 + i32.eq + br_if 0 (;@3;) + i32.const 1 + local.set 5 + local.get 0 + local.get 2 + local.get 1 + i32.load offset=16 + call_indirect (type 3) + br_if 1 (;@2;) + end + local.get 3 + br_if 1 (;@1;) + i32.const 0 + local.set 5 + end + local.get 5 + return + end + local.get 0 + local.get 3 + local.get 4 + local.get 1 + i32.load offset=12 + call_indirect (type 2) + ) + (func $core::fmt::num::imp::fmt_u64 (;52;) (type 13) (param i64 i32 i32) (result i32) + (local i32 i32 i64 i32 i32 i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 3 + global.set $__stack_pointer + i32.const 39 + local.set 4 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i64.const 10000 + i64.ge_u + br_if 0 (;@2;) + local.get 0 + local.set 5 + br 1 (;@1;) + end + i32.const 39 + local.set 4 + loop ;; label = @2 + local.get 3 + i32.const 9 + i32.add + local.get 4 + i32.add + local.tee 6 + i32.const -4 + i32.add + local.get 0 + local.get 0 + i64.const 10000 + i64.div_u + local.tee 5 + i64.const 10000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee 7 + i32.const 65535 + i32.and + i32.const 100 + i32.div_u + local.tee 8 + i32.const 1 + i32.shl + i32.const 1048750 + i32.add + i32.load16_u align=1 + i32.store16 align=1 + local.get 6 + i32.const -2 + i32.add + local.get 7 + local.get 8 + i32.const 100 + i32.mul + i32.sub + i32.const 65535 + i32.and + i32.const 1 + i32.shl + i32.const 1048750 + i32.add + i32.load16_u align=1 + i32.store16 align=1 + local.get 4 + i32.const -4 + i32.add + local.set 4 + local.get 0 + i64.const 99999999 + i64.gt_u + local.set 6 + local.get 5 + local.set 0 + local.get 6 + br_if 0 (;@2;) + end + end + block ;; label = @1 + local.get 5 + i32.wrap_i64 + local.tee 6 + i32.const 99 + i32.le_u + br_if 0 (;@1;) + local.get 3 + i32.const 9 + i32.add + local.get 4 + i32.const -2 + i32.add + local.tee 4 + i32.add + local.get 5 + i32.wrap_i64 + local.tee 6 + local.get 6 + i32.const 65535 + i32.and + i32.const 100 + i32.div_u + local.tee 6 + i32.const 100 + i32.mul + i32.sub + i32.const 65535 + i32.and + i32.const 1 + i32.shl + i32.const 1048750 + i32.add + i32.load16_u align=1 + i32.store16 align=1 + end + block ;; label = @1 + block ;; label = @2 + local.get 6 + i32.const 10 + i32.lt_u + br_if 0 (;@2;) + local.get 3 + i32.const 9 + i32.add + local.get 4 + i32.const -2 + i32.add + local.tee 4 + i32.add + local.get 6 + i32.const 1 + i32.shl + i32.const 1048750 + i32.add + i32.load16_u align=1 + i32.store16 align=1 + br 1 (;@1;) + end + local.get 3 + i32.const 9 + i32.add + local.get 4 + i32.const -1 + i32.add + local.tee 4 + i32.add + local.get 6 + i32.const 48 + i32.add + i32.store8 + end + local.get 2 + local.get 1 + i32.const 1048952 + i32.const 0 + local.get 3 + i32.const 9 + i32.add + local.get 4 + i32.add + i32.const 39 + local.get 4 + i32.sub + call $core::fmt::Formatter::pad_integral + local.set 4 + local.get 3 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 4 + ) + (func $core::fmt::num::imp::::fmt (;53;) (type 3) (param i32 i32) (result i32) + local.get 0 + i64.load32_u + i32.const 1 + local.get 1 + call $core::fmt::num::imp::fmt_u64 + ) + (func $core::str::count::do_count_chars (;54;) (type 3) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + local.get 1 + local.get 0 + i32.const 3 + i32.add + i32.const -4 + i32.and + local.tee 2 + local.get 0 + i32.sub + local.tee 3 + i32.lt_u + br_if 0 (;@2;) + local.get 1 + local.get 3 + i32.sub + local.tee 4 + i32.const 4 + i32.lt_u + br_if 0 (;@2;) + local.get 4 + i32.const 3 + i32.and + local.set 5 + i32.const 0 + local.set 6 + i32.const 0 + local.set 1 + block ;; label = @3 + local.get 2 + local.get 0 + i32.eq + local.tee 7 + br_if 0 (;@3;) + i32.const 0 + local.set 1 + block ;; label = @4 + block ;; label = @5 + local.get 2 + local.get 0 + i32.const -1 + i32.xor + i32.add + i32.const 3 + i32.ge_u + br_if 0 (;@5;) + i32.const 0 + local.set 8 + br 1 (;@4;) + end + i32.const 0 + local.set 8 + loop ;; label = @5 + local.get 1 + local.get 0 + local.get 8 + i32.add + local.tee 9 + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 9 + i32.const 1 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 9 + i32.const 2 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 9 + i32.const 3 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.set 1 + local.get 8 + i32.const 4 + i32.add + local.tee 8 + br_if 0 (;@5;) + end + end + local.get 7 + br_if 0 (;@3;) + local.get 0 + local.get 2 + i32.sub + local.set 2 + local.get 0 + local.get 8 + i32.add + local.set 9 + loop ;; label = @4 + local.get 1 + local.get 9 + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.set 1 + local.get 9 + i32.const 1 + i32.add + local.set 9 + local.get 2 + i32.const 1 + i32.add + local.tee 2 + br_if 0 (;@4;) + end + end + local.get 0 + local.get 3 + i32.add + local.set 8 + block ;; label = @3 + local.get 5 + i32.eqz + br_if 0 (;@3;) + local.get 8 + local.get 4 + i32.const -4 + i32.and + i32.add + local.tee 9 + i32.load8_s + i32.const -65 + i32.gt_s + local.set 6 + local.get 5 + i32.const 1 + i32.eq + br_if 0 (;@3;) + local.get 6 + local.get 9 + i32.load8_s offset=1 + i32.const -65 + i32.gt_s + i32.add + local.set 6 + local.get 5 + i32.const 2 + i32.eq + br_if 0 (;@3;) + local.get 6 + local.get 9 + i32.load8_s offset=2 + i32.const -65 + i32.gt_s + i32.add + local.set 6 + end + local.get 4 + i32.const 2 + i32.shr_u + local.set 3 + local.get 6 + local.get 1 + i32.add + local.set 2 + loop ;; label = @3 + local.get 8 + local.set 6 + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.const 192 + local.get 3 + i32.const 192 + i32.lt_u + select + local.tee 4 + i32.const 3 + i32.and + local.set 5 + local.get 4 + i32.const 2 + i32.shl + local.set 7 + block ;; label = @4 + block ;; label = @5 + local.get 4 + i32.const 252 + i32.and + local.tee 10 + br_if 0 (;@5;) + i32.const 0 + local.set 9 + br 1 (;@4;) + end + local.get 6 + local.get 10 + i32.const 2 + i32.shl + i32.add + local.set 0 + i32.const 0 + local.set 9 + local.get 6 + local.set 1 + loop ;; label = @5 + local.get 1 + i32.const 12 + i32.add + i32.load + local.tee 8 + i32.const -1 + i32.xor + i32.const 7 + i32.shr_u + local.get 8 + i32.const 6 + i32.shr_u + i32.or + i32.const 16843009 + i32.and + local.get 1 + i32.const 8 + i32.add + i32.load + local.tee 8 + i32.const -1 + i32.xor + i32.const 7 + i32.shr_u + local.get 8 + i32.const 6 + i32.shr_u + i32.or + i32.const 16843009 + i32.and + local.get 1 + i32.const 4 + i32.add + i32.load + local.tee 8 + i32.const -1 + i32.xor + i32.const 7 + i32.shr_u + local.get 8 + i32.const 6 + i32.shr_u + i32.or + i32.const 16843009 + i32.and + local.get 1 + i32.load + local.tee 8 + i32.const -1 + i32.xor + i32.const 7 + i32.shr_u + local.get 8 + i32.const 6 + i32.shr_u + i32.or + i32.const 16843009 + i32.and + local.get 9 + i32.add + i32.add + i32.add + i32.add + local.set 9 + local.get 1 + i32.const 16 + i32.add + local.tee 1 + local.get 0 + i32.ne + br_if 0 (;@5;) + end + end + local.get 3 + local.get 4 + i32.sub + local.set 3 + local.get 6 + local.get 7 + i32.add + local.set 8 + local.get 9 + i32.const 8 + i32.shr_u + i32.const 16711935 + i32.and + local.get 9 + i32.const 16711935 + i32.and + i32.add + i32.const 65537 + i32.mul + i32.const 16 + i32.shr_u + local.get 2 + i32.add + local.set 2 + local.get 5 + i32.eqz + br_if 0 (;@3;) + end + local.get 6 + local.get 10 + i32.const 2 + i32.shl + i32.add + local.tee 9 + i32.load + local.tee 1 + i32.const -1 + i32.xor + i32.const 7 + i32.shr_u + local.get 1 + i32.const 6 + i32.shr_u + i32.or + i32.const 16843009 + i32.and + local.set 1 + block ;; label = @3 + local.get 5 + i32.const 1 + i32.eq + br_if 0 (;@3;) + local.get 9 + i32.load offset=4 + local.tee 8 + i32.const -1 + i32.xor + i32.const 7 + i32.shr_u + local.get 8 + i32.const 6 + i32.shr_u + i32.or + i32.const 16843009 + i32.and + local.get 1 + i32.add + local.set 1 + local.get 5 + i32.const 2 + i32.eq + br_if 0 (;@3;) + local.get 9 + i32.load offset=8 + local.tee 9 + i32.const -1 + i32.xor + i32.const 7 + i32.shr_u + local.get 9 + i32.const 6 + i32.shr_u + i32.or + i32.const 16843009 + i32.and + local.get 1 + i32.add + local.set 1 + end + local.get 1 + i32.const 8 + i32.shr_u + i32.const 459007 + i32.and + local.get 1 + i32.const 16711935 + i32.and + i32.add + i32.const 65537 + i32.mul + i32.const 16 + i32.shr_u + local.get 2 + i32.add + local.set 2 + br 1 (;@1;) + end + block ;; label = @2 + local.get 1 + br_if 0 (;@2;) + i32.const 0 + return + end + local.get 1 + i32.const 3 + i32.and + local.set 8 + block ;; label = @2 + block ;; label = @3 + local.get 1 + i32.const 4 + i32.ge_u + br_if 0 (;@3;) + i32.const 0 + local.set 2 + i32.const 0 + local.set 9 + br 1 (;@2;) + end + local.get 1 + i32.const -4 + i32.and + local.set 3 + i32.const 0 + local.set 2 + i32.const 0 + local.set 9 + loop ;; label = @3 + local.get 2 + local.get 0 + local.get 9 + i32.add + local.tee 1 + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 1 + i32.const 1 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 1 + i32.const 2 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.get 1 + i32.const 3 + i32.add + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.set 2 + local.get 3 + local.get 9 + i32.const 4 + i32.add + local.tee 9 + i32.ne + br_if 0 (;@3;) + end + end + local.get 8 + i32.eqz + br_if 0 (;@1;) + local.get 0 + local.get 9 + i32.add + local.set 1 + loop ;; label = @2 + local.get 2 + local.get 1 + i32.load8_s + i32.const -65 + i32.gt_s + i32.add + local.set 2 + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 8 + i32.const -1 + i32.add + local.tee 8 + br_if 0 (;@2;) + end + end + local.get 2 + ) + (func $core::ops::function::FnOnce::call_once (;55;) (type 3) (param i32 i32) (result i32) + local.get 0 + i32.load + drop + loop (result i32) ;; label = @1 + br 0 (;@1;) + end + ) + (table (;0;) 12 12 funcref) + (memory (;0;) 17) + (global $__stack_pointer (;0;) (mut i32) i32.const 1048576) + (export "memory" (memory 0)) + (export "miden:base/note@1.0.0#note-script" (func $miden:base/note@1.0.0#note-script)) + (export "cabi_realloc" (func $cabi_realloc)) + (elem (;0;) (i32.const 1) func $core::ptr::drop_in_place> $ as core::fmt::Write>::write_str $core::fmt::Write::write_char $core::fmt::Write::write_fmt $core::ptr::drop_in_place<&mut std::io::Write::write_fmt::Adapter>> $<&mut W as core::fmt::Write>::write_str $<&mut W as core::fmt::Write>::write_char $<&mut W as core::fmt::Write>::write_fmt $core::fmt::num::imp::::fmt $std::alloc::default_alloc_error_hook $core::ops::function::FnOnce::call_once) + (data (;0;) (i32.const 1048576) "failed to write whole buffer\00\00\10\00\1c\00\00\00\17\00\00\00\01\00\00\00\0c\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\04\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00memory allocation of bytes failed\0a\00X\00\10\00\15\00\00\00m\00\10\00\0e\00\00\00\0e\00\0f\00?\00\02\00@\005\00\0d\00\04\00\03\00,\00\1b\00\1c\00I\00\14\00\06\004\000\0000010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899\00\00") + ) + (core module (;1;) + (type (;0;) (func (param i32))) + (type (;1;) (func (param i32 i32))) + (type (;2;) (func (param i32 i64 i32))) + (type (;3;) (func (param i32 i32 i32 i32))) + (type (;4;) (func (param i32) (result i32))) + (type (;5;) (func (param i32 i32 i32))) + (type (;6;) (func (param i32 i32 i32 i32) (result i32))) + (type (;7;) (func (param i32 i32 i32 i32 i32))) + (type (;8;) (func (result i32))) + (type (;9;) (func (param i32 i32 i32) (result i32))) + (type (;10;) (func (param i32 i32) (result i32))) + (type (;11;) (func)) + (import "env" "memory" (memory (;0;) 0)) + (import "wasi:filesystem/preopens@0.2.0-rc-2023-11-10" "get-directories" (func $wasi_snapshot_preview1::descriptors::Descriptors::open_preopens::get_preopens_import (;0;) (type 0))) + (import "wasi:filesystem/types@0.2.0-rc-2023-11-10" "[method]descriptor.get-type" (func $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::get_type::wit_import (;1;) (type 1))) + (import "wasi:filesystem/types@0.2.0-rc-2023-11-10" "filesystem-error-code" (func $wasi_snapshot_preview1::bindings::wasi::filesystem::types::filesystem_error_code::wit_import (;2;) (type 1))) + (import "wasi:io/error@0.2.0-rc-2023-11-10" "[resource-drop]error" (func $::drop::drop (;3;) (type 0))) + (import "wasi:io/streams@0.2.0-rc-2023-11-10" "[resource-drop]input-stream" (func $::drop::drop (;4;) (type 0))) + (import "wasi:io/streams@0.2.0-rc-2023-11-10" "[resource-drop]output-stream" (func $::drop::drop (;5;) (type 0))) + (import "wasi:filesystem/types@0.2.0-rc-2023-11-10" "[resource-drop]descriptor" (func $::drop::drop (;6;) (type 0))) + (import "__main_module__" "cabi_realloc" (func $wasi_snapshot_preview1::State::new::cabi_realloc (;7;) (type 6))) + (import "wasi:filesystem/types@0.2.0-rc-2023-11-10" "[method]descriptor.write-via-stream" (func $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::write_via_stream::wit_import (;8;) (type 2))) + (import "wasi:filesystem/types@0.2.0-rc-2023-11-10" "[method]descriptor.append-via-stream" (func $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::append_via_stream::wit_import (;9;) (type 1))) + (import "wasi:filesystem/types@0.2.0-rc-2023-11-10" "[method]descriptor.stat" (func $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::stat::wit_import (;10;) (type 1))) + (import "wasi:cli/stderr@0.2.0-rc-2023-12-05" "get-stderr" (func $wasi_snapshot_preview1::bindings::wasi::cli::stderr::get_stderr::wit_import (;11;) (type 8))) + (import "wasi:cli/stdin@0.2.0-rc-2023-12-05" "get-stdin" (func $wasi_snapshot_preview1::bindings::wasi::cli::stdin::get_stdin::wit_import (;12;) (type 8))) + (import "wasi:cli/stdout@0.2.0-rc-2023-12-05" "get-stdout" (func $wasi_snapshot_preview1::bindings::wasi::cli::stdout::get_stdout::wit_import (;13;) (type 8))) + (import "wasi:io/streams@0.2.0-rc-2023-11-10" "[method]output-stream.check-write" (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::check_write::wit_import (;14;) (type 1))) + (import "wasi:io/streams@0.2.0-rc-2023-11-10" "[method]output-stream.write" (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::write::wit_import (;15;) (type 3))) + (import "wasi:io/streams@0.2.0-rc-2023-11-10" "[method]output-stream.blocking-write-and-flush" (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_write_and_flush::wit_import (;16;) (type 3))) + (import "wasi:io/streams@0.2.0-rc-2023-11-10" "[method]output-stream.blocking-flush" (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_flush::wit_import (;17;) (type 1))) + (func $wasi_snapshot_preview1::State::ptr (;18;) (type 8) (result i32) + (local i32) + block ;; label = @1 + call $get_state_ptr + local.tee 0 + br_if 0 (;@1;) + call $wasi_snapshot_preview1::State::new + local.tee 0 + call $set_state_ptr + end + local.get 0 + ) + (func $cabi_import_realloc (;19;) (type 6) (param i32 i32 i32 i32) (result i32) + (local i32) + call $allocate_stack + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 4 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + local.get 0 + br_if 0 (;@5;) + local.get 1 + br_if 0 (;@5;) + call $wasi_snapshot_preview1::State::ptr + local.tee 0 + i32.load + i32.const 560490357 + i32.ne + br_if 1 (;@4;) + local.get 0 + i32.load offset=65532 + i32.const 560490357 + i32.ne + br_if 2 (;@3;) + block ;; label = @6 + block ;; label = @7 + local.get 0 + i32.const 12 + i32.add + i32.load + local.tee 1 + i32.eqz + br_if 0 (;@7;) + local.get 1 + local.get 2 + local.get 3 + call $wasi_snapshot_preview1::BumpArena::alloc + local.set 2 + br 1 (;@6;) + end + local.get 0 + i32.load offset=4 + local.tee 1 + i32.eqz + br_if 4 (;@2;) + local.get 2 + local.get 1 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 2 + i32.sub + i32.and + local.tee 2 + local.get 3 + i32.add + local.tee 3 + local.get 2 + i32.ge_u + local.get 3 + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + local.get 1 + local.get 0 + i32.const 8 + i32.add + i32.load + i32.add + local.tee 3 + local.get 1 + i32.ge_u + local.get 3 + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + i32.gt_u + br_if 5 (;@1;) + local.get 0 + i32.const 0 + i32.store offset=4 + end + local.get 4 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 2 + return + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 184 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2552 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=27 + local.get 4 + i64.const 7234307576302018670 + i64.store offset=19 align=1 + local.get 4 + i64.const 8028075845441778529 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 17 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2553 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=27 + local.get 4 + i64.const 7234307576302018670 + i64.store offset=19 align=1 + local.get 4 + i64.const 8028075845441778529 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 17 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 290 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=47 + local.get 4 + i32.const 1684370293 + i32.store offset=43 align=1 + local.get 4 + i64.const 2340011850872286305 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338053340533122404 + i64.store offset=27 align=1 + local.get 4 + i64.const 7599383958532420719 + i64.store offset=19 align=1 + local.get 4 + i64.const 7935468323262068066 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 297 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 2681 + i32.store16 offset=23 align=1 + local.get 4 + i32.const 1919905125 + i32.store offset=19 align=1 + local.get 4 + i64.const 7863397576860792175 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 14 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $wasi_snapshot_preview1::BumpArena::alloc (;20;) (type 9) (param i32 i32 i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 3 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + local.get 1 + i32.add + local.get 0 + i32.load offset=54912 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 1 + i32.sub + i32.and + local.tee 1 + local.get 0 + i32.sub + local.get 2 + i32.add + local.tee 2 + i32.const 54912 + i32.gt_u + br_if 0 (;@1;) + local.get 0 + local.get 2 + i32.store offset=54912 + local.get 3 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 1 + return + end + local.get 3 + i32.const 32 + i32.store8 offset=47 + local.get 3 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 3 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 3 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 3 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 3 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 214 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 3 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 3 + i32.const 2681 + i32.store16 offset=23 align=1 + local.get 3 + i32.const 1919905125 + i32.store offset=19 align=1 + local.get 3 + i64.const 7863397576860792175 + i64.store offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 14 + call $wasi_snapshot_preview1::macros::print + local.get 3 + i32.const 10 + i32.store8 offset=11 + local.get 3 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $wasi_snapshot_preview1::ImportAlloc::with_arena (;21;) (type 5) (param i32 i32 i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 3 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.load + br_if 0 (;@2;) + local.get 0 + i32.load offset=8 + local.set 4 + local.get 0 + local.get 1 + i32.store offset=8 + local.get 4 + i32.eqz + br_if 1 (;@1;) + local.get 3 + i32.const 32 + i32.store8 offset=47 + local.get 3 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 3 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 3 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 3 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 3 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 276 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 3 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 3 + i64.const 748000395109933170 + i64.store offset=27 align=1 + local.get 3 + i64.const 7307218417350680677 + i64.store offset=19 align=1 + local.get 3 + i64.const 8390050488160450159 + i64.store offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 24 + call $wasi_snapshot_preview1::macros::print + local.get 3 + i32.const 10 + i32.store8 offset=11 + local.get 3 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 3 + i32.const 32 + i32.store8 offset=47 + local.get 3 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 3 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 3 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 3 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 3 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 269 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 3 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 3 + i32.const 174417007 + i32.store offset=19 align=1 + local.get 3 + i64.const 7863410729224140130 + i64.store offset=11 align=1 + local.get 3 + i32.const 11 + i32.add + i32.const 12 + call $wasi_snapshot_preview1::macros::print + local.get 3 + i32.const 10 + i32.store8 offset=11 + local.get 3 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 2 + call $wasi_snapshot_preview1::descriptors::Descriptors::open_preopens::get_preopens_import + local.get 0 + i32.const 0 + i32.store offset=8 + local.get 3 + i32.const 48 + i32.add + global.set $__stack_pointer + ) + (func $cabi_export_realloc (;22;) (type 6) (param i32 i32 i32 i32) (result i32) + (local i32) + call $allocate_stack + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 4 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 0 + br_if 0 (;@3;) + local.get 1 + br_if 0 (;@3;) + call $wasi_snapshot_preview1::State::ptr + local.tee 0 + i32.load + i32.const 560490357 + i32.ne + br_if 1 (;@2;) + local.get 0 + i32.load offset=65532 + i32.const 560490357 + i32.ne + br_if 2 (;@1;) + local.get 0 + i32.const 10288 + i32.add + local.get 2 + local.get 3 + call $wasi_snapshot_preview1::BumpArena::alloc + local.set 0 + local.get 4 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 0 + return + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 320 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2552 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=27 + local.get 4 + i64.const 7234307576302018670 + i64.store offset=19 align=1 + local.get 4 + i64.const 8028075845441778529 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 17 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.const 32 + i32.store8 offset=47 + local.get 4 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2553 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=27 + local.get 4 + i64.const 7234307576302018670 + i64.store offset=19 align=1 + local.get 4 + i64.const 8028075845441778529 + i64.store offset=11 align=1 + local.get 4 + i32.const 11 + i32.add + i32.const 17 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=11 + local.get 4 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $wasi_snapshot_preview1::State::descriptors (;23;) (type 1) (param i32 i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 6176 + i32.sub + local.tee 2 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.load offset=16 + br_if 0 (;@2;) + local.get 1 + i32.const -1 + i32.store offset=16 + local.get 1 + i32.const 24 + i32.add + local.set 3 + block ;; label = @3 + local.get 1 + i32.const 6172 + i32.add + i32.load + i32.const 2 + i32.ne + br_if 0 (;@3;) + local.get 2 + i32.const 8 + i32.add + local.get 1 + i32.const 4 + i32.add + local.get 1 + i32.const 10288 + i32.add + call $wasi_snapshot_preview1::descriptors::Descriptors::new + local.get 3 + local.get 2 + i32.const 8 + i32.add + i32.const 6168 + call $memcpy + drop + local.get 1 + i32.load offset=6172 + i32.const 2 + i32.eq + br_if 2 (;@1;) + end + local.get 0 + local.get 1 + i32.const 16 + i32.add + i32.store offset=4 + local.get 0 + local.get 3 + i32.store + local.get 2 + i32.const 6176 + i32.add + global.set $__stack_pointer + return + end + local.get 2 + i32.const 32 + i32.store8 offset=44 + local.get 2 + i32.const 1701734764 + i32.store offset=40 align=1 + local.get 2 + i64.const 2338042707334751329 + i64.store offset=32 align=1 + local.get 2 + i64.const 2338600898263348341 + i64.store offset=24 align=1 + local.get 2 + i64.const 7162263158133189730 + i64.store offset=16 align=1 + local.get 2 + i64.const 7018969289221893749 + i64.store offset=8 align=1 + local.get 2 + i32.const 8 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2646 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 2 + i32.const 10 + i32.store8 offset=8 + local.get 2 + i32.const 8 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 2 + i32.const 32 + i32.store8 offset=44 + local.get 2 + i32.const 1701734764 + i32.store offset=40 align=1 + local.get 2 + i64.const 2338042707334751329 + i64.store offset=32 align=1 + local.get 2 + i64.const 2338600898263348341 + i64.store offset=24 align=1 + local.get 2 + i64.const 7162263158133189730 + i64.store offset=16 align=1 + local.get 2 + i64.const 7018969289221893749 + i64.store offset=8 align=1 + local.get 2 + i32.const 8 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2650 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 2 + i32.const 10 + i32.store8 offset=8 + local.get 2 + i32.const 8 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $wasi_snapshot_preview1::stream_error_to_errno (;24;) (type 4) (param i32) (result i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 1 + global.set $__stack_pointer + local.get 0 + local.get 1 + i32.const 14 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::filesystem::types::filesystem_error_code::wit_import + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.load8_u offset=14 + br_if 0 (;@2;) + i32.const 29 + local.set 2 + br 1 (;@1;) + end + local.get 1 + i32.load8_u offset=15 + call $wasi_snapshot_preview1:: for wasi::lib_generated::Errno>::from + local.set 2 + end + local.get 0 + call $::drop::drop + local.get 1 + i32.const 16 + i32.add + global.set $__stack_pointer + local.get 2 + ) + (func $fd_write (;25;) (type 6) (param i32 i32 i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + call $allocate_stack + global.get $__stack_pointer + i32.const 112 + i32.sub + local.tee 4 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + call $get_allocation_state + i32.const -2 + i32.add + i32.const -3 + i32.and + br_if 0 (;@3;) + block ;; label = @4 + local.get 2 + i32.eqz + br_if 0 (;@4;) + loop ;; label = @5 + local.get 1 + i32.const 4 + i32.add + i32.load + local.tee 5 + br_if 3 (;@2;) + local.get 1 + i32.const 8 + i32.add + local.set 1 + local.get 2 + i32.const -1 + i32.add + local.tee 2 + br_if 0 (;@5;) + end + end + i32.const 0 + local.set 1 + local.get 3 + i32.const 0 + i32.store + br 2 (;@1;) + end + local.get 3 + i32.const 0 + i32.store + i32.const 29 + local.set 1 + br 1 (;@1;) + end + local.get 1 + i32.load + local.set 6 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + call $wasi_snapshot_preview1::State::ptr + local.tee 1 + i32.load + i32.const 560490357 + i32.ne + br_if 0 (;@5;) + local.get 1 + i32.load offset=65532 + i32.const 560490357 + i32.ne + br_if 1 (;@4;) + local.get 4 + i32.const 8 + i32.add + local.get 1 + call $wasi_snapshot_preview1::State::descriptors + local.get 4 + i32.load offset=8 + local.tee 7 + i32.load16_u offset=6144 + local.set 8 + local.get 4 + i32.load offset=12 + local.set 2 + i32.const 8 + local.set 1 + i32.const 0 + local.get 0 + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + local.tee 0 + local.get 8 + i32.ge_u + br_if 3 (;@2;) + local.get 7 + local.get 0 + i32.const 48 + i32.mul + i32.add + local.tee 0 + i32.load + i32.const 1 + i32.ne + br_if 3 (;@2;) + local.get 4 + i32.const 16 + i32.add + local.get 0 + i32.const 8 + i32.add + call $wasi_snapshot_preview1::descriptors::Streams::get_write_stream + block ;; label = @6 + local.get 4 + i32.load16_u offset=16 + br_if 0 (;@6;) + local.get 4 + i32.load offset=20 + local.set 1 + block ;; label = @7 + local.get 0 + i32.const 41 + i32.add + i32.load8_u + local.tee 8 + i32.const 2 + i32.eq + br_if 0 (;@7;) + local.get 4 + i32.const 16 + i32.add + local.get 8 + i32.const 0 + i32.ne + local.get 1 + local.get 6 + local.get 5 + call $wasi_snapshot_preview1::BlockingMode::write + local.get 4 + i32.load16_u offset=16 + br_if 1 (;@6;) + br 4 (;@3;) + end + local.get 4 + i32.const 16 + i32.add + i32.const 1 + local.get 1 + local.get 6 + local.get 5 + call $wasi_snapshot_preview1::BlockingMode::write + local.get 4 + i32.load16_u offset=16 + i32.eqz + br_if 3 (;@3;) + end + local.get 4 + i32.load16_u offset=18 + local.set 1 + br 3 (;@2;) + end + local.get 4 + i32.const 32 + i32.store8 offset=52 + local.get 4 + i32.const 1701734764 + i32.store offset=48 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=40 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=32 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=24 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=16 align=1 + local.get 4 + i32.const 16 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2552 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=16 align=1 + local.get 4 + i32.const 16 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=32 + local.get 4 + i64.const 7234307576302018670 + i64.store offset=24 align=1 + local.get 4 + i64.const 8028075845441778529 + i64.store offset=16 align=1 + local.get 4 + i32.const 16 + i32.add + i32.const 17 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=16 + local.get 4 + i32.const 16 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.const 32 + i32.store8 offset=52 + local.get 4 + i32.const 1701734764 + i32.store offset=48 align=1 + local.get 4 + i64.const 2338042707334751329 + i64.store offset=40 align=1 + local.get 4 + i64.const 2338600898263348341 + i64.store offset=32 align=1 + local.get 4 + i64.const 7162263158133189730 + i64.store offset=24 align=1 + local.get 4 + i64.const 7018969289221893749 + i64.store offset=16 align=1 + local.get 4 + i32.const 16 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2553 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 4 + i32.const 8250 + i32.store16 offset=16 align=1 + local.get 4 + i32.const 16 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=32 + local.get 4 + i64.const 7234307576302018670 + i64.store offset=24 align=1 + local.get 4 + i64.const 8028075845441778529 + i64.store offset=16 align=1 + local.get 4 + i32.const 16 + i32.add + i32.const 17 + call $wasi_snapshot_preview1::macros::print + local.get 4 + i32.const 10 + i32.store8 offset=16 + local.get 4 + i32.const 16 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 4 + i32.load offset=20 + local.set 1 + block ;; label = @3 + block ;; label = @4 + local.get 0 + i32.load8_u offset=41 + i32.const 2 + i32.eq + br_if 0 (;@4;) + block ;; label = @5 + local.get 0 + i32.const 40 + i32.add + i32.load8_u + br_if 0 (;@5;) + local.get 0 + i32.const 32 + i32.add + local.tee 5 + local.get 5 + i64.load + local.get 1 + i64.extend_i32_u + i64.add + i64.store + br 1 (;@4;) + end + local.get 4 + i32.const 16 + i32.add + local.get 0 + i32.const 24 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::stat + local.get 4 + i64.load offset=88 + i64.const 2 + i64.eq + br_if 1 (;@3;) + local.get 0 + i32.const 32 + i32.add + local.get 4 + i64.load offset=32 + i64.store + end + local.get 3 + local.get 1 + i32.store + i32.const 0 + local.set 1 + br 1 (;@2;) + end + local.get 4 + i32.load8_u offset=16 + call $wasi_snapshot_preview1:: for wasi::lib_generated::Errno>::from + local.set 1 + end + local.get 2 + local.get 2 + i32.load + i32.const 1 + i32.add + i32.store + end + local.get 4 + i32.const 112 + i32.add + global.set $__stack_pointer + local.get 1 + i32.const 65535 + i32.and + ) + (func $wasi_snapshot_preview1::BlockingMode::write (;26;) (type 7) (param i32 i32 i32 i32 i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 5 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 1 + i32.eqz + br_if 0 (;@7;) + local.get 4 + local.set 1 + loop ;; label = @8 + local.get 1 + i32.eqz + br_if 2 (;@6;) + local.get 5 + i32.const 8 + i32.add + local.get 2 + local.get 3 + local.get 1 + i32.const 4096 + local.get 1 + i32.const 4096 + i32.lt_u + select + local.tee 6 + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_write_and_flush + local.get 1 + local.get 6 + i32.sub + local.set 1 + local.get 3 + local.get 6 + i32.add + local.set 3 + local.get 5 + i32.load offset=8 + local.tee 6 + i32.const 2 + i32.eq + br_if 0 (;@8;) + end + local.get 6 + br_table 2 (;@5;) 3 (;@4;) 2 (;@5;) + end + local.get 5 + i32.const 32 + i32.add + local.get 2 + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::check_write + block ;; label = @7 + block ;; label = @8 + local.get 5 + i32.load offset=32 + br_if 0 (;@8;) + local.get 5 + i32.load offset=40 + local.set 1 + br 1 (;@7;) + end + i32.const 0 + local.set 1 + local.get 5 + i32.load offset=36 + i32.eqz + br_if 5 (;@2;) + end + block ;; label = @7 + local.get 4 + local.get 1 + local.get 4 + local.get 1 + i32.lt_u + select + local.tee 1 + br_if 0 (;@7;) + local.get 0 + i32.const 0 + i32.store16 + local.get 0 + i32.const 0 + i32.store offset=4 + br 6 (;@1;) + end + local.get 5 + i32.const 24 + i32.add + local.get 2 + local.get 3 + local.get 1 + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::write + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + local.get 5 + i32.load offset=24 + br_table 1 (;@9;) 2 (;@8;) 0 (;@10;) 1 (;@9;) + end + local.get 5 + i32.const 16 + i32.add + local.get 2 + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_flush + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + local.get 5 + i32.load offset=16 + br_table 1 (;@12;) 2 (;@11;) 0 (;@13;) 1 (;@12;) + end + local.get 0 + i32.const 0 + i32.store16 + local.get 0 + local.get 1 + i32.store offset=4 + br 11 (;@1;) + end + local.get 0 + local.get 5 + i32.load offset=20 + call $wasi_snapshot_preview1::stream_error_to_errno + i32.store16 offset=2 + i32.const 1 + local.set 1 + br 1 (;@10;) + end + i32.const 0 + local.set 1 + local.get 0 + i32.const 0 + i32.store offset=4 + end + local.get 0 + local.get 1 + i32.store16 + br 8 (;@1;) + end + local.get 0 + local.get 5 + i32.load offset=28 + call $wasi_snapshot_preview1::stream_error_to_errno + i32.store16 offset=2 + i32.const 1 + local.set 1 + br 1 (;@7;) + end + i32.const 0 + local.set 1 + local.get 0 + i32.const 0 + i32.store offset=4 + end + local.get 0 + local.get 1 + i32.store16 + br 5 (;@1;) + end + local.get 0 + i32.const 0 + i32.store16 + local.get 0 + local.get 4 + i32.store offset=4 + br 4 (;@1;) + end + local.get 5 + i32.load offset=12 + call $wasi_snapshot_preview1::stream_error_to_errno + local.set 1 + br 1 (;@3;) + end + i32.const 29 + local.set 1 + end + local.get 0 + i32.const 1 + i32.store16 + local.get 0 + local.get 1 + i32.store16 offset=2 + br 1 (;@1;) + end + local.get 5 + i32.const 40 + i32.add + i32.load + call $wasi_snapshot_preview1::stream_error_to_errno + local.set 1 + local.get 0 + i32.const 1 + i32.store16 + local.get 0 + local.get 1 + i32.store16 offset=2 + end + local.get 5 + i32.const 48 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::State::new (;27;) (type 8) (result i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 0 + global.set $__stack_pointer + block ;; label = @1 + call $get_allocation_state + i32.const 2 + i32.ne + br_if 0 (;@1;) + i32.const 3 + call $set_allocation_state + i32.const 0 + i32.const 0 + i32.const 8 + i32.const 65536 + call $wasi_snapshot_preview1::State::new::cabi_realloc + local.set 1 + i32.const 4 + call $set_allocation_state + local.get 1 + i64.const 0 + i64.store offset=4 align=4 + local.get 1 + i32.const 560490357 + i32.store + local.get 1 + i32.const 12 + i32.add + i64.const 0 + i64.store align=4 + local.get 1 + i64.const 0 + i64.store offset=65488 + local.get 1 + i32.const 0 + i32.store offset=65480 + local.get 1 + i32.const 0 + i32.store offset=65212 + local.get 1 + i64.const 0 + i64.store offset=65200 + local.get 1 + i32.const 2 + i32.store offset=6172 + local.get 1 + i32.const 65496 + i32.add + i64.const 0 + i64.store + local.get 1 + i32.const 65504 + i32.add + i64.const 0 + i64.store + local.get 1 + i32.const 65509 + i32.add + i64.const 0 + i64.store align=1 + local.get 1 + i32.const 560490357 + i32.store offset=65532 + local.get 1 + i32.const 11822 + i32.store16 offset=65528 + local.get 1 + i32.const 0 + i32.store offset=65520 + local.get 0 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 1 + return + end + local.get 0 + i32.const 32 + i32.store8 offset=47 + local.get 0 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 0 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 0 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 0 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 0 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 0 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 2584 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 0 + i32.const 8250 + i32.store16 offset=11 align=1 + local.get 0 + i32.const 11 + i32.add + i32.const 2 + call $wasi_snapshot_preview1::macros::print + local.get 0 + i32.const 10 + i32.store8 offset=27 + local.get 0 + i64.const 7234307576302018670 + i64.store offset=19 align=1 + local.get 0 + i64.const 8028075845441778529 + i64.store offset=11 align=1 + local.get 0 + i32.const 11 + i32.add + i32.const 17 + call $wasi_snapshot_preview1::macros::print + local.get 0 + i32.const 10 + i32.store8 offset=11 + local.get 0 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::stat (;28;) (type 1) (param i32 i32) + (local i32 i32 i32 i64 i64 i32 i64 i32 i32 i64 i64 i64 i64 i64) + global.get $__stack_pointer + i32.const 112 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 1 + i32.load + local.get 2 + i32.const 8 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::stat::wit_import + local.get 2 + i32.const 16 + i32.add + i32.load8_u + local.set 1 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 2 + i32.load8_u offset=8 + br_if 0 (;@4;) + local.get 2 + i32.const 88 + i32.add + local.set 3 + local.get 2 + i32.const 64 + i32.add + i32.load8_u + local.set 4 + i64.const 0 + local.set 5 + local.get 2 + i32.const 40 + i32.add + i32.load8_u + br_if 1 (;@3;) + i64.const 0 + local.set 6 + br 2 (;@2;) + end + local.get 0 + i64.const 2 + i64.store offset=72 + br 2 (;@1;) + end + local.get 2 + i32.const 56 + i32.add + i32.load + local.set 7 + local.get 2 + i32.const 48 + i32.add + i64.load + local.set 8 + i64.const 1 + local.set 6 + end + local.get 2 + i32.const 32 + i32.add + local.set 9 + local.get 2 + i32.const 24 + i32.add + local.set 10 + local.get 3 + i32.load8_u + local.set 3 + block ;; label = @2 + block ;; label = @3 + local.get 4 + i32.const 255 + i32.and + br_if 0 (;@3;) + br 1 (;@2;) + end + local.get 2 + i32.const 80 + i32.add + i32.load + local.set 4 + local.get 2 + i32.const 72 + i32.add + i64.load + local.set 11 + i64.const 1 + local.set 5 + end + local.get 9 + i64.load + local.set 12 + local.get 10 + i64.load + local.set 13 + block ;; label = @2 + block ;; label = @3 + local.get 3 + i32.const 255 + i32.and + br_if 0 (;@3;) + i64.const 0 + local.set 14 + br 1 (;@2;) + end + local.get 2 + i32.const 104 + i32.add + i32.load + local.set 3 + local.get 2 + i32.const 96 + i32.add + i64.load + local.set 15 + i64.const 1 + local.set 14 + end + local.get 0 + local.get 3 + i32.store offset=88 + local.get 0 + local.get 15 + i64.store offset=80 + local.get 0 + local.get 14 + i64.store offset=72 + local.get 0 + local.get 4 + i32.store offset=64 + local.get 0 + local.get 11 + i64.store offset=56 + local.get 0 + local.get 5 + i64.store offset=48 + local.get 0 + local.get 7 + i32.store offset=40 + local.get 0 + local.get 8 + i64.store offset=32 + local.get 0 + local.get 6 + i64.store offset=24 + local.get 0 + local.get 12 + i64.store offset=16 + local.get 0 + local.get 13 + i64.store offset=8 + end + local.get 0 + local.get 1 + i32.store8 + local.get 2 + i32.const 112 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::macros::print (;29;) (type 1) (param i32 i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 2 + call $wasi_snapshot_preview1::bindings::wasi::cli::stderr::get_stderr::wit_import + local.tee 3 + i32.store offset=12 + local.get 2 + local.get 2 + i32.const 12 + i32.add + local.get 0 + local.get 1 + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_write_and_flush + block ;; label = @1 + local.get 2 + i32.load + br_if 0 (;@1;) + local.get 2 + i32.load offset=4 + call $::drop::drop + end + local.get 3 + call $::drop::drop + local.get 2 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_write_and_flush (;30;) (type 3) (param i32 i32 i32 i32) + (local i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 4 + global.set $__stack_pointer + local.get 1 + i32.load + local.get 2 + local.get 3 + local.get 4 + i32.const 4 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_write_and_flush::wit_import + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 4 + i32.load8_u offset=4 + br_if 0 (;@4;) + i32.const 2 + local.set 3 + br 1 (;@3;) + end + local.get 4 + i32.const 8 + i32.add + i32.load8_u + i32.eqz + br_if 1 (;@2;) + i32.const 1 + local.set 3 + end + br 1 (;@1;) + end + local.get 4 + i32.const 12 + i32.add + i32.load + local.set 1 + i32.const 0 + local.set 3 + end + local.get 0 + local.get 1 + i32.store offset=4 + local.get 0 + local.get 3 + i32.store + local.get 4 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::macros::eprint_u32 (;31;) (type 0) (param i32) + (local i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 1 + global.set $__stack_pointer + block ;; label = @1 + block ;; label = @2 + local.get 0 + br_if 0 (;@2;) + local.get 1 + i32.const 48 + i32.store8 offset=15 + local.get 1 + i32.const 15 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + br 1 (;@1;) + end + local.get 0 + call $wasi_snapshot_preview1::macros::eprint_u32::eprint_u32_impl + end + local.get 1 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::macros::eprint_u32::eprint_u32_impl (;32;) (type 0) (param i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 1 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + i32.eqz + br_if 0 (;@1;) + local.get 0 + i32.const 10 + i32.div_u + local.tee 2 + call $wasi_snapshot_preview1::macros::eprint_u32::eprint_u32_impl + local.get 1 + local.get 0 + local.get 2 + i32.const 10 + i32.mul + i32.sub + i32.const 48 + i32.or + i32.store8 offset=15 + local.get 1 + i32.const 15 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + end + local.get 1 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap (;33;) (type 4) (param i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 1 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + local.get 1 + i32.const 32 + i32.store8 offset=47 + local.get 1 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 1 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 1 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 1 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 1 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 1 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 134 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 1 + i32.const 10 + i32.store8 offset=11 + local.get 1 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 1 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 0 + ) + (func $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap (;34;) (type 10) (param i32 i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 2 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + local.get 2 + i32.const 32 + i32.store8 offset=47 + local.get 2 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 2 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 2 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 2 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 2 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 2 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 134 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 2 + i32.const 10 + i32.store8 offset=11 + local.get 2 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 2 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 1 + ) + (func $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap (;35;) (type 10) (param i32 i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 2 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + local.get 2 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 1 + return + end + local.get 2 + i32.const 32 + i32.store8 offset=47 + local.get 2 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 2 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 2 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 2 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 2 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 2 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 143 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 2 + i32.const 10 + i32.store8 offset=11 + local.get 2 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap (;36;) (type 10) (param i32 i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 2 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + local.get 2 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 1 + return + end + local.get 2 + i32.const 32 + i32.store8 offset=47 + local.get 2 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 2 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 2 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 2 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 2 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 2 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 143 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 2 + i32.const 10 + i32.store8 offset=11 + local.get 2 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap (;37;) (type 1) (param i32 i32) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 2 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + i32.eqz + br_if 0 (;@1;) + local.get 2 + i32.const 32 + i32.store8 offset=47 + local.get 2 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 2 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 2 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 2 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 2 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 2 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 143 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 2 + i32.const 10 + i32.store8 offset=11 + local.get 2 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + end + local.get 2 + i32.const 48 + i32.add + global.set $__stack_pointer + ) + (func $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap (;38;) (type 4) (param i32) (result i32) + (local i32) + global.get $__stack_pointer + i32.const 48 + i32.sub + local.tee 1 + global.set $__stack_pointer + block ;; label = @1 + local.get 0 + i32.load16_u + br_if 0 (;@1;) + local.get 0 + i32.load offset=4 + local.set 0 + local.get 1 + i32.const 48 + i32.add + global.set $__stack_pointer + local.get 0 + return + end + local.get 1 + i32.const 32 + i32.store8 offset=47 + local.get 1 + i32.const 1701734764 + i32.store offset=43 align=1 + local.get 1 + i64.const 2338042707334751329 + i64.store offset=35 align=1 + local.get 1 + i64.const 2338600898263348341 + i64.store offset=27 align=1 + local.get 1 + i64.const 7162263158133189730 + i64.store offset=19 align=1 + local.get 1 + i64.const 7018969289221893749 + i64.store offset=11 align=1 + local.get 1 + i32.const 11 + i32.add + i32.const 37 + call $wasi_snapshot_preview1::macros::print + i32.const 143 + call $wasi_snapshot_preview1::macros::eprint_u32 + local.get 1 + i32.const 10 + i32.store8 offset=11 + local.get 1 + i32.const 11 + i32.add + i32.const 1 + call $wasi_snapshot_preview1::macros::print + unreachable + unreachable + ) + (func $wasi_snapshot_preview1:: for wasi::lib_generated::Errno>::from (;39;) (type 4) (param i32) (result i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.set 1 + i32.const 6 + local.set 2 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + block ;; label = @14 + block ;; label = @15 + block ;; label = @16 + block ;; label = @17 + block ;; label = @18 + block ;; label = @19 + block ;; label = @20 + block ;; label = @21 + block ;; label = @22 + block ;; label = @23 + block ;; label = @24 + block ;; label = @25 + block ;; label = @26 + block ;; label = @27 + block ;; label = @28 + block ;; label = @29 + block ;; label = @30 + block ;; label = @31 + block ;; label = @32 + block ;; label = @33 + block ;; label = @34 + block ;; label = @35 + block ;; label = @36 + block ;; label = @37 + local.get 0 + i32.const 255 + i32.and + br_table 0 (;@37;) 36 (;@1;) 1 (;@36;) 2 (;@35;) 3 (;@34;) 4 (;@33;) 5 (;@32;) 6 (;@31;) 7 (;@30;) 8 (;@29;) 9 (;@28;) 10 (;@27;) 11 (;@26;) 12 (;@25;) 13 (;@24;) 14 (;@23;) 15 (;@22;) 16 (;@21;) 17 (;@20;) 18 (;@19;) 19 (;@18;) 20 (;@17;) 21 (;@16;) 22 (;@15;) 23 (;@14;) 24 (;@13;) 25 (;@12;) 26 (;@11;) 27 (;@10;) 28 (;@9;) 29 (;@8;) 30 (;@7;) 31 (;@6;) 32 (;@5;) 33 (;@4;) 34 (;@3;) 35 (;@2;) 0 (;@37;) + end + local.get 1 + i32.const 2 + i32.store16 offset=14 + local.get 1 + i32.const 14 + i32.add + local.set 0 + local.get 1 + i32.load16_u offset=14 + return + end + i32.const 7 + return + end + i32.const 8 + return + end + i32.const 10 + return + end + i32.const 16 + return + end + i32.const 19 + return + end + i32.const 20 + return + end + i32.const 22 + return + end + i32.const 25 + return + end + i32.const 26 + return + end + i32.const 27 + return + end + i32.const 28 + return + end + i32.const 29 + return + end + i32.const 31 + return + end + i32.const 32 + return + end + i32.const 34 + return + end + i32.const 35 + return + end + i32.const 37 + return + end + i32.const 43 + return + end + i32.const 44 + return + end + i32.const 46 + return + end + i32.const 48 + return + end + i32.const 51 + return + end + i32.const 54 + return + end + i32.const 55 + return + end + i32.const 56 + return + end + i32.const 58 + return + end + i32.const 59 + return + end + i32.const 60 + return + end + i32.const 61 + return + end + i32.const 63 + return + end + i32.const 64 + return + end + i32.const 69 + return + end + i32.const 70 + return + end + i32.const 74 + return + end + i32.const 75 + local.set 2 + end + local.get 2 + ) + (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::check_write (;40;) (type 1) (param i32 i32) + (local i32 i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 1 + i32.load + local.get 2 + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::check_write::wit_import + block ;; label = @1 + block ;; label = @2 + local.get 2 + i32.load8_u + br_if 0 (;@2;) + local.get 0 + local.get 2 + i32.const 8 + i32.add + i64.load + i64.store offset=8 + i32.const 0 + local.set 1 + br 1 (;@1;) + end + i32.const 1 + local.set 1 + i32.const 1 + local.set 3 + block ;; label = @2 + local.get 2 + i32.const 8 + i32.add + i32.load8_u + br_if 0 (;@2;) + local.get 2 + i32.const 12 + i32.add + i32.load + local.set 4 + i32.const 0 + local.set 3 + end + local.get 0 + local.get 3 + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + local.get 4 + i32.store + end + local.get 0 + local.get 1 + i32.store + local.get 2 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::write (;41;) (type 3) (param i32 i32 i32 i32) + (local i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 4 + global.set $__stack_pointer + local.get 1 + i32.load + local.get 2 + local.get 3 + local.get 4 + i32.const 4 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::write::wit_import + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 4 + i32.load8_u offset=4 + br_if 0 (;@4;) + i32.const 2 + local.set 3 + br 1 (;@3;) + end + local.get 4 + i32.const 8 + i32.add + i32.load8_u + i32.eqz + br_if 1 (;@2;) + i32.const 1 + local.set 3 + end + br 1 (;@1;) + end + local.get 4 + i32.const 12 + i32.add + i32.load + local.set 1 + i32.const 0 + local.set 3 + end + local.get 0 + local.get 1 + i32.store offset=4 + local.get 0 + local.get 3 + i32.store + local.get 4 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_flush (;42;) (type 1) (param i32 i32) + (local i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 1 + i32.load + local.get 2 + i32.const 4 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::io::streams::OutputStream::blocking_flush::wit_import + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 2 + i32.load8_u offset=4 + br_if 0 (;@4;) + i32.const 2 + local.set 3 + br 1 (;@3;) + end + local.get 2 + i32.const 8 + i32.add + i32.load8_u + i32.eqz + br_if 1 (;@2;) + i32.const 1 + local.set 3 + end + br 1 (;@1;) + end + local.get 2 + i32.const 12 + i32.add + i32.load + local.set 1 + i32.const 0 + local.set 3 + end + local.get 0 + local.get 1 + i32.store offset=4 + local.get 0 + local.get 3 + i32.store + local.get 2 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $core::ptr::drop_in_place (;43;) (type 0) (param i32) + block ;; label = @1 + local.get 0 + i32.load + i32.const 1 + i32.ne + br_if 0 (;@1;) + block ;; label = @2 + local.get 0 + i32.load offset=8 + i32.eqz + br_if 0 (;@2;) + local.get 0 + i32.const 12 + i32.add + i32.load + call $::drop::drop + end + block ;; label = @2 + local.get 0 + i32.const 16 + i32.add + i32.load + i32.eqz + br_if 0 (;@2;) + local.get 0 + i32.const 20 + i32.add + i32.load + call $::drop::drop + end + local.get 0 + i32.const 41 + i32.add + i32.load8_u + i32.const 2 + i32.eq + br_if 0 (;@1;) + local.get 0 + i32.const 24 + i32.add + i32.load + call $::drop::drop + end + ) + (func $wasi_snapshot_preview1::descriptors::Streams::get_write_stream (;44;) (type 1) (param i32 i32) + (local i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 2 + global.set $__stack_pointer + local.get 1 + i32.const 12 + i32.add + local.set 3 + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.load offset=8 + br_if 0 (;@2;) + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 1 + i32.const 33 + i32.add + i32.load8_u + i32.const 2 + i32.eq + br_if 0 (;@7;) + block ;; label = @8 + local.get 1 + i32.const 20 + i32.add + i32.load8_u + i32.const 3 + i32.ne + br_if 0 (;@8;) + local.get 0 + i32.const 8 + i32.store16 offset=2 + br 3 (;@5;) + end + block ;; label = @8 + local.get 1 + i32.const 32 + i32.add + i32.load8_u + br_if 0 (;@8;) + local.get 1 + i32.load offset=16 + local.get 1 + i32.const 24 + i32.add + i64.load + local.get 2 + i32.const 8 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::write_via_stream::wit_import + local.get 2 + i32.load8_u offset=8 + br_if 2 (;@6;) + local.get 2 + i32.const 12 + i32.add + i32.load + local.set 4 + br 5 (;@3;) + end + local.get 1 + i32.load offset=16 + local.get 2 + i32.const 8 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::append_via_stream::wit_import + local.get 2 + i32.load8_u offset=8 + i32.eqz + br_if 3 (;@4;) + local.get 0 + local.get 2 + i32.const 12 + i32.add + i32.load8_u + call $wasi_snapshot_preview1:: for wasi::lib_generated::Errno>::from + i32.store16 offset=2 + br 2 (;@5;) + end + local.get 0 + i32.const 8 + i32.store16 offset=2 + br 1 (;@5;) + end + local.get 0 + local.get 2 + i32.const 12 + i32.add + i32.load8_u + call $wasi_snapshot_preview1:: for wasi::lib_generated::Errno>::from + i32.store16 offset=2 + end + i32.const 1 + local.set 1 + br 3 (;@1;) + end + local.get 2 + i32.const 12 + i32.add + i32.load + local.set 4 + end + i32.const 1 + local.set 5 + block ;; label = @3 + local.get 1 + i32.load offset=8 + br_if 0 (;@3;) + local.get 1 + local.get 4 + i32.store offset=12 + local.get 1 + i32.const 1 + i32.store offset=8 + i32.const 0 + local.set 5 + end + local.get 5 + local.get 4 + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + local.get 3 + i32.const 0 + local.get 1 + i32.load offset=8 + select + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + local.set 3 + end + local.get 0 + local.get 3 + i32.store offset=4 + i32.const 0 + local.set 1 + end + local.get 0 + local.get 1 + i32.store16 + local.get 2 + i32.const 16 + i32.add + global.set $__stack_pointer + ) + (func $wasi_snapshot_preview1::descriptors::Descriptors::new (;45;) (type 5) (param i32 i32 i32) + (local i32 i32 i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 6240 + i32.sub + local.tee 3 + global.set $__stack_pointer + local.get 3 + i32.const 0 + i32.store offset=6164 + local.get 3 + i32.const 0 + i32.store offset=6156 + call $wasi_snapshot_preview1::bindings::wasi::cli::stdin::get_stdin::wit_import + local.set 4 + local.get 3 + i32.const 2 + i32.store8 offset=49 + local.get 3 + i32.const 0 + i32.store8 offset=32 + local.get 3 + i32.const 0 + i32.store offset=24 + local.get 3 + local.get 4 + i32.store offset=20 + local.get 3 + i32.const 1 + i32.store offset=16 + local.get 3 + i32.const 1 + i32.store offset=8 + local.get 3 + i32.const 0 + i32.store offset=6196 + local.get 3 + i32.const 0 + i32.store16 offset=6192 + local.get 3 + i32.const 6192 + i32.add + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + drop + call $wasi_snapshot_preview1::bindings::wasi::cli::stdout::get_stdout::wit_import + local.set 4 + local.get 3 + i32.const 80 + i32.add + i32.const 1 + i32.store8 + local.get 3 + i32.const 76 + i32.add + local.get 4 + i32.store + local.get 3 + i32.const 72 + i32.add + i32.const 1 + i32.store + local.get 3 + i32.const 64 + i32.add + i32.const 0 + i32.store + local.get 3 + i32.const 89 + i32.add + local.get 3 + i32.const 6200 + i32.add + local.tee 4 + i64.load align=1 + i64.store align=1 + local.get 3 + i32.const 102 + i32.add + local.get 3 + i32.const 6180 + i32.add + local.tee 5 + i32.load16_u + i32.store16 + local.get 3 + i32.const 1 + i32.store offset=56 + local.get 3 + i32.const 2 + i32.store8 offset=97 + local.get 3 + i32.const 1 + i32.store offset=6188 + local.get 3 + i32.const 0 + i32.store16 offset=6184 + local.get 3 + local.get 3 + i64.load offset=6192 align=1 + i64.store offset=81 align=1 + local.get 3 + local.get 3 + i32.load offset=6176 align=2 + i32.store offset=98 align=2 + local.get 3 + i32.const 6184 + i32.add + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + drop + call $wasi_snapshot_preview1::bindings::wasi::cli::stderr::get_stderr::wit_import + local.set 6 + local.get 3 + i32.const 128 + i32.add + i32.const 2 + i32.store8 + local.get 3 + i32.const 124 + i32.add + local.get 6 + i32.store + local.get 3 + i32.const 120 + i32.add + i32.const 1 + i32.store + local.get 3 + i32.const 112 + i32.add + i32.const 0 + i32.store + local.get 3 + i32.const 137 + i32.add + local.get 4 + i64.load align=1 + i64.store align=1 + local.get 3 + i32.const 150 + i32.add + local.get 5 + i32.load16_u + i32.store16 + local.get 3 + i32.const 1 + i32.store offset=104 + local.get 3 + i32.const 2 + i32.store8 offset=145 + i32.const 3 + local.set 4 + local.get 3 + i32.const 3 + i32.store16 offset=6152 + local.get 3 + i32.const 2 + i32.store offset=6188 + local.get 3 + i32.const 0 + i32.store16 offset=6184 + local.get 3 + local.get 3 + i64.load offset=6192 align=1 + i64.store offset=129 align=1 + local.get 3 + local.get 3 + i32.load offset=6176 align=2 + i32.store offset=146 align=2 + local.get 3 + i32.const 6184 + i32.add + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + drop + local.get 3 + i64.const 0 + i64.store offset=6176 align=4 + local.get 1 + local.get 2 + local.get 3 + i32.const 6176 + i32.add + call $wasi_snapshot_preview1::ImportAlloc::with_arena + local.get 3 + i32.load offset=6176 + local.set 7 + block ;; label = @1 + local.get 3 + i32.load offset=6180 + local.tee 8 + i32.eqz + br_if 0 (;@1;) + local.get 8 + i32.const 12 + i32.mul + local.set 1 + local.get 3 + i32.const 6192 + i32.add + i32.const 1 + i32.or + local.set 9 + local.get 7 + local.set 2 + loop ;; label = @2 + local.get 2 + i32.load + local.tee 5 + local.get 3 + i32.const 6192 + i32.add + call $wasi_snapshot_preview1::bindings::wasi::filesystem::types::Descriptor::get_type::wit_import + local.get 3 + i32.load8_u offset=6192 + i32.const 0 + i32.ne + local.get 9 + i32.load8_u + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + local.set 6 + local.get 3 + i32.const 256 + i32.store16 offset=6232 + local.get 3 + i64.const 0 + i64.store offset=6224 + local.get 3 + local.get 6 + i32.store8 offset=6220 + local.get 3 + local.get 5 + i32.store offset=6216 + local.get 3 + i32.const 0 + i32.store offset=6208 + local.get 3 + i32.const 0 + i32.store offset=6200 + local.get 3 + i32.const 1 + i32.store offset=6192 + block ;; label = @3 + block ;; label = @4 + local.get 4 + i32.const 65535 + i32.and + local.tee 5 + i32.const 128 + i32.lt_u + br_if 0 (;@4;) + local.get 3 + i32.const 48 + i32.store16 offset=6186 + local.get 3 + i32.const 6192 + i32.add + call $core::ptr::drop_in_place + i32.const 1 + local.set 5 + br 1 (;@3;) + end + local.get 3 + i32.const 8 + i32.add + local.get 5 + i32.const 48 + i32.mul + i32.add + local.get 3 + i32.const 6192 + i32.add + i32.const 48 + call $memcpy + drop + local.get 3 + local.get 5 + i32.store offset=6188 + local.get 3 + local.get 4 + i32.const 1 + i32.add + local.tee 4 + i32.store16 offset=6152 + i32.const 0 + local.set 5 + end + local.get 2 + i32.const 12 + i32.add + local.set 2 + local.get 3 + local.get 5 + i32.store16 offset=6184 + local.get 3 + i32.const 6184 + i32.add + call $ as wasi_snapshot_preview1::TrappingUnwrap>::trapping_unwrap + drop + local.get 1 + i32.const -12 + i32.add + local.tee 1 + br_if 0 (;@2;) + end + end + local.get 3 + i32.const 6168 + i32.add + local.get 8 + i32.store + local.get 3 + local.get 7 + i32.store offset=6164 + local.get 0 + local.get 3 + i32.const 8 + i32.add + i32.const 6168 + call $memcpy + drop + local.get 3 + i32.const 6240 + i32.add + global.set $__stack_pointer + ) + (func $get_state_ptr (;46;) (type 8) (result i32) + global.get $internal_state_ptr + ) + (func $set_state_ptr (;47;) (type 0) (param i32) + local.get 0 + global.set $internal_state_ptr + ) + (func $get_allocation_state (;48;) (type 8) (result i32) + global.get $allocation_state + ) + (func $set_allocation_state (;49;) (type 0) (param i32) + local.get 0 + global.set $allocation_state + ) + (func $compiler_builtins::mem::memcpy (;50;) (type 9) (param i32 i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + local.get 2 + i32.const 16 + i32.ge_u + br_if 0 (;@2;) + local.get 0 + local.set 3 + br 1 (;@1;) + end + local.get 0 + i32.const 0 + local.get 0 + i32.sub + i32.const 3 + i32.and + local.tee 4 + i32.add + local.set 5 + block ;; label = @2 + local.get 4 + i32.eqz + br_if 0 (;@2;) + local.get 0 + local.set 3 + local.get 1 + local.set 6 + loop ;; label = @3 + local.get 3 + local.get 6 + i32.load8_u + i32.store8 + local.get 6 + i32.const 1 + i32.add + local.set 6 + local.get 3 + i32.const 1 + i32.add + local.tee 3 + local.get 5 + i32.lt_u + br_if 0 (;@3;) + end + end + local.get 5 + local.get 2 + local.get 4 + i32.sub + local.tee 7 + i32.const -4 + i32.and + local.tee 8 + i32.add + local.set 3 + block ;; label = @2 + block ;; label = @3 + local.get 1 + local.get 4 + i32.add + local.tee 9 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 8 + i32.const 1 + i32.lt_s + br_if 1 (;@2;) + local.get 9 + i32.const 3 + i32.shl + local.tee 6 + i32.const 24 + i32.and + local.set 2 + local.get 9 + i32.const -4 + i32.and + local.tee 10 + i32.const 4 + i32.add + local.set 1 + i32.const 0 + local.get 6 + i32.sub + i32.const 24 + i32.and + local.set 4 + local.get 10 + i32.load + local.set 6 + loop ;; label = @4 + local.get 5 + local.get 6 + local.get 2 + i32.shr_u + local.get 1 + i32.load + local.tee 6 + local.get 4 + i32.shl + i32.or + i32.store + local.get 1 + i32.const 4 + i32.add + local.set 1 + local.get 5 + i32.const 4 + i32.add + local.tee 5 + local.get 3 + i32.lt_u + br_if 0 (;@4;) + br 2 (;@2;) + end + end + local.get 8 + i32.const 1 + i32.lt_s + br_if 0 (;@2;) + local.get 9 + local.set 1 + loop ;; label = @3 + local.get 5 + local.get 1 + i32.load + i32.store + local.get 1 + i32.const 4 + i32.add + local.set 1 + local.get 5 + i32.const 4 + i32.add + local.tee 5 + local.get 3 + i32.lt_u + br_if 0 (;@3;) + end + end + local.get 7 + i32.const 3 + i32.and + local.set 2 + local.get 9 + local.get 8 + i32.add + local.set 1 + end + block ;; label = @1 + local.get 2 + i32.eqz + br_if 0 (;@1;) + local.get 3 + local.get 2 + i32.add + local.set 5 + loop ;; label = @2 + local.get 3 + local.get 1 + i32.load8_u + i32.store8 + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 3 + i32.const 1 + i32.add + local.tee 3 + local.get 5 + i32.lt_u + br_if 0 (;@2;) + end + end + local.get 0 + ) + (func $memcpy (;51;) (type 9) (param i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + call $compiler_builtins::mem::memcpy + ) + (func $allocate_stack (;52;) (type 11) + global.get $allocation_state + i32.const 0 + i32.eq + if ;; label = @1 + i32.const 1 + global.set $allocation_state + i32.const 0 + i32.const 0 + i32.const 8 + i32.const 65536 + call $wasi_snapshot_preview1::State::new::cabi_realloc + i32.const 65536 + i32.add + global.set $__stack_pointer + i32.const 2 + global.set $allocation_state + end + ) + (global $__stack_pointer (;0;) (mut i32) i32.const 0) + (global $internal_state_ptr (;1;) (mut i32) i32.const 0) + (global $allocation_state (;2;) (mut i32) i32.const 0) + (export "cabi_import_realloc" (func $cabi_import_realloc)) + (export "cabi_export_realloc" (func $cabi_export_realloc)) + (export "fd_write" (func $fd_write)) + ) + (core module (;2;) + (type (;0;) (func (param i32))) + (type (;1;) (func (param i32 i64 i32))) + (type (;2;) (func (param i32 i32))) + (type (;3;) (func (param i32 i32 i32 i32))) + (type (;4;) (func (param i32 i32 i32 i32) (result i32))) + (func $indirect-miden:base/tx-kernel@1.0.0-get-inputs (;0;) (type 0) (param i32) + local.get 0 + i32.const 0 + call_indirect (type 0) + ) + (func $indirect-miden:base/tx-kernel@1.0.0-get-assets (;1;) (type 0) (param i32) + local.get 0 + i32.const 1 + call_indirect (type 0) + ) + (func $indirect-wasi:filesystem/preopens@0.2.0-rc-2023-11-10-get-directories (;2;) (type 0) (param i32) + local.get 0 + i32.const 2 + call_indirect (type 0) + ) + (func $#func3 (@name "indirect-wasi:filesystem/types@0.2.0-rc-2023-11-10-[method]descriptor.write-via-stream") (;3;) (type 1) (param i32 i64 i32) + local.get 0 + local.get 1 + local.get 2 + i32.const 3 + call_indirect (type 1) + ) + (func $#func4 (@name "indirect-wasi:filesystem/types@0.2.0-rc-2023-11-10-[method]descriptor.append-via-stream") (;4;) (type 2) (param i32 i32) + local.get 0 + local.get 1 + i32.const 4 + call_indirect (type 2) + ) + (func $#func5 (@name "indirect-wasi:filesystem/types@0.2.0-rc-2023-11-10-[method]descriptor.get-type") (;5;) (type 2) (param i32 i32) + local.get 0 + local.get 1 + i32.const 5 + call_indirect (type 2) + ) + (func $#func6 (@name "indirect-wasi:filesystem/types@0.2.0-rc-2023-11-10-[method]descriptor.stat") (;6;) (type 2) (param i32 i32) + local.get 0 + local.get 1 + i32.const 6 + call_indirect (type 2) + ) + (func $indirect-wasi:filesystem/types@0.2.0-rc-2023-11-10-filesystem-error-code (;7;) (type 2) (param i32 i32) + local.get 0 + local.get 1 + i32.const 7 + call_indirect (type 2) + ) + (func $#func8 (@name "indirect-wasi:io/streams@0.2.0-rc-2023-11-10-[method]output-stream.check-write") (;8;) (type 2) (param i32 i32) + local.get 0 + local.get 1 + i32.const 8 + call_indirect (type 2) + ) + (func $#func9 (@name "indirect-wasi:io/streams@0.2.0-rc-2023-11-10-[method]output-stream.write") (;9;) (type 3) (param i32 i32 i32 i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i32.const 9 + call_indirect (type 3) + ) + (func $#func10 (@name "indirect-wasi:io/streams@0.2.0-rc-2023-11-10-[method]output-stream.blocking-write-and-flush") (;10;) (type 3) (param i32 i32 i32 i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i32.const 10 + call_indirect (type 3) + ) + (func $#func11 (@name "indirect-wasi:io/streams@0.2.0-rc-2023-11-10-[method]output-stream.blocking-flush") (;11;) (type 2) (param i32 i32) + local.get 0 + local.get 1 + i32.const 11 + call_indirect (type 2) + ) + (func $adapt-wasi_snapshot_preview1-fd_write (;12;) (type 4) (param i32 i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i32.const 12 + call_indirect (type 4) + ) + (table (;0;) 13 13 funcref) + (export "0" (func $indirect-miden:base/tx-kernel@1.0.0-get-inputs)) + (export "1" (func $indirect-miden:base/tx-kernel@1.0.0-get-assets)) + (export "2" (func $indirect-wasi:filesystem/preopens@0.2.0-rc-2023-11-10-get-directories)) + (export "3" (func $#func3)) + (export "4" (func $#func4)) + (export "5" (func $#func5)) + (export "6" (func $#func6)) + (export "7" (func $indirect-wasi:filesystem/types@0.2.0-rc-2023-11-10-filesystem-error-code)) + (export "8" (func $#func8)) + (export "9" (func $#func9)) + (export "10" (func $#func10)) + (export "11" (func $#func11)) + (export "12" (func $adapt-wasi_snapshot_preview1-fd_write)) + (export "$imports" (table 0)) + ) + (core module (;3;) + (type (;0;) (func (param i32))) + (type (;1;) (func (param i32 i64 i32))) + (type (;2;) (func (param i32 i32))) + (type (;3;) (func (param i32 i32 i32 i32))) + (type (;4;) (func (param i32 i32 i32 i32) (result i32))) + (import "" "0" (func (;0;) (type 0))) + (import "" "1" (func (;1;) (type 0))) + (import "" "2" (func (;2;) (type 0))) + (import "" "3" (func (;3;) (type 1))) + (import "" "4" (func (;4;) (type 2))) + (import "" "5" (func (;5;) (type 2))) + (import "" "6" (func (;6;) (type 2))) + (import "" "7" (func (;7;) (type 2))) + (import "" "8" (func (;8;) (type 2))) + (import "" "9" (func (;9;) (type 3))) + (import "" "10" (func (;10;) (type 3))) + (import "" "11" (func (;11;) (type 2))) + (import "" "12" (func (;12;) (type 4))) + (import "" "$imports" (table (;0;) 13 13 funcref)) + (elem (;0;) (i32.const 0) func 0 1 2 3 4 5 6 7 8 9 10 11 12) + ) + (core instance (;0;) (instantiate 2)) + (alias export 1 "get-id" (func (;0;))) + (core func (;0;) (canon lower (func 0))) + (alias core export 0 "0" (core func (;1;))) + (alias core export 0 "1" (core func (;2;))) + (core instance (;1;) + (export "get-id" (func 0)) + (export "get-inputs" (func 1)) + (export "get-assets" (func 2)) + ) + (alias export 2 "receive-asset" (func (;1;))) + (core func (;3;) (canon lower (func 1))) + (core instance (;2;) + (export "receive-asset" (func 3)) + ) + (alias core export 0 "12" (core func (;4;))) + (core instance (;3;) + (export "fd_write" (func 4)) + ) + (core instance (;4;) (instantiate 0 + (with "miden:base/tx-kernel@1.0.0" (instance 1)) + (with "miden:basic-wallet/basic-wallet@1.0.0" (instance 2)) + (with "wasi_snapshot_preview1" (instance 3)) + ) + ) + (alias core export 4 "memory" (core memory (;0;))) + (alias core export 4 "cabi_realloc" (core func (;5;))) + (alias core export 4 "cabi_realloc" (core func (;6;))) + (core instance (;5;) + (export "cabi_realloc" (func 6)) + ) + (core instance (;6;) + (export "memory" (memory 0)) + ) + (alias core export 0 "2" (core func (;7;))) + (core instance (;7;) + (export "get-directories" (func 7)) + ) + (alias export 9 "descriptor" (type (;23;))) + (core func (;8;) (canon resource.drop 23)) + (alias core export 0 "3" (core func (;9;))) + (alias core export 0 "4" (core func (;10;))) + (alias core export 0 "5" (core func (;11;))) + (alias core export 0 "6" (core func (;12;))) + (alias core export 0 "7" (core func (;13;))) + (core instance (;8;) + (export "[resource-drop]descriptor" (func 8)) + (export "[method]descriptor.write-via-stream" (func 9)) + (export "[method]descriptor.append-via-stream" (func 10)) + (export "[method]descriptor.get-type" (func 11)) + (export "[method]descriptor.stat" (func 12)) + (export "filesystem-error-code" (func 13)) + ) + (alias export 3 "error" (type (;24;))) + (core func (;14;) (canon resource.drop 24)) + (core instance (;9;) + (export "[resource-drop]error" (func 14)) + ) + (alias export 4 "input-stream" (type (;25;))) + (core func (;15;) (canon resource.drop 25)) + (alias export 4 "output-stream" (type (;26;))) + (core func (;16;) (canon resource.drop 26)) + (alias core export 0 "8" (core func (;17;))) + (alias core export 0 "9" (core func (;18;))) + (alias core export 0 "10" (core func (;19;))) + (alias core export 0 "11" (core func (;20;))) + (core instance (;10;) + (export "[resource-drop]input-stream" (func 15)) + (export "[resource-drop]output-stream" (func 16)) + (export "[method]output-stream.check-write" (func 17)) + (export "[method]output-stream.write" (func 18)) + (export "[method]output-stream.blocking-write-and-flush" (func 19)) + (export "[method]output-stream.blocking-flush" (func 20)) + ) + (alias export 7 "get-stderr" (func (;2;))) + (core func (;21;) (canon lower (func 2))) + (core instance (;11;) + (export "get-stderr" (func 21)) + ) + (alias export 5 "get-stdin" (func (;3;))) + (core func (;22;) (canon lower (func 3))) + (core instance (;12;) + (export "get-stdin" (func 22)) + ) + (alias export 6 "get-stdout" (func (;4;))) + (core func (;23;) (canon lower (func 4))) + (core instance (;13;) + (export "get-stdout" (func 23)) + ) + (core instance (;14;) (instantiate 1 + (with "__main_module__" (instance 5)) + (with "env" (instance 6)) + (with "wasi:filesystem/preopens@0.2.0-rc-2023-11-10" (instance 7)) + (with "wasi:filesystem/types@0.2.0-rc-2023-11-10" (instance 8)) + (with "wasi:io/error@0.2.0-rc-2023-11-10" (instance 9)) + (with "wasi:io/streams@0.2.0-rc-2023-11-10" (instance 10)) + (with "wasi:cli/stderr@0.2.0-rc-2023-12-05" (instance 11)) + (with "wasi:cli/stdin@0.2.0-rc-2023-12-05" (instance 12)) + (with "wasi:cli/stdout@0.2.0-rc-2023-12-05" (instance 13)) + ) + ) + (alias core export 14 "cabi_export_realloc" (core func (;24;))) + (alias core export 14 "cabi_import_realloc" (core func (;25;))) + (alias core export 0 "$imports" (core table (;0;))) + (alias export 1 "get-inputs" (func (;5;))) + (core func (;26;) (canon lower (func 5) (memory 0) (realloc 5))) + (alias export 1 "get-assets" (func (;6;))) + (core func (;27;) (canon lower (func 6) (memory 0) (realloc 5))) + (alias export 10 "get-directories" (func (;7;))) + (core func (;28;) (canon lower (func 7) (memory 0) (realloc 25) string-encoding=utf8)) + (alias export 9 "[method]descriptor.write-via-stream" (func (;8;))) + (core func (;29;) (canon lower (func 8) (memory 0))) + (alias export 9 "[method]descriptor.append-via-stream" (func (;9;))) + (core func (;30;) (canon lower (func 9) (memory 0))) + (alias export 9 "[method]descriptor.get-type" (func (;10;))) + (core func (;31;) (canon lower (func 10) (memory 0))) + (alias export 9 "[method]descriptor.stat" (func (;11;))) + (core func (;32;) (canon lower (func 11) (memory 0))) + (alias export 9 "filesystem-error-code" (func (;12;))) + (core func (;33;) (canon lower (func 12) (memory 0))) + (alias export 4 "[method]output-stream.check-write" (func (;13;))) + (core func (;34;) (canon lower (func 13) (memory 0))) + (alias export 4 "[method]output-stream.write" (func (;14;))) + (core func (;35;) (canon lower (func 14) (memory 0))) + (alias export 4 "[method]output-stream.blocking-write-and-flush" (func (;15;))) + (core func (;36;) (canon lower (func 15) (memory 0))) + (alias export 4 "[method]output-stream.blocking-flush" (func (;16;))) + (core func (;37;) (canon lower (func 16) (memory 0))) + (alias core export 14 "fd_write" (core func (;38;))) + (core instance (;15;) + (export "$imports" (table 0)) + (export "0" (func 26)) + (export "1" (func 27)) + (export "2" (func 28)) + (export "3" (func 29)) + (export "4" (func 30)) + (export "5" (func 31)) + (export "6" (func 32)) + (export "7" (func 33)) + (export "8" (func 34)) + (export "9" (func 35)) + (export "10" (func 36)) + (export "11" (func 37)) + (export "12" (func 38)) + ) + (core instance (;16;) (instantiate 3 + (with "" (instance 15)) + ) + ) + (type (;27;) (func)) + (alias core export 4 "miden:base/note@1.0.0#note-script" (core func (;39;))) + (func (;17;) (type 27) (canon lift (core func 39))) + (component (;0;) + (type (;0;) (func)) + (import "import-func-note-script" (func (;0;) (type 0))) + (type (;1;) (func)) + (export (;1;) "note-script" (func 0) (func (type 1))) + ) + (instance (;11;) (instantiate 0 + (with "import-func-note-script" (func 17)) + ) + ) + (export (;12;) "miden:base/note@1.0.0" (instance 11)) +) \ No newline at end of file diff --git a/tests/integration/expected/sdk_basic_wallet/bindings/basic_wallet_bindings.rs b/tests/integration/expected/sdk_basic_wallet/bindings/basic_wallet_bindings.rs new file mode 100644 index 000000000..d8f2e3933 --- /dev/null +++ b/tests/integration/expected/sdk_basic_wallet/bindings/basic_wallet_bindings.rs @@ -0,0 +1,547 @@ +// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! +pub mod miden { + pub mod base { + + #[allow(clippy::all)] + pub mod types { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_section; + /// Represents base field element in the field using Montgomery representation. + /// Internal values represent x * R mod M where R = 2^64 mod M and x in [0, M). + /// The backing type is `u64` but the internal values are always in the range [0, M). + /// Field modulus M = 2^64 - 2^32 + 1 + pub type Felt = u64; + /// A group of four field elements in the Miden base field. + pub type Word = (Felt,Felt,Felt,Felt,); + /// Unique identifier of an account. + /// + /// Account ID consists of 1 field element (~64 bits). This field element uniquely identifies a + /// single account and also specifies the type of the underlying account. Specifically: + /// - The two most significant bits of the ID specify the type of the account: + /// - 00 - regular account with updatable code. + /// - 01 - regular account with immutable code. + /// - 10 - fungible asset faucet with immutable code. + /// - 11 - non-fungible asset faucet with immutable code. + /// - The third most significant bit of the ID specifies whether the account data is stored on-chain: + /// - 0 - full account data is stored on-chain. + /// - 1 - only the account hash is stored on-chain which serves as a commitment to the account state. + /// As such the three most significant bits fully describes the type of the account. + pub type AccountId = Felt; + /// Recipient of the note, i.e., hash(hash(hash(serial_num, [0; 4]), note_script_hash), input_hash) + pub type Recipient = Word; + pub type Tag = Felt; + /// A fungible asset + #[repr(C)] + #[derive(Clone, Copy)] + pub struct FungibleAsset { + /// Faucet ID of the faucet which issued the asset as well as the asset amount. + pub asset: AccountId, + /// Asset amount is guaranteed to be 2^63 - 1 or smaller. + pub amount: u64, + } + impl ::core::fmt::Debug for FungibleAsset { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_struct("FungibleAsset").field("asset", &self.asset).field("amount", &self.amount).finish() + } + } + /// A commitment to a non-fungible asset. + /// + /// A non-fungible asset consists of 4 field elements which are computed by hashing asset data + /// (which can be of arbitrary length) to produce: [d0, d1, d2, d3]. We then replace d1 with the + /// faucet_id that issued the asset: [d0, faucet_id, d2, d3]. We then set the most significant bit + /// of the most significant element to ZERO. + pub type NonFungibleAsset = Word; + /// A fungible or a non-fungible asset. + /// + /// All assets are encoded using a single word (4 elements) such that it is easy to determine the + /// type of an asset both inside and outside Miden VM. Specifically: + /// Element 1 will be: + /// - ZERO for a fungible asset + /// - non-ZERO for a non-fungible asset + /// The most significant bit will be: + /// - ONE for a fungible asset + /// - ZERO for a non-fungible asset + /// + /// The above properties guarantee that there can never be a collision between a fungible and a + /// non-fungible asset. + /// + /// The methodology for constructing fungible and non-fungible assets is described below. + /// + /// # Fungible assets + /// The most significant element of a fungible asset is set to the ID of the faucet which issued + /// the asset. This guarantees the properties described above (the first bit is ONE). + /// + /// The least significant element is set to the amount of the asset. This amount cannot be greater + /// than 2^63 - 1 and thus requires 63-bits to store. + /// + /// Elements 1 and 2 are set to ZERO. + /// + /// It is impossible to find a collision between two fungible assets issued by different faucets as + /// the faucet_id is included in the description of the asset and this is guaranteed to be different + /// for each faucet as per the faucet creation logic. + /// + /// # Non-fungible assets + /// The 4 elements of non-fungible assets are computed as follows: + /// - First the asset data is hashed. This compresses an asset of an arbitrary length to 4 field + /// elements: [d0, d1, d2, d3]. + /// - d1 is then replaced with the faucet_id which issues the asset: [d0, faucet_id, d2, d3]. + /// - Lastly, the most significant bit of d3 is set to ZERO. + /// + /// It is impossible to find a collision between two non-fungible assets issued by different faucets + /// as the faucet_id is included in the description of the non-fungible asset and this is guaranteed + /// to be different as per the faucet creation logic. Collision resistance for non-fungible assets + /// issued by the same faucet is ~2^95. + #[derive(Clone, Copy)] + pub enum Asset{ + Fungible(FungibleAsset), + NonFungible(NonFungibleAsset), + } + impl ::core::fmt::Debug for Asset { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Asset::Fungible(e) => { + f.debug_tuple("Asset::Fungible").field(e).finish() + } + Asset::NonFungible(e) => { + f.debug_tuple("Asset::NonFungible").field(e).finish() + } + } + } + } + /// Inputs of the currently executed note, never exceeds 16 felts + pub type NoteInputs = ::cargo_component_bindings::rt::vec::Vec::; + + } + + + #[allow(clippy::all)] + pub mod tx_kernel { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_section; + pub type Asset = super::super::super::miden::base::types::Asset; + pub type Tag = super::super::super::miden::base::types::Tag; + pub type Recipient = super::super::super::miden::base::types::Recipient; + pub type NoteInputs = super::super::super::miden::base::types::NoteInputs; + pub type AccountId = super::super::super::miden::base::types::AccountId; + #[allow(unused_unsafe, clippy::all)] + /// Get the id of the currently executing account + pub fn get_id() -> AccountId{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "get-id"] + fn wit_import() -> i64; + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i64{ unreachable!() } + let ret = wit_import(); + ret as u64 + } + } + #[allow(unused_unsafe, clippy::all)] + /// Add the specified asset to the vault + pub fn add_asset(asset: Asset,) -> Asset{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(8))] + struct RetArea([u8; 40]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + let ptr4 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "add-asset"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4, ptr4); + let l5 = i32::from(*((ptr4 + 0) as *const u8)); + use super::super::super::miden::base::types::Asset as V12; + let v12 = match l5 { + 0 => { + let e12 = { + let l6 = *((ptr4 + 8) as *const i64); + let l7 = *((ptr4 + 16) as *const i64); + + super::super::super::miden::base::types::FungibleAsset{ + asset: l6 as u64, + amount: l7 as u64, + } + }; + V12::Fungible(e12) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e12 = { + let l8 = *((ptr4 + 8) as *const i64); + let l9 = *((ptr4 + 16) as *const i64); + let l10 = *((ptr4 + 24) as *const i64); + let l11 = *((ptr4 + 32) as *const i64); + + (l8 as u64, l9 as u64, l10 as u64, l11 as u64) + }; + V12::NonFungible(e12) + } + }; + v12 + } + } + #[allow(unused_unsafe, clippy::all)] + /// Remove the specified asset from the vault + pub fn remove_asset(asset: Asset,) -> Asset{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(8))] + struct RetArea([u8; 40]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + let ptr4 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "remove-asset"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4, ptr4); + let l5 = i32::from(*((ptr4 + 0) as *const u8)); + use super::super::super::miden::base::types::Asset as V12; + let v12 = match l5 { + 0 => { + let e12 = { + let l6 = *((ptr4 + 8) as *const i64); + let l7 = *((ptr4 + 16) as *const i64); + + super::super::super::miden::base::types::FungibleAsset{ + asset: l6 as u64, + amount: l7 as u64, + } + }; + V12::Fungible(e12) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e12 = { + let l8 = *((ptr4 + 8) as *const i64); + let l9 = *((ptr4 + 16) as *const i64); + let l10 = *((ptr4 + 24) as *const i64); + let l11 = *((ptr4 + 32) as *const i64); + + (l8 as u64, l9 as u64, l10 as u64, l11 as u64) + }; + V12::NonFungible(e12) + } + }; + v12 + } + } + #[allow(unused_unsafe, clippy::all)] + /// Creates a new note. + /// asset is the asset to be included in the note. + /// tag is the tag to be included in the note. + /// recipient is the recipient of the note. + pub fn create_note(asset: Asset,tag: Tag,recipient: Recipient,){ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + let (t4_0, t4_1, t4_2, t4_3, ) = recipient; + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "create-note"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4, ::cargo_component_bindings::rt::as_i64(tag), ::cargo_component_bindings::rt::as_i64(t4_0), ::cargo_component_bindings::rt::as_i64(t4_1), ::cargo_component_bindings::rt::as_i64(t4_2), ::cargo_component_bindings::rt::as_i64(t4_3)); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Get the inputs of the currently executed note + pub fn get_inputs() -> NoteInputs{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(4))] + struct RetArea([u8; 8]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + let ptr0 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "get-inputs"] + fn wit_import(_: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, ){ unreachable!() } + wit_import(ptr0); + let l1 = *((ptr0 + 0) as *const i32); + let l2 = *((ptr0 + 4) as *const i32); + let len3 = l2 as usize; + Vec::from_raw_parts(l1 as *mut _, len3, len3) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Get the assets of the currently executing note + pub fn get_assets() -> ::cargo_component_bindings::rt::vec::Vec::{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(4))] + struct RetArea([u8; 8]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + let ptr0 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "get-assets"] + fn wit_import(_: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, ){ unreachable!() } + wit_import(ptr0); + let l1 = *((ptr0 + 0) as *const i32); + let l2 = *((ptr0 + 4) as *const i32); + let base11 = l1; + let len11 = l2; + let mut result11 = Vec::with_capacity(len11 as usize); + for i in 0..len11 { + let base = base11 + i * 40; + let e11 = { + let l3 = i32::from(*((base + 0) as *const u8)); + use super::super::super::miden::base::types::Asset as V10; + let v10 = match l3 { + 0 => { + let e10 = { + let l4 = *((base + 8) as *const i64); + let l5 = *((base + 16) as *const i64); + + super::super::super::miden::base::types::FungibleAsset{ + asset: l4 as u64, + amount: l5 as u64, + } + }; + V10::Fungible(e10) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e10 = { + let l6 = *((base + 8) as *const i64); + let l7 = *((base + 16) as *const i64); + let l8 = *((base + 24) as *const i64); + let l9 = *((base + 32) as *const i64); + + (l6 as u64, l7 as u64, l8 as u64, l9 as u64) + }; + V10::NonFungible(e10) + } + }; + + v10 + }; + result11.push(e11); + } + ::cargo_component_bindings::rt::dealloc(base11, (len11 as usize) * 40, 8); + result11 + } + } + + } + + } +} +pub mod exports { + pub mod miden { + pub mod base { + + #[allow(clippy::all)] + pub mod account { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_section; + + } + + } + pub mod basic_wallet { + + #[allow(clippy::all)] + pub mod basic_wallet { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_section; + pub type Asset = super::super::super::super::miden::base::types::Asset; + pub type Tag = super::super::super::super::miden::base::types::Tag; + pub type Recipient = super::super::super::super::miden::base::types::Recipient; + const _: () = { + + #[doc(hidden)] + #[export_name = "miden:basic-wallet/basic-wallet@1.0.0#receive-asset"] + #[allow(non_snake_case)] + unsafe extern "C" fn __export_receive_asset(arg0: i32,arg1: i64,arg2: i64,arg3: i64,arg4: i64,) { + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + + // Before executing any other code, use this function to run all static + // constructors, if they have not yet been run. This is a hack required + // to work around wasi-libc ctors calling import functions to initialize + // the environment. + // + // This functionality will be removed once rust 1.69.0 is stable, at which + // point wasi-libc will no longer have this behavior. + // + // See + // https://github.com/bytecodealliance/preview2-prototyping/issues/99 + // for more details. + #[cfg(target_arch="wasm32")] + ::cargo_component_bindings::rt::run_ctors_once(); + + use super::super::super::super::miden::base::types::Asset as V0; + let v0 = match arg0 { + 0 => { + let e0 = super::super::super::super::miden::base::types::FungibleAsset{ + asset: arg1 as u64, + amount: arg2 as u64, + }; + V0::Fungible(e0) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e0 = (arg1 as u64, arg2 as u64, arg3 as u64, arg4 as u64); + V0::NonFungible(e0) + } + }; + <_GuestImpl as Guest>::receive_asset(v0); + } + }; + const _: () = { + + #[doc(hidden)] + #[export_name = "miden:basic-wallet/basic-wallet@1.0.0#send-asset"] + #[allow(non_snake_case)] + unsafe extern "C" fn __export_send_asset(arg0: i32,arg1: i64,arg2: i64,arg3: i64,arg4: i64,arg5: i64,arg6: i64,arg7: i64,arg8: i64,arg9: i64,) { + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + + // Before executing any other code, use this function to run all static + // constructors, if they have not yet been run. This is a hack required + // to work around wasi-libc ctors calling import functions to initialize + // the environment. + // + // This functionality will be removed once rust 1.69.0 is stable, at which + // point wasi-libc will no longer have this behavior. + // + // See + // https://github.com/bytecodealliance/preview2-prototyping/issues/99 + // for more details. + #[cfg(target_arch="wasm32")] + ::cargo_component_bindings::rt::run_ctors_once(); + + use super::super::super::super::miden::base::types::Asset as V0; + let v0 = match arg0 { + 0 => { + let e0 = super::super::super::super::miden::base::types::FungibleAsset{ + asset: arg1 as u64, + amount: arg2 as u64, + }; + V0::Fungible(e0) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e0 = (arg1 as u64, arg2 as u64, arg3 as u64, arg4 as u64); + V0::NonFungible(e0) + } + }; + <_GuestImpl as Guest>::send_asset(v0, arg5 as u64, (arg6 as u64, arg7 as u64, arg8 as u64, arg9 as u64)); + } + }; + use super::super::super::super::super::Component as _GuestImpl; + pub trait Guest { + fn receive_asset(asset: Asset,); + fn send_asset(asset: Asset,tag: Tag,recipient: Recipient,); + } + + } + + } + } +} + +#[cfg(target_arch = "wasm32")] +#[link_section = "component-type:basic-wallet-world"] +#[doc(hidden)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 1410] = [3, 0, 18, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 45, 119, 111, 114, 108, 100, 0, 97, 115, 109, 13, 0, 1, 0, 7, 170, 3, 1, 65, 7, 1, 66, 14, 1, 119, 4, 0, 4, 102, 101, 108, 116, 3, 0, 0, 1, 111, 4, 1, 1, 1, 1, 4, 0, 4, 119, 111, 114, 100, 3, 0, 2, 4, 0, 10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100, 3, 0, 1, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 3, 4, 0, 3, 116, 97, 103, 3, 0, 1, 1, 114, 2, 5, 97, 115, 115, 101, 116, 4, 6, 97, 109, 111, 117, 110, 116, 119, 4, 0, 14, 102, 117, 110, 103, 105, 98, 108, 101, 45, 97, 115, 115, 101, 116, 3, 0, 7, 4, 0, 18, 110, 111, 110, 45, 102, 117, 110, 103, 105, 98, 108, 101, 45, 97, 115, 115, 101, 116, 3, 0, 3, 1, 113, 2, 8, 102, 117, 110, 103, 105, 98, 108, 101, 1, 8, 0, 12, 110, 111, 110, 45, 102, 117, 110, 103, 105, 98, 108, 101, 1, 9, 0, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 10, 1, 112, 1, 4, 0, 11, 110, 111, 116, 101, 45, 105, 110, 112, 117, 116, 115, 3, 0, 12, 3, 1, 22, 109, 105, 100, 101, 110, 58, 98, 97, 115, 101, 47, 116, 121, 112, 101, 115, 64, 49, 46, 48, 46, 48, 5, 0, 2, 3, 0, 0, 5, 97, 115, 115, 101, 116, 2, 3, 0, 0, 3, 116, 97, 103, 2, 3, 0, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 1, 66, 10, 2, 3, 2, 1, 1, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 0, 2, 3, 2, 1, 2, 4, 0, 3, 116, 97, 103, 3, 0, 2, 2, 3, 2, 1, 3, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 4, 1, 64, 1, 5, 97, 115, 115, 101, 116, 1, 1, 0, 4, 0, 13, 114, 101, 99, 101, 105, 118, 101, 45, 97, 115, 115, 101, 116, 1, 6, 1, 64, 3, 5, 97, 115, 115, 101, 116, 1, 3, 116, 97, 103, 3, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 5, 1, 0, 4, 0, 10, 115, 101, 110, 100, 45, 97, 115, 115, 101, 116, 1, 7, 4, 1, 37, 109, 105, 100, 101, 110, 58, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 47, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 64, 49, 46, 48, 46, 48, 5, 4, 11, 18, 1, 0, 12, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 3, 0, 0, 7, 173, 6, 1, 65, 2, 1, 65, 13, 1, 66, 14, 1, 119, 4, 0, 4, 102, 101, 108, 116, 3, 0, 0, 1, 111, 4, 1, 1, 1, 1, 4, 0, 4, 119, 111, 114, 100, 3, 0, 2, 4, 0, 10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100, 3, 0, 1, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 3, 4, 0, 3, 116, 97, 103, 3, 0, 1, 1, 114, 2, 5, 97, 115, 115, 101, 116, 4, 6, 97, 109, 111, 117, 110, 116, 119, 4, 0, 14, 102, 117, 110, 103, 105, 98, 108, 101, 45, 97, 115, 115, 101, 116, 3, 0, 7, 4, 0, 18, 110, 111, 110, 45, 102, 117, 110, 103, 105, 98, 108, 101, 45, 97, 115, 115, 101, 116, 3, 0, 3, 1, 113, 2, 8, 102, 117, 110, 103, 105, 98, 108, 101, 1, 8, 0, 12, 110, 111, 110, 45, 102, 117, 110, 103, 105, 98, 108, 101, 1, 9, 0, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 10, 1, 112, 1, 4, 0, 11, 110, 111, 116, 101, 45, 105, 110, 112, 117, 116, 115, 3, 0, 12, 3, 1, 22, 109, 105, 100, 101, 110, 58, 98, 97, 115, 101, 47, 116, 121, 112, 101, 115, 64, 49, 46, 48, 46, 48, 5, 0, 2, 3, 0, 0, 5, 97, 115, 115, 101, 116, 2, 3, 0, 0, 3, 116, 97, 103, 2, 3, 0, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 2, 3, 0, 0, 11, 110, 111, 116, 101, 45, 105, 110, 112, 117, 116, 115, 2, 3, 0, 0, 10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100, 1, 66, 22, 2, 3, 2, 1, 1, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 0, 2, 3, 2, 1, 2, 4, 0, 3, 116, 97, 103, 3, 0, 2, 2, 3, 2, 1, 3, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 4, 2, 3, 2, 1, 4, 4, 0, 11, 110, 111, 116, 101, 45, 105, 110, 112, 117, 116, 115, 3, 0, 6, 2, 3, 2, 1, 5, 4, 0, 10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100, 3, 0, 8, 1, 64, 0, 0, 9, 4, 0, 6, 103, 101, 116, 45, 105, 100, 1, 10, 1, 64, 1, 5, 97, 115, 115, 101, 116, 1, 0, 1, 4, 0, 9, 97, 100, 100, 45, 97, 115, 115, 101, 116, 1, 11, 4, 0, 12, 114, 101, 109, 111, 118, 101, 45, 97, 115, 115, 101, 116, 1, 11, 1, 64, 3, 5, 97, 115, 115, 101, 116, 1, 3, 116, 97, 103, 3, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 5, 1, 0, 4, 0, 11, 99, 114, 101, 97, 116, 101, 45, 110, 111, 116, 101, 1, 12, 1, 64, 0, 0, 7, 4, 0, 10, 103, 101, 116, 45, 105, 110, 112, 117, 116, 115, 1, 13, 1, 112, 1, 1, 64, 0, 0, 14, 4, 0, 10, 103, 101, 116, 45, 97, 115, 115, 101, 116, 115, 1, 15, 3, 1, 26, 109, 105, 100, 101, 110, 58, 98, 97, 115, 101, 47, 116, 120, 45, 107, 101, 114, 110, 101, 108, 64, 49, 46, 48, 46, 48, 5, 6, 1, 66, 0, 4, 1, 24, 109, 105, 100, 101, 110, 58, 98, 97, 115, 101, 47, 97, 99, 99, 111, 117, 110, 116, 64, 49, 46, 48, 46, 48, 5, 7, 1, 66, 10, 2, 3, 2, 1, 1, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 0, 2, 3, 2, 1, 2, 4, 0, 3, 116, 97, 103, 3, 0, 2, 2, 3, 2, 1, 3, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 4, 1, 64, 1, 5, 97, 115, 115, 101, 116, 1, 1, 0, 4, 0, 13, 114, 101, 99, 101, 105, 118, 101, 45, 97, 115, 115, 101, 116, 1, 6, 1, 64, 3, 5, 97, 115, 115, 101, 116, 1, 3, 116, 97, 103, 3, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 5, 1, 0, 4, 0, 10, 115, 101, 110, 100, 45, 97, 115, 115, 101, 116, 1, 7, 4, 1, 37, 109, 105, 100, 101, 110, 58, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 47, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 64, 49, 46, 48, 46, 48, 5, 8, 4, 1, 43, 109, 105, 100, 101, 110, 58, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 47, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 45, 119, 111, 114, 108, 100, 64, 49, 46, 48, 46, 48, 4, 0, 11, 24, 1, 0, 18, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 45, 119, 111, 114, 108, 100, 3, 2, 0, 0, 16, 12, 112, 97, 99, 107, 97, 103, 101, 45, 100, 111, 99, 115, 0, 123, 125, 0, 70, 9, 112, 114, 111, 100, 117, 99, 101, 114, 115, 1, 12, 112, 114, 111, 99, 101, 115, 115, 101, 100, 45, 98, 121, 2, 13, 119, 105, 116, 45, 99, 111, 109, 112, 111, 110, 101, 110, 116, 6, 48, 46, 49, 56, 46, 50, 16, 119, 105, 116, 45, 98, 105, 110, 100, 103, 101, 110, 45, 114, 117, 115, 116, 6, 48, 46, 49, 54, 46, 48]; + +#[inline(never)] +#[doc(hidden)] +#[cfg(target_arch = "wasm32")] +pub fn __link_section() {} diff --git a/tests/integration/expected/sdk_basic_wallet/bindings/basic_wallet_p2id_note_bindings.rs b/tests/integration/expected/sdk_basic_wallet/bindings/basic_wallet_p2id_note_bindings.rs new file mode 100644 index 000000000..05299104f --- /dev/null +++ b/tests/integration/expected/sdk_basic_wallet/bindings/basic_wallet_p2id_note_bindings.rs @@ -0,0 +1,555 @@ +// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! +pub mod miden { + pub mod base { + + #[allow(clippy::all)] + pub mod types { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_section; + /// Represents base field element in the field using Montgomery representation. + /// Internal values represent x * R mod M where R = 2^64 mod M and x in [0, M). + /// The backing type is `u64` but the internal values are always in the range [0, M). + /// Field modulus M = 2^64 - 2^32 + 1 + pub type Felt = u64; + /// A group of four field elements in the Miden base field. + pub type Word = (Felt,Felt,Felt,Felt,); + /// Unique identifier of an account. + /// + /// Account ID consists of 1 field element (~64 bits). This field element uniquely identifies a + /// single account and also specifies the type of the underlying account. Specifically: + /// - The two most significant bits of the ID specify the type of the account: + /// - 00 - regular account with updatable code. + /// - 01 - regular account with immutable code. + /// - 10 - fungible asset faucet with immutable code. + /// - 11 - non-fungible asset faucet with immutable code. + /// - The third most significant bit of the ID specifies whether the account data is stored on-chain: + /// - 0 - full account data is stored on-chain. + /// - 1 - only the account hash is stored on-chain which serves as a commitment to the account state. + /// As such the three most significant bits fully describes the type of the account. + pub type AccountId = Felt; + /// Recipient of the note, i.e., hash(hash(hash(serial_num, [0; 4]), note_script_hash), input_hash) + pub type Recipient = Word; + pub type Tag = Felt; + /// A fungible asset + #[repr(C)] + #[derive(Clone, Copy)] + pub struct FungibleAsset { + /// Faucet ID of the faucet which issued the asset as well as the asset amount. + pub asset: AccountId, + /// Asset amount is guaranteed to be 2^63 - 1 or smaller. + pub amount: u64, + } + impl ::core::fmt::Debug for FungibleAsset { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_struct("FungibleAsset").field("asset", &self.asset).field("amount", &self.amount).finish() + } + } + /// A commitment to a non-fungible asset. + /// + /// A non-fungible asset consists of 4 field elements which are computed by hashing asset data + /// (which can be of arbitrary length) to produce: [d0, d1, d2, d3]. We then replace d1 with the + /// faucet_id that issued the asset: [d0, faucet_id, d2, d3]. We then set the most significant bit + /// of the most significant element to ZERO. + pub type NonFungibleAsset = Word; + /// A fungible or a non-fungible asset. + /// + /// All assets are encoded using a single word (4 elements) such that it is easy to determine the + /// type of an asset both inside and outside Miden VM. Specifically: + /// Element 1 will be: + /// - ZERO for a fungible asset + /// - non-ZERO for a non-fungible asset + /// The most significant bit will be: + /// - ONE for a fungible asset + /// - ZERO for a non-fungible asset + /// + /// The above properties guarantee that there can never be a collision between a fungible and a + /// non-fungible asset. + /// + /// The methodology for constructing fungible and non-fungible assets is described below. + /// + /// # Fungible assets + /// The most significant element of a fungible asset is set to the ID of the faucet which issued + /// the asset. This guarantees the properties described above (the first bit is ONE). + /// + /// The least significant element is set to the amount of the asset. This amount cannot be greater + /// than 2^63 - 1 and thus requires 63-bits to store. + /// + /// Elements 1 and 2 are set to ZERO. + /// + /// It is impossible to find a collision between two fungible assets issued by different faucets as + /// the faucet_id is included in the description of the asset and this is guaranteed to be different + /// for each faucet as per the faucet creation logic. + /// + /// # Non-fungible assets + /// The 4 elements of non-fungible assets are computed as follows: + /// - First the asset data is hashed. This compresses an asset of an arbitrary length to 4 field + /// elements: [d0, d1, d2, d3]. + /// - d1 is then replaced with the faucet_id which issues the asset: [d0, faucet_id, d2, d3]. + /// - Lastly, the most significant bit of d3 is set to ZERO. + /// + /// It is impossible to find a collision between two non-fungible assets issued by different faucets + /// as the faucet_id is included in the description of the non-fungible asset and this is guaranteed + /// to be different as per the faucet creation logic. Collision resistance for non-fungible assets + /// issued by the same faucet is ~2^95. + #[derive(Clone, Copy)] + pub enum Asset{ + Fungible(FungibleAsset), + NonFungible(NonFungibleAsset), + } + impl ::core::fmt::Debug for Asset { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Asset::Fungible(e) => { + f.debug_tuple("Asset::Fungible").field(e).finish() + } + Asset::NonFungible(e) => { + f.debug_tuple("Asset::NonFungible").field(e).finish() + } + } + } + } + /// Inputs of the currently executed note, never exceeds 16 felts + pub type NoteInputs = ::cargo_component_bindings::rt::vec::Vec::; + + } + + + #[allow(clippy::all)] + pub mod tx_kernel { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_section; + pub type Asset = super::super::super::miden::base::types::Asset; + pub type Tag = super::super::super::miden::base::types::Tag; + pub type Recipient = super::super::super::miden::base::types::Recipient; + pub type NoteInputs = super::super::super::miden::base::types::NoteInputs; + pub type AccountId = super::super::super::miden::base::types::AccountId; + #[allow(unused_unsafe, clippy::all)] + /// Get the id of the currently executing account + pub fn get_id() -> AccountId{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "get-id"] + fn wit_import() -> i64; + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i64{ unreachable!() } + let ret = wit_import(); + ret as u64 + } + } + #[allow(unused_unsafe, clippy::all)] + /// Add the specified asset to the vault + pub fn add_asset(asset: Asset,) -> Asset{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(8))] + struct RetArea([u8; 40]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + let ptr4 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "add-asset"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4, ptr4); + let l5 = i32::from(*((ptr4 + 0) as *const u8)); + use super::super::super::miden::base::types::Asset as V12; + let v12 = match l5 { + 0 => { + let e12 = { + let l6 = *((ptr4 + 8) as *const i64); + let l7 = *((ptr4 + 16) as *const i64); + + super::super::super::miden::base::types::FungibleAsset{ + asset: l6 as u64, + amount: l7 as u64, + } + }; + V12::Fungible(e12) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e12 = { + let l8 = *((ptr4 + 8) as *const i64); + let l9 = *((ptr4 + 16) as *const i64); + let l10 = *((ptr4 + 24) as *const i64); + let l11 = *((ptr4 + 32) as *const i64); + + (l8 as u64, l9 as u64, l10 as u64, l11 as u64) + }; + V12::NonFungible(e12) + } + }; + v12 + } + } + #[allow(unused_unsafe, clippy::all)] + /// Remove the specified asset from the vault + pub fn remove_asset(asset: Asset,) -> Asset{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(8))] + struct RetArea([u8; 40]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + let ptr4 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "remove-asset"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i32, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4, ptr4); + let l5 = i32::from(*((ptr4 + 0) as *const u8)); + use super::super::super::miden::base::types::Asset as V12; + let v12 = match l5 { + 0 => { + let e12 = { + let l6 = *((ptr4 + 8) as *const i64); + let l7 = *((ptr4 + 16) as *const i64); + + super::super::super::miden::base::types::FungibleAsset{ + asset: l6 as u64, + amount: l7 as u64, + } + }; + V12::Fungible(e12) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e12 = { + let l8 = *((ptr4 + 8) as *const i64); + let l9 = *((ptr4 + 16) as *const i64); + let l10 = *((ptr4 + 24) as *const i64); + let l11 = *((ptr4 + 32) as *const i64); + + (l8 as u64, l9 as u64, l10 as u64, l11 as u64) + }; + V12::NonFungible(e12) + } + }; + v12 + } + } + #[allow(unused_unsafe, clippy::all)] + /// Creates a new note. + /// asset is the asset to be included in the note. + /// tag is the tag to be included in the note. + /// recipient is the recipient of the note. + pub fn create_note(asset: Asset,tag: Tag,recipient: Recipient,){ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + let (t4_0, t4_1, t4_2, t4_3, ) = recipient; + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "create-note"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4, ::cargo_component_bindings::rt::as_i64(tag), ::cargo_component_bindings::rt::as_i64(t4_0), ::cargo_component_bindings::rt::as_i64(t4_1), ::cargo_component_bindings::rt::as_i64(t4_2), ::cargo_component_bindings::rt::as_i64(t4_3)); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Get the inputs of the currently executed note + pub fn get_inputs() -> NoteInputs{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(4))] + struct RetArea([u8; 8]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + let ptr0 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "get-inputs"] + fn wit_import(_: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, ){ unreachable!() } + wit_import(ptr0); + let l1 = *((ptr0 + 0) as *const i32); + let l2 = *((ptr0 + 4) as *const i32); + let len3 = l2 as usize; + Vec::from_raw_parts(l1 as *mut _, len3, len3) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Get the assets of the currently executing note + pub fn get_assets() -> ::cargo_component_bindings::rt::vec::Vec::{ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[repr(align(4))] + struct RetArea([u8; 8]); + let mut ret_area = ::core::mem::MaybeUninit::::uninit(); + let ptr0 = ret_area.as_mut_ptr() as i32; + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:base/tx-kernel@1.0.0")] + extern "C" { + #[link_name = "get-assets"] + fn wit_import(_: i32, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, ){ unreachable!() } + wit_import(ptr0); + let l1 = *((ptr0 + 0) as *const i32); + let l2 = *((ptr0 + 4) as *const i32); + let base11 = l1; + let len11 = l2; + let mut result11 = Vec::with_capacity(len11 as usize); + for i in 0..len11 { + let base = base11 + i * 40; + let e11 = { + let l3 = i32::from(*((base + 0) as *const u8)); + use super::super::super::miden::base::types::Asset as V10; + let v10 = match l3 { + 0 => { + let e10 = { + let l4 = *((base + 8) as *const i64); + let l5 = *((base + 16) as *const i64); + + super::super::super::miden::base::types::FungibleAsset{ + asset: l4 as u64, + amount: l5 as u64, + } + }; + V10::Fungible(e10) + } + n => { + debug_assert_eq!(n, 1, "invalid enum discriminant"); + let e10 = { + let l6 = *((base + 8) as *const i64); + let l7 = *((base + 16) as *const i64); + let l8 = *((base + 24) as *const i64); + let l9 = *((base + 32) as *const i64); + + (l6 as u64, l7 as u64, l8 as u64, l9 as u64) + }; + V10::NonFungible(e10) + } + }; + + v10 + }; + result11.push(e11); + } + ::cargo_component_bindings::rt::dealloc(base11, (len11 as usize) * 40, 8); + result11 + } + } + + } + + } + pub mod basic_wallet { + + #[allow(clippy::all)] + pub mod basic_wallet { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_section; + pub type Asset = super::super::super::miden::base::types::Asset; + pub type Tag = super::super::super::miden::base::types::Tag; + pub type Recipient = super::super::super::miden::base::types::Recipient; + #[allow(unused_unsafe, clippy::all)] + pub fn receive_asset(asset: Asset,){ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:basic-wallet/basic-wallet@1.0.0")] + extern "C" { + #[link_name = "receive-asset"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn send_asset(asset: Asset,tag: Tag,recipient: Recipient,){ + + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + unsafe { + use super::super::super::miden::base::types::Asset as V2; + let (result3_0,result3_1,result3_2,result3_3,result3_4,) = match asset { + V2::Fungible(e) => { + let super::super::super::miden::base::types::FungibleAsset{ asset:asset0, amount:amount0, } = e; + + (0i32, ::cargo_component_bindings::rt::as_i64(asset0), ::cargo_component_bindings::rt::as_i64(amount0), 0i64, 0i64) + }, + V2::NonFungible(e) => { + let (t1_0, t1_1, t1_2, t1_3, ) = e; + + (1i32, ::cargo_component_bindings::rt::as_i64(t1_0), ::cargo_component_bindings::rt::as_i64(t1_1), ::cargo_component_bindings::rt::as_i64(t1_2), ::cargo_component_bindings::rt::as_i64(t1_3)) + }, + }; + let (t4_0, t4_1, t4_2, t4_3, ) = recipient; + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "miden:basic-wallet/basic-wallet@1.0.0")] + extern "C" { + #[link_name = "send-asset"] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, ); + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, _: i64, ){ unreachable!() } + wit_import(result3_0, result3_1, result3_2, result3_3, result3_4, ::cargo_component_bindings::rt::as_i64(tag), ::cargo_component_bindings::rt::as_i64(t4_0), ::cargo_component_bindings::rt::as_i64(t4_1), ::cargo_component_bindings::rt::as_i64(t4_2), ::cargo_component_bindings::rt::as_i64(t4_3)); + } + } + + } + + } +} +pub mod exports { + pub mod miden { + pub mod base { + + #[allow(clippy::all)] + pub mod note { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_section; + const _: () = { + + #[doc(hidden)] + #[export_name = "miden:base/note@1.0.0#note-script"] + #[allow(non_snake_case)] + unsafe extern "C" fn __export_note_script() { + #[allow(unused_imports)] + use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String}; + + // Before executing any other code, use this function to run all static + // constructors, if they have not yet been run. This is a hack required + // to work around wasi-libc ctors calling import functions to initialize + // the environment. + // + // This functionality will be removed once rust 1.69.0 is stable, at which + // point wasi-libc will no longer have this behavior. + // + // See + // https://github.com/bytecodealliance/preview2-prototyping/issues/99 + // for more details. + #[cfg(target_arch="wasm32")] + ::cargo_component_bindings::rt::run_ctors_once(); + + <_GuestImpl as Guest>::note_script(); + } + }; + use super::super::super::super::super::Component as _GuestImpl; + pub trait Guest { + fn note_script(); + } + + } + + } + } +} + +#[cfg(target_arch = "wasm32")] +#[link_section = "component-type:notes-world"] +#[doc(hidden)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 950] = [3, 0, 11, 110, 111, 116, 101, 115, 45, 119, 111, 114, 108, 100, 0, 97, 115, 109, 13, 0, 1, 0, 7, 176, 6, 1, 65, 2, 1, 65, 13, 1, 66, 14, 1, 119, 4, 0, 4, 102, 101, 108, 116, 3, 0, 0, 1, 111, 4, 1, 1, 1, 1, 4, 0, 4, 119, 111, 114, 100, 3, 0, 2, 4, 0, 10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100, 3, 0, 1, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 3, 4, 0, 3, 116, 97, 103, 3, 0, 1, 1, 114, 2, 5, 97, 115, 115, 101, 116, 4, 6, 97, 109, 111, 117, 110, 116, 119, 4, 0, 14, 102, 117, 110, 103, 105, 98, 108, 101, 45, 97, 115, 115, 101, 116, 3, 0, 7, 4, 0, 18, 110, 111, 110, 45, 102, 117, 110, 103, 105, 98, 108, 101, 45, 97, 115, 115, 101, 116, 3, 0, 3, 1, 113, 2, 8, 102, 117, 110, 103, 105, 98, 108, 101, 1, 8, 0, 12, 110, 111, 110, 45, 102, 117, 110, 103, 105, 98, 108, 101, 1, 9, 0, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 10, 1, 112, 1, 4, 0, 11, 110, 111, 116, 101, 45, 105, 110, 112, 117, 116, 115, 3, 0, 12, 3, 1, 22, 109, 105, 100, 101, 110, 58, 98, 97, 115, 101, 47, 116, 121, 112, 101, 115, 64, 49, 46, 48, 46, 48, 5, 0, 2, 3, 0, 0, 5, 97, 115, 115, 101, 116, 2, 3, 0, 0, 3, 116, 97, 103, 2, 3, 0, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 2, 3, 0, 0, 11, 110, 111, 116, 101, 45, 105, 110, 112, 117, 116, 115, 2, 3, 0, 0, 10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100, 1, 66, 22, 2, 3, 2, 1, 1, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 0, 2, 3, 2, 1, 2, 4, 0, 3, 116, 97, 103, 3, 0, 2, 2, 3, 2, 1, 3, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 4, 2, 3, 2, 1, 4, 4, 0, 11, 110, 111, 116, 101, 45, 105, 110, 112, 117, 116, 115, 3, 0, 6, 2, 3, 2, 1, 5, 4, 0, 10, 97, 99, 99, 111, 117, 110, 116, 45, 105, 100, 3, 0, 8, 1, 64, 0, 0, 9, 4, 0, 6, 103, 101, 116, 45, 105, 100, 1, 10, 1, 64, 1, 5, 97, 115, 115, 101, 116, 1, 0, 1, 4, 0, 9, 97, 100, 100, 45, 97, 115, 115, 101, 116, 1, 11, 4, 0, 12, 114, 101, 109, 111, 118, 101, 45, 97, 115, 115, 101, 116, 1, 11, 1, 64, 3, 5, 97, 115, 115, 101, 116, 1, 3, 116, 97, 103, 3, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 5, 1, 0, 4, 0, 11, 99, 114, 101, 97, 116, 101, 45, 110, 111, 116, 101, 1, 12, 1, 64, 0, 0, 7, 4, 0, 10, 103, 101, 116, 45, 105, 110, 112, 117, 116, 115, 1, 13, 1, 112, 1, 1, 64, 0, 0, 14, 4, 0, 10, 103, 101, 116, 45, 97, 115, 115, 101, 116, 115, 1, 15, 3, 1, 26, 109, 105, 100, 101, 110, 58, 98, 97, 115, 101, 47, 116, 120, 45, 107, 101, 114, 110, 101, 108, 64, 49, 46, 48, 46, 48, 5, 6, 1, 66, 10, 2, 3, 2, 1, 1, 4, 0, 5, 97, 115, 115, 101, 116, 3, 0, 0, 2, 3, 2, 1, 2, 4, 0, 3, 116, 97, 103, 3, 0, 2, 2, 3, 2, 1, 3, 4, 0, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 3, 0, 4, 1, 64, 1, 5, 97, 115, 115, 101, 116, 1, 1, 0, 4, 0, 13, 114, 101, 99, 101, 105, 118, 101, 45, 97, 115, 115, 101, 116, 1, 6, 1, 64, 3, 5, 97, 115, 115, 101, 116, 1, 3, 116, 97, 103, 3, 9, 114, 101, 99, 105, 112, 105, 101, 110, 116, 5, 1, 0, 4, 0, 10, 115, 101, 110, 100, 45, 97, 115, 115, 101, 116, 1, 7, 3, 1, 37, 109, 105, 100, 101, 110, 58, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 47, 98, 97, 115, 105, 99, 45, 119, 97, 108, 108, 101, 116, 64, 49, 46, 48, 46, 48, 5, 7, 1, 66, 2, 1, 64, 0, 1, 0, 4, 0, 11, 110, 111, 116, 101, 45, 115, 99, 114, 105, 112, 116, 1, 0, 4, 1, 21, 109, 105, 100, 101, 110, 58, 98, 97, 115, 101, 47, 110, 111, 116, 101, 64, 49, 46, 48, 46, 48, 5, 8, 4, 1, 28, 109, 105, 100, 101, 110, 58, 112, 50, 105, 100, 47, 110, 111, 116, 101, 115, 45, 119, 111, 114, 108, 100, 64, 49, 46, 48, 46, 48, 4, 0, 11, 17, 1, 0, 11, 110, 111, 116, 101, 115, 45, 119, 111, 114, 108, 100, 3, 0, 0, 0, 16, 12, 112, 97, 99, 107, 97, 103, 101, 45, 100, 111, 99, 115, 0, 123, 125, 0, 70, 9, 112, 114, 111, 100, 117, 99, 101, 114, 115, 1, 12, 112, 114, 111, 99, 101, 115, 115, 101, 100, 45, 98, 121, 2, 13, 119, 105, 116, 45, 99, 111, 109, 112, 111, 110, 101, 110, 116, 6, 48, 46, 49, 56, 46, 50, 16, 119, 105, 116, 45, 98, 105, 110, 100, 103, 101, 110, 45, 114, 117, 115, 116, 6, 48, 46, 49, 54, 46, 48]; + +#[inline(never)] +#[doc(hidden)] +#[cfg(target_arch = "wasm32")] +pub fn __link_section() {} diff --git a/tests/integration/expected/sdk_basic_wallet/miden_sdk.wat b/tests/integration/expected/sdk_basic_wallet/miden_sdk.wat new file mode 100644 index 000000000..9fe135a45 --- /dev/null +++ b/tests/integration/expected/sdk_basic_wallet/miden_sdk.wat @@ -0,0 +1,6098 @@ +(component + (core module (;0;) + (type (;0;) (func (param i32 i32) (result i32))) + (type (;1;) (func (param i32 i32 i32 i32) (result i32))) + (type (;2;) (func (param i32) (result i32))) + (type (;3;) (func (param i32))) + (type (;4;) (func (param i32 i32))) + (type (;5;) (func)) + (type (;6;) (func (param i32 i32 i32) (result i32))) + (func $__rust_alloc (;0;) (type 0) (param i32 i32) (result i32) + (local i32) + local.get 0 + local.get 1 + call $__rdl_alloc + local.set 2 + local.get 2 + return + ) + (func $__rust_realloc (;1;) (type 1) (param i32 i32 i32 i32) (result i32) + (local i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call $__rdl_realloc + local.set 4 + local.get 4 + return + ) + (func $__rdl_alloc (;2;) (type 0) (param i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.const 8 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + local.get 0 + i32.le_u + br_if 1 (;@1;) + end + local.get 1 + local.get 0 + call $aligned_alloc + return + end + local.get 0 + call $malloc + ) + (func $__rdl_realloc (;3;) (type 1) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + local.get 2 + i32.const 8 + i32.gt_u + br_if 0 (;@2;) + local.get 2 + local.get 3 + i32.le_u + br_if 1 (;@1;) + end + block ;; label = @2 + local.get 2 + local.get 3 + call $aligned_alloc + local.tee 2 + br_if 0 (;@2;) + i32.const 0 + return + end + local.get 2 + local.get 0 + local.get 1 + local.get 3 + local.get 1 + local.get 3 + i32.lt_u + select + call $memcpy + local.set 3 + local.get 0 + call $free + local.get 3 + return + end + local.get 0 + local.get 3 + call $realloc + ) + (func $malloc (;4;) (type 2) (param i32) (result i32) + local.get 0 + call $dlmalloc + ) + (func $dlmalloc (;5;) (type 2) (param i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + global.get $__stack_pointer + i32.const 16 + i32.sub + local.tee 1 + global.set $__stack_pointer + block ;; label = @1 + i32.const 0 + i32.load offset=1048604 + local.tee 2 + br_if 0 (;@1;) + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1049052 + local.tee 3 + i32.eqz + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1049056 + local.set 4 + br 1 (;@2;) + end + i32.const 0 + i64.const -1 + i64.store offset=1049064 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049056 align=4 + i32.const 0 + local.get 1 + i32.const 8 + i32.add + i32.const -16 + i32.and + i32.const 1431655768 + i32.xor + local.tee 3 + i32.store offset=1049052 + i32.const 0 + i32.const 0 + i32.store offset=1049072 + i32.const 0 + i32.const 0 + i32.store offset=1049024 + i32.const 65536 + local.set 4 + end + i32.const 0 + local.set 2 + i32.const 1114112 + i32.const 1049088 + local.get 4 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.const 1114112 + select + i32.const 1049088 + i32.sub + local.tee 5 + i32.const 89 + i32.lt_u + br_if 0 (;@1;) + i32.const 0 + local.set 4 + i32.const 0 + local.get 5 + i32.store offset=1049032 + i32.const 0 + i32.const 1049088 + i32.store offset=1049028 + i32.const 0 + i32.const 1049088 + i32.store offset=1048596 + i32.const 0 + local.get 3 + i32.store offset=1048616 + i32.const 0 + i32.const -1 + i32.store offset=1048612 + loop ;; label = @2 + local.get 4 + i32.const 1048640 + i32.add + local.get 4 + i32.const 1048628 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1048620 + i32.add + local.tee 6 + i32.store + local.get 4 + i32.const 1048632 + i32.add + local.get 6 + i32.store + local.get 4 + i32.const 1048648 + i32.add + local.get 4 + i32.const 1048636 + i32.add + local.tee 6 + i32.store + local.get 6 + local.get 3 + i32.store + local.get 4 + i32.const 1048656 + i32.add + local.get 4 + i32.const 1048644 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 6 + i32.store + local.get 4 + i32.const 1048652 + i32.add + local.get 3 + i32.store + local.get 4 + i32.const 32 + i32.add + local.tee 4 + i32.const 256 + i32.ne + br_if 0 (;@2;) + end + i32.const 1049088 + i32.const -8 + i32.const 1049088 + i32.sub + i32.const 15 + i32.and + i32.const 0 + i32.const 1049088 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 2 + i32.const 4 + i32.add + local.get 5 + i32.const -56 + i32.add + local.tee 3 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 2 + i32.store offset=1048604 + i32.const 1049088 + local.get 3 + i32.add + i32.const 56 + i32.store offset=4 + end + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + local.get 0 + i32.const 236 + i32.gt_u + br_if 0 (;@12;) + block ;; label = @13 + i32.const 0 + i32.load offset=1048580 + local.tee 7 + i32.const 16 + local.get 0 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 0 + i32.const 11 + i32.lt_u + select + local.tee 5 + i32.const 3 + i32.shr_u + local.tee 3 + i32.shr_u + local.tee 4 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@13;) + block ;; label = @14 + block ;; label = @15 + local.get 4 + i32.const 1 + i32.and + local.get 3 + i32.or + i32.const 1 + i32.xor + local.tee 6 + i32.const 3 + i32.shl + local.tee 3 + i32.const 1048620 + i32.add + local.tee 4 + local.get 3 + i32.const 1048628 + i32.add + i32.load + local.tee 3 + i32.load offset=8 + local.tee 5 + i32.ne + br_if 0 (;@15;) + i32.const 0 + local.get 7 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048580 + br 1 (;@14;) + end + local.get 4 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 4 + i32.store offset=12 + end + local.get 3 + i32.const 8 + i32.add + local.set 4 + local.get 3 + local.get 6 + i32.const 3 + i32.shl + local.tee 6 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + local.get 6 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 12 (;@1;) + end + local.get 5 + i32.const 0 + i32.load offset=1048588 + local.tee 8 + i32.le_u + br_if 1 (;@11;) + block ;; label = @13 + local.get 4 + i32.eqz + br_if 0 (;@13;) + block ;; label = @14 + block ;; label = @15 + local.get 4 + local.get 3 + i32.shl + i32.const 2 + local.get 3 + i32.shl + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.or + i32.and + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.ctz + local.tee 3 + i32.const 3 + i32.shl + local.tee 4 + i32.const 1048620 + i32.add + local.tee 6 + local.get 4 + i32.const 1048628 + i32.add + i32.load + local.tee 4 + i32.load offset=8 + local.tee 0 + i32.ne + br_if 0 (;@15;) + i32.const 0 + local.get 7 + i32.const -2 + local.get 3 + i32.rotl + i32.and + local.tee 7 + i32.store offset=1048580 + br 1 (;@14;) + end + local.get 6 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 6 + i32.store offset=12 + end + local.get 4 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 4 + local.get 3 + i32.const 3 + i32.shl + local.tee 3 + i32.add + local.get 3 + local.get 5 + i32.sub + local.tee 6 + i32.store + local.get 4 + local.get 5 + i32.add + local.tee 0 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @14 + local.get 8 + i32.eqz + br_if 0 (;@14;) + local.get 8 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1048600 + local.set 3 + block ;; label = @15 + block ;; label = @16 + local.get 7 + i32.const 1 + local.get 8 + i32.const 3 + i32.shr_u + i32.shl + local.tee 9 + i32.and + br_if 0 (;@16;) + i32.const 0 + local.get 7 + local.get 9 + i32.or + i32.store offset=1048580 + local.get 5 + local.set 9 + br 1 (;@15;) + end + local.get 5 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 3 + i32.store offset=12 + local.get 5 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 9 + i32.store offset=8 + end + local.get 4 + i32.const 8 + i32.add + local.set 4 + i32.const 0 + local.get 0 + i32.store offset=1048600 + i32.const 0 + local.get 6 + i32.store offset=1048588 + br 12 (;@1;) + end + i32.const 0 + i32.load offset=1048584 + local.tee 10 + i32.eqz + br_if 1 (;@11;) + local.get 10 + i32.const 0 + local.get 10 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + i32.load + local.tee 0 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.set 3 + local.get 0 + local.set 6 + block ;; label = @13 + loop ;; label = @14 + block ;; label = @15 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@15;) + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 2 (;@13;) + end + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 6 + local.get 3 + local.get 6 + local.get 3 + i32.lt_u + local.tee 6 + select + local.set 3 + local.get 4 + local.get 0 + local.get 6 + select + local.set 0 + local.get 4 + local.set 6 + br 0 (;@14;) + end + end + local.get 0 + i32.load offset=24 + local.set 11 + block ;; label = @13 + local.get 0 + i32.load offset=12 + local.tee 9 + local.get 0 + i32.eq + br_if 0 (;@13;) + local.get 0 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 9 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 9 + i32.store offset=12 + br 11 (;@2;) + end + block ;; label = @13 + local.get 0 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 0 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 3 (;@10;) + local.get 0 + i32.const 16 + i32.add + local.set 6 + end + loop ;; label = @13 + local.get 6 + local.set 2 + local.get 4 + local.tee 9 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 9 + i32.const 16 + i32.add + local.set 6 + local.get 9 + i32.load offset=16 + local.tee 4 + br_if 0 (;@13;) + end + local.get 2 + i32.const 0 + i32.store + br 10 (;@2;) + end + i32.const -1 + local.set 5 + local.get 0 + i32.const -65 + i32.gt_u + br_if 0 (;@11;) + local.get 0 + i32.const 19 + i32.add + local.tee 4 + i32.const -16 + i32.and + local.set 5 + i32.const 0 + i32.load offset=1048584 + local.tee 10 + i32.eqz + br_if 0 (;@11;) + i32.const 0 + local.set 8 + block ;; label = @12 + local.get 5 + i32.const 256 + i32.lt_u + br_if 0 (;@12;) + i32.const 31 + local.set 8 + local.get 5 + i32.const 16777215 + i32.gt_u + br_if 0 (;@12;) + local.get 5 + i32.const 38 + local.get 4 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 8 + end + i32.const 0 + local.get 5 + i32.sub + local.set 3 + block ;; label = @12 + block ;; label = @13 + block ;; label = @14 + block ;; label = @15 + local.get 8 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + i32.load + local.tee 6 + br_if 0 (;@15;) + i32.const 0 + local.set 4 + i32.const 0 + local.set 9 + br 1 (;@14;) + end + i32.const 0 + local.set 4 + local.get 5 + i32.const 0 + i32.const 25 + local.get 8 + i32.const 1 + i32.shr_u + i32.sub + local.get 8 + i32.const 31 + i32.eq + select + i32.shl + local.set 0 + i32.const 0 + local.set 9 + loop ;; label = @15 + block ;; label = @16 + local.get 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 7 + local.get 3 + i32.ge_u + br_if 0 (;@16;) + local.get 7 + local.set 3 + local.get 6 + local.set 9 + local.get 7 + br_if 0 (;@16;) + i32.const 0 + local.set 3 + local.get 6 + local.set 9 + local.get 6 + local.set 4 + br 3 (;@13;) + end + local.get 4 + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 7 + local.get 7 + local.get 6 + local.get 0 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + i32.load + local.tee 6 + i32.eq + select + local.get 4 + local.get 7 + select + local.set 4 + local.get 0 + i32.const 1 + i32.shl + local.set 0 + local.get 6 + br_if 0 (;@15;) + end + end + block ;; label = @14 + local.get 4 + local.get 9 + i32.or + br_if 0 (;@14;) + i32.const 0 + local.set 9 + i32.const 2 + local.get 8 + i32.shl + local.tee 4 + i32.const 0 + local.get 4 + i32.sub + i32.or + local.get 10 + i32.and + local.tee 4 + i32.eqz + br_if 3 (;@11;) + local.get 4 + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + i32.load + local.set 4 + end + local.get 4 + i32.eqz + br_if 1 (;@12;) + end + loop ;; label = @13 + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 5 + i32.sub + local.tee 7 + local.get 3 + i32.lt_u + local.set 0 + block ;; label = @14 + local.get 4 + i32.load offset=16 + local.tee 6 + br_if 0 (;@14;) + local.get 4 + i32.const 20 + i32.add + i32.load + local.set 6 + end + local.get 7 + local.get 3 + local.get 0 + select + local.set 3 + local.get 4 + local.get 9 + local.get 0 + select + local.set 9 + local.get 6 + local.set 4 + local.get 6 + br_if 0 (;@13;) + end + end + local.get 9 + i32.eqz + br_if 0 (;@11;) + local.get 3 + i32.const 0 + i32.load offset=1048588 + local.get 5 + i32.sub + i32.ge_u + br_if 0 (;@11;) + local.get 9 + i32.load offset=24 + local.set 2 + block ;; label = @12 + local.get 9 + i32.load offset=12 + local.tee 0 + local.get 9 + i32.eq + br_if 0 (;@12;) + local.get 9 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 0 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 0 + i32.store offset=12 + br 9 (;@3;) + end + block ;; label = @12 + local.get 9 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@12;) + local.get 9 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 3 (;@9;) + local.get 9 + i32.const 16 + i32.add + local.set 6 + end + loop ;; label = @12 + local.get 6 + local.set 7 + local.get 4 + local.tee 0 + i32.const 20 + i32.add + local.tee 6 + i32.load + local.tee 4 + br_if 0 (;@12;) + local.get 0 + i32.const 16 + i32.add + local.set 6 + local.get 0 + i32.load offset=16 + local.tee 4 + br_if 0 (;@12;) + end + local.get 7 + i32.const 0 + i32.store + br 8 (;@3;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1048588 + local.tee 4 + local.get 5 + i32.lt_u + br_if 0 (;@11;) + i32.const 0 + i32.load offset=1048600 + local.set 3 + block ;; label = @12 + block ;; label = @13 + local.get 4 + local.get 5 + i32.sub + local.tee 6 + i32.const 16 + i32.lt_u + br_if 0 (;@13;) + local.get 3 + local.get 5 + i32.add + local.tee 0 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 4 + i32.add + local.get 6 + i32.store + local.get 3 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + br 1 (;@12;) + end + local.get 3 + local.get 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 0 + i32.const 0 + local.set 6 + end + i32.const 0 + local.get 6 + i32.store offset=1048588 + i32.const 0 + local.get 0 + i32.store offset=1048600 + local.get 3 + i32.const 8 + i32.add + local.set 4 + br 10 (;@1;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1048592 + local.tee 6 + local.get 5 + i32.le_u + br_if 0 (;@11;) + local.get 2 + local.get 5 + i32.add + local.tee 4 + local.get 6 + local.get 5 + i32.sub + local.tee 3 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048604 + i32.const 0 + local.get 3 + i32.store offset=1048592 + local.get 2 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 2 + i32.const 8 + i32.add + local.set 4 + br 10 (;@1;) + end + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1049052 + i32.eqz + br_if 0 (;@12;) + i32.const 0 + i32.load offset=1049060 + local.set 3 + br 1 (;@11;) + end + i32.const 0 + i64.const -1 + i64.store offset=1049064 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049056 align=4 + i32.const 0 + local.get 1 + i32.const 12 + i32.add + i32.const -16 + i32.and + i32.const 1431655768 + i32.xor + i32.store offset=1049052 + i32.const 0 + i32.const 0 + i32.store offset=1049072 + i32.const 0 + i32.const 0 + i32.store offset=1049024 + i32.const 65536 + local.set 3 + end + i32.const 0 + local.set 4 + block ;; label = @11 + local.get 3 + local.get 5 + i32.const 71 + i32.add + local.tee 8 + i32.add + local.tee 0 + i32.const 0 + local.get 3 + i32.sub + local.tee 7 + i32.and + local.tee 9 + local.get 5 + i32.gt_u + br_if 0 (;@11;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + br 10 (;@1;) + end + block ;; label = @11 + i32.const 0 + i32.load offset=1049020 + local.tee 4 + i32.eqz + br_if 0 (;@11;) + block ;; label = @12 + i32.const 0 + i32.load offset=1049012 + local.tee 3 + local.get 9 + i32.add + local.tee 10 + local.get 3 + i32.le_u + br_if 0 (;@12;) + local.get 10 + local.get 4 + i32.le_u + br_if 1 (;@11;) + end + i32.const 0 + local.set 4 + i32.const 0 + i32.const 48 + i32.store offset=1049076 + br 10 (;@1;) + end + i32.const 0 + i32.load8_u offset=1049024 + i32.const 4 + i32.and + br_if 4 (;@6;) + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + local.get 2 + i32.eqz + br_if 0 (;@13;) + i32.const 1049028 + local.set 4 + loop ;; label = @14 + block ;; label = @15 + local.get 4 + i32.load + local.tee 3 + local.get 2 + i32.gt_u + br_if 0 (;@15;) + local.get 3 + local.get 4 + i32.load offset=4 + i32.add + local.get 2 + i32.gt_u + br_if 3 (;@12;) + end + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@14;) + end + end + i32.const 0 + call $sbrk + local.tee 0 + i32.const -1 + i32.eq + br_if 5 (;@7;) + local.get 9 + local.set 7 + block ;; label = @13 + i32.const 0 + i32.load offset=1049056 + local.tee 4 + i32.const -1 + i32.add + local.tee 3 + local.get 0 + i32.and + i32.eqz + br_if 0 (;@13;) + local.get 9 + local.get 0 + i32.sub + local.get 3 + local.get 0 + i32.add + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.add + local.set 7 + end + local.get 7 + local.get 5 + i32.le_u + br_if 5 (;@7;) + local.get 7 + i32.const 2147483646 + i32.gt_u + br_if 5 (;@7;) + block ;; label = @13 + i32.const 0 + i32.load offset=1049020 + local.tee 4 + i32.eqz + br_if 0 (;@13;) + i32.const 0 + i32.load offset=1049012 + local.tee 3 + local.get 7 + i32.add + local.tee 6 + local.get 3 + i32.le_u + br_if 6 (;@7;) + local.get 6 + local.get 4 + i32.gt_u + br_if 6 (;@7;) + end + local.get 7 + call $sbrk + local.tee 4 + local.get 0 + i32.ne + br_if 1 (;@11;) + br 7 (;@5;) + end + local.get 0 + local.get 6 + i32.sub + local.get 7 + i32.and + local.tee 7 + i32.const 2147483646 + i32.gt_u + br_if 4 (;@7;) + local.get 7 + call $sbrk + local.tee 0 + local.get 4 + i32.load + local.get 4 + i32.load offset=4 + i32.add + i32.eq + br_if 3 (;@8;) + local.get 0 + local.set 4 + end + block ;; label = @11 + local.get 4 + i32.const -1 + i32.eq + br_if 0 (;@11;) + local.get 5 + i32.const 72 + i32.add + local.get 7 + i32.le_u + br_if 0 (;@11;) + block ;; label = @12 + local.get 8 + local.get 7 + i32.sub + i32.const 0 + i32.load offset=1049060 + local.tee 3 + i32.add + i32.const 0 + local.get 3 + i32.sub + i32.and + local.tee 3 + i32.const 2147483646 + i32.le_u + br_if 0 (;@12;) + local.get 4 + local.set 0 + br 7 (;@5;) + end + block ;; label = @12 + local.get 3 + call $sbrk + i32.const -1 + i32.eq + br_if 0 (;@12;) + local.get 3 + local.get 7 + i32.add + local.set 7 + local.get 4 + local.set 0 + br 7 (;@5;) + end + i32.const 0 + local.get 7 + i32.sub + call $sbrk + drop + br 4 (;@7;) + end + local.get 4 + local.set 0 + local.get 4 + i32.const -1 + i32.ne + br_if 5 (;@5;) + br 3 (;@7;) + end + i32.const 0 + local.set 9 + br 7 (;@2;) + end + i32.const 0 + local.set 0 + br 5 (;@3;) + end + local.get 0 + i32.const -1 + i32.ne + br_if 2 (;@5;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049024 + i32.const 4 + i32.or + i32.store offset=1049024 + end + local.get 9 + i32.const 2147483646 + i32.gt_u + br_if 1 (;@4;) + local.get 9 + call $sbrk + local.set 0 + i32.const 0 + call $sbrk + local.set 4 + local.get 0 + i32.const -1 + i32.eq + br_if 1 (;@4;) + local.get 4 + i32.const -1 + i32.eq + br_if 1 (;@4;) + local.get 0 + local.get 4 + i32.ge_u + br_if 1 (;@4;) + local.get 4 + local.get 0 + i32.sub + local.tee 7 + local.get 5 + i32.const 56 + i32.add + i32.le_u + br_if 1 (;@4;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049012 + local.get 7 + i32.add + local.tee 4 + i32.store offset=1049012 + block ;; label = @5 + local.get 4 + i32.const 0 + i32.load offset=1049016 + i32.le_u + br_if 0 (;@5;) + i32.const 0 + local.get 4 + i32.store offset=1049016 + end + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + i32.const 0 + i32.load offset=1048604 + local.tee 3 + i32.eqz + br_if 0 (;@8;) + i32.const 1049028 + local.set 4 + loop ;; label = @9 + local.get 0 + local.get 4 + i32.load + local.tee 6 + local.get 4 + i32.load offset=4 + local.tee 9 + i32.add + i32.eq + br_if 2 (;@7;) + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@9;) + br 3 (;@6;) + end + end + block ;; label = @8 + block ;; label = @9 + i32.const 0 + i32.load offset=1048596 + local.tee 4 + i32.eqz + br_if 0 (;@9;) + local.get 0 + local.get 4 + i32.ge_u + br_if 1 (;@8;) + end + i32.const 0 + local.get 0 + i32.store offset=1048596 + end + i32.const 0 + local.set 4 + i32.const 0 + local.get 7 + i32.store offset=1049032 + i32.const 0 + local.get 0 + i32.store offset=1049028 + i32.const 0 + i32.const -1 + i32.store offset=1048612 + i32.const 0 + i32.const 0 + i32.load offset=1049052 + i32.store offset=1048616 + i32.const 0 + i32.const 0 + i32.store offset=1049040 + loop ;; label = @8 + local.get 4 + i32.const 1048640 + i32.add + local.get 4 + i32.const 1048628 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1048620 + i32.add + local.tee 6 + i32.store + local.get 4 + i32.const 1048632 + i32.add + local.get 6 + i32.store + local.get 4 + i32.const 1048648 + i32.add + local.get 4 + i32.const 1048636 + i32.add + local.tee 6 + i32.store + local.get 6 + local.get 3 + i32.store + local.get 4 + i32.const 1048656 + i32.add + local.get 4 + i32.const 1048644 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 6 + i32.store + local.get 4 + i32.const 1048652 + i32.add + local.get 3 + i32.store + local.get 4 + i32.const 32 + i32.add + local.tee 4 + i32.const 256 + i32.ne + br_if 0 (;@8;) + end + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 3 + local.get 7 + i32.const -56 + i32.add + local.tee 6 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 3 + i32.store offset=1048604 + local.get 0 + local.get 6 + i32.add + i32.const 56 + i32.store offset=4 + br 2 (;@5;) + end + local.get 4 + i32.load8_u offset=12 + i32.const 8 + i32.and + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.lt_u + br_if 0 (;@6;) + local.get 3 + local.get 0 + i32.ge_u + br_if 0 (;@6;) + local.get 3 + i32.const -8 + local.get 3 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 3 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 6 + i32.add + local.tee 0 + i32.const 0 + i32.load offset=1048592 + local.get 7 + i32.add + local.tee 2 + local.get 6 + i32.sub + local.tee 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 4 + local.get 9 + local.get 7 + i32.add + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 6 + i32.store offset=1048592 + i32.const 0 + local.get 0 + i32.store offset=1048604 + local.get 3 + local.get 2 + i32.add + i32.const 56 + i32.store offset=4 + br 1 (;@5;) + end + block ;; label = @6 + local.get 0 + i32.const 0 + i32.load offset=1048596 + local.tee 9 + i32.ge_u + br_if 0 (;@6;) + i32.const 0 + local.get 0 + i32.store offset=1048596 + local.get 0 + local.set 9 + end + local.get 0 + local.get 7 + i32.add + local.set 6 + i32.const 1049028 + local.set 4 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + block ;; label = @11 + block ;; label = @12 + loop ;; label = @13 + local.get 4 + i32.load + local.get 6 + i32.eq + br_if 1 (;@12;) + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@13;) + br 2 (;@11;) + end + end + local.get 4 + i32.load8_u offset=12 + i32.const 8 + i32.and + i32.eqz + br_if 1 (;@10;) + end + i32.const 1049028 + local.set 4 + loop ;; label = @11 + block ;; label = @12 + local.get 4 + i32.load + local.tee 6 + local.get 3 + i32.gt_u + br_if 0 (;@12;) + local.get 6 + local.get 4 + i32.load offset=4 + i32.add + local.tee 6 + local.get 3 + i32.gt_u + br_if 3 (;@9;) + end + local.get 4 + i32.load offset=8 + local.set 4 + br 0 (;@11;) + end + end + local.get 4 + local.get 0 + i32.store + local.get 4 + local.get 4 + i32.load offset=4 + local.get 7 + i32.add + i32.store offset=4 + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + i32.add + local.tee 2 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + i32.const -8 + local.get 6 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 6 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + i32.add + local.tee 7 + local.get 2 + local.get 5 + i32.add + local.tee 5 + i32.sub + local.set 4 + block ;; label = @10 + local.get 7 + local.get 3 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 5 + i32.store offset=1048604 + i32.const 0 + i32.const 0 + i32.load offset=1048592 + local.get 4 + i32.add + local.tee 4 + i32.store offset=1048592 + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + br 3 (;@7;) + end + block ;; label = @10 + local.get 7 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 5 + i32.store offset=1048600 + i32.const 0 + i32.const 0 + i32.load offset=1048588 + local.get 4 + i32.add + local.tee 4 + i32.store offset=1048588 + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 5 + local.get 4 + i32.add + local.get 4 + i32.store + br 3 (;@7;) + end + block ;; label = @10 + local.get 7 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.const 1 + i32.ne + br_if 0 (;@10;) + local.get 3 + i32.const -8 + i32.and + local.set 8 + block ;; label = @11 + block ;; label = @12 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@12;) + local.get 7 + i32.load offset=8 + local.tee 6 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 9 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 0 + i32.eq + drop + block ;; label = @13 + local.get 7 + i32.load offset=12 + local.tee 3 + local.get 6 + i32.ne + br_if 0 (;@13;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 9 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@11;) + end + local.get 3 + local.get 0 + i32.eq + drop + local.get 3 + local.get 6 + i32.store offset=8 + local.get 6 + local.get 3 + i32.store offset=12 + br 1 (;@11;) + end + local.get 7 + i32.load offset=24 + local.set 10 + block ;; label = @12 + block ;; label = @13 + local.get 7 + i32.load offset=12 + local.tee 0 + local.get 7 + i32.eq + br_if 0 (;@13;) + local.get 7 + i32.load offset=8 + local.tee 3 + local.get 9 + i32.lt_u + drop + local.get 0 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 0 + i32.store offset=12 + br 1 (;@12;) + end + block ;; label = @13 + local.get 7 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + local.get 7 + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + i32.const 0 + local.set 0 + br 1 (;@12;) + end + loop ;; label = @13 + local.get 3 + local.set 9 + local.get 6 + local.tee 0 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@13;) + local.get 0 + i32.const 16 + i32.add + local.set 3 + local.get 0 + i32.load offset=16 + local.tee 6 + br_if 0 (;@13;) + end + local.get 9 + i32.const 0 + i32.store + end + local.get 10 + i32.eqz + br_if 0 (;@11;) + block ;; label = @12 + block ;; label = @13 + local.get 7 + local.get 7 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@13;) + local.get 3 + local.get 0 + i32.store + local.get 0 + br_if 1 (;@12;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@11;) + end + local.get 10 + i32.const 16 + i32.const 20 + local.get 10 + i32.load offset=16 + local.get 7 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 1 (;@11;) + end + local.get 0 + local.get 10 + i32.store offset=24 + block ;; label = @12 + local.get 7 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@12;) + local.get 0 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 0 + i32.store offset=24 + end + local.get 7 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 0 (;@11;) + local.get 0 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 0 + i32.store offset=24 + end + local.get 8 + local.get 4 + i32.add + local.set 4 + local.get 7 + local.get 8 + i32.add + local.tee 7 + i32.load offset=4 + local.set 3 + end + local.get 7 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + local.get 5 + local.get 4 + i32.add + local.get 4 + i32.store + local.get 5 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @10 + local.get 4 + i32.const 255 + i32.gt_u + br_if 0 (;@10;) + local.get 4 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 3 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048580 + local.tee 6 + i32.const 1 + local.get 4 + i32.const 3 + i32.shr_u + i32.shl + local.tee 4 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 6 + local.get 4 + i32.or + i32.store offset=1048580 + local.get 3 + local.set 4 + br 1 (;@11;) + end + local.get 3 + i32.load offset=8 + local.set 4 + end + local.get 4 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 3 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + br 3 (;@7;) + end + i32.const 31 + local.set 3 + block ;; label = @10 + local.get 4 + i32.const 16777215 + i32.gt_u + br_if 0 (;@10;) + local.get 4 + i32.const 38 + local.get 4 + i32.const 8 + i32.shr_u + i32.clz + local.tee 3 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 3 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 3 + end + local.get 5 + local.get 3 + i32.store offset=28 + local.get 5 + i64.const 0 + i64.store offset=16 align=4 + local.get 3 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 6 + block ;; label = @10 + i32.const 0 + i32.load offset=1048584 + local.tee 0 + i32.const 1 + local.get 3 + i32.shl + local.tee 9 + i32.and + br_if 0 (;@10;) + local.get 6 + local.get 5 + i32.store + i32.const 0 + local.get 0 + local.get 9 + i32.or + i32.store offset=1048584 + local.get 5 + local.get 6 + i32.store offset=24 + local.get 5 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 5 + i32.store offset=12 + br 3 (;@7;) + end + local.get 4 + i32.const 0 + i32.const 25 + local.get 3 + i32.const 1 + i32.shr_u + i32.sub + local.get 3 + i32.const 31 + i32.eq + select + i32.shl + local.set 3 + local.get 6 + i32.load + local.set 0 + loop ;; label = @10 + local.get 0 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 4 + i32.eq + br_if 2 (;@8;) + local.get 3 + i32.const 29 + i32.shr_u + local.set 0 + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 6 + local.get 0 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 9 + i32.load + local.tee 0 + br_if 0 (;@10;) + end + local.get 9 + local.get 5 + i32.store + local.get 5 + local.get 6 + i32.store offset=24 + local.get 5 + local.get 5 + i32.store offset=12 + local.get 5 + local.get 5 + i32.store offset=8 + br 2 (;@7;) + end + local.get 0 + i32.const -8 + local.get 0 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 0 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + local.tee 4 + i32.add + local.tee 2 + local.get 7 + i32.const -56 + i32.add + local.tee 9 + local.get 4 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 9 + i32.add + i32.const 56 + i32.store offset=4 + local.get 3 + local.get 6 + i32.const 55 + local.get 6 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 6 + i32.const -55 + i32.add + i32.const 15 + i32.and + select + i32.add + i32.const -63 + i32.add + local.tee 9 + local.get 9 + local.get 3 + i32.const 16 + i32.add + i32.lt_u + select + local.tee 9 + i32.const 35 + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049068 + i32.store offset=1048608 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 2 + i32.store offset=1048604 + local.get 9 + i32.const 16 + i32.add + i32.const 0 + i64.load offset=1049036 align=4 + i64.store align=4 + local.get 9 + i32.const 0 + i64.load offset=1049028 align=4 + i64.store offset=8 align=4 + i32.const 0 + local.get 9 + i32.const 8 + i32.add + i32.store offset=1049036 + i32.const 0 + local.get 7 + i32.store offset=1049032 + i32.const 0 + local.get 0 + i32.store offset=1049028 + i32.const 0 + i32.const 0 + i32.store offset=1049040 + local.get 9 + i32.const 36 + i32.add + local.set 4 + loop ;; label = @9 + local.get 4 + i32.const 7 + i32.store + local.get 4 + i32.const 4 + i32.add + local.tee 4 + local.get 6 + i32.lt_u + br_if 0 (;@9;) + end + local.get 9 + local.get 3 + i32.eq + br_if 3 (;@5;) + local.get 9 + local.get 9 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 9 + local.get 9 + local.get 3 + i32.sub + local.tee 0 + i32.store + local.get 3 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @9 + local.get 0 + i32.const 255 + i32.gt_u + br_if 0 (;@9;) + local.get 0 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 4 + block ;; label = @10 + block ;; label = @11 + i32.const 0 + i32.load offset=1048580 + local.tee 6 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@11;) + i32.const 0 + local.get 6 + local.get 0 + i32.or + i32.store offset=1048580 + local.get 4 + local.set 6 + br 1 (;@10;) + end + local.get 4 + i32.load offset=8 + local.set 6 + end + local.get 6 + local.get 3 + i32.store offset=12 + local.get 4 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 4 + i32.store offset=12 + local.get 3 + local.get 6 + i32.store offset=8 + br 4 (;@5;) + end + i32.const 31 + local.set 4 + block ;; label = @9 + local.get 0 + i32.const 16777215 + i32.gt_u + br_if 0 (;@9;) + local.get 0 + i32.const 38 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + local.get 3 + local.get 4 + i32.store offset=28 + local.get 3 + i64.const 0 + i64.store offset=16 align=4 + local.get 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 6 + block ;; label = @9 + i32.const 0 + i32.load offset=1048584 + local.tee 9 + i32.const 1 + local.get 4 + i32.shl + local.tee 7 + i32.and + br_if 0 (;@9;) + local.get 6 + local.get 3 + i32.store + i32.const 0 + local.get 9 + local.get 7 + i32.or + i32.store offset=1048584 + local.get 3 + local.get 6 + i32.store offset=24 + local.get 3 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 3 + i32.store offset=12 + br 4 (;@5;) + end + local.get 0 + i32.const 0 + i32.const 25 + local.get 4 + i32.const 1 + i32.shr_u + i32.sub + local.get 4 + i32.const 31 + i32.eq + select + i32.shl + local.set 4 + local.get 6 + i32.load + local.set 9 + loop ;; label = @9 + local.get 9 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 0 + i32.eq + br_if 3 (;@6;) + local.get 4 + i32.const 29 + i32.shr_u + local.set 9 + local.get 4 + i32.const 1 + i32.shl + local.set 4 + local.get 6 + local.get 9 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 7 + i32.load + local.tee 9 + br_if 0 (;@9;) + end + local.get 7 + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + local.get 3 + local.get 3 + i32.store offset=12 + local.get 3 + local.get 3 + i32.store offset=8 + br 3 (;@5;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 5 + i32.store offset=12 + local.get 6 + local.get 5 + i32.store offset=8 + local.get 5 + i32.const 0 + i32.store offset=24 + local.get 5 + local.get 6 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + end + local.get 2 + i32.const 8 + i32.add + local.set 4 + br 5 (;@1;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.store offset=12 + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + i32.const 0 + i32.store offset=24 + local.get 3 + local.get 6 + i32.store offset=12 + local.get 3 + local.get 4 + i32.store offset=8 + end + i32.const 0 + i32.load offset=1048592 + local.tee 4 + local.get 5 + i32.le_u + br_if 0 (;@4;) + i32.const 0 + i32.load offset=1048604 + local.tee 3 + local.get 5 + i32.add + local.tee 6 + local.get 4 + local.get 5 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048592 + i32.const 0 + local.get 6 + i32.store offset=1048604 + local.get 3 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + i32.const 8 + i32.add + local.set 4 + br 3 (;@1;) + end + i32.const 0 + local.set 4 + i32.const 0 + i32.const 48 + i32.store offset=1049076 + br 2 (;@1;) + end + block ;; label = @3 + local.get 2 + i32.eqz + br_if 0 (;@3;) + block ;; label = @4 + block ;; label = @5 + local.get 9 + local.get 9 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 4 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 4 + local.get 0 + i32.store + local.get 0 + br_if 1 (;@4;) + i32.const 0 + local.get 10 + i32.const -2 + local.get 6 + i32.rotl + i32.and + local.tee 10 + i32.store offset=1048584 + br 2 (;@3;) + end + local.get 2 + i32.const 16 + i32.const 20 + local.get 2 + i32.load offset=16 + local.get 9 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 1 (;@3;) + end + local.get 0 + local.get 2 + i32.store offset=24 + block ;; label = @4 + local.get 9 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 0 (;@4;) + local.get 0 + local.get 4 + i32.store offset=16 + local.get 4 + local.get 0 + i32.store offset=24 + end + local.get 9 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 0 (;@3;) + local.get 0 + i32.const 20 + i32.add + local.get 4 + i32.store + local.get 4 + local.get 0 + i32.store offset=24 + end + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.const 15 + i32.gt_u + br_if 0 (;@4;) + local.get 9 + local.get 3 + local.get 5 + i32.add + local.tee 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 9 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@3;) + end + local.get 9 + local.get 5 + i32.add + local.tee 0 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 9 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 3 + i32.add + local.get 3 + i32.store + block ;; label = @4 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 3 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 4 + block ;; label = @5 + block ;; label = @6 + i32.const 0 + i32.load offset=1048580 + local.tee 6 + i32.const 1 + local.get 3 + i32.const 3 + i32.shr_u + i32.shl + local.tee 3 + i32.and + br_if 0 (;@6;) + i32.const 0 + local.get 6 + local.get 3 + i32.or + i32.store offset=1048580 + local.get 4 + local.set 3 + br 1 (;@5;) + end + local.get 4 + i32.load offset=8 + local.set 3 + end + local.get 3 + local.get 0 + i32.store offset=12 + local.get 4 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 4 + i32.store offset=12 + local.get 0 + local.get 3 + i32.store offset=8 + br 1 (;@3;) + end + i32.const 31 + local.set 4 + block ;; label = @4 + local.get 3 + i32.const 16777215 + i32.gt_u + br_if 0 (;@4;) + local.get 3 + i32.const 38 + local.get 3 + i32.const 8 + i32.shr_u + i32.clz + local.tee 4 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 4 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + local.get 0 + local.get 4 + i32.store offset=28 + local.get 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 6 + block ;; label = @4 + local.get 10 + i32.const 1 + local.get 4 + i32.shl + local.tee 5 + i32.and + br_if 0 (;@4;) + local.get 6 + local.get 0 + i32.store + i32.const 0 + local.get 10 + local.get 5 + i32.or + i32.store offset=1048584 + local.get 0 + local.get 6 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 0 + i32.store offset=12 + br 1 (;@3;) + end + local.get 3 + i32.const 0 + i32.const 25 + local.get 4 + i32.const 1 + i32.shr_u + i32.sub + local.get 4 + i32.const 31 + i32.eq + select + i32.shl + local.set 4 + local.get 6 + i32.load + local.set 5 + block ;; label = @4 + loop ;; label = @5 + local.get 5 + local.tee 6 + i32.load offset=4 + i32.const -8 + i32.and + local.get 3 + i32.eq + br_if 1 (;@4;) + local.get 4 + i32.const 29 + i32.shr_u + local.set 5 + local.get 4 + i32.const 1 + i32.shl + local.set 4 + local.get 6 + local.get 5 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 7 + i32.load + local.tee 5 + br_if 0 (;@5;) + end + local.get 7 + local.get 0 + i32.store + local.get 0 + local.get 6 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + br 1 (;@3;) + end + local.get 6 + i32.load offset=8 + local.tee 4 + local.get 0 + i32.store offset=12 + local.get 6 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 6 + i32.store offset=12 + local.get 0 + local.get 4 + i32.store offset=8 + end + local.get 9 + i32.const 8 + i32.add + local.set 4 + br 1 (;@1;) + end + block ;; label = @2 + local.get 11 + i32.eqz + br_if 0 (;@2;) + block ;; label = @3 + block ;; label = @4 + local.get 0 + local.get 0 + i32.load offset=28 + local.tee 6 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 4 + i32.load + i32.ne + br_if 0 (;@4;) + local.get 4 + local.get 9 + i32.store + local.get 9 + br_if 1 (;@3;) + i32.const 0 + local.get 10 + i32.const -2 + local.get 6 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@2;) + end + local.get 11 + i32.const 16 + i32.const 20 + local.get 11 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 9 + i32.store + local.get 9 + i32.eqz + br_if 1 (;@2;) + end + local.get 9 + local.get 11 + i32.store offset=24 + block ;; label = @3 + local.get 0 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 0 (;@3;) + local.get 9 + local.get 4 + i32.store offset=16 + local.get 4 + local.get 9 + i32.store offset=24 + end + local.get 0 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 0 (;@2;) + local.get 9 + i32.const 20 + i32.add + local.get 4 + i32.store + local.get 4 + local.get 9 + i32.store offset=24 + end + block ;; label = @2 + block ;; label = @3 + local.get 3 + i32.const 15 + i32.gt_u + br_if 0 (;@3;) + local.get 0 + local.get 3 + local.get 5 + i32.add + local.tee 4 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@2;) + end + local.get 0 + local.get 5 + i32.add + local.tee 6 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 3 + i32.add + local.get 3 + i32.store + block ;; label = @3 + local.get 8 + i32.eqz + br_if 0 (;@3;) + local.get 8 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1048600 + local.set 4 + block ;; label = @4 + block ;; label = @5 + i32.const 1 + local.get 8 + i32.const 3 + i32.shr_u + i32.shl + local.tee 9 + local.get 7 + i32.and + br_if 0 (;@5;) + i32.const 0 + local.get 9 + local.get 7 + i32.or + i32.store offset=1048580 + local.get 5 + local.set 9 + br 1 (;@4;) + end + local.get 5 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 4 + i32.store offset=12 + local.get 5 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 5 + i32.store offset=12 + local.get 4 + local.get 9 + i32.store offset=8 + end + i32.const 0 + local.get 6 + i32.store offset=1048600 + i32.const 0 + local.get 3 + i32.store offset=1048588 + end + local.get 0 + i32.const 8 + i32.add + local.set 4 + end + local.get 1 + i32.const 16 + i32.add + global.set $__stack_pointer + local.get 4 + ) + (func $free (;6;) (type 3) (param i32) + local.get 0 + call $dlfree + ) + (func $dlfree (;7;) (type 3) (param i32) + (local i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + local.get 0 + i32.eqz + br_if 0 (;@1;) + local.get 0 + i32.const -8 + i32.add + local.tee 1 + local.get 0 + i32.const -4 + i32.add + i32.load + local.tee 2 + i32.const -8 + i32.and + local.tee 0 + i32.add + local.set 3 + block ;; label = @2 + local.get 2 + i32.const 1 + i32.and + br_if 0 (;@2;) + local.get 2 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 1 + local.get 1 + i32.load + local.tee 2 + i32.sub + local.tee 1 + i32.const 0 + i32.load offset=1048596 + local.tee 4 + i32.lt_u + br_if 1 (;@1;) + local.get 2 + local.get 0 + i32.add + local.set 0 + block ;; label = @3 + local.get 1 + i32.const 0 + i32.load offset=1048600 + i32.eq + br_if 0 (;@3;) + block ;; label = @4 + local.get 2 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 1 + i32.load offset=8 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @5 + local.get 1 + i32.load offset=12 + local.tee 2 + local.get 4 + i32.ne + br_if 0 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 3 (;@2;) + end + local.get 2 + local.get 6 + i32.eq + drop + local.get 2 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 2 + i32.store offset=12 + br 2 (;@2;) + end + local.get 1 + i32.load offset=24 + local.set 7 + block ;; label = @4 + block ;; label = @5 + local.get 1 + i32.load offset=12 + local.tee 6 + local.get 1 + i32.eq + br_if 0 (;@5;) + local.get 1 + i32.load offset=8 + local.tee 2 + local.get 4 + i32.lt_u + drop + local.get 6 + local.get 2 + i32.store offset=8 + local.get 2 + local.get 6 + i32.store offset=12 + br 1 (;@4;) + end + block ;; label = @5 + local.get 1 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + local.get 1 + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + i32.const 0 + local.set 6 + br 1 (;@4;) + end + loop ;; label = @5 + local.get 2 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@5;) + local.get 6 + i32.const 16 + i32.add + local.set 2 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@5;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 1 (;@2;) + block ;; label = @4 + block ;; label = @5 + local.get 1 + local.get 1 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 2 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 2 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@4;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 3 (;@2;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 1 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 2 (;@2;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @4 + local.get 1 + i32.load offset=16 + local.tee 2 + i32.eqz + br_if 0 (;@4;) + local.get 6 + local.get 2 + i32.store offset=16 + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 1 + i32.load offset=20 + local.tee 2 + i32.eqz + br_if 1 (;@2;) + local.get 6 + i32.const 20 + i32.add + local.get 2 + i32.store + local.get 2 + local.get 6 + i32.store offset=24 + br 1 (;@2;) + end + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 0 (;@2;) + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + i32.const 0 + local.get 0 + i32.store offset=1048588 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + return + end + local.get 1 + local.get 3 + i32.ge_u + br_if 0 (;@1;) + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 1 + i32.and + i32.eqz + br_if 0 (;@1;) + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.const 2 + i32.and + br_if 0 (;@3;) + block ;; label = @4 + local.get 3 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048604 + i32.const 0 + i32.const 0 + i32.load offset=1048592 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048592 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048588 + i32.const 0 + i32.const 0 + i32.store offset=1048600 + return + end + block ;; label = @4 + local.get 3 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048600 + i32.const 0 + i32.const 0 + i32.load offset=1048588 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048588 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + return + end + local.get 2 + i32.const -8 + i32.and + local.get 0 + i32.add + local.set 0 + block ;; label = @4 + block ;; label = @5 + local.get 2 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 3 + i32.load offset=8 + local.tee 4 + local.get 2 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @6 + local.get 3 + i32.load offset=12 + local.tee 2 + local.get 4 + i32.ne + br_if 0 (;@6;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@4;) + end + local.get 2 + local.get 6 + i32.eq + drop + local.get 2 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 2 + i32.store offset=12 + br 1 (;@4;) + end + local.get 3 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.load offset=12 + local.tee 6 + local.get 3 + i32.eq + br_if 0 (;@6;) + local.get 3 + i32.load offset=8 + local.tee 2 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 6 + local.get 2 + i32.store offset=8 + local.get 2 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 3 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 3 + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 2 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 2 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + block ;; label = @6 + local.get 3 + local.get 3 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 2 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 2 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@4;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 3 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 1 (;@4;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 3 + i32.load offset=16 + local.tee 2 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 2 + i32.store offset=16 + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 3 + i32.load offset=20 + local.tee 2 + i32.eqz + br_if 0 (;@4;) + local.get 6 + i32.const 20 + i32.add + local.get 2 + i32.store + local.get 2 + local.get 6 + i32.store offset=24 + end + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 0 + i32.store offset=1048588 + return + end + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + end + block ;; label = @2 + local.get 0 + i32.const 255 + i32.gt_u + br_if 0 (;@2;) + local.get 0 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 2 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048580 + local.tee 4 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@4;) + i32.const 0 + local.get 4 + local.get 0 + i32.or + i32.store offset=1048580 + local.get 2 + local.set 0 + br 1 (;@3;) + end + local.get 2 + i32.load offset=8 + local.set 0 + end + local.get 0 + local.get 1 + i32.store offset=12 + local.get 2 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 2 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + return + end + i32.const 31 + local.set 2 + block ;; label = @2 + local.get 0 + i32.const 16777215 + i32.gt_u + br_if 0 (;@2;) + local.get 0 + i32.const 38 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 2 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 2 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 2 + end + local.get 1 + local.get 2 + i32.store offset=28 + local.get 1 + i64.const 0 + i64.store offset=16 align=4 + local.get 2 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 4 + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1048584 + local.tee 6 + i32.const 1 + local.get 2 + i32.shl + local.tee 3 + i32.and + br_if 0 (;@3;) + local.get 4 + local.get 1 + i32.store + i32.const 0 + local.get 6 + local.get 3 + i32.or + i32.store offset=1048584 + local.get 1 + local.get 4 + i32.store offset=24 + local.get 1 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 1 + i32.store offset=12 + br 1 (;@2;) + end + local.get 0 + i32.const 0 + i32.const 25 + local.get 2 + i32.const 1 + i32.shr_u + i32.sub + local.get 2 + i32.const 31 + i32.eq + select + i32.shl + local.set 2 + local.get 4 + i32.load + local.set 6 + block ;; label = @3 + loop ;; label = @4 + local.get 6 + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 0 + i32.eq + br_if 1 (;@3;) + local.get 2 + i32.const 29 + i32.shr_u + local.set 6 + local.get 2 + i32.const 1 + i32.shl + local.set 2 + local.get 4 + local.get 6 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 6 + br_if 0 (;@4;) + end + local.get 3 + local.get 1 + i32.store + local.get 1 + local.get 4 + i32.store offset=24 + local.get 1 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 1 + i32.store offset=8 + br 1 (;@2;) + end + local.get 4 + i32.load offset=8 + local.tee 0 + local.get 1 + i32.store offset=12 + local.get 4 + local.get 1 + i32.store offset=8 + local.get 1 + i32.const 0 + i32.store offset=24 + local.get 1 + local.get 4 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + end + i32.const 0 + i32.const 0 + i32.load offset=1048612 + i32.const -1 + i32.add + local.tee 1 + i32.const -1 + local.get 1 + select + i32.store offset=1048612 + end + ) + (func $realloc (;8;) (type 0) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + local.get 1 + call $dlmalloc + return + end + block ;; label = @1 + local.get 1 + i32.const -64 + i32.lt_u + br_if 0 (;@1;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + i32.const 0 + return + end + i32.const 16 + local.get 1 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.set 2 + local.get 0 + i32.const -4 + i32.add + local.tee 3 + i32.load + local.tee 4 + i32.const -8 + i32.and + local.set 5 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 4 + i32.const 3 + i32.and + br_if 0 (;@3;) + local.get 2 + i32.const 256 + i32.lt_u + br_if 1 (;@2;) + local.get 5 + local.get 2 + i32.const 4 + i32.or + i32.lt_u + br_if 1 (;@2;) + local.get 5 + local.get 2 + i32.sub + i32.const 0 + i32.load offset=1049060 + i32.const 1 + i32.shl + i32.le_u + br_if 2 (;@1;) + br 1 (;@2;) + end + local.get 0 + i32.const -8 + i32.add + local.tee 6 + local.get 5 + i32.add + local.set 7 + block ;; label = @3 + local.get 5 + local.get 2 + i32.lt_u + br_if 0 (;@3;) + local.get 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 16 + i32.lt_u + br_if 2 (;@1;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.const 3 + i32.or + i32.store offset=4 + local.get 7 + local.get 7 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 1 + call $dispose_chunk + local.get 0 + return + end + block ;; label = @3 + local.get 7 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1048592 + local.get 5 + i32.add + local.tee 5 + local.get 2 + i32.le_u + br_if 1 (;@2;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + i32.const 0 + local.get 6 + local.get 2 + i32.add + local.tee 1 + i32.store offset=1048604 + i32.const 0 + local.get 5 + local.get 2 + i32.sub + local.tee 2 + i32.store offset=1048592 + local.get 1 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + return + end + block ;; label = @3 + local.get 7 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1048588 + local.get 5 + i32.add + local.tee 5 + local.get 2 + i32.lt_u + br_if 1 (;@2;) + block ;; label = @4 + block ;; label = @5 + local.get 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 16 + i32.lt_u + br_if 0 (;@5;) + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 5 + i32.add + local.tee 5 + local.get 1 + i32.store + local.get 5 + local.get 5 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + br 1 (;@4;) + end + local.get 3 + local.get 4 + i32.const 1 + i32.and + local.get 5 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 5 + i32.add + local.tee 1 + local.get 1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 1 + i32.const 0 + local.set 2 + end + i32.const 0 + local.get 2 + i32.store offset=1048600 + i32.const 0 + local.get 1 + i32.store offset=1048588 + local.get 0 + return + end + local.get 7 + i32.load offset=4 + local.tee 8 + i32.const 2 + i32.and + br_if 0 (;@2;) + local.get 8 + i32.const -8 + i32.and + local.get 5 + i32.add + local.tee 9 + local.get 2 + i32.lt_u + br_if 0 (;@2;) + local.get 9 + local.get 2 + i32.sub + local.set 10 + block ;; label = @3 + block ;; label = @4 + local.get 8 + i32.const 255 + i32.gt_u + br_if 0 (;@4;) + local.get 7 + i32.load offset=8 + local.tee 1 + local.get 8 + i32.const 3 + i32.shr_u + local.tee 11 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 8 + i32.eq + drop + block ;; label = @5 + local.get 7 + i32.load offset=12 + local.tee 5 + local.get 1 + i32.ne + br_if 0 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 11 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@3;) + end + local.get 5 + local.get 8 + i32.eq + drop + local.get 5 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 5 + i32.store offset=12 + br 1 (;@3;) + end + local.get 7 + i32.load offset=24 + local.set 12 + block ;; label = @4 + block ;; label = @5 + local.get 7 + i32.load offset=12 + local.tee 8 + local.get 7 + i32.eq + br_if 0 (;@5;) + local.get 7 + i32.load offset=8 + local.tee 1 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 8 + local.get 1 + i32.store offset=8 + local.get 1 + local.get 8 + i32.store offset=12 + br 1 (;@4;) + end + block ;; label = @5 + local.get 7 + i32.const 20 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + local.get 7 + i32.const 16 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + i32.const 0 + local.set 8 + br 1 (;@4;) + end + loop ;; label = @5 + local.get 1 + local.set 11 + local.get 5 + local.tee 8 + i32.const 20 + i32.add + local.tee 1 + i32.load + local.tee 5 + br_if 0 (;@5;) + local.get 8 + i32.const 16 + i32.add + local.set 1 + local.get 8 + i32.load offset=16 + local.tee 5 + br_if 0 (;@5;) + end + local.get 11 + i32.const 0 + i32.store + end + local.get 12 + i32.eqz + br_if 0 (;@3;) + block ;; label = @4 + block ;; label = @5 + local.get 7 + local.get 7 + i32.load offset=28 + local.tee 5 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 1 + i32.load + i32.ne + br_if 0 (;@5;) + local.get 1 + local.get 8 + i32.store + local.get 8 + br_if 1 (;@4;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@3;) + end + local.get 12 + i32.const 16 + i32.const 20 + local.get 12 + i32.load offset=16 + local.get 7 + i32.eq + select + i32.add + local.get 8 + i32.store + local.get 8 + i32.eqz + br_if 1 (;@3;) + end + local.get 8 + local.get 12 + i32.store offset=24 + block ;; label = @4 + local.get 7 + i32.load offset=16 + local.tee 1 + i32.eqz + br_if 0 (;@4;) + local.get 8 + local.get 1 + i32.store offset=16 + local.get 1 + local.get 8 + i32.store offset=24 + end + local.get 7 + i32.load offset=20 + local.tee 1 + i32.eqz + br_if 0 (;@3;) + local.get 8 + i32.const 20 + i32.add + local.get 1 + i32.store + local.get 1 + local.get 8 + i32.store offset=24 + end + block ;; label = @3 + local.get 10 + i32.const 15 + i32.gt_u + br_if 0 (;@3;) + local.get 3 + local.get 4 + i32.const 1 + i32.and + local.get 9 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 9 + i32.add + local.tee 1 + local.get 1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + return + end + local.get 3 + local.get 2 + local.get 4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 1 + local.get 10 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 9 + i32.add + local.tee 2 + local.get 2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 10 + call $dispose_chunk + local.get 0 + return + end + block ;; label = @2 + local.get 1 + call $dlmalloc + local.tee 2 + br_if 0 (;@2;) + i32.const 0 + return + end + local.get 2 + local.get 0 + i32.const -4 + i32.const -8 + local.get 3 + i32.load + local.tee 5 + i32.const 3 + i32.and + select + local.get 5 + i32.const -8 + i32.and + i32.add + local.tee 5 + local.get 1 + local.get 5 + local.get 1 + i32.lt_u + select + call $memcpy + local.set 1 + local.get 0 + call $dlfree + local.get 1 + local.set 0 + end + local.get 0 + ) + (func $dispose_chunk (;9;) (type 4) (param i32 i32) + (local i32 i32 i32 i32 i32 i32) + local.get 0 + local.get 1 + i32.add + local.set 2 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.load offset=4 + local.tee 3 + i32.const 1 + i32.and + br_if 0 (;@2;) + local.get 3 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 0 + i32.load + local.tee 3 + local.get 1 + i32.add + local.set 1 + block ;; label = @3 + block ;; label = @4 + local.get 0 + local.get 3 + i32.sub + local.tee 0 + i32.const 0 + i32.load offset=1048600 + i32.eq + br_if 0 (;@4;) + block ;; label = @5 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 0 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + local.get 0 + i32.load offset=12 + local.tee 3 + local.get 4 + i32.ne + br_if 2 (;@3;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 3 (;@2;) + end + local.get 0 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 0 + i32.load offset=12 + local.tee 6 + local.get 0 + i32.eq + br_if 0 (;@6;) + local.get 0 + i32.load offset=8 + local.tee 3 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 0 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 0 + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 3 + local.set 5 + local.get 4 + local.tee 6 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 4 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 3 + local.get 6 + i32.load offset=16 + local.tee 4 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 2 (;@2;) + block ;; label = @5 + block ;; label = @6 + local.get 0 + local.get 0 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 4 (;@2;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 3 (;@2;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 0 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 0 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 2 (;@2;) + local.get 6 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + br 2 (;@2;) + end + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 1 (;@2;) + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + i32.const 0 + local.get 1 + i32.store offset=1048588 + local.get 2 + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + return + end + local.get 3 + local.get 6 + i32.eq + drop + local.get 3 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 3 + i32.store offset=12 + end + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 2 + i32.and + br_if 0 (;@3;) + block ;; label = @4 + local.get 2 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048604 + i32.const 0 + i32.const 0 + i32.load offset=1048592 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048592 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048588 + i32.const 0 + i32.const 0 + i32.store offset=1048600 + return + end + block ;; label = @4 + local.get 2 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048600 + i32.const 0 + i32.const 0 + i32.load offset=1048588 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048588 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + return + end + local.get 3 + i32.const -8 + i32.and + local.get 1 + i32.add + local.set 1 + block ;; label = @4 + block ;; label = @5 + local.get 3 + i32.const 255 + i32.gt_u + br_if 0 (;@5;) + local.get 2 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 5 + i32.const 3 + i32.shl + i32.const 1048620 + i32.add + local.tee 6 + i32.eq + drop + block ;; label = @6 + local.get 2 + i32.load offset=12 + local.tee 3 + local.get 4 + i32.ne + br_if 0 (;@6;) + i32.const 0 + i32.const 0 + i32.load offset=1048580 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048580 + br 2 (;@4;) + end + local.get 3 + local.get 6 + i32.eq + drop + local.get 3 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 3 + i32.store offset=12 + br 1 (;@4;) + end + local.get 2 + i32.load offset=24 + local.set 7 + block ;; label = @5 + block ;; label = @6 + local.get 2 + i32.load offset=12 + local.tee 6 + local.get 2 + i32.eq + br_if 0 (;@6;) + local.get 2 + i32.load offset=8 + local.tee 3 + i32.const 0 + i32.load offset=1048596 + i32.lt_u + drop + local.get 6 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 6 + i32.store offset=12 + br 1 (;@5;) + end + block ;; label = @6 + local.get 2 + i32.const 20 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + local.get 2 + i32.const 16 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + i32.const 0 + local.set 6 + br 1 (;@5;) + end + loop ;; label = @6 + local.get 4 + local.set 5 + local.get 3 + local.tee 6 + i32.const 20 + i32.add + local.tee 4 + i32.load + local.tee 3 + br_if 0 (;@6;) + local.get 6 + i32.const 16 + i32.add + local.set 4 + local.get 6 + i32.load offset=16 + local.tee 3 + br_if 0 (;@6;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 7 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + block ;; label = @6 + local.get 2 + local.get 2 + i32.load offset=28 + local.tee 4 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.tee 3 + i32.load + i32.ne + br_if 0 (;@6;) + local.get 3 + local.get 6 + i32.store + local.get 6 + br_if 1 (;@5;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@4;) + end + local.get 7 + i32.const 16 + i32.const 20 + local.get 7 + i32.load offset=16 + local.get 2 + i32.eq + select + i32.add + local.get 6 + i32.store + local.get 6 + i32.eqz + br_if 1 (;@4;) + end + local.get 6 + local.get 7 + i32.store offset=24 + block ;; label = @5 + local.get 2 + i32.load offset=16 + local.tee 3 + i32.eqz + br_if 0 (;@5;) + local.get 6 + local.get 3 + i32.store offset=16 + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 2 + i32.load offset=20 + local.tee 3 + i32.eqz + br_if 0 (;@4;) + local.get 6 + i32.const 20 + i32.add + local.get 3 + i32.store + local.get 3 + local.get 6 + i32.store offset=24 + end + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1048600 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 1 + i32.store offset=1048588 + return + end + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + end + block ;; label = @2 + local.get 1 + i32.const 255 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + i32.const -8 + i32.and + i32.const 1048620 + i32.add + local.set 3 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048580 + local.tee 4 + i32.const 1 + local.get 1 + i32.const 3 + i32.shr_u + i32.shl + local.tee 1 + i32.and + br_if 0 (;@4;) + i32.const 0 + local.get 4 + local.get 1 + i32.or + i32.store offset=1048580 + local.get 3 + local.set 1 + br 1 (;@3;) + end + local.get 3 + i32.load offset=8 + local.set 1 + end + local.get 1 + local.get 0 + i32.store offset=12 + local.get 3 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 3 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + return + end + i32.const 31 + local.set 3 + block ;; label = @2 + local.get 1 + i32.const 16777215 + i32.gt_u + br_if 0 (;@2;) + local.get 1 + i32.const 38 + local.get 1 + i32.const 8 + i32.shr_u + i32.clz + local.tee 3 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 3 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 3 + end + local.get 0 + local.get 3 + i32.store offset=28 + local.get 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 3 + i32.const 2 + i32.shl + i32.const 1048884 + i32.add + local.set 4 + block ;; label = @2 + i32.const 0 + i32.load offset=1048584 + local.tee 6 + i32.const 1 + local.get 3 + i32.shl + local.tee 2 + i32.and + br_if 0 (;@2;) + local.get 4 + local.get 0 + i32.store + i32.const 0 + local.get 6 + local.get 2 + i32.or + i32.store offset=1048584 + local.get 0 + local.get 4 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 0 + i32.store offset=12 + return + end + local.get 1 + i32.const 0 + i32.const 25 + local.get 3 + i32.const 1 + i32.shr_u + i32.sub + local.get 3 + i32.const 31 + i32.eq + select + i32.shl + local.set 3 + local.get 4 + i32.load + local.set 6 + block ;; label = @2 + loop ;; label = @3 + local.get 6 + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 1 + i32.eq + br_if 1 (;@2;) + local.get 3 + i32.const 29 + i32.shr_u + local.set 6 + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 4 + local.get 6 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 2 + i32.load + local.tee 6 + br_if 0 (;@3;) + end + local.get 2 + local.get 0 + i32.store + local.get 0 + local.get 4 + i32.store offset=24 + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + return + end + local.get 4 + i32.load offset=8 + local.tee 1 + local.get 0 + i32.store offset=12 + local.get 4 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 4 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + end + ) + (func $internal_memalign (;10;) (type 0) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.const 16 + local.get 0 + i32.const 16 + i32.gt_u + select + local.tee 2 + local.get 2 + i32.const -1 + i32.add + i32.and + br_if 0 (;@2;) + local.get 2 + local.set 0 + br 1 (;@1;) + end + i32.const 32 + local.set 3 + loop ;; label = @2 + local.get 3 + local.tee 0 + i32.const 1 + i32.shl + local.set 3 + local.get 0 + local.get 2 + i32.lt_u + br_if 0 (;@2;) + end + end + block ;; label = @1 + i32.const -64 + local.get 0 + i32.sub + local.get 1 + i32.gt_u + br_if 0 (;@1;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + i32.const 0 + return + end + block ;; label = @1 + local.get 0 + i32.const 16 + local.get 1 + i32.const 19 + i32.add + i32.const -16 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.tee 1 + i32.add + i32.const 12 + i32.add + call $dlmalloc + local.tee 3 + br_if 0 (;@1;) + i32.const 0 + return + end + local.get 3 + i32.const -8 + i32.add + local.set 2 + block ;; label = @1 + block ;; label = @2 + local.get 0 + i32.const -1 + i32.add + local.get 3 + i32.and + br_if 0 (;@2;) + local.get 2 + local.set 0 + br 1 (;@1;) + end + local.get 3 + i32.const -4 + i32.add + local.tee 4 + i32.load + local.tee 5 + i32.const -8 + i32.and + local.get 3 + local.get 0 + i32.add + i32.const -1 + i32.add + i32.const 0 + local.get 0 + i32.sub + i32.and + i32.const -8 + i32.add + local.tee 3 + i32.const 0 + local.get 0 + local.get 3 + local.get 2 + i32.sub + i32.const 15 + i32.gt_u + select + i32.add + local.tee 0 + local.get 2 + i32.sub + local.tee 3 + i32.sub + local.set 6 + block ;; label = @2 + local.get 5 + i32.const 3 + i32.and + br_if 0 (;@2;) + local.get 0 + local.get 6 + i32.store offset=4 + local.get 0 + local.get 2 + i32.load + local.get 3 + i32.add + i32.store + br 1 (;@1;) + end + local.get 0 + local.get 6 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 6 + i32.add + local.tee 6 + local.get 6 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 4 + local.get 3 + local.get 4 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 2 + local.get 3 + i32.add + local.tee 6 + local.get 6 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 3 + call $dispose_chunk + end + block ;; label = @1 + local.get 0 + i32.load offset=4 + local.tee 3 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@1;) + local.get 3 + i32.const -8 + i32.and + local.tee 2 + local.get 1 + i32.const 16 + i32.add + i32.le_u + br_if 0 (;@1;) + local.get 0 + local.get 1 + local.get 3 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.tee 3 + local.get 2 + local.get 1 + i32.sub + local.tee 1 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.tee 2 + local.get 2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 1 + call $dispose_chunk + end + local.get 0 + i32.const 8 + i32.add + ) + (func $aligned_alloc (;11;) (type 0) (param i32 i32) (result i32) + block ;; label = @1 + local.get 0 + i32.const 16 + i32.gt_u + br_if 0 (;@1;) + local.get 1 + call $dlmalloc + return + end + local.get 0 + local.get 1 + call $internal_memalign + ) + (func $abort (;12;) (type 5) + unreachable + unreachable + ) + (func $sbrk (;13;) (type 2) (param i32) (result i32) + block ;; label = @1 + local.get 0 + br_if 0 (;@1;) + memory.size + i32.const 16 + i32.shl + return + end + block ;; label = @1 + local.get 0 + i32.const 65535 + i32.and + br_if 0 (;@1;) + local.get 0 + i32.const -1 + i32.le_s + br_if 0 (;@1;) + block ;; label = @2 + local.get 0 + i32.const 16 + i32.shr_u + memory.grow + local.tee 0 + i32.const -1 + i32.ne + br_if 0 (;@2;) + i32.const 0 + i32.const 48 + i32.store offset=1049076 + i32.const -1 + return + end + local.get 0 + i32.const 16 + i32.shl + return + end + call $abort + unreachable + ) + (func $memcpy (;14;) (type 6) (param i32 i32 i32) (result i32) + (local i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 2 + i32.const 32 + i32.gt_u + br_if 0 (;@3;) + local.get 1 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@2;) + local.get 2 + i32.eqz + br_if 1 (;@2;) + local.get 0 + local.get 1 + i32.load8_u + i32.store8 + local.get 2 + i32.const -1 + i32.add + local.set 3 + local.get 0 + i32.const 1 + i32.add + local.set 4 + local.get 1 + i32.const 1 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get 2 + i32.const -2 + i32.add + local.set 3 + local.get 0 + i32.const 2 + i32.add + local.set 4 + local.get 1 + i32.const 2 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=2 + i32.store8 offset=2 + local.get 2 + i32.const -3 + i32.add + local.set 3 + local.get 0 + i32.const 3 + i32.add + local.set 4 + local.get 1 + i32.const 3 + i32.add + local.tee 5 + i32.const 3 + i32.and + i32.eqz + br_if 2 (;@1;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + local.get 0 + local.get 1 + i32.load8_u offset=3 + i32.store8 offset=3 + local.get 2 + i32.const -4 + i32.add + local.set 3 + local.get 0 + i32.const 4 + i32.add + local.set 4 + local.get 1 + i32.const 4 + i32.add + local.set 5 + br 2 (;@1;) + end + local.get 0 + local.get 1 + local.get 2 + memory.copy + local.get 0 + return + end + local.get 2 + local.set 3 + local.get 0 + local.set 4 + local.get 1 + local.set 5 + end + block ;; label = @1 + block ;; label = @2 + local.get 4 + i32.const 3 + i32.and + local.tee 2 + br_if 0 (;@2;) + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.const 16 + i32.ge_u + br_if 0 (;@4;) + local.get 3 + local.set 2 + br 1 (;@3;) + end + block ;; label = @4 + local.get 3 + i32.const -16 + i32.add + local.tee 2 + i32.const 16 + i32.and + br_if 0 (;@4;) + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 4 + local.get 5 + i64.load offset=8 align=4 + i64.store offset=8 align=4 + local.get 4 + i32.const 16 + i32.add + local.set 4 + local.get 5 + i32.const 16 + i32.add + local.set 5 + local.get 2 + local.set 3 + end + local.get 2 + i32.const 16 + i32.lt_u + br_if 0 (;@3;) + local.get 3 + local.set 2 + loop ;; label = @4 + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 4 + local.get 5 + i64.load offset=8 align=4 + i64.store offset=8 align=4 + local.get 4 + local.get 5 + i64.load offset=16 align=4 + i64.store offset=16 align=4 + local.get 4 + local.get 5 + i64.load offset=24 align=4 + i64.store offset=24 align=4 + local.get 4 + i32.const 32 + i32.add + local.set 4 + local.get 5 + i32.const 32 + i32.add + local.set 5 + local.get 2 + i32.const -32 + i32.add + local.tee 2 + i32.const 15 + i32.gt_u + br_if 0 (;@4;) + end + end + block ;; label = @3 + local.get 2 + i32.const 8 + i32.lt_u + br_if 0 (;@3;) + local.get 4 + local.get 5 + i64.load align=4 + i64.store align=4 + local.get 5 + i32.const 8 + i32.add + local.set 5 + local.get 4 + i32.const 8 + i32.add + local.set 4 + end + block ;; label = @3 + local.get 2 + i32.const 4 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 4 + local.get 5 + i32.load + i32.store + local.get 5 + i32.const 4 + i32.add + local.set 5 + local.get 4 + i32.const 4 + i32.add + local.set 4 + end + block ;; label = @3 + local.get 2 + i32.const 2 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 4 + local.get 5 + i32.load16_u align=1 + i32.store16 align=1 + local.get 4 + i32.const 2 + i32.add + local.set 4 + local.get 5 + i32.const 2 + i32.add + local.set 5 + end + local.get 2 + i32.const 1 + i32.and + i32.eqz + br_if 1 (;@1;) + local.get 4 + local.get 5 + i32.load8_u + i32.store8 + local.get 0 + return + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.const 32 + i32.lt_u + br_if 0 (;@6;) + block ;; label = @7 + block ;; label = @8 + local.get 2 + i32.const -1 + i32.add + br_table 3 (;@5;) 0 (;@8;) 1 (;@7;) 7 (;@1;) + end + local.get 4 + local.get 5 + i32.load + i32.store16 align=1 + local.get 4 + local.get 5 + i32.const 2 + i32.add + i32.load align=2 + i32.store offset=2 + local.get 4 + local.get 5 + i32.const 6 + i32.add + i64.load align=2 + i64.store offset=6 align=4 + local.get 4 + i32.const 18 + i32.add + local.set 2 + local.get 5 + i32.const 18 + i32.add + local.set 1 + i32.const 14 + local.set 6 + local.get 5 + i32.const 14 + i32.add + i32.load align=2 + local.set 5 + i32.const 14 + local.set 3 + br 3 (;@4;) + end + local.get 4 + local.get 5 + i32.load + i32.store8 + local.get 4 + local.get 5 + i32.const 1 + i32.add + i32.load align=1 + i32.store offset=1 + local.get 4 + local.get 5 + i32.const 5 + i32.add + i64.load align=1 + i64.store offset=5 align=4 + local.get 4 + i32.const 17 + i32.add + local.set 2 + local.get 5 + i32.const 17 + i32.add + local.set 1 + i32.const 13 + local.set 6 + local.get 5 + i32.const 13 + i32.add + i32.load align=1 + local.set 5 + i32.const 15 + local.set 3 + br 2 (;@4;) + end + block ;; label = @6 + block ;; label = @7 + local.get 3 + i32.const 16 + i32.ge_u + br_if 0 (;@7;) + local.get 4 + local.set 2 + local.get 5 + local.set 1 + br 1 (;@6;) + end + local.get 4 + local.get 5 + i32.load8_u + i32.store8 + local.get 4 + local.get 5 + i32.load offset=1 align=1 + i32.store offset=1 align=1 + local.get 4 + local.get 5 + i64.load offset=5 align=1 + i64.store offset=5 align=1 + local.get 4 + local.get 5 + i32.load16_u offset=13 align=1 + i32.store16 offset=13 align=1 + local.get 4 + local.get 5 + i32.load8_u offset=15 + i32.store8 offset=15 + local.get 4 + i32.const 16 + i32.add + local.set 2 + local.get 5 + i32.const 16 + i32.add + local.set 1 + end + local.get 3 + i32.const 8 + i32.and + br_if 2 (;@3;) + br 3 (;@2;) + end + local.get 4 + local.get 5 + i32.load + local.tee 2 + i32.store8 + local.get 4 + local.get 2 + i32.const 16 + i32.shr_u + i32.store8 offset=2 + local.get 4 + local.get 2 + i32.const 8 + i32.shr_u + i32.store8 offset=1 + local.get 4 + local.get 5 + i32.const 3 + i32.add + i32.load align=1 + i32.store offset=3 + local.get 4 + local.get 5 + i32.const 7 + i32.add + i64.load align=1 + i64.store offset=7 align=4 + local.get 4 + i32.const 19 + i32.add + local.set 2 + local.get 5 + i32.const 19 + i32.add + local.set 1 + i32.const 15 + local.set 6 + local.get 5 + i32.const 15 + i32.add + i32.load align=1 + local.set 5 + i32.const 13 + local.set 3 + end + local.get 4 + local.get 6 + i32.add + local.get 5 + i32.store + end + local.get 2 + local.get 1 + i64.load align=1 + i64.store align=1 + local.get 2 + i32.const 8 + i32.add + local.set 2 + local.get 1 + i32.const 8 + i32.add + local.set 1 + end + block ;; label = @2 + local.get 3 + i32.const 4 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.load align=1 + i32.store align=1 + local.get 2 + i32.const 4 + i32.add + local.set 2 + local.get 1 + i32.const 4 + i32.add + local.set 1 + end + block ;; label = @2 + local.get 3 + i32.const 2 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.load16_u align=1 + i32.store16 align=1 + local.get 2 + i32.const 2 + i32.add + local.set 2 + local.get 1 + i32.const 2 + i32.add + local.set 1 + end + local.get 3 + i32.const 1 + i32.and + i32.eqz + br_if 0 (;@1;) + local.get 2 + local.get 1 + i32.load8_u + i32.store8 + end + local.get 0 + ) + (func $cabi_realloc (;15;) (type 1) (param i32 i32 i32 i32) (result i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + br_if 0 (;@3;) + local.get 3 + i32.eqz + br_if 2 (;@1;) + i32.const 0 + i32.load8_u offset=1048576 + drop + local.get 3 + local.get 2 + call $__rust_alloc + local.set 2 + br 1 (;@2;) + end + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call $__rust_realloc + local.set 2 + end + local.get 2 + br_if 0 (;@1;) + unreachable + unreachable + end + local.get 2 + ) + (table (;0;) 1 1 funcref) + (memory (;0;) 17) + (global $__stack_pointer (;0;) (mut i32) i32.const 1048576) + (export "memory" (memory 0)) + (export "cabi_realloc" (func $cabi_realloc)) + ) + (core instance (;0;) (instantiate 0)) + (alias core export 0 "memory" (core memory (;0;))) + (alias core export 0 "cabi_realloc" (core func (;0;))) + (component (;0;) + (type (;0;) u64) + (export (;1;) "felt" (type 0)) + (type (;2;) (tuple 1 1 1 1)) + (export (;3;) "word" (type 2)) + (export (;4;) "account-id" (type 1)) + (export (;5;) "recipient" (type 3)) + (export (;6;) "tag" (type 1)) + (type (;7;) (record (field "asset" 4) (field "amount" u64))) + (export (;8;) "fungible-asset" (type 7)) + (export (;9;) "non-fungible-asset" (type 3)) + (type (;10;) (variant (case "fungible" 8) (case "non-fungible" 9))) + (export (;11;) "asset" (type 10)) + (type (;12;) (list 1)) + (export (;13;) "note-inputs" (type 12)) + ) + (instance (;0;) (instantiate 0)) + (export (;1;) "miden:base/types@1.0.0" (instance 0)) +) \ No newline at end of file diff --git a/tests/integration/src/compiler_test.rs b/tests/integration/src/compiler_test.rs index 4b2a40c5b..9a5aa1713 100644 --- a/tests/integration/src/compiler_test.rs +++ b/tests/integration/src/compiler_test.rs @@ -4,6 +4,7 @@ use std::fs; use std::io::Read; use std::path::Path; use std::process::Command; +use std::process::Stdio; use std::sync::Arc; use miden_assembly::Assembler; @@ -33,7 +34,7 @@ use miden_stdlib::StdLibrary; use midenc_session::InputFile; use midenc_session::Session; -enum CompilerTestSource { +pub enum CompilerTestSource { Rust(String), RustCargo { cargo_project_folder_name: String, @@ -43,16 +44,133 @@ enum CompilerTestSource { // Ir(String), } +impl CompilerTestSource { + pub(crate) fn artifact_name(&self) -> String { + match self { + CompilerTestSource::RustCargo { + cargo_project_folder_name: _, + artifact_name, + } => artifact_name.clone(), + _ => panic!("Not a Rust Cargo project"), + } + } +} + /// Compile to different stages (e.g. Wasm, IR, MASM) and compare the results against expected output pub struct CompilerTest { session: Session, - source: CompilerTestSource, + pub(crate) source: CompilerTestSource, wasm_bytes: Vec, + /// The WIT Rust bindings generated by the wit-bindgen (if Wasm component is compiled) + wit_bind: Option, hir: Option>, ir_masm: Option>, } impl CompilerTest { + /// Compile the Wasm component from a Rust Cargo project using cargo-component + pub fn rust_source_cargo_component(cargo_project_folder: &str) -> Self { + let manifest_path = format!("../rust-apps-wasm/{}/Cargo.toml", cargo_project_folder); + // dbg!(&pwd); + let mut cargo_build_cmd = Command::new("cargo"); + cargo_build_cmd + .arg("component") + .arg("build") + .arg("--manifest-path") + .arg(manifest_path) + .arg("--release") + // compile std as part of crate graph compilation + // https://doc.rust-lang.org/cargo/reference/unstable.html#build-std + .arg("-Z") + .arg("build-std=std,core,alloc,panic_abort") + .arg("-Z") + // abort on panic without message formatting (core::fmt uses call_indirect) + .arg("build-std-features=panic_immediate_abort"); + let mut child = cargo_build_cmd + .arg("--message-format=json-render-diagnostics") + .stdout(Stdio::piped()) + .spawn() + .expect( + format!( + "Failed to execute cargo build {}.", + cargo_build_cmd + .get_args() + .map(|arg| format!("'{}'", arg.to_str().unwrap())) + .collect::>() + .join(" ") + ) + .as_str(), + ); + let reader = std::io::BufReader::new(child.stdout.take().unwrap()); + let mut wasm_artifacts = Vec::new(); + for message in cargo_metadata::Message::parse_stream(reader) { + match message.expect("Failed to parse cargo metadata") { + cargo_metadata::Message::CompilerArtifact(artifact) => { + // find the Wasm artifact in artifact.filenames + for filename in artifact.filenames { + if filename.as_str().ends_with(".wasm") { + wasm_artifacts.push(filename.into_std_path_buf()); + } + } + } + _ => (), + } + } + let output = child.wait().expect("Couldn't get cargo's exit status"); + if !output.success() { + eprintln!("pwd: {:?}", std::env::current_dir().unwrap()); + let mut stderr = Vec::new(); + child + .stderr + .unwrap() + .read(&mut stderr) + .expect("Failed to read stderr"); + let stderr = String::from_utf8(stderr).expect("Failed to parse stderr"); + eprintln!("stderr: {}", stderr); + panic!("Rust to Wasm compilation failed!"); + } + assert!(output.success()); + assert_eq!(wasm_artifacts.len(), 1, "Expected one Wasm artifact"); + let wasm_comp_path = &wasm_artifacts.first().unwrap(); + let artifact_name = wasm_comp_path + .file_stem() + .unwrap() + .to_str() + .unwrap() + .to_string(); + let wasm_comp_filename = wasm_comp_path + .file_stem() + .unwrap() + .to_str() + .unwrap() + .to_string(); + let target_dir = &wasm_comp_path + .parent() // remove file + .unwrap() + .parent() // remove release + .unwrap() + .parent() // remove wasm32-wasi (target) + .unwrap(); + let crate_name_dashed = wasm_comp_filename.replace("_", "-"); + let wit_bind_path = target_dir + .join("bindings") + .join(crate_name_dashed) + .join("bindings.rs"); + dbg!(&wit_bind_path); + let wit_bind_str = String::from_utf8(std::fs::read(wit_bind_path).unwrap()).unwrap(); + Self { + session: default_session(), + source: CompilerTestSource::RustCargo { + cargo_project_folder_name: cargo_project_folder.to_string(), + artifact_name, + }, + wasm_bytes: fs::read(wasm_artifacts.first().unwrap()).unwrap(), + wit_bind: Some(wit_bind_str), + hir: None, + ir_masm: None, + } + } + /// Set the Rust source code to compile using a Cargo project and binary bundle name pub fn rust_source_cargo( cargo_project_folder: &str, @@ -123,6 +241,7 @@ impl CompilerTest { wasm_bytes, hir: Some(hir_program.into()), ir_masm: None, + wit_bind: None, } } @@ -146,6 +265,7 @@ impl CompilerTest { wasm_bytes, hir: Some(ir_program), ir_masm: None, + wit_bind: None, } } @@ -191,16 +311,23 @@ impl CompilerTest { wasm_bytes, hir: Some(ir_program_with_entrypoint), ir_masm: None, + wit_bind: None, } } /// Compare the compiled Wasm against the expected output - pub fn expect_wasm(&mut self, expected_wat_file: expect_test::ExpectFile) { + pub fn expect_wasm(&self, expected_wat_file: expect_test::ExpectFile) { let wasm_bytes = self.wasm_bytes.as_ref(); let wat = demangle(&wasm_to_wat(wasm_bytes)); expected_wat_file.assert_eq(&wat); } + /// Compare the generated WIT Rust bindings against the expected output + pub fn expect_wit_bind(&self, expected_wit_bind_file: expect_test::ExpectFile) { + let wit_bind = self.wit_bind.as_ref().unwrap(); + expected_wit_bind_file.assert_eq(&wit_bind); + } + /// Compare the compiled IR against the expected output pub fn expect_ir(&mut self, expected_hir_file: expect_test::ExpectFile) { // Program does not implement pretty printer yet, use the first module @@ -269,6 +396,22 @@ impl CompilerTest { } } +pub(crate) fn demangle(name: &str) -> String { + let mut input = name.as_bytes(); + let mut demangled = Vec::new(); + let include_hash = false; + rustc_demangle::demangle_stream(&mut input, &mut demangled, include_hash).unwrap(); + String::from_utf8(demangled).unwrap() +} + +pub(crate) fn wasm_to_wat(wasm_bytes: &[u8]) -> String { + let mut wasm_printer = wasmprinter::Printer::new(); + // disable printing of the "producers" section because it contains a rustc version + // to not brake tests when rustc is updated + wasm_printer.add_custom_section_printer("producers", |_, _, _| Ok(())); + let wat = wasm_printer.print(wasm_bytes.as_ref()).unwrap(); + wat +} fn compile_rust_file(rust_source: &str) -> Vec { let rustc_opts = [ "-C", @@ -298,15 +441,6 @@ fn compile_rust_file(rust_source: &str) -> Vec { return wasm; } -fn wasm_to_wat(wasm_bytes: &Vec) -> String { - let mut wasm_printer = wasmprinter::Printer::new(); - // disable printing of the "producers" section because it contains a rustc version - // to not brake tests when rustc is updated - wasm_printer.add_custom_section_printer("producers", |_, _, _| Ok(())); - let wat = wasm_printer.print(wasm_bytes.as_ref()).unwrap(); - wat -} - fn default_emitter(verbosity: Verbosity, color: ColorChoice) -> Arc { match verbosity { Verbosity::Silent => Arc::new(NullEmitter::new(color)), @@ -351,14 +485,6 @@ fn hash_string(inputs: &[&str]) -> String { format!("{:x}", hasher.finalize()) } -fn demangle(name: &str) -> String { - let mut input = name.as_bytes(); - let mut demangled = Vec::new(); - let include_hash = false; - rustc_demangle::demangle_stream(&mut input, &mut demangled, include_hash).unwrap(); - String::from_utf8(demangled).unwrap() -} - fn wasm_to_ir(wasm_bytes: &[u8], session: &Session) -> miden_hir::Module { use miden_hir_transform as transforms; let mut ir_module = translate_module( diff --git a/tests/integration/src/rust_masm_tests/apps.rs b/tests/integration/src/rust_masm_tests/apps.rs index 0452ecfcf..8e4c187e8 100644 --- a/tests/integration/src/rust_masm_tests/apps.rs +++ b/tests/integration/src/rust_masm_tests/apps.rs @@ -23,14 +23,14 @@ fn fib() { .run(&(1u32..30), move |a| { let rust_out = miden_integration_tests_rust_fib::fib(a); let mut args = [Felt::from(a)]; - let vm_out = execute_vm(&vm_program, &args) + let vm_out: u32 = execute_vm(&vm_program, &args) .first() .unwrap() .clone() .into(); prop_assert_eq!(rust_out, vm_out); args.reverse(); - let emul_out = execute_emulator(ir_masm.clone(), &args) + let emul_out: u32 = execute_emulator(ir_masm.clone(), &args) .first() .unwrap() .clone() diff --git a/tests/integration/src/rust_masm_tests/mod.rs b/tests/integration/src/rust_masm_tests/mod.rs index ec6fdcc34..a7b79cd5e 100644 --- a/tests/integration/src/rust_masm_tests/mod.rs +++ b/tests/integration/src/rust_masm_tests/mod.rs @@ -1,2 +1,3 @@ mod apps; mod instructions; +mod sdk; diff --git a/tests/integration/src/rust_masm_tests/sdk.rs b/tests/integration/src/rust_masm_tests/sdk.rs new file mode 100644 index 000000000..9a080874c --- /dev/null +++ b/tests/integration/src/rust_masm_tests/sdk.rs @@ -0,0 +1,35 @@ +use crate::CompilerTest; +use expect_test::expect_file; + +#[test] +fn sdk() { + let test = CompilerTest::rust_source_cargo_component("sdk/sdk"); + let artifact_name = test.source.artifact_name(); + test.expect_wasm(expect_file![format!( + "../../expected/sdk_basic_wallet/{artifact_name}.wat" + )]); +} + +#[test] +fn sdk_basic_wallet() { + let test = CompilerTest::rust_source_cargo_component("sdk/basic-wallet"); + let artifact_name = test.source.artifact_name(); + test.expect_wasm(expect_file![format!( + "../../expected/sdk_basic_wallet/{artifact_name}.wat" + )]); + test.expect_wit_bind(expect_file![format!( + "../../expected/sdk_basic_wallet/bindings/{artifact_name}_bindings.rs" + )]); +} + +#[test] +fn sdk_basic_wallet_p2id_note() { + let test = CompilerTest::rust_source_cargo_component("sdk/p2id-note"); + let artifact_name = test.source.artifact_name(); + test.expect_wasm(expect_file![format!( + "../../expected/sdk_basic_wallet/{artifact_name}.wat" + )]); + test.expect_wit_bind(expect_file![format!( + "../../expected/sdk_basic_wallet/bindings/{artifact_name}_bindings.rs" + )]); +} diff --git a/tests/rust-apps-wasm/sdk/basic-wallet/Cargo.lock b/tests/rust-apps-wasm/sdk/basic-wallet/Cargo.lock new file mode 100644 index 000000000..45916307c --- /dev/null +++ b/tests/rust-apps-wasm/sdk/basic-wallet/Cargo.lock @@ -0,0 +1,81 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "basic-wallet" +version = "0.1.0" +dependencies = [ + "cargo-component-bindings", +] + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "cargo-component-bindings" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545e48ba821e07f93c97aea897bee6d407de4d58947f914160131f3d78b2c704" +dependencies = [ + "cargo-component-macro", + "wit-bindgen", +] + +[[package]] +name = "cargo-component-macro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e198ee0b668e902b43b5e7d2e9620a3891d2632429b3ba66e1ceea455053cbf5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "wit-bindgen" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b76f1d099678b4f69402a421e888bbe71bf20320c2f3f3565d0e7484dbe5bc20" +dependencies = [ + "bitflags", +] diff --git a/tests/rust-apps-wasm/sdk/basic-wallet/Cargo.toml b/tests/rust-apps-wasm/sdk/basic-wallet/Cargo.toml new file mode 100644 index 000000000..5c385ee9a --- /dev/null +++ b/tests/rust-apps-wasm/sdk/basic-wallet/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "basic-wallet" +version = "0.1.0" +rust-version = "1.71" +authors = ["Miden Team"] +description = "Basic wallet" +repository = "https://github.com/0xPolygonMiden/miden-ir" +homepage = "https://github.com/0xPolygonMiden/miden-ir" +documentation = "https://github.com/0xPolygonMiden/miden-ir" +license = "MIT" +edition = "2021" +publish = false + +[dependencies] +cargo-component-bindings = "0.6.0" + +[lib] +crate-type = ["cdylib"] + +[package.metadata.component] +package = "miden:basic-wallet" + +[package.metadata.component.dependencies] + +[package.metadata.component.target.dependencies] +"miden:base" = { path = "../sdk/wit" } + +[profile.release] +panic = "abort" \ No newline at end of file diff --git a/tests/rust-apps-wasm/sdk/basic-wallet/src/lib.rs b/tests/rust-apps-wasm/sdk/basic-wallet/src/lib.rs new file mode 100644 index 000000000..1982653ef --- /dev/null +++ b/tests/rust-apps-wasm/sdk/basic-wallet/src/lib.rs @@ -0,0 +1,19 @@ +#![no_std] + +cargo_component_bindings::generate!(); + +use bindings::exports::miden::basic_wallet::basic_wallet::{Asset, Guest, Recipient, Tag}; +use bindings::miden::base::tx_kernel::{add_asset, create_note, remove_asset}; + +struct Component; + +impl Guest for Component { + fn receive_asset(asset: Asset) { + add_asset(asset); + } + + fn send_asset(asset: Asset, tag: Tag, recipient: Recipient) { + let asset = remove_asset(asset); + create_note(asset, tag, recipient); + } +} diff --git a/tests/rust-apps-wasm/sdk/basic-wallet/wit/basic-wallet.wit b/tests/rust-apps-wasm/sdk/basic-wallet/wit/basic-wallet.wit new file mode 100644 index 000000000..8fe44e518 --- /dev/null +++ b/tests/rust-apps-wasm/sdk/basic-wallet/wit/basic-wallet.wit @@ -0,0 +1,18 @@ +package miden:basic-wallet@1.0.0; + +use miden:base/types@1.0.0; +use miden:base/tx-kernel@1.0.0; +use miden:base/account@1.0.0; + +interface basic-wallet { + use types.{asset, tag, recipient}; + + receive-asset: func(asset: asset); + send-asset: func(asset: asset, tag: tag, recipient: recipient); +} + +world basic-wallet-world { + import tx-kernel; + export account; + export basic-wallet; +} diff --git a/tests/rust-apps-wasm/sdk/p2id-note/Cargo.lock b/tests/rust-apps-wasm/sdk/p2id-note/Cargo.lock new file mode 100644 index 000000000..d06b1e0bd --- /dev/null +++ b/tests/rust-apps-wasm/sdk/p2id-note/Cargo.lock @@ -0,0 +1,81 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "basic-wallet-p2id-note" +version = "0.1.0" +dependencies = [ + "cargo-component-bindings", +] + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "cargo-component-bindings" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545e48ba821e07f93c97aea897bee6d407de4d58947f914160131f3d78b2c704" +dependencies = [ + "cargo-component-macro", + "wit-bindgen", +] + +[[package]] +name = "cargo-component-macro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e198ee0b668e902b43b5e7d2e9620a3891d2632429b3ba66e1ceea455053cbf5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "wit-bindgen" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b76f1d099678b4f69402a421e888bbe71bf20320c2f3f3565d0e7484dbe5bc20" +dependencies = [ + "bitflags", +] diff --git a/tests/rust-apps-wasm/sdk/p2id-note/Cargo.toml b/tests/rust-apps-wasm/sdk/p2id-note/Cargo.toml new file mode 100644 index 000000000..db445cb67 --- /dev/null +++ b/tests/rust-apps-wasm/sdk/p2id-note/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "basic-wallet-p2id-note" +version = "0.1.0" +rust-version = "1.71" +authors = ["Miden Team"] +description = "p2id-note for basic wallet" +repository = "https://github.com/0xPolygonMiden/miden-ir" +homepage = "https://github.com/0xPolygonMiden/miden-ir" +documentation = "https://github.com/0xPolygonMiden/miden-ir" +license = "MIT" +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[dependencies] +cargo-component-bindings = "0.6.0" + +[package.metadata.component] +package = "miden:basic-wallet-p2id-note" + +[package.metadata.component.dependencies] + +[package.metadata.component.target.dependencies] +"miden:base" = { path = "../sdk/wit" } +"miden:basic-wallet" = { path = "../basic-wallet/wit" } + +[profile.release] +panic = "abort" \ No newline at end of file diff --git a/tests/rust-apps-wasm/sdk/p2id-note/src/lib.rs b/tests/rust-apps-wasm/sdk/p2id-note/src/lib.rs new file mode 100644 index 000000000..2a3904e6a --- /dev/null +++ b/tests/rust-apps-wasm/sdk/p2id-note/src/lib.rs @@ -0,0 +1,23 @@ +#![no_std] + +cargo_component_bindings::generate!(); + +use bindings::miden::base::tx_kernel::{get_assets, get_id, get_inputs}; +use bindings::miden::basic_wallet::basic_wallet::receive_asset; + +use bindings::exports::miden::base::note::Guest; + +pub struct Component; + +impl Guest for Component { + fn note_script() { + let inputs = get_inputs(); + let target_account_id = inputs[0]; + let account_id = get_id(); + assert_eq!(account_id, target_account_id); + let assets = get_assets(); + for asset in assets { + receive_asset(asset); + } + } +} diff --git a/tests/rust-apps-wasm/sdk/p2id-note/wit/p2id-note.wit b/tests/rust-apps-wasm/sdk/p2id-note/wit/p2id-note.wit new file mode 100644 index 000000000..8fb846bc8 --- /dev/null +++ b/tests/rust-apps-wasm/sdk/p2id-note/wit/p2id-note.wit @@ -0,0 +1,9 @@ +package miden:p2id@1.0.0; + + +world notes-world { + import miden:base/tx-kernel@1.0.0; + import miden:basic-wallet/basic-wallet@1.0.0; + + export miden:base/note@1.0.0; +} diff --git a/tests/rust-apps-wasm/sdk/sdk/Cargo.lock b/tests/rust-apps-wasm/sdk/sdk/Cargo.lock new file mode 100644 index 000000000..74b0438ac --- /dev/null +++ b/tests/rust-apps-wasm/sdk/sdk/Cargo.lock @@ -0,0 +1,81 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "cargo-component-bindings" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545e48ba821e07f93c97aea897bee6d407de4d58947f914160131f3d78b2c704" +dependencies = [ + "cargo-component-macro", + "wit-bindgen", +] + +[[package]] +name = "cargo-component-macro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e198ee0b668e902b43b5e7d2e9620a3891d2632429b3ba66e1ceea455053cbf5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "miden-sdk" +version = "0.1.0" +dependencies = [ + "cargo-component-bindings", +] + +[[package]] +name = "proc-macro2" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "wit-bindgen" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b76f1d099678b4f69402a421e888bbe71bf20320c2f3f3565d0e7484dbe5bc20" +dependencies = [ + "bitflags", +] diff --git a/tests/rust-apps-wasm/sdk/sdk/Cargo.toml b/tests/rust-apps-wasm/sdk/sdk/Cargo.toml new file mode 100644 index 000000000..9c3decec1 --- /dev/null +++ b/tests/rust-apps-wasm/sdk/sdk/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "miden-sdk" +version = "0.1.0" +rust-version = "1.71" +authors = ["Miden Team"] +description = "Miden SDK" +license = "MIT" +edition = "2021" +publish = false + +# To keep it out of the root workspace since it cannot be built for a non-Wasm target +[workspace] + +[dependencies] +cargo-component-bindings = "0.6.0" + +[lib] +crate-type = ["cdylib"] + +[package.metadata.component] +package = "component:miden" + +[package.metadata.component.dependencies] + +[profile.release] +panic = "abort" \ No newline at end of file diff --git a/tests/rust-apps-wasm/sdk/sdk/src/lib.rs b/tests/rust-apps-wasm/sdk/sdk/src/lib.rs new file mode 100644 index 000000000..1758058dc --- /dev/null +++ b/tests/rust-apps-wasm/sdk/sdk/src/lib.rs @@ -0,0 +1,3 @@ +#![no_std] + +cargo_component_bindings::generate!(); diff --git a/tests/rust-apps-wasm/sdk/sdk/wit/miden.wit b/tests/rust-apps-wasm/sdk/sdk/wit/miden.wit new file mode 100644 index 000000000..00a3a5e9d --- /dev/null +++ b/tests/rust-apps-wasm/sdk/sdk/wit/miden.wit @@ -0,0 +1,132 @@ +package miden:base@1.0.0; + +interface types { + /// Represents base field element in the field using Montgomery representation. + /// Internal values represent x * R mod M where R = 2^64 mod M and x in [0, M). + /// The backing type is `u64` but the internal values are always in the range [0, M). + /// Field modulus M = 2^64 - 2^32 + 1 + type felt = u64; + /// A group of four field elements in the Miden base field. + type word = tuple; + + /// Unique identifier of an account. + /// + /// Account ID consists of 1 field element (~64 bits). This field element uniquely identifies a + /// single account and also specifies the type of the underlying account. Specifically: + /// - The two most significant bits of the ID specify the type of the account: + /// - 00 - regular account with updatable code. + /// - 01 - regular account with immutable code. + /// - 10 - fungible asset faucet with immutable code. + /// - 11 - non-fungible asset faucet with immutable code. + /// - The third most significant bit of the ID specifies whether the account data is stored on-chain: + /// - 0 - full account data is stored on-chain. + /// - 1 - only the account hash is stored on-chain which serves as a commitment to the account state. + /// As such the three most significant bits fully describes the type of the account. + type account-id = felt; + + /// Recipient of the note, i.e., hash(hash(hash(serial_num, [0; 4]), note_script_hash), input_hash) + type recipient = word; + + type tag = felt; + + /// A fungible asset + record fungible-asset { + /// Faucet ID of the faucet which issued the asset as well as the asset amount. + asset: account-id, + /// Asset amount is guaranteed to be 2^63 - 1 or smaller. + amount: u64 + } + + /// A commitment to a non-fungible asset. + /// + /// A non-fungible asset consists of 4 field elements which are computed by hashing asset data + /// (which can be of arbitrary length) to produce: [d0, d1, d2, d3]. We then replace d1 with the + /// faucet_id that issued the asset: [d0, faucet_id, d2, d3]. We then set the most significant bit + /// of the most significant element to ZERO. + type non-fungible-asset = word; + + /// A fungible or a non-fungible asset. + /// + /// All assets are encoded using a single word (4 elements) such that it is easy to determine the + /// type of an asset both inside and outside Miden VM. Specifically: + /// Element 1 will be: + /// - ZERO for a fungible asset + /// - non-ZERO for a non-fungible asset + /// The most significant bit will be: + /// - ONE for a fungible asset + /// - ZERO for a non-fungible asset + /// + /// The above properties guarantee that there can never be a collision between a fungible and a + /// non-fungible asset. + /// + /// The methodology for constructing fungible and non-fungible assets is described below. + /// + /// # Fungible assets + /// The most significant element of a fungible asset is set to the ID of the faucet which issued + /// the asset. This guarantees the properties described above (the first bit is ONE). + /// + /// The least significant element is set to the amount of the asset. This amount cannot be greater + /// than 2^63 - 1 and thus requires 63-bits to store. + /// + /// Elements 1 and 2 are set to ZERO. + /// + /// It is impossible to find a collision between two fungible assets issued by different faucets as + /// the faucet_id is included in the description of the asset and this is guaranteed to be different + /// for each faucet as per the faucet creation logic. + /// + /// # Non-fungible assets + /// The 4 elements of non-fungible assets are computed as follows: + /// - First the asset data is hashed. This compresses an asset of an arbitrary length to 4 field + /// elements: [d0, d1, d2, d3]. + /// - d1 is then replaced with the faucet_id which issues the asset: [d0, faucet_id, d2, d3]. + /// - Lastly, the most significant bit of d3 is set to ZERO. + /// + /// It is impossible to find a collision between two non-fungible assets issued by different faucets + /// as the faucet_id is included in the description of the non-fungible asset and this is guaranteed + /// to be different as per the faucet creation logic. Collision resistance for non-fungible assets + /// issued by the same faucet is ~2^95. + variant asset { + fungible(fungible-asset), + non-fungible(non-fungible-asset), + } + + /// Inputs of the currently executed note, never exceeds 16 felts + type note-inputs = list; +} + +interface tx-kernel { + use types.{asset, tag, recipient, note-inputs, account-id}; + + // Account-related functions + + /// Get the id of the currently executing account + get-id: func() -> account-id; + /// Add the specified asset to the vault + add-asset: func(asset: asset) -> asset; + /// Remove the specified asset from the vault + remove-asset: func(asset: asset) -> asset; + + + // Note-related functions + + /// Creates a new note. + /// asset is the asset to be included in the note. + /// tag is the tag to be included in the note. + /// recipient is the recipient of the note. + create-note: func(asset: asset, tag: tag, recipient: recipient); + /// Get the inputs of the currently executed note + get-inputs: func() -> note-inputs; + /// Get the assets of the currently executing note + get-assets: func() -> list; +} + +/// Marker interface. Expected to be implemented by the account/wallet +interface account {} + +interface note { + note-script: func(); +} + +world base-world { + export types; +}