diff --git a/.config/hakari.toml b/.config/hakari.toml index 33523544..b657188e 100644 --- a/.config/hakari.toml +++ b/.config/hakari.toml @@ -28,6 +28,10 @@ platforms = [ exact-versions = true [traversal-excludes] -workspace-members = ["homestar-functions-add", "homestar-functions-test"] +workspace-members = [ + "homestar-functions-add", + "homestar-functions-subtract", + "homestar-functions-test", +] third-party = [{ name = "libsqlite3-sys" }] diff --git a/Cargo.lock b/Cargo.lock index 901d0702..6c4e0a64 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2491,6 +2491,13 @@ dependencies = [ "wit-bindgen-rt", ] +[[package]] +name = "homestar-functions-subtract" +version = "0.1.0" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "homestar-functions-test" version = "0.1.0" diff --git a/flake.nix b/flake.nix index 3572dcd0..a8865773 100644 --- a/flake.nix +++ b/flake.nix @@ -251,6 +251,18 @@ wasm-tools print homestar-wasm/fixtures/example_add_component.wasm -o homestar-wasm/fixtures/example_add_component.wat ''; + wasmSubtract = pkgs.writeScriptBin "wasm-ex-subtract" '' + #!${pkgs.stdenv.shell} + cargo component build -p homestar-functions-subtract --profile release-wasm-fn + cp target/wasm32-wasi/release-wasm-fn/homestar_functions_subtract.wasm homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wasm + wasm-tools print homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wasm -o homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wat + cargo build -p homestar-functions-subtract --target wasm32-unknown-unknown --profile release-wasm-fn + cp target/wasm32-unknown-unknown/release-wasm-fn/homestar_functions_subtract.wasm homestar-wasm/fixtures/example_subtract.wasm + wasm-tools component new homestar-wasm/fixtures/example_subtract.wasm -o homestar-wasm/fixtures/example_subtract_component.wasm + wasm-tools print homestar-wasm/fixtures/example_subtract.wasm -o homestar-wasm/fixtures/example_subtract.wat + wasm-tools print homestar-wasm/fixtures/example_subtract_component.wasm -o homestar-wasm/fixtures/example_subtract_component.wat + ''; + runIpfs = pkgs.writeScriptBin "run-ipfs" '' #!${pkgs.stdenv.shell} ipfs --repo-dir ./.ipfs --offline daemon @@ -289,6 +301,7 @@ testCleanup wasmTest wasmAdd + wasmSubtract ]; in { devShells.default = pkgs.mkShell { diff --git a/homestar-functions/add/Cargo.toml b/homestar-functions/add/Cargo.toml index 296dc919..d4b29b5c 100644 --- a/homestar-functions/add/Cargo.toml +++ b/homestar-functions/add/Cargo.toml @@ -12,4 +12,4 @@ wit-bindgen-rt = "0.20.0" crate-type = ["cdylib"] [package.metadata.component] -package = "component:add" +package = "component:homestar-functions-add" diff --git a/homestar-functions/subtract/Cargo.toml b/homestar-functions/subtract/Cargo.toml new file mode 100644 index 00000000..4d2dc467 --- /dev/null +++ b/homestar-functions/subtract/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "homestar-functions-subtract" +publish = false +version = "0.1.0" +edition = { workspace = true } +rust-version = { workspace = true } + +[dependencies] +wit-bindgen-rt = "0.20.0" + +[lib] +crate-type = ["cdylib"] + +[package.metadata.component] +package = "component:homestar-functions-subtract" diff --git a/homestar-functions/subtract/src/bindings.rs b/homestar-functions/subtract/src/bindings.rs new file mode 100644 index 00000000..20575bd7 --- /dev/null +++ b/homestar-functions/subtract/src/bindings.rs @@ -0,0 +1,93 @@ +// Generated by `wit-bindgen` 0.20.0. DO NOT EDIT! +// Options used: + +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_subtract_cabi(arg0: f64, arg1: f64) -> f64 { + let result0 = T::subtract(arg0, arg1); + _rt::as_f64(result0) +} +pub trait Guest { + fn subtract(a: f64, b: f64) -> f64; +} +#[doc(hidden)] + +macro_rules! __export_world_subtract_cabi{ + ($ty:ident with_types_in $($path_to_types:tt)*) => (const _: () = { + + + #[export_name = "subtract"] + unsafe extern "C" fn export_subtract(arg0: f64,arg1: f64,) -> f64 { + $($path_to_types)*::_export_subtract_cabi::<$ty>(arg0, arg1) + } + };); +} +#[doc(hidden)] +pub(crate) use __export_world_subtract_cabi; +mod _rt { + + pub fn as_f64(t: T) -> f64 { + t.as_f64() + } + + pub trait AsF64 { + fn as_f64(self) -> f64; + } + + impl<'a, T: Copy + AsF64> AsF64 for &'a T { + fn as_f64(self) -> f64 { + (*self).as_f64() + } + } + + impl AsF64 for f64 { + #[inline] + fn as_f64(self) -> f64 { + self as f64 + } + } +} + +/// Generates `#[no_mangle]` functions to export the specified type as the +/// root implementation of all generated traits. +/// +/// For more information see the documentation of `wit_bindgen::generate!`. +/// +/// ```rust +/// # macro_rules! export{ ($($t:tt)*) => (); } +/// # trait Guest {} +/// struct MyType; +/// +/// impl Guest for MyType { +/// // ... +/// } +/// +/// export!(MyType); +/// ``` +#[allow(unused_macros)] +#[doc(hidden)] + +macro_rules! __export_subtract_impl { + ($ty:ident) => (self::export!($ty with_types_in self);); + ($ty:ident with_types_in $($path_to_types_root:tt)*) => ( + $($path_to_types_root)*::__export_world_subtract_cabi!($ty with_types_in $($path_to_types_root)*); + ) +} +#[doc(inline)] +pub(crate) use __export_subtract_impl as export; + +#[cfg(target_arch = "wasm32")] +#[link_section = "component-type:wit-bindgen:0.20.0:subtract:encoded world"] +#[doc(hidden)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 197] = *b"\ +\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07G\x01A\x02\x01A\x02\x01\ +@\x02\x01au\x01bu\0u\x04\0\x08subtract\x01\0\x04\x01$homestar-functions:subtract\ +/subtract\x04\0\x0b\x0e\x01\0\x08subtract\x03\0\0\0G\x09producers\x01\x0cprocess\ +ed-by\x02\x0dwit-component\x070.201.0\x10wit-bindgen-rust\x060.20.0"; + +#[inline(never)] +#[doc(hidden)] +#[cfg(target_arch = "wasm32")] +pub fn __link_custom_section_describing_imports() { + wit_bindgen_rt::maybe_link_cabi_realloc(); +} diff --git a/homestar-functions/subtract/src/lib.rs b/homestar-functions/subtract/src/lib.rs new file mode 100644 index 00000000..8d6089f9 --- /dev/null +++ b/homestar-functions/subtract/src/lib.rs @@ -0,0 +1,15 @@ +#[allow(clippy::all)] +#[rustfmt::skip] +mod bindings; + +use bindings::Guest; + +struct Component; + +impl Guest for Component { + fn subtract(a: f64, b: f64) -> f64 { + a - b + } +} + +bindings::export!(Component with_types_in bindings); diff --git a/homestar-functions/subtract/wit/world.wit b/homestar-functions/subtract/wit/world.wit new file mode 100644 index 00000000..d8d04ad9 --- /dev/null +++ b/homestar-functions/subtract/wit/world.wit @@ -0,0 +1,5 @@ +package homestar-functions:subtract; + +world subtract { + export subtract: func(a: float64, b: float64) -> float64; +} diff --git a/homestar-wasm/fixtures/example_subtract.wasm b/homestar-wasm/fixtures/example_subtract.wasm new file mode 100755 index 00000000..5127bbd1 Binary files /dev/null and b/homestar-wasm/fixtures/example_subtract.wasm differ diff --git a/homestar-wasm/fixtures/example_subtract.wat b/homestar-wasm/fixtures/example_subtract.wat new file mode 100644 index 00000000..fde7da55 --- /dev/null +++ b/homestar-wasm/fixtures/example_subtract.wat @@ -0,0 +1,3780 @@ +(module + (type (;0;) (func (param f64 f64) (result f64))) + (type (;1;) (func (param i32 i32) (result i32))) + (type (;2;) (func (param i32) (result i32))) + (type (;3;) (func (param i32 i32))) + (type (;4;) (func (param i32))) + (type (;5;) (func (param i32 i32 i32 i32) (result i32))) + (type (;6;) (func (param i32 i32 i32) (result i32))) + (func (;0;) (type 0) (param f64 f64) (result f64) + local.get 0 + local.get 1 + f64.sub + ) + (func (;1;) (type 1) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + i32.const 0 + local.set 2 + block ;; label = @1 + i32.const -65587 + local.get 0 + i32.const 16 + local.get 0 + i32.const 16 + i32.gt_u + select + local.tee 0 + i32.sub + local.get 1 + i32.le_u + br_if 0 (;@1;) + local.get 0 + i32.const 16 + local.get 1 + i32.const 11 + i32.add + i32.const -8 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.tee 3 + i32.add + i32.const 12 + i32.add + call 2 + local.tee 1 + i32.eqz + br_if 0 (;@1;) + local.get 1 + i32.const -8 + i32.add + local.set 2 + block ;; label = @2 + block ;; label = @3 + local.get 0 + i32.const -1 + i32.add + local.tee 4 + local.get 1 + i32.and + br_if 0 (;@3;) + local.get 2 + local.set 0 + br 1 (;@2;) + end + local.get 1 + i32.const -4 + i32.add + local.tee 5 + i32.load + local.tee 6 + i32.const -8 + i32.and + local.get 4 + local.get 1 + i32.add + i32.const 0 + local.get 0 + i32.sub + i32.and + i32.const -8 + i32.add + local.tee 1 + i32.const 0 + local.get 0 + local.get 1 + local.get 2 + i32.sub + i32.const 16 + i32.gt_u + select + i32.add + local.tee 0 + local.get 2 + i32.sub + local.tee 1 + i32.sub + local.set 4 + block ;; label = @3 + local.get 6 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 0 + local.get 4 + 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 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 5 + local.get 1 + local.get 5 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 2 + local.get 1 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 1 + call 3 + br 1 (;@2;) + end + local.get 2 + i32.load + local.set 2 + local.get 0 + local.get 4 + i32.store offset=4 + local.get 0 + local.get 2 + local.get 1 + i32.add + i32.store + end + block ;; label = @2 + local.get 0 + i32.load offset=4 + local.tee 1 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 1 + i32.const -8 + i32.and + local.tee 2 + local.get 3 + i32.const 16 + i32.add + i32.le_u + br_if 0 (;@2;) + local.get 0 + local.get 3 + local.get 1 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 3 + i32.add + local.tee 1 + local.get 2 + local.get 3 + i32.sub + local.tee 3 + 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 1 + local.get 3 + call 3 + end + local.get 0 + i32.const 8 + i32.add + local.set 2 + end + local.get 2 + ) + (func (;2;) (type 2) (param i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i64) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + local.get 0 + i32.const 245 + i32.lt_u + br_if 0 (;@8;) + i32.const 0 + local.set 1 + local.get 0 + i32.const -65587 + i32.ge_u + br_if 5 (;@3;) + local.get 0 + i32.const 11 + i32.add + local.tee 0 + i32.const -8 + i32.and + local.set 2 + i32.const 0 + i32.load offset=1048992 + local.tee 3 + i32.eqz + br_if 4 (;@4;) + i32.const 0 + local.set 4 + block ;; label = @9 + local.get 2 + i32.const 256 + i32.lt_u + br_if 0 (;@9;) + i32.const 31 + local.set 4 + local.get 2 + i32.const 16777215 + i32.gt_u + br_if 0 (;@9;) + local.get 2 + i32.const 6 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 0 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 0 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + i32.const 0 + local.get 2 + i32.sub + local.set 1 + block ;; label = @9 + local.get 4 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + i32.load + local.tee 5 + br_if 0 (;@9;) + i32.const 0 + local.set 0 + i32.const 0 + local.set 6 + br 2 (;@7;) + end + i32.const 0 + local.set 0 + local.get 2 + 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 7 + i32.const 0 + local.set 6 + loop ;; label = @9 + block ;; label = @10 + local.get 5 + i32.load offset=4 + i32.const -8 + i32.and + local.tee 8 + local.get 2 + i32.lt_u + br_if 0 (;@10;) + local.get 8 + local.get 2 + i32.sub + local.tee 8 + local.get 1 + i32.ge_u + br_if 0 (;@10;) + local.get 8 + local.set 1 + local.get 5 + local.set 6 + local.get 8 + br_if 0 (;@10;) + i32.const 0 + local.set 1 + local.get 5 + local.set 6 + local.get 5 + local.set 0 + br 4 (;@6;) + end + local.get 5 + i32.const 20 + i32.add + i32.load + local.tee 8 + local.get 0 + local.get 8 + local.get 5 + local.get 7 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + i32.load + local.tee 5 + i32.ne + select + local.get 0 + local.get 8 + select + local.set 0 + local.get 7 + i32.const 1 + i32.shl + local.set 7 + local.get 5 + i32.eqz + br_if 2 (;@7;) + br 0 (;@9;) + end + end + block ;; label = @8 + i32.const 0 + i32.load offset=1048988 + local.tee 6 + i32.const 16 + local.get 0 + i32.const 11 + i32.add + i32.const -8 + i32.and + local.get 0 + i32.const 11 + i32.lt_u + select + local.tee 2 + i32.const 3 + i32.shr_u + local.tee 1 + i32.shr_u + local.tee 0 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@8;) + block ;; label = @9 + block ;; label = @10 + local.get 0 + i32.const -1 + i32.xor + i32.const 1 + i32.and + local.get 1 + i32.add + local.tee 2 + i32.const 3 + i32.shl + local.tee 0 + i32.const 1048724 + i32.add + local.tee 1 + local.get 0 + i32.const 1048732 + i32.add + i32.load + local.tee 0 + i32.load offset=8 + local.tee 5 + i32.eq + br_if 0 (;@10;) + local.get 5 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 5 + i32.store offset=8 + br 1 (;@9;) + end + i32.const 0 + local.get 6 + i32.const -2 + local.get 2 + i32.rotl + i32.and + i32.store offset=1048988 + end + local.get 0 + local.get 2 + i32.const 3 + i32.shl + local.tee 2 + 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 0 + i32.const 8 + i32.add + return + end + local.get 2 + i32.const 0 + i32.load offset=1048996 + i32.le_u + br_if 3 (;@4;) + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + local.get 0 + br_if 0 (;@10;) + i32.const 0 + i32.load offset=1048992 + local.tee 0 + i32.eqz + br_if 6 (;@4;) + local.get 0 + i32.ctz + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + i32.load + local.tee 5 + i32.load offset=4 + i32.const -8 + i32.and + local.get 2 + i32.sub + local.set 1 + local.get 5 + local.set 6 + loop ;; label = @11 + block ;; label = @12 + local.get 5 + i32.load offset=16 + local.tee 0 + br_if 0 (;@12;) + local.get 5 + i32.const 20 + i32.add + i32.load + local.tee 0 + br_if 0 (;@12;) + local.get 6 + i32.load offset=24 + local.set 4 + block ;; label = @13 + block ;; label = @14 + block ;; label = @15 + local.get 6 + i32.load offset=12 + local.tee 0 + local.get 6 + i32.ne + br_if 0 (;@15;) + local.get 6 + i32.const 20 + i32.const 16 + local.get 6 + i32.const 20 + i32.add + local.tee 0 + i32.load + local.tee 7 + select + i32.add + i32.load + local.tee 5 + br_if 1 (;@14;) + i32.const 0 + local.set 0 + br 2 (;@13;) + end + local.get 6 + i32.load offset=8 + local.tee 5 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 5 + i32.store offset=8 + br 1 (;@13;) + end + local.get 0 + local.get 6 + i32.const 16 + i32.add + local.get 7 + select + local.set 7 + loop ;; label = @14 + local.get 7 + local.set 8 + local.get 5 + local.tee 0 + i32.const 20 + i32.add + local.tee 5 + local.get 0 + i32.const 16 + i32.add + local.get 5 + i32.load + local.tee 5 + select + local.set 7 + local.get 0 + i32.const 20 + i32.const 16 + local.get 5 + select + i32.add + i32.load + local.tee 5 + br_if 0 (;@14;) + end + local.get 8 + i32.const 0 + i32.store + end + local.get 4 + i32.eqz + br_if 4 (;@8;) + block ;; label = @13 + local.get 6 + i32.load offset=28 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.tee 5 + i32.load + local.get 6 + i32.eq + br_if 0 (;@13;) + local.get 4 + i32.const 16 + i32.const 20 + local.get 4 + i32.load offset=16 + local.get 6 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 5 (;@8;) + br 4 (;@9;) + end + local.get 5 + local.get 0 + i32.store + local.get 0 + br_if 3 (;@9;) + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 6 + i32.load offset=28 + i32.rotl + i32.and + i32.store offset=1048992 + br 4 (;@8;) + end + local.get 0 + i32.load offset=4 + i32.const -8 + i32.and + local.get 2 + i32.sub + local.tee 5 + local.get 1 + local.get 5 + local.get 1 + i32.lt_u + local.tee 5 + select + local.set 1 + local.get 0 + local.get 6 + local.get 5 + select + local.set 6 + local.get 0 + local.set 5 + br 0 (;@11;) + end + end + block ;; label = @10 + block ;; label = @11 + local.get 0 + local.get 1 + i32.shl + i32.const 2 + local.get 1 + i32.shl + local.tee 0 + i32.const 0 + local.get 0 + i32.sub + i32.or + i32.and + i32.ctz + local.tee 1 + i32.const 3 + i32.shl + local.tee 0 + i32.const 1048724 + i32.add + local.tee 5 + local.get 0 + i32.const 1048732 + i32.add + i32.load + local.tee 0 + i32.load offset=8 + local.tee 7 + i32.eq + br_if 0 (;@11;) + local.get 7 + local.get 5 + i32.store offset=12 + local.get 5 + local.get 7 + i32.store offset=8 + br 1 (;@10;) + end + i32.const 0 + local.get 6 + i32.const -2 + local.get 1 + i32.rotl + i32.and + i32.store offset=1048988 + end + local.get 0 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.tee 7 + local.get 1 + i32.const 3 + i32.shl + local.tee 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 5 + i32.add + local.get 1 + i32.store + block ;; label = @10 + i32.const 0 + i32.load offset=1048996 + local.tee 6 + i32.eqz + br_if 0 (;@10;) + local.get 6 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1049004 + local.set 2 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048988 + local.tee 8 + i32.const 1 + local.get 6 + i32.const 3 + i32.shr_u + i32.shl + local.tee 6 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 8 + local.get 6 + i32.or + i32.store offset=1048988 + local.get 5 + local.set 6 + br 1 (;@11;) + end + local.get 5 + i32.load offset=8 + local.set 6 + end + local.get 5 + local.get 2 + i32.store offset=8 + local.get 6 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 5 + i32.store offset=12 + local.get 2 + local.get 6 + i32.store offset=8 + end + i32.const 0 + local.get 7 + i32.store offset=1049004 + i32.const 0 + local.get 1 + i32.store offset=1048996 + local.get 0 + i32.const 8 + i32.add + return + end + local.get 0 + local.get 4 + i32.store offset=24 + block ;; label = @9 + local.get 6 + i32.load offset=16 + local.tee 5 + i32.eqz + br_if 0 (;@9;) + local.get 0 + local.get 5 + i32.store offset=16 + local.get 5 + local.get 0 + i32.store offset=24 + end + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 5 + i32.eqz + br_if 0 (;@8;) + local.get 0 + i32.const 20 + i32.add + local.get 5 + i32.store + local.get 5 + local.get 0 + i32.store offset=24 + end + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + local.get 1 + i32.const 16 + i32.lt_u + br_if 0 (;@10;) + local.get 6 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + 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 2 + local.get 1 + i32.add + local.get 1 + i32.store + i32.const 0 + i32.load offset=1048996 + local.tee 7 + i32.eqz + br_if 1 (;@9;) + local.get 7 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1049004 + local.set 0 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048988 + local.tee 8 + i32.const 1 + local.get 7 + i32.const 3 + i32.shr_u + i32.shl + local.tee 7 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 8 + local.get 7 + i32.or + i32.store offset=1048988 + local.get 5 + local.set 7 + br 1 (;@11;) + end + local.get 5 + i32.load offset=8 + local.set 7 + end + local.get 5 + local.get 0 + i32.store offset=8 + local.get 7 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 5 + i32.store offset=12 + local.get 0 + local.get 7 + i32.store offset=8 + br 1 (;@9;) + end + local.get 6 + local.get 1 + local.get 2 + i32.add + local.tee 0 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + local.tee 0 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@8;) + end + i32.const 0 + local.get 2 + i32.store offset=1049004 + i32.const 0 + local.get 1 + i32.store offset=1048996 + end + local.get 6 + i32.const 8 + i32.add + return + end + block ;; label = @7 + local.get 0 + local.get 6 + i32.or + br_if 0 (;@7;) + i32.const 0 + local.set 6 + i32.const 2 + local.get 4 + i32.shl + local.tee 0 + i32.const 0 + local.get 0 + i32.sub + i32.or + local.get 3 + i32.and + local.tee 0 + i32.eqz + br_if 3 (;@4;) + local.get 0 + i32.ctz + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + i32.load + local.set 0 + end + local.get 0 + i32.eqz + br_if 1 (;@5;) + end + loop ;; label = @6 + local.get 0 + local.get 6 + local.get 0 + i32.load offset=4 + i32.const -8 + i32.and + local.tee 5 + local.get 2 + i32.sub + local.tee 8 + local.get 1 + i32.lt_u + local.tee 4 + select + local.set 3 + local.get 5 + local.get 2 + i32.lt_u + local.set 7 + local.get 8 + local.get 1 + local.get 4 + select + local.set 8 + block ;; label = @7 + local.get 0 + i32.load offset=16 + local.tee 5 + br_if 0 (;@7;) + local.get 0 + i32.const 20 + i32.add + i32.load + local.set 5 + end + local.get 6 + local.get 3 + local.get 7 + select + local.set 6 + local.get 1 + local.get 8 + local.get 7 + select + local.set 1 + local.get 5 + local.set 0 + local.get 5 + br_if 0 (;@6;) + end + end + local.get 6 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + i32.const 0 + i32.load offset=1048996 + local.tee 0 + local.get 2 + i32.lt_u + br_if 0 (;@5;) + local.get 1 + local.get 0 + local.get 2 + i32.sub + i32.ge_u + br_if 1 (;@4;) + end + local.get 6 + i32.load offset=24 + local.set 4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 6 + i32.load offset=12 + local.tee 0 + local.get 6 + i32.ne + br_if 0 (;@7;) + local.get 6 + i32.const 20 + i32.const 16 + local.get 6 + i32.const 20 + i32.add + local.tee 0 + i32.load + local.tee 7 + select + i32.add + i32.load + local.tee 5 + br_if 1 (;@6;) + i32.const 0 + local.set 0 + br 2 (;@5;) + end + local.get 6 + i32.load offset=8 + local.tee 5 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 5 + i32.store offset=8 + br 1 (;@5;) + end + local.get 0 + local.get 6 + i32.const 16 + i32.add + local.get 7 + select + local.set 7 + loop ;; label = @6 + local.get 7 + local.set 8 + local.get 5 + local.tee 0 + i32.const 20 + i32.add + local.tee 5 + local.get 0 + i32.const 16 + i32.add + local.get 5 + i32.load + local.tee 5 + select + local.set 7 + local.get 0 + i32.const 20 + i32.const 16 + local.get 5 + select + i32.add + i32.load + local.tee 5 + br_if 0 (;@6;) + end + local.get 8 + i32.const 0 + i32.store + end + local.get 4 + i32.eqz + br_if 3 (;@1;) + block ;; label = @5 + local.get 6 + i32.load offset=28 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.tee 5 + i32.load + local.get 6 + i32.eq + br_if 0 (;@5;) + local.get 4 + i32.const 16 + i32.const 20 + local.get 4 + i32.load offset=16 + local.get 6 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 4 (;@1;) + br 3 (;@2;) + end + local.get 5 + local.get 0 + i32.store + local.get 0 + br_if 2 (;@2;) + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 6 + i32.load offset=28 + i32.rotl + i32.and + i32.store offset=1048992 + br 3 (;@1;) + end + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + i32.const 0 + i32.load offset=1048996 + local.tee 0 + local.get 2 + i32.ge_u + br_if 0 (;@9;) + block ;; label = @10 + i32.const 0 + i32.load offset=1049000 + local.tee 0 + local.get 2 + i32.gt_u + br_if 0 (;@10;) + i32.const 0 + local.set 1 + local.get 2 + i32.const 65583 + i32.add + local.tee 5 + i32.const 16 + i32.shr_u + memory.grow + local.tee 0 + i32.const -1 + i32.eq + local.tee 7 + br_if 7 (;@3;) + local.get 0 + i32.const 16 + i32.shl + local.tee 6 + i32.eqz + br_if 7 (;@3;) + i32.const 0 + i32.const 0 + i32.load offset=1049012 + i32.const 0 + local.get 5 + i32.const -65536 + i32.and + local.get 7 + select + local.tee 8 + i32.add + local.tee 0 + i32.store offset=1049012 + i32.const 0 + i32.const 0 + i32.load offset=1049016 + local.tee 1 + local.get 0 + local.get 1 + local.get 0 + i32.gt_u + select + i32.store offset=1049016 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + i32.const 0 + i32.load offset=1049008 + local.tee 1 + i32.eqz + br_if 0 (;@13;) + i32.const 1048708 + local.set 0 + loop ;; label = @14 + local.get 0 + i32.load + local.tee 5 + local.get 0 + i32.load offset=4 + local.tee 7 + i32.add + local.get 6 + i32.eq + br_if 2 (;@12;) + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@14;) + br 3 (;@11;) + end + end + block ;; label = @13 + block ;; label = @14 + i32.const 0 + i32.load offset=1049024 + local.tee 0 + i32.eqz + br_if 0 (;@14;) + local.get 0 + local.get 6 + i32.le_u + br_if 1 (;@13;) + end + i32.const 0 + local.get 6 + i32.store offset=1049024 + end + i32.const 0 + i32.const 4095 + i32.store offset=1049028 + i32.const 0 + local.get 8 + i32.store offset=1048712 + i32.const 0 + local.get 6 + i32.store offset=1048708 + i32.const 0 + i32.const 1048724 + i32.store offset=1048736 + i32.const 0 + i32.const 1048732 + i32.store offset=1048744 + i32.const 0 + i32.const 1048724 + i32.store offset=1048732 + i32.const 0 + i32.const 1048740 + i32.store offset=1048752 + i32.const 0 + i32.const 1048732 + i32.store offset=1048740 + i32.const 0 + i32.const 1048748 + i32.store offset=1048760 + i32.const 0 + i32.const 1048740 + i32.store offset=1048748 + i32.const 0 + i32.const 1048756 + i32.store offset=1048768 + i32.const 0 + i32.const 1048748 + i32.store offset=1048756 + i32.const 0 + i32.const 1048764 + i32.store offset=1048776 + i32.const 0 + i32.const 1048756 + i32.store offset=1048764 + i32.const 0 + i32.const 1048772 + i32.store offset=1048784 + i32.const 0 + i32.const 1048764 + i32.store offset=1048772 + i32.const 0 + i32.const 1048780 + i32.store offset=1048792 + i32.const 0 + i32.const 1048772 + i32.store offset=1048780 + i32.const 0 + i32.const 0 + i32.store offset=1048720 + i32.const 0 + i32.const 1048788 + i32.store offset=1048800 + i32.const 0 + i32.const 1048780 + i32.store offset=1048788 + i32.const 0 + i32.const 1048788 + i32.store offset=1048796 + i32.const 0 + i32.const 1048796 + i32.store offset=1048808 + i32.const 0 + i32.const 1048796 + i32.store offset=1048804 + i32.const 0 + i32.const 1048804 + i32.store offset=1048816 + i32.const 0 + i32.const 1048804 + i32.store offset=1048812 + i32.const 0 + i32.const 1048812 + i32.store offset=1048824 + i32.const 0 + i32.const 1048812 + i32.store offset=1048820 + i32.const 0 + i32.const 1048820 + i32.store offset=1048832 + i32.const 0 + i32.const 1048820 + i32.store offset=1048828 + i32.const 0 + i32.const 1048828 + i32.store offset=1048840 + i32.const 0 + i32.const 1048828 + i32.store offset=1048836 + i32.const 0 + i32.const 1048836 + i32.store offset=1048848 + i32.const 0 + i32.const 1048836 + i32.store offset=1048844 + i32.const 0 + i32.const 1048844 + i32.store offset=1048856 + i32.const 0 + i32.const 1048844 + i32.store offset=1048852 + i32.const 0 + i32.const 1048852 + i32.store offset=1048864 + i32.const 0 + i32.const 1048860 + i32.store offset=1048872 + i32.const 0 + i32.const 1048852 + i32.store offset=1048860 + i32.const 0 + i32.const 1048868 + i32.store offset=1048880 + i32.const 0 + i32.const 1048860 + i32.store offset=1048868 + i32.const 0 + i32.const 1048876 + i32.store offset=1048888 + i32.const 0 + i32.const 1048868 + i32.store offset=1048876 + i32.const 0 + i32.const 1048884 + i32.store offset=1048896 + i32.const 0 + i32.const 1048876 + i32.store offset=1048884 + i32.const 0 + i32.const 1048892 + i32.store offset=1048904 + i32.const 0 + i32.const 1048884 + i32.store offset=1048892 + i32.const 0 + i32.const 1048900 + i32.store offset=1048912 + i32.const 0 + i32.const 1048892 + i32.store offset=1048900 + i32.const 0 + i32.const 1048908 + i32.store offset=1048920 + i32.const 0 + i32.const 1048900 + i32.store offset=1048908 + i32.const 0 + i32.const 1048916 + i32.store offset=1048928 + i32.const 0 + i32.const 1048908 + i32.store offset=1048916 + i32.const 0 + i32.const 1048924 + i32.store offset=1048936 + i32.const 0 + i32.const 1048916 + i32.store offset=1048924 + i32.const 0 + i32.const 1048932 + i32.store offset=1048944 + i32.const 0 + i32.const 1048924 + i32.store offset=1048932 + i32.const 0 + i32.const 1048940 + i32.store offset=1048952 + i32.const 0 + i32.const 1048932 + i32.store offset=1048940 + i32.const 0 + i32.const 1048948 + i32.store offset=1048960 + i32.const 0 + i32.const 1048940 + i32.store offset=1048948 + i32.const 0 + i32.const 1048956 + i32.store offset=1048968 + i32.const 0 + i32.const 1048948 + i32.store offset=1048956 + i32.const 0 + i32.const 1048964 + i32.store offset=1048976 + i32.const 0 + i32.const 1048956 + i32.store offset=1048964 + i32.const 0 + i32.const 1048972 + i32.store offset=1048984 + i32.const 0 + i32.const 1048964 + i32.store offset=1048972 + i32.const 0 + local.get 6 + i32.store offset=1049008 + i32.const 0 + i32.const 1048972 + i32.store offset=1048980 + i32.const 0 + local.get 8 + i32.const -40 + i32.add + local.tee 0 + i32.store offset=1049000 + local.get 6 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + i32.const 40 + i32.store offset=4 + i32.const 0 + i32.const 2097152 + i32.store offset=1049020 + br 8 (;@4;) + end + local.get 1 + local.get 6 + i32.ge_u + br_if 0 (;@11;) + local.get 5 + local.get 1 + i32.gt_u + br_if 0 (;@11;) + local.get 0 + i32.load offset=12 + i32.eqz + br_if 3 (;@8;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049024 + local.tee 0 + local.get 6 + local.get 0 + local.get 6 + i32.lt_u + select + i32.store offset=1049024 + local.get 6 + local.get 8 + i32.add + local.set 5 + i32.const 1048708 + local.set 0 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + loop ;; label = @14 + local.get 0 + i32.load + local.get 5 + i32.eq + br_if 1 (;@13;) + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@14;) + br 2 (;@12;) + end + end + local.get 0 + i32.load offset=12 + i32.eqz + br_if 1 (;@11;) + end + i32.const 1048708 + local.set 0 + block ;; label = @12 + loop ;; label = @13 + block ;; label = @14 + local.get 0 + i32.load + local.tee 5 + local.get 1 + i32.gt_u + br_if 0 (;@14;) + local.get 5 + local.get 0 + i32.load offset=4 + i32.add + local.tee 5 + local.get 1 + i32.gt_u + br_if 2 (;@12;) + end + local.get 0 + i32.load offset=8 + local.set 0 + br 0 (;@13;) + end + end + i32.const 0 + local.get 6 + i32.store offset=1049008 + i32.const 0 + local.get 8 + i32.const -40 + i32.add + local.tee 0 + i32.store offset=1049000 + local.get 6 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + i32.const 40 + i32.store offset=4 + i32.const 0 + i32.const 2097152 + i32.store offset=1049020 + local.get 1 + local.get 5 + i32.const -32 + i32.add + i32.const -8 + i32.and + i32.const -8 + i32.add + local.tee 0 + local.get 0 + local.get 1 + i32.const 16 + i32.add + i32.lt_u + select + local.tee 7 + i32.const 27 + i32.store offset=4 + i32.const 0 + i64.load offset=1048708 align=4 + local.set 9 + local.get 7 + i32.const 16 + i32.add + i32.const 0 + i64.load offset=1048716 align=4 + i64.store align=4 + local.get 7 + local.get 9 + i64.store offset=8 align=4 + i32.const 0 + local.get 8 + i32.store offset=1048712 + i32.const 0 + local.get 6 + i32.store offset=1048708 + i32.const 0 + local.get 7 + i32.const 8 + i32.add + i32.store offset=1048716 + i32.const 0 + i32.const 0 + i32.store offset=1048720 + local.get 7 + i32.const 28 + i32.add + local.set 0 + loop ;; label = @12 + local.get 0 + i32.const 7 + i32.store + local.get 0 + i32.const 4 + i32.add + local.tee 0 + local.get 5 + i32.lt_u + br_if 0 (;@12;) + end + local.get 7 + local.get 1 + i32.eq + br_if 7 (;@4;) + local.get 7 + local.get 7 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 1 + local.get 7 + local.get 1 + i32.sub + local.tee 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 7 + local.get 0 + i32.store + block ;; label = @12 + local.get 0 + i32.const 256 + i32.lt_u + br_if 0 (;@12;) + local.get 1 + local.get 0 + call 4 + br 8 (;@4;) + end + local.get 0 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 5 + block ;; label = @12 + block ;; label = @13 + i32.const 0 + i32.load offset=1048988 + 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 (;@13;) + i32.const 0 + local.get 6 + local.get 0 + i32.or + i32.store offset=1048988 + local.get 5 + local.set 0 + br 1 (;@12;) + end + local.get 5 + i32.load offset=8 + local.set 0 + end + local.get 5 + local.get 1 + i32.store offset=8 + local.get 0 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 5 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + br 7 (;@4;) + end + local.get 0 + local.get 6 + i32.store + local.get 0 + local.get 0 + i32.load offset=4 + local.get 8 + i32.add + i32.store offset=4 + local.get 6 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 5 + local.get 6 + local.get 2 + i32.add + local.tee 0 + i32.sub + local.set 2 + local.get 5 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 3 (;@7;) + local.get 5 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 4 (;@6;) + block ;; label = @11 + local.get 5 + i32.load offset=4 + local.tee 1 + i32.const 3 + i32.and + i32.const 1 + i32.ne + br_if 0 (;@11;) + local.get 5 + local.get 1 + i32.const -8 + i32.and + local.tee 1 + call 5 + local.get 1 + local.get 2 + i32.add + local.set 2 + local.get 5 + local.get 1 + i32.add + local.tee 5 + i32.load offset=4 + local.set 1 + end + local.get 5 + local.get 1 + i32.const -2 + i32.and + i32.store offset=4 + local.get 0 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.get 2 + i32.store + block ;; label = @11 + local.get 2 + i32.const 256 + i32.lt_u + br_if 0 (;@11;) + local.get 0 + local.get 2 + call 4 + br 6 (;@5;) + end + local.get 2 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 1 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048988 + local.tee 5 + i32.const 1 + local.get 2 + i32.const 3 + i32.shr_u + i32.shl + local.tee 2 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 5 + local.get 2 + i32.or + i32.store offset=1048988 + local.get 1 + local.set 2 + br 1 (;@11;) + end + local.get 1 + i32.load offset=8 + local.set 2 + end + local.get 1 + local.get 0 + i32.store offset=8 + local.get 2 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=12 + local.get 0 + local.get 2 + i32.store offset=8 + br 5 (;@5;) + end + i32.const 0 + local.get 0 + local.get 2 + i32.sub + local.tee 1 + i32.store offset=1049000 + i32.const 0 + i32.const 0 + i32.load offset=1049008 + local.tee 0 + local.get 2 + i32.add + local.tee 5 + i32.store offset=1049008 + local.get 5 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + local.set 1 + br 6 (;@3;) + end + i32.const 0 + i32.load offset=1049004 + local.set 1 + block ;; label = @9 + block ;; label = @10 + local.get 0 + local.get 2 + i32.sub + local.tee 5 + i32.const 15 + i32.gt_u + br_if 0 (;@10;) + i32.const 0 + i32.const 0 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.store offset=1048996 + local.get 1 + local.get 0 + i32.const 3 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.tee 0 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@9;) + end + i32.const 0 + local.get 5 + i32.store offset=1048996 + i32.const 0 + local.get 1 + local.get 2 + i32.add + local.tee 6 + i32.store offset=1049004 + local.get 6 + local.get 5 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 5 + i32.store + local.get 1 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + end + local.get 1 + i32.const 8 + i32.add + return + end + local.get 0 + local.get 7 + local.get 8 + i32.add + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049008 + local.tee 0 + i32.const 15 + i32.add + i32.const -8 + i32.and + local.tee 1 + i32.const -8 + i32.add + local.tee 5 + i32.store offset=1049008 + i32.const 0 + local.get 0 + local.get 1 + i32.sub + i32.const 0 + i32.load offset=1049000 + local.get 8 + i32.add + local.tee 1 + i32.add + i32.const 8 + i32.add + local.tee 6 + i32.store offset=1049000 + local.get 5 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + i32.const 40 + i32.store offset=4 + i32.const 0 + i32.const 2097152 + i32.store offset=1049020 + br 3 (;@4;) + end + i32.const 0 + local.get 0 + i32.store offset=1049008 + i32.const 0 + i32.const 0 + i32.load offset=1049000 + local.get 2 + i32.add + local.tee 2 + i32.store offset=1049000 + local.get 0 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@5;) + end + i32.const 0 + local.get 0 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1048996 + local.get 2 + i32.add + local.tee 2 + i32.store offset=1048996 + local.get 0 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.get 2 + i32.store + end + local.get 6 + i32.const 8 + i32.add + return + end + i32.const 0 + local.set 1 + i32.const 0 + i32.load offset=1049000 + local.tee 0 + local.get 2 + i32.le_u + br_if 0 (;@3;) + i32.const 0 + local.get 0 + local.get 2 + i32.sub + local.tee 1 + i32.store offset=1049000 + i32.const 0 + i32.const 0 + i32.load offset=1049008 + local.tee 0 + local.get 2 + i32.add + local.tee 5 + i32.store offset=1049008 + local.get 5 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + return + end + local.get 1 + return + end + local.get 0 + local.get 4 + i32.store offset=24 + block ;; label = @2 + local.get 6 + i32.load offset=16 + local.tee 5 + i32.eqz + br_if 0 (;@2;) + local.get 0 + local.get 5 + i32.store offset=16 + local.get 5 + local.get 0 + i32.store offset=24 + end + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 5 + i32.eqz + br_if 0 (;@1;) + local.get 0 + i32.const 20 + i32.add + local.get 5 + i32.store + local.get 5 + local.get 0 + i32.store offset=24 + end + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.const 16 + i32.lt_u + br_if 0 (;@2;) + local.get 6 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 2 + i32.add + local.tee 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 + block ;; label = @3 + local.get 1 + i32.const 256 + i32.lt_u + br_if 0 (;@3;) + local.get 0 + local.get 1 + call 4 + br 2 (;@1;) + end + local.get 1 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 2 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048988 + local.tee 5 + 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 5 + local.get 1 + i32.or + i32.store offset=1048988 + local.get 2 + local.set 1 + br 1 (;@3;) + end + local.get 2 + i32.load offset=8 + local.set 1 + end + local.get 2 + local.get 0 + i32.store offset=8 + local.get 1 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 2 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + br 1 (;@1;) + end + local.get 6 + local.get 1 + local.get 2 + i32.add + local.tee 0 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + local.tee 0 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + end + local.get 6 + i32.const 8 + i32.add + ) + (func (;3;) (type 3) (param i32 i32) + (local 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 + local.get 0 + local.get 3 + i32.sub + local.tee 0 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 0 (;@3;) + local.get 2 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 1 + i32.store offset=1048996 + local.get 2 + local.get 2 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 1 + i32.store + return + end + local.get 0 + local.get 3 + call 5 + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 2 + i32.and + br_if 0 (;@5;) + local.get 2 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 2 (;@3;) + local.get 2 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 3 (;@2;) + local.get 2 + local.get 3 + i32.const -8 + i32.and + local.tee 3 + call 5 + local.get 0 + local.get 3 + local.get 1 + i32.add + local.tee 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 1 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048996 + return + end + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + 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 + end + block ;; label = @4 + local.get 1 + i32.const 256 + i32.lt_u + br_if 0 (;@4;) + local.get 0 + local.get 1 + call 4 + br 3 (;@1;) + end + local.get 1 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 2 + block ;; label = @4 + block ;; label = @5 + i32.const 0 + i32.load offset=1048988 + local.tee 3 + i32.const 1 + local.get 1 + i32.const 3 + i32.shr_u + i32.shl + local.tee 1 + i32.and + br_if 0 (;@5;) + i32.const 0 + local.get 3 + local.get 1 + i32.or + i32.store offset=1048988 + local.get 2 + local.set 1 + br 1 (;@4;) + end + local.get 2 + i32.load offset=8 + local.set 1 + end + local.get 2 + local.get 0 + i32.store offset=8 + local.get 1 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 2 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + return + end + i32.const 0 + local.get 0 + i32.store offset=1049008 + i32.const 0 + i32.const 0 + i32.load offset=1049000 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1049000 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 1 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048996 + i32.const 0 + i32.const 0 + i32.store offset=1049004 + return + end + i32.const 0 + local.get 0 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1048996 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048996 + 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 + ) + (func (;4;) (type 3) (param i32 i32) + (local i32 i32 i32 i32) + i32.const 31 + local.set 2 + block ;; label = @1 + local.get 1 + i32.const 16777215 + i32.gt_u + br_if 0 (;@1;) + local.get 1 + i32.const 6 + local.get 1 + 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 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 0 + local.get 2 + i32.store offset=28 + local.get 2 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.set 3 + block ;; label = @1 + block ;; label = @2 + i32.const 0 + i32.load offset=1048992 + local.tee 4 + i32.const 1 + local.get 2 + i32.shl + local.tee 5 + i32.and + br_if 0 (;@2;) + i32.const 0 + local.get 4 + local.get 5 + i32.or + i32.store offset=1048992 + local.get 3 + local.get 0 + i32.store + local.get 0 + local.get 3 + i32.store offset=24 + br 1 (;@1;) + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.load + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 1 + i32.ne + br_if 0 (;@4;) + local.get 4 + local.set 2 + br 1 (;@3;) + end + local.get 1 + 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 3 + loop ;; label = @4 + local.get 4 + local.get 3 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 5 + i32.load + local.tee 2 + i32.eqz + br_if 2 (;@2;) + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 2 + local.set 4 + local.get 2 + i32.load offset=4 + i32.const -8 + i32.and + local.get 1 + i32.ne + br_if 0 (;@4;) + end + end + local.get 2 + i32.load offset=8 + local.tee 3 + local.get 0 + i32.store offset=12 + local.get 2 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 2 + i32.store offset=12 + local.get 0 + local.get 3 + i32.store offset=8 + return + end + local.get 5 + local.get 0 + i32.store + local.get 0 + local.get 4 + i32.store offset=24 + end + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + ) + (func (;5;) (type 3) (param i32 i32) + (local i32 i32 i32 i32) + local.get 0 + i32.load offset=12 + local.set 2 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + i32.const 256 + i32.lt_u + br_if 0 (;@3;) + local.get 0 + i32.load offset=24 + local.set 3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 2 + local.get 0 + i32.ne + br_if 0 (;@6;) + local.get 0 + i32.const 20 + i32.const 16 + local.get 0 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + select + i32.add + i32.load + local.tee 1 + br_if 1 (;@5;) + i32.const 0 + local.set 2 + br 2 (;@4;) + end + local.get 0 + i32.load offset=8 + local.tee 1 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 1 + i32.store offset=8 + br 1 (;@4;) + end + local.get 2 + local.get 0 + i32.const 16 + i32.add + local.get 4 + select + local.set 4 + loop ;; label = @5 + local.get 4 + local.set 5 + local.get 1 + local.tee 2 + i32.const 20 + i32.add + local.tee 1 + local.get 2 + i32.const 16 + i32.add + local.get 1 + i32.load + local.tee 1 + select + local.set 4 + local.get 2 + i32.const 20 + i32.const 16 + local.get 1 + select + i32.add + i32.load + local.tee 1 + br_if 0 (;@5;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 3 + i32.eqz + br_if 2 (;@1;) + block ;; label = @4 + local.get 0 + i32.load offset=28 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.tee 1 + i32.load + local.get 0 + i32.eq + br_if 0 (;@4;) + local.get 3 + i32.const 16 + i32.const 20 + local.get 3 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 2 + i32.store + local.get 2 + i32.eqz + br_if 3 (;@1;) + br 2 (;@2;) + end + local.get 1 + local.get 2 + i32.store + local.get 2 + br_if 1 (;@2;) + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 0 + i32.load offset=28 + i32.rotl + i32.and + i32.store offset=1048992 + br 2 (;@1;) + end + block ;; label = @3 + local.get 2 + local.get 0 + i32.load offset=8 + local.tee 4 + i32.eq + br_if 0 (;@3;) + local.get 4 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 4 + i32.store offset=8 + return + end + i32.const 0 + i32.const 0 + i32.load offset=1048988 + i32.const -2 + local.get 1 + i32.const 3 + i32.shr_u + i32.rotl + i32.and + i32.store offset=1048988 + return + end + local.get 2 + local.get 3 + i32.store offset=24 + block ;; label = @2 + local.get 0 + i32.load offset=16 + local.tee 1 + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.store offset=16 + local.get 1 + local.get 2 + i32.store offset=24 + end + local.get 0 + i32.const 20 + i32.add + i32.load + local.tee 1 + i32.eqz + br_if 0 (;@1;) + local.get 2 + i32.const 20 + i32.add + local.get 1 + i32.store + local.get 1 + local.get 2 + i32.store offset=24 + return + end + ) + (func (;6;) (type 4) (param i32) + (local i32 i32 i32 i32 i32) + 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 = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 2 + i32.const 1 + i32.and + br_if 0 (;@4;) + local.get 2 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@3;) + local.get 1 + i32.load + local.tee 2 + local.get 0 + i32.add + local.set 0 + block ;; label = @5 + local.get 1 + local.get 2 + i32.sub + local.tee 1 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 0 (;@5;) + local.get 3 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 1 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048996 + local.get 3 + local.get 3 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 0 + i32.store + return + end + local.get 1 + local.get 2 + call 5 + end + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 2 + i32.and + br_if 0 (;@6;) + local.get 3 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 2 (;@4;) + local.get 3 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 5 (;@1;) + local.get 3 + local.get 2 + i32.const -8 + i32.and + local.tee 2 + call 5 + local.get 1 + local.get 2 + local.get 0 + i32.add + local.tee 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 1 (;@5;) + i32.const 0 + local.get 0 + i32.store offset=1048996 + return + end + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + 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 + end + local.get 0 + i32.const 256 + i32.lt_u + br_if 2 (;@2;) + local.get 1 + local.get 0 + call 4 + i32.const 0 + local.set 1 + i32.const 0 + i32.const 0 + i32.load offset=1049028 + i32.const -1 + i32.add + local.tee 0 + i32.store offset=1049028 + local.get 0 + br_if 1 (;@3;) + block ;; label = @5 + i32.const 0 + i32.load offset=1048716 + local.tee 0 + i32.eqz + br_if 0 (;@5;) + i32.const 0 + local.set 1 + loop ;; label = @6 + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@6;) + end + end + i32.const 0 + local.get 1 + i32.const 4095 + local.get 1 + i32.const 4095 + i32.gt_u + select + i32.store offset=1049028 + return + end + i32.const 0 + local.get 1 + i32.store offset=1049008 + i32.const 0 + i32.const 0 + i32.load offset=1049000 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1049000 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @4 + local.get 1 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 0 (;@4;) + i32.const 0 + i32.const 0 + i32.store offset=1048996 + i32.const 0 + i32.const 0 + i32.store offset=1049004 + end + local.get 0 + i32.const 0 + i32.load offset=1049020 + local.tee 4 + i32.le_u + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1049008 + local.tee 3 + i32.eqz + br_if 0 (;@3;) + i32.const 0 + local.set 1 + block ;; label = @4 + i32.const 0 + i32.load offset=1049000 + local.tee 5 + i32.const 41 + i32.lt_u + br_if 0 (;@4;) + i32.const 1048708 + local.set 0 + loop ;; label = @5 + block ;; label = @6 + local.get 0 + i32.load + local.tee 2 + local.get 3 + i32.gt_u + br_if 0 (;@6;) + local.get 2 + local.get 0 + i32.load offset=4 + i32.add + local.get 3 + i32.gt_u + br_if 2 (;@4;) + end + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@5;) + end + end + block ;; label = @4 + i32.const 0 + i32.load offset=1048716 + local.tee 0 + i32.eqz + br_if 0 (;@4;) + i32.const 0 + local.set 1 + loop ;; label = @5 + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@5;) + end + end + i32.const 0 + local.get 1 + i32.const 4095 + local.get 1 + i32.const 4095 + i32.gt_u + select + i32.store offset=1049028 + local.get 5 + local.get 4 + i32.le_u + br_if 0 (;@3;) + i32.const 0 + i32.const -1 + i32.store offset=1049020 + end + return + end + local.get 0 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 3 + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1048988 + local.tee 2 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@3;) + i32.const 0 + local.get 2 + local.get 0 + i32.or + i32.store offset=1048988 + local.get 3 + local.set 0 + br 1 (;@2;) + end + local.get 3 + i32.load offset=8 + local.set 0 + end + local.get 3 + local.get 1 + i32.store offset=8 + local.get 0 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 3 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + return + end + i32.const 0 + local.get 1 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1048996 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048996 + 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 + ) + (func (;7;) (type 5) (param i32 i32 i32 i32) (result i32) + (local i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 1 + br_if 0 (;@6;) + local.get 3 + br_if 1 (;@5;) + local.get 2 + return + end + block ;; label = @6 + local.get 2 + i32.const 9 + i32.lt_u + br_if 0 (;@6;) + local.get 2 + local.get 3 + call 1 + local.tee 2 + i32.eqz + br_if 2 (;@4;) + local.get 2 + local.get 0 + local.get 1 + local.get 3 + local.get 1 + local.get 3 + i32.lt_u + select + call 9 + local.set 3 + local.get 0 + call 6 + local.get 3 + return + end + local.get 3 + i32.const -65588 + i32.gt_u + br_if 1 (;@4;) + i32.const 16 + local.get 3 + i32.const 11 + i32.add + i32.const -8 + i32.and + local.get 3 + i32.const 11 + i32.lt_u + select + local.set 1 + local.get 0 + i32.const -4 + i32.add + local.tee 4 + i32.load + local.tee 5 + i32.const -8 + i32.and + local.set 2 + block ;; label = @6 + block ;; label = @7 + local.get 5 + i32.const 3 + i32.and + br_if 0 (;@7;) + local.get 1 + i32.const 256 + i32.lt_u + br_if 1 (;@6;) + local.get 2 + local.get 1 + i32.const 4 + i32.or + i32.lt_u + br_if 1 (;@6;) + local.get 2 + local.get 1 + i32.sub + i32.const 131073 + i32.ge_u + br_if 1 (;@6;) + br 5 (;@2;) + end + local.get 0 + i32.const -8 + i32.add + local.tee 6 + local.get 2 + i32.add + local.set 7 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + local.get 2 + local.get 1 + i32.ge_u + br_if 0 (;@9;) + local.get 7 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 2 (;@7;) + local.get 7 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 1 (;@8;) + local.get 7 + i32.load offset=4 + local.tee 5 + i32.const 2 + i32.and + br_if 3 (;@6;) + local.get 5 + i32.const -8 + i32.and + local.tee 5 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.lt_u + br_if 3 (;@6;) + local.get 7 + local.get 5 + call 5 + local.get 2 + local.get 1 + i32.sub + local.tee 3 + i32.const 16 + i32.lt_u + br_if 6 (;@3;) + local.get 4 + local.get 1 + local.get 4 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 1 + local.get 3 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + 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 1 + local.get 3 + call 3 + local.get 0 + return + end + local.get 2 + local.get 1 + i32.sub + local.tee 3 + i32.const 15 + i32.le_u + br_if 6 (;@2;) + local.get 4 + local.get 1 + local.get 5 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 1 + local.get 3 + 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 1 + local.get 3 + call 3 + local.get 0 + return + end + i32.const 0 + i32.load offset=1048996 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.lt_u + br_if 1 (;@6;) + block ;; label = @8 + block ;; label = @9 + local.get 2 + local.get 1 + i32.sub + local.tee 3 + i32.const 15 + i32.gt_u + br_if 0 (;@9;) + local.get 4 + local.get 5 + i32.const 1 + i32.and + local.get 2 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 3 + i32.const 0 + local.set 1 + br 1 (;@8;) + end + local.get 4 + local.get 1 + local.get 5 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 1 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 3 + i32.store + local.get 2 + local.get 2 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + end + i32.const 0 + local.get 1 + i32.store offset=1049004 + i32.const 0 + local.get 3 + i32.store offset=1048996 + local.get 0 + return + end + i32.const 0 + i32.load offset=1049000 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.gt_u + br_if 5 (;@1;) + end + local.get 3 + call 2 + local.tee 1 + i32.eqz + br_if 1 (;@4;) + local.get 1 + local.get 0 + i32.const -4 + i32.const -8 + local.get 4 + i32.load + local.tee 2 + i32.const 3 + i32.and + select + local.get 2 + i32.const -8 + i32.and + i32.add + local.tee 2 + local.get 3 + local.get 2 + local.get 3 + i32.lt_u + select + call 9 + local.set 3 + local.get 0 + call 6 + local.get 3 + return + end + i32.const 0 + i32.load8_u offset=1049032 + drop + block ;; label = @5 + block ;; label = @6 + local.get 2 + i32.const 9 + i32.lt_u + br_if 0 (;@6;) + local.get 2 + local.get 3 + call 1 + local.set 0 + br 1 (;@5;) + end + local.get 3 + call 2 + local.set 0 + end + local.get 0 + br_if 2 (;@2;) + end + unreachable + unreachable + end + local.get 4 + local.get 2 + local.get 4 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + end + local.get 0 + return + end + local.get 4 + local.get 1 + local.get 5 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 3 + local.get 2 + local.get 1 + i32.sub + local.tee 1 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 1 + i32.store offset=1049000 + i32.const 0 + local.get 3 + i32.store offset=1049008 + local.get 0 + ) + (func (;8;) (type 6) (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 (;9;) (type 6) (param i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + call 8 + ) + (func (;10;) (type 5) (param i32 i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call 7 + ) + (table (;0;) 2 2 funcref) + (memory (;0;) 17) + (global (;0;) (mut i32) i32.const 1048576) + (global (;1;) i32 i32.const 1049033) + (global (;2;) i32 i32.const 1049040) + (export "memory" (memory 0)) + (export "subtract" (func 0)) + (export "cabi_realloc_wit_bindgen_0_20_0" (func 7)) + (export "cabi_realloc" (func 10)) + (export "__data_end" (global 1)) + (export "__heap_base" (global 2)) + (elem (;0;) (i32.const 1) func 10) + (data (;0;) (i32.const 1048576) "\01\00\00\00") +) diff --git a/homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wasm b/homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wasm new file mode 100755 index 00000000..ebde5d3d Binary files /dev/null and b/homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wasm differ diff --git a/homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wat b/homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wat new file mode 100644 index 00000000..562bb4e4 --- /dev/null +++ b/homestar-wasm/fixtures/example_subtract_cargo_component_wasi.wat @@ -0,0 +1,6117 @@ +(component + (core module (;0;) + (type (;0;) (func (param f64 f64) (result f64))) + (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) (result i32))) + (type (;5;) (func (param i32 i32))) + (type (;6;) (func)) + (type (;7;) (func (param i32 i32 i32) (result i32))) + (func (;0;) (type 0) (param f64 f64) (result f64) + local.get 0 + local.get 1 + f64.sub + ) + (func (;1;) (type 1) (param i32 i32 i32 i32) (result i32) + (local i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + local.get 1 + br_if 0 (;@5;) + local.get 3 + i32.eqz + br_if 4 (;@1;) + i32.const 0 + i32.load8_u offset=1048580 + drop + block ;; label = @6 + local.get 2 + i32.const 8 + i32.gt_u + br_if 0 (;@6;) + local.get 2 + local.get 3 + i32.le_u + br_if 2 (;@4;) + end + local.get 2 + local.get 2 + local.get 3 + local.get 2 + i32.rem_u + local.tee 1 + i32.sub + i32.const 0 + local.get 1 + select + local.get 3 + i32.add + call 9 + local.set 2 + br 2 (;@3;) + end + block ;; label = @5 + block ;; label = @6 + local.get 2 + i32.const 8 + i32.gt_u + br_if 0 (;@6;) + local.get 2 + local.get 3 + i32.le_u + br_if 1 (;@5;) + end + local.get 2 + local.get 2 + local.get 3 + local.get 2 + i32.rem_u + local.tee 4 + i32.sub + i32.const 0 + local.get 4 + select + local.get 3 + i32.add + call 9 + local.tee 2 + i32.eqz + br_if 3 (;@2;) + local.get 2 + local.get 0 + local.get 1 + local.get 3 + local.get 1 + local.get 3 + i32.lt_u + select + call 12 + drop + local.get 0 + call 4 + br 4 (;@1;) + end + local.get 0 + local.get 3 + call 6 + local.set 2 + br 1 (;@3;) + end + local.get 3 + call 2 + local.set 2 + end + local.get 2 + br_if 1 (;@1;) + end + unreachable + unreachable + end + local.get 2 + ) + (func (;2;) (type 2) (param i32) (result i32) + local.get 0 + call 3 + ) + (func (;3;) (type 2) (param i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) + global.get 0 + i32.const 16 + i32.sub + local.tee 1 + global.set 0 + 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 + i32.const 0 + i32.load offset=1048608 + local.tee 2 + br_if 0 (;@12;) + block ;; label = @13 + i32.const 0 + i32.load offset=1049056 + local.tee 3 + br_if 0 (;@13;) + i32.const 0 + i64.const -1 + i64.store offset=1049068 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049060 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=1049056 + i32.const 0 + i32.const 0 + i32.store offset=1049076 + i32.const 0 + i32.const 0 + i32.store offset=1049028 + end + i32.const 1114112 + i32.const 1049088 + i32.lt_u + br_if 1 (;@11;) + i32.const 0 + local.set 2 + i32.const 1114112 + i32.const 1049088 + i32.sub + i32.const 89 + i32.lt_u + br_if 0 (;@12;) + i32.const 0 + local.set 4 + i32.const 0 + i32.const 1049088 + i32.store offset=1049032 + i32.const 0 + i32.const 1049088 + i32.store offset=1048600 + i32.const 0 + local.get 3 + i32.store offset=1048620 + i32.const 0 + i32.const -1 + i32.store offset=1048616 + i32.const 0 + i32.const 1114112 + i32.const 1049088 + i32.sub + i32.store offset=1049036 + loop ;; label = @13 + local.get 4 + i32.const 1048644 + i32.add + local.get 4 + i32.const 1048632 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1048624 + i32.add + local.tee 5 + i32.store + local.get 4 + i32.const 1048636 + i32.add + local.get 5 + i32.store + local.get 4 + i32.const 1048652 + i32.add + local.get 4 + i32.const 1048640 + i32.add + local.tee 5 + i32.store + local.get 5 + local.get 3 + i32.store + local.get 4 + i32.const 1048660 + i32.add + local.get 4 + i32.const 1048648 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 5 + i32.store + local.get 4 + i32.const 1048656 + 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 (;@13;) + 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 + i32.const 1114112 + i32.const 1049088 + i32.sub + 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=1049072 + i32.store offset=1048612 + i32.const 0 + local.get 4 + i32.store offset=1048596 + i32.const 0 + local.get 2 + i32.store offset=1048608 + local.get 3 + i32.const 1049088 + i32.add + i32.const 4 + i32.add + i32.const 56 + i32.store + end + block ;; label = @12 + block ;; label = @13 + local.get 0 + i32.const 236 + i32.gt_u + br_if 0 (;@13;) + block ;; label = @14 + i32.const 0 + i32.load offset=1048584 + local.tee 6 + 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 7 + 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 (;@14;) + block ;; label = @15 + block ;; label = @16 + local.get 4 + i32.const 1 + i32.and + local.get 3 + i32.or + i32.const 1 + i32.xor + local.tee 5 + i32.const 3 + i32.shl + local.tee 3 + i32.const 1048624 + i32.add + local.tee 4 + local.get 3 + i32.const 1048632 + i32.add + i32.load + local.tee 3 + i32.load offset=8 + local.tee 7 + i32.ne + br_if 0 (;@16;) + i32.const 0 + local.get 6 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048584 + br 1 (;@15;) + end + local.get 4 + local.get 7 + i32.store offset=8 + local.get 7 + local.get 4 + i32.store offset=12 + end + local.get 3 + i32.const 8 + i32.add + local.set 4 + local.get 3 + local.get 5 + i32.const 3 + i32.shl + local.tee 5 + i32.const 3 + i32.or + i32.store offset=4 + local.get 3 + local.get 5 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 13 (;@1;) + end + local.get 7 + i32.const 0 + i32.load offset=1048592 + local.tee 8 + i32.le_u + br_if 1 (;@12;) + block ;; label = @14 + local.get 4 + i32.eqz + br_if 0 (;@14;) + block ;; label = @15 + block ;; label = @16 + 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 1048624 + i32.add + local.tee 5 + local.get 4 + i32.const 1048632 + i32.add + i32.load + local.tee 4 + i32.load offset=8 + local.tee 0 + i32.ne + br_if 0 (;@16;) + i32.const 0 + local.get 6 + i32.const -2 + local.get 3 + i32.rotl + i32.and + local.tee 6 + i32.store offset=1048584 + br 1 (;@15;) + end + local.get 5 + local.get 0 + i32.store offset=8 + local.get 0 + local.get 5 + i32.store offset=12 + end + local.get 4 + local.get 7 + 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 7 + i32.sub + local.tee 5 + i32.store + local.get 4 + local.get 7 + i32.add + local.tee 0 + local.get 5 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @15 + local.get 8 + i32.eqz + br_if 0 (;@15;) + local.get 8 + i32.const -8 + i32.and + i32.const 1048624 + i32.add + local.set 7 + i32.const 0 + i32.load offset=1048604 + local.set 3 + block ;; label = @16 + block ;; label = @17 + local.get 6 + i32.const 1 + local.get 8 + i32.const 3 + i32.shr_u + i32.shl + local.tee 9 + i32.and + br_if 0 (;@17;) + i32.const 0 + local.get 6 + local.get 9 + i32.or + i32.store offset=1048584 + local.get 7 + local.set 9 + br 1 (;@16;) + end + local.get 7 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 3 + i32.store offset=12 + local.get 7 + local.get 3 + i32.store offset=8 + local.get 3 + local.get 7 + i32.store offset=12 + local.get 3 + local.get 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=1048604 + i32.const 0 + local.get 5 + i32.store offset=1048592 + br 13 (;@1;) + end + i32.const 0 + i32.load offset=1048588 + local.tee 10 + i32.eqz + br_if 1 (;@12;) + local.get 10 + i32.const 0 + local.get 10 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1048888 + i32.add + i32.load + local.tee 0 + i32.load offset=4 + i32.const -8 + i32.and + local.get 7 + i32.sub + local.set 3 + local.get 0 + local.set 5 + block ;; label = @14 + loop ;; label = @15 + block ;; label = @16 + local.get 5 + i32.load offset=16 + local.tee 4 + br_if 0 (;@16;) + local.get 5 + i32.const 20 + i32.add + i32.load + local.tee 4 + i32.eqz + br_if 2 (;@14;) + end + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 7 + i32.sub + local.tee 5 + local.get 3 + local.get 5 + local.get 3 + i32.lt_u + local.tee 5 + select + local.set 3 + local.get 4 + local.get 0 + local.get 5 + select + local.set 0 + local.get 4 + local.set 5 + br 0 (;@15;) + end + end + local.get 0 + i32.load offset=24 + local.set 11 + block ;; label = @14 + local.get 0 + i32.load offset=12 + local.tee 9 + local.get 0 + i32.eq + br_if 0 (;@14;) + local.get 0 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048600 + 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 12 (;@2;) + end + block ;; label = @14 + local.get 0 + i32.const 20 + i32.add + local.tee 5 + i32.load + local.tee 4 + br_if 0 (;@14;) + local.get 0 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 4 (;@10;) + local.get 0 + i32.const 16 + i32.add + local.set 5 + end + loop ;; label = @14 + local.get 5 + local.set 2 + local.get 4 + local.tee 9 + i32.const 20 + i32.add + local.tee 5 + i32.load + local.tee 4 + br_if 0 (;@14;) + local.get 9 + i32.const 16 + i32.add + local.set 5 + local.get 9 + i32.load offset=16 + local.tee 4 + br_if 0 (;@14;) + end + local.get 2 + i32.const 0 + i32.store + br 11 (;@2;) + end + i32.const -1 + local.set 7 + local.get 0 + i32.const -65 + i32.gt_u + br_if 0 (;@12;) + local.get 0 + i32.const 19 + i32.add + local.tee 4 + i32.const -16 + i32.and + local.set 7 + i32.const 0 + i32.load offset=1048588 + local.tee 10 + i32.eqz + br_if 0 (;@12;) + i32.const 0 + local.set 8 + block ;; label = @13 + local.get 7 + i32.const 256 + i32.lt_u + br_if 0 (;@13;) + i32.const 31 + local.set 8 + local.get 7 + i32.const 16777215 + i32.gt_u + br_if 0 (;@13;) + local.get 7 + 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 7 + i32.sub + local.set 3 + block ;; label = @13 + block ;; label = @14 + block ;; label = @15 + block ;; label = @16 + local.get 8 + i32.const 2 + i32.shl + i32.const 1048888 + i32.add + i32.load + local.tee 5 + br_if 0 (;@16;) + i32.const 0 + local.set 4 + i32.const 0 + local.set 9 + br 1 (;@15;) + end + i32.const 0 + local.set 4 + local.get 7 + 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 = @16 + block ;; label = @17 + local.get 5 + i32.load offset=4 + i32.const -8 + i32.and + local.get 7 + i32.sub + local.tee 6 + local.get 3 + i32.ge_u + br_if 0 (;@17;) + local.get 6 + local.set 3 + local.get 5 + local.set 9 + local.get 6 + br_if 0 (;@17;) + i32.const 0 + local.set 3 + local.get 5 + local.set 9 + local.get 5 + local.set 4 + br 3 (;@14;) + end + local.get 4 + local.get 5 + i32.const 20 + i32.add + i32.load + local.tee 6 + local.get 6 + local.get 5 + 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 5 + i32.eq + select + local.get 4 + local.get 6 + select + local.set 4 + local.get 0 + i32.const 1 + i32.shl + local.set 0 + local.get 5 + br_if 0 (;@16;) + end + end + block ;; label = @15 + local.get 4 + local.get 9 + i32.or + br_if 0 (;@15;) + 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 (;@12;) + local.get 4 + i32.const 0 + local.get 4 + i32.sub + i32.and + i32.ctz + i32.const 2 + i32.shl + i32.const 1048888 + i32.add + i32.load + local.set 4 + end + local.get 4 + i32.eqz + br_if 1 (;@13;) + end + loop ;; label = @14 + local.get 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 7 + i32.sub + local.tee 6 + local.get 3 + i32.lt_u + local.set 0 + block ;; label = @15 + local.get 4 + i32.load offset=16 + local.tee 5 + br_if 0 (;@15;) + local.get 4 + i32.const 20 + i32.add + i32.load + local.set 5 + end + local.get 6 + 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 5 + local.set 4 + local.get 5 + br_if 0 (;@14;) + end + end + local.get 9 + i32.eqz + br_if 0 (;@12;) + local.get 3 + i32.const 0 + i32.load offset=1048592 + local.get 7 + i32.sub + i32.ge_u + br_if 0 (;@12;) + local.get 9 + i32.load offset=24 + local.set 2 + block ;; label = @13 + local.get 9 + i32.load offset=12 + local.tee 0 + local.get 9 + i32.eq + br_if 0 (;@13;) + local.get 9 + i32.load offset=8 + local.tee 4 + i32.const 0 + i32.load offset=1048600 + 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 10 (;@3;) + end + block ;; label = @13 + local.get 9 + i32.const 20 + i32.add + local.tee 5 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 9 + i32.load offset=16 + local.tee 4 + i32.eqz + br_if 4 (;@9;) + local.get 9 + i32.const 16 + i32.add + local.set 5 + end + loop ;; label = @13 + local.get 5 + local.set 6 + local.get 4 + local.tee 0 + i32.const 20 + i32.add + local.tee 5 + i32.load + local.tee 4 + br_if 0 (;@13;) + local.get 0 + i32.const 16 + i32.add + local.set 5 + local.get 0 + i32.load offset=16 + local.tee 4 + br_if 0 (;@13;) + end + local.get 6 + i32.const 0 + i32.store + br 9 (;@3;) + end + block ;; label = @12 + i32.const 0 + i32.load offset=1048592 + local.tee 4 + local.get 7 + i32.lt_u + br_if 0 (;@12;) + i32.const 0 + i32.load offset=1048604 + local.set 3 + block ;; label = @13 + block ;; label = @14 + local.get 4 + local.get 7 + i32.sub + local.tee 5 + i32.const 16 + i32.lt_u + br_if 0 (;@14;) + local.get 3 + local.get 7 + i32.add + local.tee 0 + local.get 5 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 4 + i32.add + local.get 5 + i32.store + local.get 3 + local.get 7 + i32.const 3 + i32.or + i32.store offset=4 + br 1 (;@13;) + 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 5 + end + i32.const 0 + local.get 5 + i32.store offset=1048592 + i32.const 0 + local.get 0 + i32.store offset=1048604 + local.get 3 + i32.const 8 + i32.add + local.set 4 + br 11 (;@1;) + end + block ;; label = @12 + i32.const 0 + i32.load offset=1048596 + local.tee 5 + local.get 7 + i32.le_u + br_if 0 (;@12;) + local.get 2 + local.get 7 + i32.add + local.tee 4 + local.get 5 + local.get 7 + i32.sub + local.tee 3 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048608 + i32.const 0 + local.get 3 + i32.store offset=1048596 + local.get 2 + local.get 7 + i32.const 3 + i32.or + i32.store offset=4 + local.get 2 + i32.const 8 + i32.add + local.set 4 + br 11 (;@1;) + end + block ;; label = @12 + block ;; label = @13 + i32.const 0 + i32.load offset=1049056 + i32.eqz + br_if 0 (;@13;) + i32.const 0 + i32.load offset=1049064 + local.set 3 + br 1 (;@12;) + end + i32.const 0 + i64.const -1 + i64.store offset=1049068 align=4 + i32.const 0 + i64.const 281474976776192 + i64.store offset=1049060 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=1049056 + i32.const 0 + i32.const 0 + i32.store offset=1049076 + i32.const 0 + i32.const 0 + i32.store offset=1049028 + i32.const 65536 + local.set 3 + end + i32.const 0 + local.set 4 + block ;; label = @12 + local.get 3 + local.get 7 + i32.const 71 + i32.add + local.tee 8 + i32.add + local.tee 0 + i32.const 0 + local.get 3 + i32.sub + local.tee 6 + i32.and + local.tee 9 + local.get 7 + i32.gt_u + br_if 0 (;@12;) + i32.const 0 + i32.const 48 + i32.store offset=1049080 + br 11 (;@1;) + end + block ;; label = @12 + i32.const 0 + i32.load offset=1049024 + local.tee 4 + i32.eqz + br_if 0 (;@12;) + block ;; label = @13 + i32.const 0 + i32.load offset=1049016 + local.tee 3 + local.get 9 + i32.add + local.tee 10 + local.get 3 + i32.le_u + br_if 0 (;@13;) + local.get 10 + local.get 4 + i32.le_u + br_if 1 (;@12;) + end + i32.const 0 + local.set 4 + i32.const 0 + i32.const 48 + i32.store offset=1049080 + br 11 (;@1;) + end + i32.const 0 + i32.load8_u offset=1049028 + i32.const 4 + i32.and + br_if 5 (;@6;) + block ;; label = @12 + block ;; label = @13 + block ;; label = @14 + local.get 2 + i32.eqz + br_if 0 (;@14;) + i32.const 1049032 + local.set 4 + loop ;; label = @15 + block ;; label = @16 + local.get 4 + i32.load + local.tee 3 + local.get 2 + i32.gt_u + br_if 0 (;@16;) + local.get 3 + local.get 4 + i32.load offset=4 + i32.add + local.get 2 + i32.gt_u + br_if 3 (;@13;) + end + local.get 4 + i32.load offset=8 + local.tee 4 + br_if 0 (;@15;) + end + end + i32.const 0 + call 11 + local.tee 0 + i32.const -1 + i32.eq + br_if 6 (;@7;) + local.get 9 + local.set 6 + block ;; label = @14 + i32.const 0 + i32.load offset=1049060 + local.tee 4 + i32.const -1 + i32.add + local.tee 3 + local.get 0 + i32.and + i32.eqz + br_if 0 (;@14;) + 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 6 + end + local.get 6 + local.get 7 + i32.le_u + br_if 6 (;@7;) + local.get 6 + i32.const 2147483646 + i32.gt_u + br_if 6 (;@7;) + block ;; label = @14 + i32.const 0 + i32.load offset=1049024 + local.tee 4 + i32.eqz + br_if 0 (;@14;) + i32.const 0 + i32.load offset=1049016 + local.tee 3 + local.get 6 + i32.add + local.tee 5 + local.get 3 + i32.le_u + br_if 7 (;@7;) + local.get 5 + local.get 4 + i32.gt_u + br_if 7 (;@7;) + end + local.get 6 + call 11 + local.tee 4 + local.get 0 + i32.ne + br_if 1 (;@12;) + br 8 (;@5;) + end + local.get 0 + local.get 5 + i32.sub + local.get 6 + i32.and + local.tee 6 + i32.const 2147483646 + i32.gt_u + br_if 5 (;@7;) + local.get 6 + call 11 + local.tee 0 + local.get 4 + i32.load + local.get 4 + i32.load offset=4 + i32.add + i32.eq + br_if 4 (;@8;) + local.get 0 + local.set 4 + end + block ;; label = @12 + local.get 4 + i32.const -1 + i32.eq + br_if 0 (;@12;) + local.get 7 + i32.const 72 + i32.add + local.get 6 + i32.le_u + br_if 0 (;@12;) + block ;; label = @13 + local.get 8 + local.get 6 + i32.sub + i32.const 0 + i32.load offset=1049064 + 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 (;@13;) + local.get 4 + local.set 0 + br 8 (;@5;) + end + block ;; label = @13 + local.get 3 + call 11 + i32.const -1 + i32.eq + br_if 0 (;@13;) + local.get 3 + local.get 6 + i32.add + local.set 6 + local.get 4 + local.set 0 + br 8 (;@5;) + end + i32.const 0 + local.get 6 + i32.sub + call 11 + drop + br 5 (;@7;) + end + local.get 4 + local.set 0 + local.get 4 + i32.const -1 + i32.ne + br_if 6 (;@5;) + br 4 (;@7;) + end + unreachable + unreachable + 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=1049028 + i32.const 4 + i32.or + i32.store offset=1049028 + end + local.get 9 + i32.const 2147483646 + i32.gt_u + br_if 1 (;@4;) + local.get 9 + call 11 + local.set 0 + i32.const 0 + call 11 + 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 6 + local.get 7 + i32.const 56 + i32.add + i32.le_u + br_if 1 (;@4;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049016 + local.get 6 + i32.add + local.tee 4 + i32.store offset=1049016 + block ;; label = @5 + local.get 4 + i32.const 0 + i32.load offset=1049020 + i32.le_u + br_if 0 (;@5;) + i32.const 0 + local.get 4 + i32.store offset=1049020 + end + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + i32.const 0 + i32.load offset=1048608 + local.tee 3 + i32.eqz + br_if 0 (;@8;) + i32.const 1049032 + local.set 4 + loop ;; label = @9 + local.get 0 + local.get 4 + i32.load + local.tee 5 + 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=1048600 + 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=1048600 + end + i32.const 0 + local.set 4 + i32.const 0 + local.get 6 + i32.store offset=1049036 + i32.const 0 + local.get 0 + i32.store offset=1049032 + i32.const 0 + i32.const -1 + i32.store offset=1048616 + i32.const 0 + i32.const 0 + i32.load offset=1049056 + i32.store offset=1048620 + i32.const 0 + i32.const 0 + i32.store offset=1049044 + loop ;; label = @8 + local.get 4 + i32.const 1048644 + i32.add + local.get 4 + i32.const 1048632 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 4 + i32.const 1048624 + i32.add + local.tee 5 + i32.store + local.get 4 + i32.const 1048636 + i32.add + local.get 5 + i32.store + local.get 4 + i32.const 1048652 + i32.add + local.get 4 + i32.const 1048640 + i32.add + local.tee 5 + i32.store + local.get 5 + local.get 3 + i32.store + local.get 4 + i32.const 1048660 + i32.add + local.get 4 + i32.const 1048648 + i32.add + local.tee 3 + i32.store + local.get 3 + local.get 5 + i32.store + local.get 4 + i32.const 1048656 + 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 6 + i32.const -56 + i32.add + local.tee 5 + 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=1049072 + i32.store offset=1048612 + i32.const 0 + local.get 4 + i32.store offset=1048596 + i32.const 0 + local.get 3 + i32.store offset=1048608 + local.get 0 + local.get 5 + 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 5 + 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 5 + i32.add + local.tee 0 + i32.const 0 + i32.load offset=1048596 + local.get 6 + i32.add + local.tee 2 + local.get 5 + i32.sub + local.tee 5 + i32.const 1 + i32.or + i32.store offset=4 + local.get 4 + local.get 9 + local.get 6 + i32.add + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049072 + i32.store offset=1048612 + i32.const 0 + local.get 5 + i32.store offset=1048596 + i32.const 0 + local.get 0 + i32.store offset=1048608 + 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=1048600 + local.tee 9 + i32.ge_u + br_if 0 (;@6;) + i32.const 0 + local.get 0 + i32.store offset=1048600 + local.get 0 + local.set 9 + end + local.get 0 + local.get 6 + i32.add + local.set 5 + i32.const 1049032 + 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 5 + 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 1049032 + local.set 4 + loop ;; label = @11 + block ;; label = @12 + local.get 4 + i32.load + local.tee 5 + local.get 3 + i32.gt_u + br_if 0 (;@12;) + local.get 5 + local.get 4 + i32.load offset=4 + i32.add + local.tee 5 + 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 6 + 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 7 + i32.const 3 + i32.or + i32.store offset=4 + local.get 5 + i32.const -8 + local.get 5 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 5 + i32.const 8 + i32.add + i32.const 15 + i32.and + select + i32.add + local.tee 6 + local.get 2 + local.get 7 + i32.add + local.tee 7 + i32.sub + local.set 4 + block ;; label = @10 + local.get 6 + local.get 3 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 7 + i32.store offset=1048608 + i32.const 0 + i32.const 0 + i32.load offset=1048596 + local.get 4 + i32.add + local.tee 4 + i32.store offset=1048596 + local.get 7 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + br 3 (;@7;) + end + block ;; label = @10 + local.get 6 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 0 (;@10;) + i32.const 0 + local.get 7 + 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 7 + local.get 4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 7 + local.get 4 + i32.add + local.get 4 + i32.store + br 3 (;@7;) + end + block ;; label = @10 + local.get 6 + 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 6 + i32.load offset=8 + local.tee 5 + local.get 3 + i32.const 3 + i32.shr_u + local.tee 9 + i32.const 3 + i32.shl + i32.const 1048624 + i32.add + local.tee 0 + i32.eq + drop + block ;; label = @13 + local.get 6 + i32.load offset=12 + local.tee 3 + local.get 5 + i32.ne + br_if 0 (;@13;) + i32.const 0 + i32.const 0 + i32.load offset=1048584 + i32.const -2 + local.get 9 + i32.rotl + i32.and + i32.store offset=1048584 + br 2 (;@11;) + end + local.get 3 + local.get 0 + i32.eq + drop + local.get 3 + local.get 5 + i32.store offset=8 + local.get 5 + local.get 3 + i32.store offset=12 + br 1 (;@11;) + end + local.get 6 + i32.load offset=24 + local.set 10 + block ;; label = @12 + block ;; label = @13 + local.get 6 + i32.load offset=12 + local.tee 0 + local.get 6 + i32.eq + br_if 0 (;@13;) + local.get 6 + 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 6 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 5 + br_if 0 (;@13;) + local.get 6 + i32.const 16 + i32.add + local.tee 3 + i32.load + local.tee 5 + 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 5 + local.tee 0 + i32.const 20 + i32.add + local.tee 3 + i32.load + local.tee 5 + br_if 0 (;@13;) + local.get 0 + i32.const 16 + i32.add + local.set 3 + local.get 0 + i32.load offset=16 + local.tee 5 + 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 6 + local.get 6 + i32.load offset=28 + local.tee 5 + i32.const 2 + i32.shl + i32.const 1048888 + 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=1048588 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048588 + br 2 (;@11;) + end + local.get 10 + i32.const 16 + i32.const 20 + local.get 10 + i32.load offset=16 + local.get 6 + 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 6 + 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 6 + 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 6 + local.get 8 + i32.add + local.tee 6 + i32.load offset=4 + local.set 3 + end + local.get 6 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + local.get 7 + local.get 4 + i32.add + local.get 4 + i32.store + local.get 7 + 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 1048624 + i32.add + local.set 3 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048584 + local.tee 5 + 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 5 + local.get 4 + i32.or + i32.store offset=1048584 + 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 7 + i32.store offset=12 + local.get 3 + local.get 7 + i32.store offset=8 + local.get 7 + local.get 3 + i32.store offset=12 + local.get 7 + 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 7 + local.get 3 + i32.store offset=28 + local.get 7 + i64.const 0 + i64.store offset=16 align=4 + local.get 3 + i32.const 2 + i32.shl + i32.const 1048888 + i32.add + local.set 5 + block ;; label = @10 + i32.const 0 + i32.load offset=1048588 + local.tee 0 + i32.const 1 + local.get 3 + i32.shl + local.tee 9 + i32.and + br_if 0 (;@10;) + local.get 5 + local.get 7 + i32.store + i32.const 0 + local.get 0 + local.get 9 + i32.or + i32.store offset=1048588 + local.get 7 + local.get 5 + i32.store offset=24 + local.get 7 + local.get 7 + i32.store offset=8 + local.get 7 + local.get 7 + 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 5 + i32.load + local.set 0 + loop ;; label = @10 + local.get 0 + local.tee 5 + 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 5 + 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 7 + i32.store + local.get 7 + local.get 5 + i32.store offset=24 + local.get 7 + local.get 7 + i32.store offset=12 + local.get 7 + local.get 7 + 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 6 + 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 5 + i32.const 55 + local.get 5 + i32.sub + i32.const 15 + i32.and + i32.const 0 + local.get 5 + 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=1049072 + i32.store offset=1048612 + i32.const 0 + local.get 4 + i32.store offset=1048596 + i32.const 0 + local.get 2 + i32.store offset=1048608 + local.get 9 + i32.const 16 + i32.add + i32.const 0 + i64.load offset=1049040 align=4 + i64.store align=4 + local.get 9 + i32.const 0 + i64.load offset=1049032 align=4 + i64.store offset=8 align=4 + i32.const 0 + local.get 9 + i32.const 8 + i32.add + i32.store offset=1049040 + i32.const 0 + local.get 6 + i32.store offset=1049036 + i32.const 0 + local.get 0 + i32.store offset=1049032 + i32.const 0 + i32.const 0 + i32.store offset=1049044 + 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 5 + 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 1048624 + i32.add + local.set 4 + block ;; label = @10 + block ;; label = @11 + i32.const 0 + i32.load offset=1048584 + local.tee 5 + 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 5 + local.get 0 + i32.or + i32.store offset=1048584 + local.get 4 + local.set 5 + br 1 (;@10;) + end + local.get 4 + i32.load offset=8 + local.set 5 + end + local.get 5 + 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 5 + 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 1048888 + i32.add + local.set 5 + block ;; label = @9 + i32.const 0 + i32.load offset=1048588 + local.tee 9 + i32.const 1 + local.get 4 + i32.shl + local.tee 6 + i32.and + br_if 0 (;@9;) + local.get 5 + local.get 3 + i32.store + i32.const 0 + local.get 9 + local.get 6 + i32.or + i32.store offset=1048588 + local.get 3 + local.get 5 + 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 5 + i32.load + local.set 9 + loop ;; label = @9 + local.get 9 + local.tee 5 + 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 5 + local.get 9 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 6 + i32.load + local.tee 9 + br_if 0 (;@9;) + end + local.get 6 + local.get 3 + i32.store + local.get 3 + local.get 5 + 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 5 + i32.load offset=8 + local.tee 4 + local.get 7 + i32.store offset=12 + local.get 5 + local.get 7 + i32.store offset=8 + local.get 7 + i32.const 0 + i32.store offset=24 + local.get 7 + local.get 5 + i32.store offset=12 + local.get 7 + 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 5 + i32.load offset=8 + local.tee 4 + local.get 3 + i32.store offset=12 + local.get 5 + local.get 3 + i32.store offset=8 + local.get 3 + i32.const 0 + i32.store offset=24 + local.get 3 + local.get 5 + i32.store offset=12 + local.get 3 + local.get 4 + i32.store offset=8 + end + i32.const 0 + i32.load offset=1048596 + local.tee 4 + local.get 7 + i32.le_u + br_if 0 (;@4;) + i32.const 0 + i32.load offset=1048608 + local.tee 3 + local.get 7 + i32.add + local.tee 5 + local.get 4 + local.get 7 + i32.sub + local.tee 4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 4 + i32.store offset=1048596 + i32.const 0 + local.get 5 + i32.store offset=1048608 + local.get 3 + local.get 7 + 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=1049080 + 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 5 + i32.const 2 + i32.shl + i32.const 1048888 + 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 5 + i32.rotl + i32.and + local.tee 10 + i32.store offset=1048588 + 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 7 + 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 7 + i32.add + local.tee 0 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 9 + local.get 7 + 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 1048624 + i32.add + local.set 4 + block ;; label = @5 + block ;; label = @6 + i32.const 0 + i32.load offset=1048584 + local.tee 5 + 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 5 + local.get 3 + i32.or + i32.store offset=1048584 + 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 1048888 + i32.add + local.set 5 + block ;; label = @4 + local.get 10 + i32.const 1 + local.get 4 + i32.shl + local.tee 7 + i32.and + br_if 0 (;@4;) + local.get 5 + local.get 0 + i32.store + i32.const 0 + local.get 10 + local.get 7 + i32.or + i32.store offset=1048588 + local.get 0 + local.get 5 + 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 5 + i32.load + local.set 7 + block ;; label = @4 + loop ;; label = @5 + local.get 7 + local.tee 5 + 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 7 + local.get 4 + i32.const 1 + i32.shl + local.set 4 + local.get 5 + local.get 7 + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 6 + i32.load + local.tee 7 + br_if 0 (;@5;) + end + local.get 6 + local.get 0 + i32.store + local.get 0 + local.get 5 + 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 5 + i32.load offset=8 + local.tee 4 + local.get 0 + i32.store offset=12 + local.get 5 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 5 + 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 5 + i32.const 2 + i32.shl + i32.const 1048888 + 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 5 + i32.rotl + i32.and + i32.store offset=1048588 + 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 7 + 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 7 + i32.add + local.tee 5 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 7 + i32.const 3 + i32.or + i32.store offset=4 + local.get 5 + 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 1048624 + i32.add + local.set 7 + i32.const 0 + i32.load offset=1048604 + 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 6 + i32.and + br_if 0 (;@5;) + i32.const 0 + local.get 9 + local.get 6 + i32.or + i32.store offset=1048584 + local.get 7 + local.set 9 + br 1 (;@4;) + end + local.get 7 + i32.load offset=8 + local.set 9 + end + local.get 9 + local.get 4 + i32.store offset=12 + local.get 7 + local.get 4 + i32.store offset=8 + local.get 4 + local.get 7 + i32.store offset=12 + local.get 4 + local.get 9 + i32.store offset=8 + end + i32.const 0 + local.get 5 + i32.store offset=1048604 + i32.const 0 + local.get 3 + i32.store offset=1048592 + end + local.get 0 + i32.const 8 + i32.add + local.set 4 + end + local.get 1 + i32.const 16 + i32.add + global.set 0 + local.get 4 + ) + (func (;4;) (type 3) (param i32) + local.get 0 + call 5 + ) + (func (;5;) (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=1048600 + 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=1048604 + 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 1048624 + 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=1048584 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048584 + 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 1048888 + 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=1048588 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048588 + 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=1048592 + 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=1048608 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048608 + i32.const 0 + i32.const 0 + i32.load offset=1048596 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048596 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048592 + i32.const 0 + i32.const 0 + i32.store offset=1048604 + return + end + 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 + 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 1048624 + 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=1048584 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048584 + 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=1048600 + 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 1048888 + 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=1048588 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048588 + 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=1048604 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 0 + i32.store offset=1048592 + 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 1048624 + i32.add + local.set 2 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048584 + 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=1048584 + 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 1048888 + i32.add + local.set 4 + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1048588 + 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=1048588 + 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=1048616 + i32.const -1 + i32.add + local.tee 1 + i32.const -1 + local.get 1 + select + i32.store offset=1048616 + end + ) + (func (;6;) (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 3 + 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=1049080 + 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=1049064 + 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 7 + local.get 0 + return + end + block ;; label = @3 + local.get 7 + i32.const 0 + i32.load offset=1048608 + i32.ne + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1048596 + 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=1048608 + i32.const 0 + local.get 5 + local.get 2 + i32.sub + local.tee 2 + i32.store offset=1048596 + 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=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.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=1048604 + i32.const 0 + local.get 1 + i32.store offset=1048592 + 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 1048624 + 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=1048584 + i32.const -2 + local.get 11 + i32.rotl + i32.and + i32.store offset=1048584 + 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=1048600 + 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 1048888 + 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=1048588 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048588 + 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 7 + local.get 0 + return + end + block ;; label = @2 + local.get 1 + call 3 + 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 12 + local.set 1 + local.get 0 + call 5 + local.get 1 + local.set 0 + end + local.get 0 + ) + (func (;7;) (type 5) (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=1048604 + 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 1048624 + 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=1048584 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048584 + 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=1048600 + 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 1048888 + 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=1048588 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048588 + 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=1048592 + 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=1048608 + i32.ne + br_if 0 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048608 + i32.const 0 + i32.const 0 + i32.load offset=1048596 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048596 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1048604 + i32.ne + br_if 3 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048592 + i32.const 0 + i32.const 0 + i32.store offset=1048604 + return + end + 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 + 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 1048624 + 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=1048584 + i32.const -2 + local.get 5 + i32.rotl + i32.and + i32.store offset=1048584 + 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=1048600 + 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 1048888 + 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=1048588 + i32.const -2 + local.get 4 + i32.rotl + i32.and + i32.store offset=1048588 + 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=1048604 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 1 + i32.store offset=1048592 + 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 1048624 + i32.add + local.set 3 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048584 + 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=1048584 + 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 1048888 + i32.add + local.set 4 + block ;; label = @2 + i32.const 0 + i32.load offset=1048588 + 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=1048588 + 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 (;8;) (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=1049080 + 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 3 + 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 7 + 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 7 + end + local.get 0 + i32.const 8 + i32.add + ) + (func (;9;) (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 3 + return + end + local.get 0 + local.get 1 + call 8 + ) + (func (;10;) (type 6) + unreachable + unreachable + ) + (func (;11;) (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=1049080 + i32.const -1 + return + end + local.get 0 + i32.const 16 + i32.shl + return + end + call 10 + unreachable + ) + (func (;12;) (type 7) (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 (;13;) (type 1) (param i32 i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call 1 + ) + (func (;14;) (type 6)) + (func (;15;) (type 6) + call 14 + call 14 + ) + (func (;16;) (type 0) (param f64 f64) (result f64) + local.get 0 + local.get 1 + call 0 + call 15 + ) + (func (;17;) (type 1) (param i32 i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call 1 + call 15 + ) + (func (;18;) (type 1) (param i32 i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call 13 + call 15 + ) + (table (;0;) 2 2 funcref) + (memory (;0;) 17) + (global (;0;) (mut i32) i32.const 1048576) + (export "memory" (memory 0)) + (export "subtract" (func 16)) + (export "cabi_realloc_wit_bindgen_0_20_0" (func 17)) + (export "cabi_realloc" (func 18)) + (elem (;0;) (i32.const 1) func 13) + (data (;0;) (i32.const 1048576) "\01\00\00\00") + (@producers + (processed-by "wit-component" "0.201.0") + (processed-by "wit-bindgen-rust" "0.20.0") + ) + ) + (core instance (;0;) (instantiate 0)) + (alias core export 0 "memory" (core memory (;0;))) + (alias core export 0 "cabi_realloc" (core func (;0;))) + (type (;0;) (func (param "a" float64) (param "b" float64) (result float64))) + (alias core export 0 "subtract" (core func (;1;))) + (func (;0;) (type 0) (canon lift (core func 1))) + (export (;1;) "subtract" (func 0)) + (@producers + (processed-by "wit-component" "0.201.0") + (processed-by "cargo-component" "0.9.0 (wasi:ab5a448)") + ) +) diff --git a/homestar-wasm/fixtures/example_subtract_component.wasm b/homestar-wasm/fixtures/example_subtract_component.wasm new file mode 100644 index 00000000..cbf52f3a Binary files /dev/null and b/homestar-wasm/fixtures/example_subtract_component.wasm differ diff --git a/homestar-wasm/fixtures/example_subtract_component.wat b/homestar-wasm/fixtures/example_subtract_component.wat new file mode 100644 index 00000000..da875e21 --- /dev/null +++ b/homestar-wasm/fixtures/example_subtract_component.wat @@ -0,0 +1,3796 @@ +(component + (core module (;0;) + (type (;0;) (func (param f64 f64) (result f64))) + (type (;1;) (func (param i32 i32) (result i32))) + (type (;2;) (func (param i32) (result i32))) + (type (;3;) (func (param i32 i32))) + (type (;4;) (func (param i32))) + (type (;5;) (func (param i32 i32 i32 i32) (result i32))) + (type (;6;) (func (param i32 i32 i32) (result i32))) + (func (;0;) (type 0) (param f64 f64) (result f64) + local.get 0 + local.get 1 + f64.sub + ) + (func (;1;) (type 1) (param i32 i32) (result i32) + (local i32 i32 i32 i32 i32) + i32.const 0 + local.set 2 + block ;; label = @1 + i32.const -65587 + local.get 0 + i32.const 16 + local.get 0 + i32.const 16 + i32.gt_u + select + local.tee 0 + i32.sub + local.get 1 + i32.le_u + br_if 0 (;@1;) + local.get 0 + i32.const 16 + local.get 1 + i32.const 11 + i32.add + i32.const -8 + i32.and + local.get 1 + i32.const 11 + i32.lt_u + select + local.tee 3 + i32.add + i32.const 12 + i32.add + call 2 + local.tee 1 + i32.eqz + br_if 0 (;@1;) + local.get 1 + i32.const -8 + i32.add + local.set 2 + block ;; label = @2 + block ;; label = @3 + local.get 0 + i32.const -1 + i32.add + local.tee 4 + local.get 1 + i32.and + br_if 0 (;@3;) + local.get 2 + local.set 0 + br 1 (;@2;) + end + local.get 1 + i32.const -4 + i32.add + local.tee 5 + i32.load + local.tee 6 + i32.const -8 + i32.and + local.get 4 + local.get 1 + i32.add + i32.const 0 + local.get 0 + i32.sub + i32.and + i32.const -8 + i32.add + local.tee 1 + i32.const 0 + local.get 0 + local.get 1 + local.get 2 + i32.sub + i32.const 16 + i32.gt_u + select + i32.add + local.tee 0 + local.get 2 + i32.sub + local.tee 1 + i32.sub + local.set 4 + block ;; label = @3 + local.get 6 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@3;) + local.get 0 + local.get 4 + 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 4 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 5 + local.get 1 + local.get 5 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 2 + local.get 1 + i32.add + local.tee 4 + local.get 4 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 1 + call 3 + br 1 (;@2;) + end + local.get 2 + i32.load + local.set 2 + local.get 0 + local.get 4 + i32.store offset=4 + local.get 0 + local.get 2 + local.get 1 + i32.add + i32.store + end + block ;; label = @2 + local.get 0 + i32.load offset=4 + local.tee 1 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@2;) + local.get 1 + i32.const -8 + i32.and + local.tee 2 + local.get 3 + i32.const 16 + i32.add + i32.le_u + br_if 0 (;@2;) + local.get 0 + local.get 3 + local.get 1 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store offset=4 + local.get 0 + local.get 3 + i32.add + local.tee 1 + local.get 2 + local.get 3 + i32.sub + local.tee 3 + 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 1 + local.get 3 + call 3 + end + local.get 0 + i32.const 8 + i32.add + local.set 2 + end + local.get 2 + ) + (func (;2;) (type 2) (param i32) (result i32) + (local i32 i32 i32 i32 i32 i32 i32 i32 i64) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + local.get 0 + i32.const 245 + i32.lt_u + br_if 0 (;@8;) + i32.const 0 + local.set 1 + local.get 0 + i32.const -65587 + i32.ge_u + br_if 5 (;@3;) + local.get 0 + i32.const 11 + i32.add + local.tee 0 + i32.const -8 + i32.and + local.set 2 + i32.const 0 + i32.load offset=1048992 + local.tee 3 + i32.eqz + br_if 4 (;@4;) + i32.const 0 + local.set 4 + block ;; label = @9 + local.get 2 + i32.const 256 + i32.lt_u + br_if 0 (;@9;) + i32.const 31 + local.set 4 + local.get 2 + i32.const 16777215 + i32.gt_u + br_if 0 (;@9;) + local.get 2 + i32.const 6 + local.get 0 + i32.const 8 + i32.shr_u + i32.clz + local.tee 0 + i32.sub + i32.shr_u + i32.const 1 + i32.and + local.get 0 + i32.const 1 + i32.shl + i32.sub + i32.const 62 + i32.add + local.set 4 + end + i32.const 0 + local.get 2 + i32.sub + local.set 1 + block ;; label = @9 + local.get 4 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + i32.load + local.tee 5 + br_if 0 (;@9;) + i32.const 0 + local.set 0 + i32.const 0 + local.set 6 + br 2 (;@7;) + end + i32.const 0 + local.set 0 + local.get 2 + 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 7 + i32.const 0 + local.set 6 + loop ;; label = @9 + block ;; label = @10 + local.get 5 + i32.load offset=4 + i32.const -8 + i32.and + local.tee 8 + local.get 2 + i32.lt_u + br_if 0 (;@10;) + local.get 8 + local.get 2 + i32.sub + local.tee 8 + local.get 1 + i32.ge_u + br_if 0 (;@10;) + local.get 8 + local.set 1 + local.get 5 + local.set 6 + local.get 8 + br_if 0 (;@10;) + i32.const 0 + local.set 1 + local.get 5 + local.set 6 + local.get 5 + local.set 0 + br 4 (;@6;) + end + local.get 5 + i32.const 20 + i32.add + i32.load + local.tee 8 + local.get 0 + local.get 8 + local.get 5 + local.get 7 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + i32.load + local.tee 5 + i32.ne + select + local.get 0 + local.get 8 + select + local.set 0 + local.get 7 + i32.const 1 + i32.shl + local.set 7 + local.get 5 + i32.eqz + br_if 2 (;@7;) + br 0 (;@9;) + end + end + block ;; label = @8 + i32.const 0 + i32.load offset=1048988 + local.tee 6 + i32.const 16 + local.get 0 + i32.const 11 + i32.add + i32.const -8 + i32.and + local.get 0 + i32.const 11 + i32.lt_u + select + local.tee 2 + i32.const 3 + i32.shr_u + local.tee 1 + i32.shr_u + local.tee 0 + i32.const 3 + i32.and + i32.eqz + br_if 0 (;@8;) + block ;; label = @9 + block ;; label = @10 + local.get 0 + i32.const -1 + i32.xor + i32.const 1 + i32.and + local.get 1 + i32.add + local.tee 2 + i32.const 3 + i32.shl + local.tee 0 + i32.const 1048724 + i32.add + local.tee 1 + local.get 0 + i32.const 1048732 + i32.add + i32.load + local.tee 0 + i32.load offset=8 + local.tee 5 + i32.eq + br_if 0 (;@10;) + local.get 5 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 5 + i32.store offset=8 + br 1 (;@9;) + end + i32.const 0 + local.get 6 + i32.const -2 + local.get 2 + i32.rotl + i32.and + i32.store offset=1048988 + end + local.get 0 + local.get 2 + i32.const 3 + i32.shl + local.tee 2 + 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 0 + i32.const 8 + i32.add + return + end + local.get 2 + i32.const 0 + i32.load offset=1048996 + i32.le_u + br_if 3 (;@4;) + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + local.get 0 + br_if 0 (;@10;) + i32.const 0 + i32.load offset=1048992 + local.tee 0 + i32.eqz + br_if 6 (;@4;) + local.get 0 + i32.ctz + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + i32.load + local.tee 5 + i32.load offset=4 + i32.const -8 + i32.and + local.get 2 + i32.sub + local.set 1 + local.get 5 + local.set 6 + loop ;; label = @11 + block ;; label = @12 + local.get 5 + i32.load offset=16 + local.tee 0 + br_if 0 (;@12;) + local.get 5 + i32.const 20 + i32.add + i32.load + local.tee 0 + br_if 0 (;@12;) + local.get 6 + i32.load offset=24 + local.set 4 + block ;; label = @13 + block ;; label = @14 + block ;; label = @15 + local.get 6 + i32.load offset=12 + local.tee 0 + local.get 6 + i32.ne + br_if 0 (;@15;) + local.get 6 + i32.const 20 + i32.const 16 + local.get 6 + i32.const 20 + i32.add + local.tee 0 + i32.load + local.tee 7 + select + i32.add + i32.load + local.tee 5 + br_if 1 (;@14;) + i32.const 0 + local.set 0 + br 2 (;@13;) + end + local.get 6 + i32.load offset=8 + local.tee 5 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 5 + i32.store offset=8 + br 1 (;@13;) + end + local.get 0 + local.get 6 + i32.const 16 + i32.add + local.get 7 + select + local.set 7 + loop ;; label = @14 + local.get 7 + local.set 8 + local.get 5 + local.tee 0 + i32.const 20 + i32.add + local.tee 5 + local.get 0 + i32.const 16 + i32.add + local.get 5 + i32.load + local.tee 5 + select + local.set 7 + local.get 0 + i32.const 20 + i32.const 16 + local.get 5 + select + i32.add + i32.load + local.tee 5 + br_if 0 (;@14;) + end + local.get 8 + i32.const 0 + i32.store + end + local.get 4 + i32.eqz + br_if 4 (;@8;) + block ;; label = @13 + local.get 6 + i32.load offset=28 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.tee 5 + i32.load + local.get 6 + i32.eq + br_if 0 (;@13;) + local.get 4 + i32.const 16 + i32.const 20 + local.get 4 + i32.load offset=16 + local.get 6 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 5 (;@8;) + br 4 (;@9;) + end + local.get 5 + local.get 0 + i32.store + local.get 0 + br_if 3 (;@9;) + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 6 + i32.load offset=28 + i32.rotl + i32.and + i32.store offset=1048992 + br 4 (;@8;) + end + local.get 0 + i32.load offset=4 + i32.const -8 + i32.and + local.get 2 + i32.sub + local.tee 5 + local.get 1 + local.get 5 + local.get 1 + i32.lt_u + local.tee 5 + select + local.set 1 + local.get 0 + local.get 6 + local.get 5 + select + local.set 6 + local.get 0 + local.set 5 + br 0 (;@11;) + end + end + block ;; label = @10 + block ;; label = @11 + local.get 0 + local.get 1 + i32.shl + i32.const 2 + local.get 1 + i32.shl + local.tee 0 + i32.const 0 + local.get 0 + i32.sub + i32.or + i32.and + i32.ctz + local.tee 1 + i32.const 3 + i32.shl + local.tee 0 + i32.const 1048724 + i32.add + local.tee 5 + local.get 0 + i32.const 1048732 + i32.add + i32.load + local.tee 0 + i32.load offset=8 + local.tee 7 + i32.eq + br_if 0 (;@11;) + local.get 7 + local.get 5 + i32.store offset=12 + local.get 5 + local.get 7 + i32.store offset=8 + br 1 (;@10;) + end + i32.const 0 + local.get 6 + i32.const -2 + local.get 1 + i32.rotl + i32.and + i32.store offset=1048988 + end + local.get 0 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.tee 7 + local.get 1 + i32.const 3 + i32.shl + local.tee 5 + local.get 2 + i32.sub + local.tee 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 5 + i32.add + local.get 1 + i32.store + block ;; label = @10 + i32.const 0 + i32.load offset=1048996 + local.tee 6 + i32.eqz + br_if 0 (;@10;) + local.get 6 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1049004 + local.set 2 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048988 + local.tee 8 + i32.const 1 + local.get 6 + i32.const 3 + i32.shr_u + i32.shl + local.tee 6 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 8 + local.get 6 + i32.or + i32.store offset=1048988 + local.get 5 + local.set 6 + br 1 (;@11;) + end + local.get 5 + i32.load offset=8 + local.set 6 + end + local.get 5 + local.get 2 + i32.store offset=8 + local.get 6 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 5 + i32.store offset=12 + local.get 2 + local.get 6 + i32.store offset=8 + end + i32.const 0 + local.get 7 + i32.store offset=1049004 + i32.const 0 + local.get 1 + i32.store offset=1048996 + local.get 0 + i32.const 8 + i32.add + return + end + local.get 0 + local.get 4 + i32.store offset=24 + block ;; label = @9 + local.get 6 + i32.load offset=16 + local.tee 5 + i32.eqz + br_if 0 (;@9;) + local.get 0 + local.get 5 + i32.store offset=16 + local.get 5 + local.get 0 + i32.store offset=24 + end + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 5 + i32.eqz + br_if 0 (;@8;) + local.get 0 + i32.const 20 + i32.add + local.get 5 + i32.store + local.get 5 + local.get 0 + i32.store offset=24 + end + block ;; label = @8 + block ;; label = @9 + block ;; label = @10 + local.get 1 + i32.const 16 + i32.lt_u + br_if 0 (;@10;) + local.get 6 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + 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 2 + local.get 1 + i32.add + local.get 1 + i32.store + i32.const 0 + i32.load offset=1048996 + local.tee 7 + i32.eqz + br_if 1 (;@9;) + local.get 7 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 5 + i32.const 0 + i32.load offset=1049004 + local.set 0 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048988 + local.tee 8 + i32.const 1 + local.get 7 + i32.const 3 + i32.shr_u + i32.shl + local.tee 7 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 8 + local.get 7 + i32.or + i32.store offset=1048988 + local.get 5 + local.set 7 + br 1 (;@11;) + end + local.get 5 + i32.load offset=8 + local.set 7 + end + local.get 5 + local.get 0 + i32.store offset=8 + local.get 7 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 5 + i32.store offset=12 + local.get 0 + local.get 7 + i32.store offset=8 + br 1 (;@9;) + end + local.get 6 + local.get 1 + local.get 2 + i32.add + local.tee 0 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + local.tee 0 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@8;) + end + i32.const 0 + local.get 2 + i32.store offset=1049004 + i32.const 0 + local.get 1 + i32.store offset=1048996 + end + local.get 6 + i32.const 8 + i32.add + return + end + block ;; label = @7 + local.get 0 + local.get 6 + i32.or + br_if 0 (;@7;) + i32.const 0 + local.set 6 + i32.const 2 + local.get 4 + i32.shl + local.tee 0 + i32.const 0 + local.get 0 + i32.sub + i32.or + local.get 3 + i32.and + local.tee 0 + i32.eqz + br_if 3 (;@4;) + local.get 0 + i32.ctz + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + i32.load + local.set 0 + end + local.get 0 + i32.eqz + br_if 1 (;@5;) + end + loop ;; label = @6 + local.get 0 + local.get 6 + local.get 0 + i32.load offset=4 + i32.const -8 + i32.and + local.tee 5 + local.get 2 + i32.sub + local.tee 8 + local.get 1 + i32.lt_u + local.tee 4 + select + local.set 3 + local.get 5 + local.get 2 + i32.lt_u + local.set 7 + local.get 8 + local.get 1 + local.get 4 + select + local.set 8 + block ;; label = @7 + local.get 0 + i32.load offset=16 + local.tee 5 + br_if 0 (;@7;) + local.get 0 + i32.const 20 + i32.add + i32.load + local.set 5 + end + local.get 6 + local.get 3 + local.get 7 + select + local.set 6 + local.get 1 + local.get 8 + local.get 7 + select + local.set 1 + local.get 5 + local.set 0 + local.get 5 + br_if 0 (;@6;) + end + end + local.get 6 + i32.eqz + br_if 0 (;@4;) + block ;; label = @5 + i32.const 0 + i32.load offset=1048996 + local.tee 0 + local.get 2 + i32.lt_u + br_if 0 (;@5;) + local.get 1 + local.get 0 + local.get 2 + i32.sub + i32.ge_u + br_if 1 (;@4;) + end + local.get 6 + i32.load offset=24 + local.set 4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + local.get 6 + i32.load offset=12 + local.tee 0 + local.get 6 + i32.ne + br_if 0 (;@7;) + local.get 6 + i32.const 20 + i32.const 16 + local.get 6 + i32.const 20 + i32.add + local.tee 0 + i32.load + local.tee 7 + select + i32.add + i32.load + local.tee 5 + br_if 1 (;@6;) + i32.const 0 + local.set 0 + br 2 (;@5;) + end + local.get 6 + i32.load offset=8 + local.tee 5 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 5 + i32.store offset=8 + br 1 (;@5;) + end + local.get 0 + local.get 6 + i32.const 16 + i32.add + local.get 7 + select + local.set 7 + loop ;; label = @6 + local.get 7 + local.set 8 + local.get 5 + local.tee 0 + i32.const 20 + i32.add + local.tee 5 + local.get 0 + i32.const 16 + i32.add + local.get 5 + i32.load + local.tee 5 + select + local.set 7 + local.get 0 + i32.const 20 + i32.const 16 + local.get 5 + select + i32.add + i32.load + local.tee 5 + br_if 0 (;@6;) + end + local.get 8 + i32.const 0 + i32.store + end + local.get 4 + i32.eqz + br_if 3 (;@1;) + block ;; label = @5 + local.get 6 + i32.load offset=28 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.tee 5 + i32.load + local.get 6 + i32.eq + br_if 0 (;@5;) + local.get 4 + i32.const 16 + i32.const 20 + local.get 4 + i32.load offset=16 + local.get 6 + i32.eq + select + i32.add + local.get 0 + i32.store + local.get 0 + i32.eqz + br_if 4 (;@1;) + br 3 (;@2;) + end + local.get 5 + local.get 0 + i32.store + local.get 0 + br_if 2 (;@2;) + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 6 + i32.load offset=28 + i32.rotl + i32.and + i32.store offset=1048992 + br 3 (;@1;) + end + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + i32.const 0 + i32.load offset=1048996 + local.tee 0 + local.get 2 + i32.ge_u + br_if 0 (;@9;) + block ;; label = @10 + i32.const 0 + i32.load offset=1049000 + local.tee 0 + local.get 2 + i32.gt_u + br_if 0 (;@10;) + i32.const 0 + local.set 1 + local.get 2 + i32.const 65583 + i32.add + local.tee 5 + i32.const 16 + i32.shr_u + memory.grow + local.tee 0 + i32.const -1 + i32.eq + local.tee 7 + br_if 7 (;@3;) + local.get 0 + i32.const 16 + i32.shl + local.tee 6 + i32.eqz + br_if 7 (;@3;) + i32.const 0 + i32.const 0 + i32.load offset=1049012 + i32.const 0 + local.get 5 + i32.const -65536 + i32.and + local.get 7 + select + local.tee 8 + i32.add + local.tee 0 + i32.store offset=1049012 + i32.const 0 + i32.const 0 + i32.load offset=1049016 + local.tee 1 + local.get 0 + local.get 1 + local.get 0 + i32.gt_u + select + i32.store offset=1049016 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + i32.const 0 + i32.load offset=1049008 + local.tee 1 + i32.eqz + br_if 0 (;@13;) + i32.const 1048708 + local.set 0 + loop ;; label = @14 + local.get 0 + i32.load + local.tee 5 + local.get 0 + i32.load offset=4 + local.tee 7 + i32.add + local.get 6 + i32.eq + br_if 2 (;@12;) + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@14;) + br 3 (;@11;) + end + end + block ;; label = @13 + block ;; label = @14 + i32.const 0 + i32.load offset=1049024 + local.tee 0 + i32.eqz + br_if 0 (;@14;) + local.get 0 + local.get 6 + i32.le_u + br_if 1 (;@13;) + end + i32.const 0 + local.get 6 + i32.store offset=1049024 + end + i32.const 0 + i32.const 4095 + i32.store offset=1049028 + i32.const 0 + local.get 8 + i32.store offset=1048712 + i32.const 0 + local.get 6 + i32.store offset=1048708 + i32.const 0 + i32.const 1048724 + i32.store offset=1048736 + i32.const 0 + i32.const 1048732 + i32.store offset=1048744 + i32.const 0 + i32.const 1048724 + i32.store offset=1048732 + i32.const 0 + i32.const 1048740 + i32.store offset=1048752 + i32.const 0 + i32.const 1048732 + i32.store offset=1048740 + i32.const 0 + i32.const 1048748 + i32.store offset=1048760 + i32.const 0 + i32.const 1048740 + i32.store offset=1048748 + i32.const 0 + i32.const 1048756 + i32.store offset=1048768 + i32.const 0 + i32.const 1048748 + i32.store offset=1048756 + i32.const 0 + i32.const 1048764 + i32.store offset=1048776 + i32.const 0 + i32.const 1048756 + i32.store offset=1048764 + i32.const 0 + i32.const 1048772 + i32.store offset=1048784 + i32.const 0 + i32.const 1048764 + i32.store offset=1048772 + i32.const 0 + i32.const 1048780 + i32.store offset=1048792 + i32.const 0 + i32.const 1048772 + i32.store offset=1048780 + i32.const 0 + i32.const 0 + i32.store offset=1048720 + i32.const 0 + i32.const 1048788 + i32.store offset=1048800 + i32.const 0 + i32.const 1048780 + i32.store offset=1048788 + i32.const 0 + i32.const 1048788 + i32.store offset=1048796 + i32.const 0 + i32.const 1048796 + i32.store offset=1048808 + i32.const 0 + i32.const 1048796 + i32.store offset=1048804 + i32.const 0 + i32.const 1048804 + i32.store offset=1048816 + i32.const 0 + i32.const 1048804 + i32.store offset=1048812 + i32.const 0 + i32.const 1048812 + i32.store offset=1048824 + i32.const 0 + i32.const 1048812 + i32.store offset=1048820 + i32.const 0 + i32.const 1048820 + i32.store offset=1048832 + i32.const 0 + i32.const 1048820 + i32.store offset=1048828 + i32.const 0 + i32.const 1048828 + i32.store offset=1048840 + i32.const 0 + i32.const 1048828 + i32.store offset=1048836 + i32.const 0 + i32.const 1048836 + i32.store offset=1048848 + i32.const 0 + i32.const 1048836 + i32.store offset=1048844 + i32.const 0 + i32.const 1048844 + i32.store offset=1048856 + i32.const 0 + i32.const 1048844 + i32.store offset=1048852 + i32.const 0 + i32.const 1048852 + i32.store offset=1048864 + i32.const 0 + i32.const 1048860 + i32.store offset=1048872 + i32.const 0 + i32.const 1048852 + i32.store offset=1048860 + i32.const 0 + i32.const 1048868 + i32.store offset=1048880 + i32.const 0 + i32.const 1048860 + i32.store offset=1048868 + i32.const 0 + i32.const 1048876 + i32.store offset=1048888 + i32.const 0 + i32.const 1048868 + i32.store offset=1048876 + i32.const 0 + i32.const 1048884 + i32.store offset=1048896 + i32.const 0 + i32.const 1048876 + i32.store offset=1048884 + i32.const 0 + i32.const 1048892 + i32.store offset=1048904 + i32.const 0 + i32.const 1048884 + i32.store offset=1048892 + i32.const 0 + i32.const 1048900 + i32.store offset=1048912 + i32.const 0 + i32.const 1048892 + i32.store offset=1048900 + i32.const 0 + i32.const 1048908 + i32.store offset=1048920 + i32.const 0 + i32.const 1048900 + i32.store offset=1048908 + i32.const 0 + i32.const 1048916 + i32.store offset=1048928 + i32.const 0 + i32.const 1048908 + i32.store offset=1048916 + i32.const 0 + i32.const 1048924 + i32.store offset=1048936 + i32.const 0 + i32.const 1048916 + i32.store offset=1048924 + i32.const 0 + i32.const 1048932 + i32.store offset=1048944 + i32.const 0 + i32.const 1048924 + i32.store offset=1048932 + i32.const 0 + i32.const 1048940 + i32.store offset=1048952 + i32.const 0 + i32.const 1048932 + i32.store offset=1048940 + i32.const 0 + i32.const 1048948 + i32.store offset=1048960 + i32.const 0 + i32.const 1048940 + i32.store offset=1048948 + i32.const 0 + i32.const 1048956 + i32.store offset=1048968 + i32.const 0 + i32.const 1048948 + i32.store offset=1048956 + i32.const 0 + i32.const 1048964 + i32.store offset=1048976 + i32.const 0 + i32.const 1048956 + i32.store offset=1048964 + i32.const 0 + i32.const 1048972 + i32.store offset=1048984 + i32.const 0 + i32.const 1048964 + i32.store offset=1048972 + i32.const 0 + local.get 6 + i32.store offset=1049008 + i32.const 0 + i32.const 1048972 + i32.store offset=1048980 + i32.const 0 + local.get 8 + i32.const -40 + i32.add + local.tee 0 + i32.store offset=1049000 + local.get 6 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + i32.const 40 + i32.store offset=4 + i32.const 0 + i32.const 2097152 + i32.store offset=1049020 + br 8 (;@4;) + end + local.get 1 + local.get 6 + i32.ge_u + br_if 0 (;@11;) + local.get 5 + local.get 1 + i32.gt_u + br_if 0 (;@11;) + local.get 0 + i32.load offset=12 + i32.eqz + br_if 3 (;@8;) + end + i32.const 0 + i32.const 0 + i32.load offset=1049024 + local.tee 0 + local.get 6 + local.get 0 + local.get 6 + i32.lt_u + select + i32.store offset=1049024 + local.get 6 + local.get 8 + i32.add + local.set 5 + i32.const 1048708 + local.set 0 + block ;; label = @11 + block ;; label = @12 + block ;; label = @13 + loop ;; label = @14 + local.get 0 + i32.load + local.get 5 + i32.eq + br_if 1 (;@13;) + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@14;) + br 2 (;@12;) + end + end + local.get 0 + i32.load offset=12 + i32.eqz + br_if 1 (;@11;) + end + i32.const 1048708 + local.set 0 + block ;; label = @12 + loop ;; label = @13 + block ;; label = @14 + local.get 0 + i32.load + local.tee 5 + local.get 1 + i32.gt_u + br_if 0 (;@14;) + local.get 5 + local.get 0 + i32.load offset=4 + i32.add + local.tee 5 + local.get 1 + i32.gt_u + br_if 2 (;@12;) + end + local.get 0 + i32.load offset=8 + local.set 0 + br 0 (;@13;) + end + end + i32.const 0 + local.get 6 + i32.store offset=1049008 + i32.const 0 + local.get 8 + i32.const -40 + i32.add + local.tee 0 + i32.store offset=1049000 + local.get 6 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + i32.const 40 + i32.store offset=4 + i32.const 0 + i32.const 2097152 + i32.store offset=1049020 + local.get 1 + local.get 5 + i32.const -32 + i32.add + i32.const -8 + i32.and + i32.const -8 + i32.add + local.tee 0 + local.get 0 + local.get 1 + i32.const 16 + i32.add + i32.lt_u + select + local.tee 7 + i32.const 27 + i32.store offset=4 + i32.const 0 + i64.load offset=1048708 align=4 + local.set 9 + local.get 7 + i32.const 16 + i32.add + i32.const 0 + i64.load offset=1048716 align=4 + i64.store align=4 + local.get 7 + local.get 9 + i64.store offset=8 align=4 + i32.const 0 + local.get 8 + i32.store offset=1048712 + i32.const 0 + local.get 6 + i32.store offset=1048708 + i32.const 0 + local.get 7 + i32.const 8 + i32.add + i32.store offset=1048716 + i32.const 0 + i32.const 0 + i32.store offset=1048720 + local.get 7 + i32.const 28 + i32.add + local.set 0 + loop ;; label = @12 + local.get 0 + i32.const 7 + i32.store + local.get 0 + i32.const 4 + i32.add + local.tee 0 + local.get 5 + i32.lt_u + br_if 0 (;@12;) + end + local.get 7 + local.get 1 + i32.eq + br_if 7 (;@4;) + local.get 7 + local.get 7 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 1 + local.get 7 + local.get 1 + i32.sub + local.tee 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 7 + local.get 0 + i32.store + block ;; label = @12 + local.get 0 + i32.const 256 + i32.lt_u + br_if 0 (;@12;) + local.get 1 + local.get 0 + call 4 + br 8 (;@4;) + end + local.get 0 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 5 + block ;; label = @12 + block ;; label = @13 + i32.const 0 + i32.load offset=1048988 + 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 (;@13;) + i32.const 0 + local.get 6 + local.get 0 + i32.or + i32.store offset=1048988 + local.get 5 + local.set 0 + br 1 (;@12;) + end + local.get 5 + i32.load offset=8 + local.set 0 + end + local.get 5 + local.get 1 + i32.store offset=8 + local.get 0 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 5 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + br 7 (;@4;) + end + local.get 0 + local.get 6 + i32.store + local.get 0 + local.get 0 + i32.load offset=4 + local.get 8 + i32.add + i32.store offset=4 + local.get 6 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 5 + local.get 6 + local.get 2 + i32.add + local.tee 0 + i32.sub + local.set 2 + local.get 5 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 3 (;@7;) + local.get 5 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 4 (;@6;) + block ;; label = @11 + local.get 5 + i32.load offset=4 + local.tee 1 + i32.const 3 + i32.and + i32.const 1 + i32.ne + br_if 0 (;@11;) + local.get 5 + local.get 1 + i32.const -8 + i32.and + local.tee 1 + call 5 + local.get 1 + local.get 2 + i32.add + local.set 2 + local.get 5 + local.get 1 + i32.add + local.tee 5 + i32.load offset=4 + local.set 1 + end + local.get 5 + local.get 1 + i32.const -2 + i32.and + i32.store offset=4 + local.get 0 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.get 2 + i32.store + block ;; label = @11 + local.get 2 + i32.const 256 + i32.lt_u + br_if 0 (;@11;) + local.get 0 + local.get 2 + call 4 + br 6 (;@5;) + end + local.get 2 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 1 + block ;; label = @11 + block ;; label = @12 + i32.const 0 + i32.load offset=1048988 + local.tee 5 + i32.const 1 + local.get 2 + i32.const 3 + i32.shr_u + i32.shl + local.tee 2 + i32.and + br_if 0 (;@12;) + i32.const 0 + local.get 5 + local.get 2 + i32.or + i32.store offset=1048988 + local.get 1 + local.set 2 + br 1 (;@11;) + end + local.get 1 + i32.load offset=8 + local.set 2 + end + local.get 1 + local.get 0 + i32.store offset=8 + local.get 2 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=12 + local.get 0 + local.get 2 + i32.store offset=8 + br 5 (;@5;) + end + i32.const 0 + local.get 0 + local.get 2 + i32.sub + local.tee 1 + i32.store offset=1049000 + i32.const 0 + i32.const 0 + i32.load offset=1049008 + local.tee 0 + local.get 2 + i32.add + local.tee 5 + i32.store offset=1049008 + local.get 5 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + local.set 1 + br 6 (;@3;) + end + i32.const 0 + i32.load offset=1049004 + local.set 1 + block ;; label = @9 + block ;; label = @10 + local.get 0 + local.get 2 + i32.sub + local.tee 5 + i32.const 15 + i32.gt_u + br_if 0 (;@10;) + i32.const 0 + i32.const 0 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.store offset=1048996 + local.get 1 + local.get 0 + i32.const 3 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.tee 0 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@9;) + end + i32.const 0 + local.get 5 + i32.store offset=1048996 + i32.const 0 + local.get 1 + local.get 2 + i32.add + local.tee 6 + i32.store offset=1049004 + local.get 6 + local.get 5 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 5 + i32.store + local.get 1 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + end + local.get 1 + i32.const 8 + i32.add + return + end + local.get 0 + local.get 7 + local.get 8 + i32.add + i32.store offset=4 + i32.const 0 + i32.const 0 + i32.load offset=1049008 + local.tee 0 + i32.const 15 + i32.add + i32.const -8 + i32.and + local.tee 1 + i32.const -8 + i32.add + local.tee 5 + i32.store offset=1049008 + i32.const 0 + local.get 0 + local.get 1 + i32.sub + i32.const 0 + i32.load offset=1049000 + local.get 8 + i32.add + local.tee 1 + i32.add + i32.const 8 + i32.add + local.tee 6 + i32.store offset=1049000 + local.get 5 + local.get 6 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + i32.const 40 + i32.store offset=4 + i32.const 0 + i32.const 2097152 + i32.store offset=1049020 + br 3 (;@4;) + end + i32.const 0 + local.get 0 + i32.store offset=1049008 + i32.const 0 + i32.const 0 + i32.load offset=1049000 + local.get 2 + i32.add + local.tee 2 + i32.store offset=1049000 + local.get 0 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + br 1 (;@5;) + end + i32.const 0 + local.get 0 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1048996 + local.get 2 + i32.add + local.tee 2 + i32.store offset=1048996 + local.get 0 + local.get 2 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.add + local.get 2 + i32.store + end + local.get 6 + i32.const 8 + i32.add + return + end + i32.const 0 + local.set 1 + i32.const 0 + i32.load offset=1049000 + local.tee 0 + local.get 2 + i32.le_u + br_if 0 (;@3;) + i32.const 0 + local.get 0 + local.get 2 + i32.sub + local.tee 1 + i32.store offset=1049000 + i32.const 0 + i32.const 0 + i32.load offset=1049008 + local.tee 0 + local.get 2 + i32.add + local.tee 5 + i32.store offset=1049008 + local.get 5 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 0 + i32.const 8 + i32.add + return + end + local.get 1 + return + end + local.get 0 + local.get 4 + i32.store offset=24 + block ;; label = @2 + local.get 6 + i32.load offset=16 + local.tee 5 + i32.eqz + br_if 0 (;@2;) + local.get 0 + local.get 5 + i32.store offset=16 + local.get 5 + local.get 0 + i32.store offset=24 + end + local.get 6 + i32.const 20 + i32.add + i32.load + local.tee 5 + i32.eqz + br_if 0 (;@1;) + local.get 0 + i32.const 20 + i32.add + local.get 5 + i32.store + local.get 5 + local.get 0 + i32.store offset=24 + end + block ;; label = @1 + block ;; label = @2 + local.get 1 + i32.const 16 + i32.lt_u + br_if 0 (;@2;) + local.get 6 + local.get 2 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 2 + i32.add + local.tee 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 + block ;; label = @3 + local.get 1 + i32.const 256 + i32.lt_u + br_if 0 (;@3;) + local.get 0 + local.get 1 + call 4 + br 2 (;@1;) + end + local.get 1 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 2 + block ;; label = @3 + block ;; label = @4 + i32.const 0 + i32.load offset=1048988 + local.tee 5 + 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 5 + local.get 1 + i32.or + i32.store offset=1048988 + local.get 2 + local.set 1 + br 1 (;@3;) + end + local.get 2 + i32.load offset=8 + local.set 1 + end + local.get 2 + local.get 0 + i32.store offset=8 + local.get 1 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 2 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + br 1 (;@1;) + end + local.get 6 + local.get 1 + local.get 2 + i32.add + local.tee 0 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + local.get 0 + i32.add + local.tee 0 + local.get 0 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + end + local.get 6 + i32.const 8 + i32.add + ) + (func (;3;) (type 3) (param i32 i32) + (local 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 + local.get 0 + local.get 3 + i32.sub + local.tee 0 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 0 (;@3;) + local.get 2 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 1 (;@2;) + i32.const 0 + local.get 1 + i32.store offset=1048996 + local.get 2 + local.get 2 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 2 + local.get 1 + i32.store + return + end + local.get 0 + local.get 3 + call 5 + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + local.get 2 + i32.load offset=4 + local.tee 3 + i32.const 2 + i32.and + br_if 0 (;@5;) + local.get 2 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 2 (;@3;) + local.get 2 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 3 (;@2;) + local.get 2 + local.get 3 + i32.const -8 + i32.and + local.tee 3 + call 5 + local.get 0 + local.get 3 + local.get 1 + i32.add + local.tee 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + local.get 1 + i32.add + local.get 1 + i32.store + local.get 0 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 1 (;@4;) + i32.const 0 + local.get 1 + i32.store offset=1048996 + return + end + local.get 2 + local.get 3 + i32.const -2 + i32.and + i32.store offset=4 + 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 + end + block ;; label = @4 + local.get 1 + i32.const 256 + i32.lt_u + br_if 0 (;@4;) + local.get 0 + local.get 1 + call 4 + br 3 (;@1;) + end + local.get 1 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 2 + block ;; label = @4 + block ;; label = @5 + i32.const 0 + i32.load offset=1048988 + local.tee 3 + i32.const 1 + local.get 1 + i32.const 3 + i32.shr_u + i32.shl + local.tee 1 + i32.and + br_if 0 (;@5;) + i32.const 0 + local.get 3 + local.get 1 + i32.or + i32.store offset=1048988 + local.get 2 + local.set 1 + br 1 (;@4;) + end + local.get 2 + i32.load offset=8 + local.set 1 + end + local.get 2 + local.get 0 + i32.store offset=8 + local.get 1 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 2 + i32.store offset=12 + local.get 0 + local.get 1 + i32.store offset=8 + return + end + i32.const 0 + local.get 0 + i32.store offset=1049008 + i32.const 0 + i32.const 0 + i32.load offset=1049000 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1049000 + local.get 0 + local.get 1 + i32.const 1 + i32.or + i32.store offset=4 + local.get 0 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 1 (;@1;) + i32.const 0 + i32.const 0 + i32.store offset=1048996 + i32.const 0 + i32.const 0 + i32.store offset=1049004 + return + end + i32.const 0 + local.get 0 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1048996 + local.get 1 + i32.add + local.tee 1 + i32.store offset=1048996 + 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 + ) + (func (;4;) (type 3) (param i32 i32) + (local i32 i32 i32 i32) + i32.const 31 + local.set 2 + block ;; label = @1 + local.get 1 + i32.const 16777215 + i32.gt_u + br_if 0 (;@1;) + local.get 1 + i32.const 6 + local.get 1 + 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 0 + i64.const 0 + i64.store offset=16 align=4 + local.get 0 + local.get 2 + i32.store offset=28 + local.get 2 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.set 3 + block ;; label = @1 + block ;; label = @2 + i32.const 0 + i32.load offset=1048992 + local.tee 4 + i32.const 1 + local.get 2 + i32.shl + local.tee 5 + i32.and + br_if 0 (;@2;) + i32.const 0 + local.get 4 + local.get 5 + i32.or + i32.store offset=1048992 + local.get 3 + local.get 0 + i32.store + local.get 0 + local.get 3 + i32.store offset=24 + br 1 (;@1;) + end + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 3 + i32.load + local.tee 4 + i32.load offset=4 + i32.const -8 + i32.and + local.get 1 + i32.ne + br_if 0 (;@4;) + local.get 4 + local.set 2 + br 1 (;@3;) + end + local.get 1 + 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 3 + loop ;; label = @4 + local.get 4 + local.get 3 + i32.const 29 + i32.shr_u + i32.const 4 + i32.and + i32.add + i32.const 16 + i32.add + local.tee 5 + i32.load + local.tee 2 + i32.eqz + br_if 2 (;@2;) + local.get 3 + i32.const 1 + i32.shl + local.set 3 + local.get 2 + local.set 4 + local.get 2 + i32.load offset=4 + i32.const -8 + i32.and + local.get 1 + i32.ne + br_if 0 (;@4;) + end + end + local.get 2 + i32.load offset=8 + local.tee 3 + local.get 0 + i32.store offset=12 + local.get 2 + local.get 0 + i32.store offset=8 + local.get 0 + i32.const 0 + i32.store offset=24 + local.get 0 + local.get 2 + i32.store offset=12 + local.get 0 + local.get 3 + i32.store offset=8 + return + end + local.get 5 + local.get 0 + i32.store + local.get 0 + local.get 4 + i32.store offset=24 + end + local.get 0 + local.get 0 + i32.store offset=12 + local.get 0 + local.get 0 + i32.store offset=8 + ) + (func (;5;) (type 3) (param i32 i32) + (local i32 i32 i32 i32) + local.get 0 + i32.load offset=12 + local.set 2 + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + local.get 1 + i32.const 256 + i32.lt_u + br_if 0 (;@3;) + local.get 0 + i32.load offset=24 + local.set 3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 2 + local.get 0 + i32.ne + br_if 0 (;@6;) + local.get 0 + i32.const 20 + i32.const 16 + local.get 0 + i32.const 20 + i32.add + local.tee 2 + i32.load + local.tee 4 + select + i32.add + i32.load + local.tee 1 + br_if 1 (;@5;) + i32.const 0 + local.set 2 + br 2 (;@4;) + end + local.get 0 + i32.load offset=8 + local.tee 1 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 1 + i32.store offset=8 + br 1 (;@4;) + end + local.get 2 + local.get 0 + i32.const 16 + i32.add + local.get 4 + select + local.set 4 + loop ;; label = @5 + local.get 4 + local.set 5 + local.get 1 + local.tee 2 + i32.const 20 + i32.add + local.tee 1 + local.get 2 + i32.const 16 + i32.add + local.get 1 + i32.load + local.tee 1 + select + local.set 4 + local.get 2 + i32.const 20 + i32.const 16 + local.get 1 + select + i32.add + i32.load + local.tee 1 + br_if 0 (;@5;) + end + local.get 5 + i32.const 0 + i32.store + end + local.get 3 + i32.eqz + br_if 2 (;@1;) + block ;; label = @4 + local.get 0 + i32.load offset=28 + i32.const 2 + i32.shl + i32.const 1048580 + i32.add + local.tee 1 + i32.load + local.get 0 + i32.eq + br_if 0 (;@4;) + local.get 3 + i32.const 16 + i32.const 20 + local.get 3 + i32.load offset=16 + local.get 0 + i32.eq + select + i32.add + local.get 2 + i32.store + local.get 2 + i32.eqz + br_if 3 (;@1;) + br 2 (;@2;) + end + local.get 1 + local.get 2 + i32.store + local.get 2 + br_if 1 (;@2;) + i32.const 0 + i32.const 0 + i32.load offset=1048992 + i32.const -2 + local.get 0 + i32.load offset=28 + i32.rotl + i32.and + i32.store offset=1048992 + br 2 (;@1;) + end + block ;; label = @3 + local.get 2 + local.get 0 + i32.load offset=8 + local.tee 4 + i32.eq + br_if 0 (;@3;) + local.get 4 + local.get 2 + i32.store offset=12 + local.get 2 + local.get 4 + i32.store offset=8 + return + end + i32.const 0 + i32.const 0 + i32.load offset=1048988 + i32.const -2 + local.get 1 + i32.const 3 + i32.shr_u + i32.rotl + i32.and + i32.store offset=1048988 + return + end + local.get 2 + local.get 3 + i32.store offset=24 + block ;; label = @2 + local.get 0 + i32.load offset=16 + local.tee 1 + i32.eqz + br_if 0 (;@2;) + local.get 2 + local.get 1 + i32.store offset=16 + local.get 1 + local.get 2 + i32.store offset=24 + end + local.get 0 + i32.const 20 + i32.add + i32.load + local.tee 1 + i32.eqz + br_if 0 (;@1;) + local.get 2 + i32.const 20 + i32.add + local.get 1 + i32.store + local.get 1 + local.get 2 + i32.store offset=24 + return + end + ) + (func (;6;) (type 4) (param i32) + (local i32 i32 i32 i32 i32) + 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 = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + local.get 2 + i32.const 1 + i32.and + br_if 0 (;@4;) + local.get 2 + i32.const 3 + i32.and + i32.eqz + br_if 1 (;@3;) + local.get 1 + i32.load + local.tee 2 + local.get 0 + i32.add + local.set 0 + block ;; label = @5 + local.get 1 + local.get 2 + i32.sub + local.tee 1 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 0 (;@5;) + local.get 3 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + br_if 1 (;@4;) + i32.const 0 + local.get 0 + i32.store offset=1048996 + local.get 3 + local.get 3 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 3 + local.get 0 + i32.store + return + end + local.get 1 + local.get 2 + call 5 + end + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 3 + i32.load offset=4 + local.tee 2 + i32.const 2 + i32.and + br_if 0 (;@6;) + local.get 3 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 2 (;@4;) + local.get 3 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 5 (;@1;) + local.get 3 + local.get 2 + i32.const -8 + i32.and + local.tee 2 + call 5 + local.get 1 + local.get 2 + local.get 0 + i32.add + local.tee 0 + i32.const 1 + i32.or + i32.store offset=4 + local.get 1 + local.get 0 + i32.add + local.get 0 + i32.store + local.get 1 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 1 (;@5;) + i32.const 0 + local.get 0 + i32.store offset=1048996 + return + end + local.get 3 + local.get 2 + i32.const -2 + i32.and + i32.store offset=4 + 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 + end + local.get 0 + i32.const 256 + i32.lt_u + br_if 2 (;@2;) + local.get 1 + local.get 0 + call 4 + i32.const 0 + local.set 1 + i32.const 0 + i32.const 0 + i32.load offset=1049028 + i32.const -1 + i32.add + local.tee 0 + i32.store offset=1049028 + local.get 0 + br_if 1 (;@3;) + block ;; label = @5 + i32.const 0 + i32.load offset=1048716 + local.tee 0 + i32.eqz + br_if 0 (;@5;) + i32.const 0 + local.set 1 + loop ;; label = @6 + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@6;) + end + end + i32.const 0 + local.get 1 + i32.const 4095 + local.get 1 + i32.const 4095 + i32.gt_u + select + i32.store offset=1049028 + return + end + i32.const 0 + local.get 1 + i32.store offset=1049008 + i32.const 0 + i32.const 0 + i32.load offset=1049000 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1049000 + local.get 1 + local.get 0 + i32.const 1 + i32.or + i32.store offset=4 + block ;; label = @4 + local.get 1 + i32.const 0 + i32.load offset=1049004 + i32.ne + br_if 0 (;@4;) + i32.const 0 + i32.const 0 + i32.store offset=1048996 + i32.const 0 + i32.const 0 + i32.store offset=1049004 + end + local.get 0 + i32.const 0 + i32.load offset=1049020 + local.tee 4 + i32.le_u + br_if 0 (;@3;) + i32.const 0 + i32.load offset=1049008 + local.tee 3 + i32.eqz + br_if 0 (;@3;) + i32.const 0 + local.set 1 + block ;; label = @4 + i32.const 0 + i32.load offset=1049000 + local.tee 5 + i32.const 41 + i32.lt_u + br_if 0 (;@4;) + i32.const 1048708 + local.set 0 + loop ;; label = @5 + block ;; label = @6 + local.get 0 + i32.load + local.tee 2 + local.get 3 + i32.gt_u + br_if 0 (;@6;) + local.get 2 + local.get 0 + i32.load offset=4 + i32.add + local.get 3 + i32.gt_u + br_if 2 (;@4;) + end + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@5;) + end + end + block ;; label = @4 + i32.const 0 + i32.load offset=1048716 + local.tee 0 + i32.eqz + br_if 0 (;@4;) + i32.const 0 + local.set 1 + loop ;; label = @5 + local.get 1 + i32.const 1 + i32.add + local.set 1 + local.get 0 + i32.load offset=8 + local.tee 0 + br_if 0 (;@5;) + end + end + i32.const 0 + local.get 1 + i32.const 4095 + local.get 1 + i32.const 4095 + i32.gt_u + select + i32.store offset=1049028 + local.get 5 + local.get 4 + i32.le_u + br_if 0 (;@3;) + i32.const 0 + i32.const -1 + i32.store offset=1049020 + end + return + end + local.get 0 + i32.const -8 + i32.and + i32.const 1048724 + i32.add + local.set 3 + block ;; label = @2 + block ;; label = @3 + i32.const 0 + i32.load offset=1048988 + local.tee 2 + i32.const 1 + local.get 0 + i32.const 3 + i32.shr_u + i32.shl + local.tee 0 + i32.and + br_if 0 (;@3;) + i32.const 0 + local.get 2 + local.get 0 + i32.or + i32.store offset=1048988 + local.get 3 + local.set 0 + br 1 (;@2;) + end + local.get 3 + i32.load offset=8 + local.set 0 + end + local.get 3 + local.get 1 + i32.store offset=8 + local.get 0 + local.get 1 + i32.store offset=12 + local.get 1 + local.get 3 + i32.store offset=12 + local.get 1 + local.get 0 + i32.store offset=8 + return + end + i32.const 0 + local.get 1 + i32.store offset=1049004 + i32.const 0 + i32.const 0 + i32.load offset=1048996 + local.get 0 + i32.add + local.tee 0 + i32.store offset=1048996 + 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 + ) + (func (;7;) (type 5) (param i32 i32 i32 i32) (result i32) + (local i32 i32 i32 i32) + block ;; label = @1 + block ;; label = @2 + block ;; label = @3 + block ;; label = @4 + block ;; label = @5 + block ;; label = @6 + local.get 1 + br_if 0 (;@6;) + local.get 3 + br_if 1 (;@5;) + local.get 2 + return + end + block ;; label = @6 + local.get 2 + i32.const 9 + i32.lt_u + br_if 0 (;@6;) + local.get 2 + local.get 3 + call 1 + local.tee 2 + i32.eqz + br_if 2 (;@4;) + local.get 2 + local.get 0 + local.get 1 + local.get 3 + local.get 1 + local.get 3 + i32.lt_u + select + call 9 + local.set 3 + local.get 0 + call 6 + local.get 3 + return + end + local.get 3 + i32.const -65588 + i32.gt_u + br_if 1 (;@4;) + i32.const 16 + local.get 3 + i32.const 11 + i32.add + i32.const -8 + i32.and + local.get 3 + i32.const 11 + i32.lt_u + select + local.set 1 + local.get 0 + i32.const -4 + i32.add + local.tee 4 + i32.load + local.tee 5 + i32.const -8 + i32.and + local.set 2 + block ;; label = @6 + block ;; label = @7 + local.get 5 + i32.const 3 + i32.and + br_if 0 (;@7;) + local.get 1 + i32.const 256 + i32.lt_u + br_if 1 (;@6;) + local.get 2 + local.get 1 + i32.const 4 + i32.or + i32.lt_u + br_if 1 (;@6;) + local.get 2 + local.get 1 + i32.sub + i32.const 131073 + i32.ge_u + br_if 1 (;@6;) + br 5 (;@2;) + end + local.get 0 + i32.const -8 + i32.add + local.tee 6 + local.get 2 + i32.add + local.set 7 + block ;; label = @7 + block ;; label = @8 + block ;; label = @9 + local.get 2 + local.get 1 + i32.ge_u + br_if 0 (;@9;) + local.get 7 + i32.const 0 + i32.load offset=1049008 + i32.eq + br_if 2 (;@7;) + local.get 7 + i32.const 0 + i32.load offset=1049004 + i32.eq + br_if 1 (;@8;) + local.get 7 + i32.load offset=4 + local.tee 5 + i32.const 2 + i32.and + br_if 3 (;@6;) + local.get 5 + i32.const -8 + i32.and + local.tee 5 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.lt_u + br_if 3 (;@6;) + local.get 7 + local.get 5 + call 5 + local.get 2 + local.get 1 + i32.sub + local.tee 3 + i32.const 16 + i32.lt_u + br_if 6 (;@3;) + local.get 4 + local.get 1 + local.get 4 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 1 + local.get 3 + i32.const 3 + i32.or + i32.store offset=4 + local.get 6 + 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 1 + local.get 3 + call 3 + local.get 0 + return + end + local.get 2 + local.get 1 + i32.sub + local.tee 3 + i32.const 15 + i32.le_u + br_if 6 (;@2;) + local.get 4 + local.get 1 + local.get 5 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 1 + local.get 3 + 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 1 + local.get 3 + call 3 + local.get 0 + return + end + i32.const 0 + i32.load offset=1048996 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.lt_u + br_if 1 (;@6;) + block ;; label = @8 + block ;; label = @9 + local.get 2 + local.get 1 + i32.sub + local.tee 3 + i32.const 15 + i32.gt_u + br_if 0 (;@9;) + local.get 4 + local.get 5 + i32.const 1 + i32.and + local.get 2 + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.set 3 + i32.const 0 + local.set 1 + br 1 (;@8;) + end + local.get 4 + local.get 1 + local.get 5 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 1 + local.get 3 + i32.const 1 + i32.or + i32.store offset=4 + local.get 6 + local.get 2 + i32.add + local.tee 2 + local.get 3 + i32.store + local.get 2 + local.get 2 + i32.load offset=4 + i32.const -2 + i32.and + i32.store offset=4 + end + i32.const 0 + local.get 1 + i32.store offset=1049004 + i32.const 0 + local.get 3 + i32.store offset=1048996 + local.get 0 + return + end + i32.const 0 + i32.load offset=1049000 + local.get 2 + i32.add + local.tee 2 + local.get 1 + i32.gt_u + br_if 5 (;@1;) + end + local.get 3 + call 2 + local.tee 1 + i32.eqz + br_if 1 (;@4;) + local.get 1 + local.get 0 + i32.const -4 + i32.const -8 + local.get 4 + i32.load + local.tee 2 + i32.const 3 + i32.and + select + local.get 2 + i32.const -8 + i32.and + i32.add + local.tee 2 + local.get 3 + local.get 2 + local.get 3 + i32.lt_u + select + call 9 + local.set 3 + local.get 0 + call 6 + local.get 3 + return + end + i32.const 0 + i32.load8_u offset=1049032 + drop + block ;; label = @5 + block ;; label = @6 + local.get 2 + i32.const 9 + i32.lt_u + br_if 0 (;@6;) + local.get 2 + local.get 3 + call 1 + local.set 0 + br 1 (;@5;) + end + local.get 3 + call 2 + local.set 0 + end + local.get 0 + br_if 2 (;@2;) + end + unreachable + unreachable + end + local.get 4 + local.get 2 + local.get 4 + i32.load + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 2 + i32.add + local.tee 3 + local.get 3 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + end + local.get 0 + return + end + local.get 4 + local.get 1 + local.get 5 + i32.const 1 + i32.and + i32.or + i32.const 2 + i32.or + i32.store + local.get 6 + local.get 1 + i32.add + local.tee 3 + local.get 2 + local.get 1 + i32.sub + local.tee 1 + i32.const 1 + i32.or + i32.store offset=4 + i32.const 0 + local.get 1 + i32.store offset=1049000 + i32.const 0 + local.get 3 + i32.store offset=1049008 + local.get 0 + ) + (func (;8;) (type 6) (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 (;9;) (type 6) (param i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + call 8 + ) + (func (;10;) (type 5) (param i32 i32 i32 i32) (result i32) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + call 7 + ) + (table (;0;) 2 2 funcref) + (memory (;0;) 17) + (global (;0;) (mut i32) i32.const 1048576) + (global (;1;) i32 i32.const 1049033) + (global (;2;) i32 i32.const 1049040) + (export "memory" (memory 0)) + (export "subtract" (func 0)) + (export "cabi_realloc_wit_bindgen_0_20_0" (func 7)) + (export "cabi_realloc" (func 10)) + (export "__data_end" (global 1)) + (export "__heap_base" (global 2)) + (elem (;0;) (i32.const 1) func 10) + (data (;0;) (i32.const 1048576) "\01\00\00\00") + (@producers + (processed-by "wit-component" "0.201.0") + (processed-by "wit-bindgen-rust" "0.20.0") + ) + ) + (core instance (;0;) (instantiate 0)) + (alias core export 0 "memory" (core memory (;0;))) + (alias core export 0 "cabi_realloc" (core func (;0;))) + (type (;0;) (func (param "a" float64) (param "b" float64) (result float64))) + (alias core export 0 "subtract" (core func (;1;))) + (func (;0;) (type 0) (canon lift (core func 1))) + (export (;1;) "subtract" (func 0)) + (@producers + (processed-by "wit-component" "0.201.0") + ) +) diff --git a/homestar-wasm/src/wasmtime/ipld.rs b/homestar-wasm/src/wasmtime/ipld.rs index 7d5e636e..d2659dc5 100644 --- a/homestar-wasm/src/wasmtime/ipld.rs +++ b/homestar-wasm/src/wasmtime/ipld.rs @@ -181,7 +181,8 @@ impl RuntimeVal { stacker::maybe_grow(DEFAULT_RED_ZONE, DEFAULT_EXTRA_STACK, || { let dyn_type = match ipld { Ipld::Null => match interface_ty { - InterfaceType::Type(Type::Option(opt_inst)) => { + InterfaceType::Type(Type::Option(opt_inst)) + | InterfaceType::TypeRef(Type::Option(opt_inst)) => { RuntimeVal::new(opt_inst.new_val(None)?) } InterfaceType::Type(Type::String) @@ -291,8 +292,12 @@ impl RuntimeVal { RuntimeVal::new(Val::S32(v.try_into()?)) } // We need to handle cases where clients, notably JavaScript, represent 5.0 as 5. - InterfaceType::Type(Type::Float32) => RuntimeVal::new(Val::Float32(v as f32)), - InterfaceType::Type(Type::Float64) => RuntimeVal::new(Val::Float64(v as f64)), + InterfaceType::Type(Type::Float32) | InterfaceType::TypeRef(Type::Float32) => { + RuntimeVal::new(Val::Float32(v as f32)) + } + InterfaceType::Type(Type::Float64) | InterfaceType::TypeRef(Type::Float64) => { + RuntimeVal::new(Val::Float64(v as f64)) + } InterfaceType::Any | InterfaceType::Type(Type::S64) | InterfaceType::TypeRef(Type::S64) => RuntimeVal::new(Val::S64(v.try_into()?)), @@ -903,7 +908,7 @@ mod test { } #[test] - fn try_integer_to_float() { + fn try_integer_to_float32() { let ipld_in = Ipld::Integer(5); let ipld_out = Ipld::Float(5.0); let runtime_float = RuntimeVal::new(Val::Float32(5.0)); @@ -924,6 +929,28 @@ mod test { assert_eq!(Ipld::try_from(runtime_float).unwrap(), ipld_out); } + #[test] + fn try_integer_to_float64() { + let ipld_in = Ipld::Integer(5); + let ipld_out = Ipld::Float(5.0); + let runtime_float = RuntimeVal::new(Val::Float64(5.0)); + + let ty = test_utils::component::setup_component_with_param( + "float64".to_string(), + &[test_utils::component::Param( + test_utils::component::Type::F64, + None, + )], + ); + + assert_eq!( + RuntimeVal::try_from(ipld_in.clone(), &InterfaceType::Type(ty)).unwrap(), + runtime_float + ); + + assert_eq!(Ipld::try_from(runtime_float).unwrap(), ipld_out); + } + #[test] fn try_string_roundtrip() { let ipld1 = Ipld::String("Hello!".into()); diff --git a/homestar-wasm/tests/execute_wasm.rs b/homestar-wasm/tests/execute_wasm.rs index 7323748e..90870a3c 100644 --- a/homestar-wasm/tests/execute_wasm.rs +++ b/homestar-wasm/tests/execute_wasm.rs @@ -606,3 +606,21 @@ async fn test_execute_wasms_with_multiple_inits() { Output::Value(wasmtime::component::Val::String("RoundRoundabout".into())) ); } + +#[tokio::test] +async fn test_subtract() { + let ipld = Input::Ipld(Ipld::Map(BTreeMap::from([ + ("func".into(), Ipld::String("subtract".to_string())), + ( + "args".into(), + Ipld::List(vec![Ipld::Integer(1), Ipld::Integer(1)]), + ), + ]))); + + let wasm = fs::read(fixtures("example_subtract.wasm")).unwrap(); + let mut env = World::instantiate(wasm, "subtract", State::default()) + .await + .unwrap(); + let res = env.execute(ipld.parse().unwrap().into()).await.unwrap(); + assert_eq!(res, Output::Value(wasmtime::component::Val::Float64(0.0))); +}