Built-in Member Functions

Status: implemented

The represented EDAG interpreters and the Rust VM implement the admitted member functions. The native completeness table checks every allowed receiver-type/name pair against the compiler's list (member-functions).

ReceiverAdmitted methods
Arrayat, concat, every, filter, find, findIndex, findLast, findLastIndex, flat, flatMap, includes, indexOf, join, lastIndexOf, map, reduce, reduceRight, slice, some, toReversed, toSorted, toSpliced, with
Stringat, charAt, charCodeAt, codePointAt, concat, endsWith, includes, indexOf, isWellFormed, lastIndexOf, padEnd, padStart, repeat, replace, replaceAll, slice, split, startsWith, substring, toLowerCase, toUpperCase, toWellFormed, trim, trimEnd, trimStart
NumbertoExponential, toFixed, toPrecision
Object, Array, String, Number, Boolean, BigInt, FunctiontoString

Methods follow JavaScript's argument, callback and coercion rules. Array callbacks can be closures, missing arguments differ from explicitly passed undefined where the method specifies that distinction, and string positions count UTF-16 code units. Each is defined once, in fjs/js/runtime: as a FunctionalScript body every executor answers it from — startsWith the first — or, until its body is written, as a name each executor implements natively. Mutation methods, iterator-producing methods, locale-sensitive operations, regular-expression methods and namespace APIs such as Array.isArray remain outside this set. The complete name-by-name admission rationale is in prototype names.

A member function no body can define — slice on a string, the substring read, and charCodeAt, the code-unit read — is an intrinsic: every executor binds it natively, and a module may call it as a function through a helper whose body is the one member call, (s, a, b) => s.slice(a, b), which the compiler recognizes whole as it recognizes entry (entries), under any names. The call means exactly what the member call means with no runtime: the receiver's own property, else the native, else the TypeError. The runtime's own bodies reach a native this way, so the runtime names nothing it defines (fjs/js/intrinsic; the runtime's README).

Native execution has these limits:

  • Number and bigint toString accept radices 2–36. Bigints and integral numbers convert exactly; a fractional number with a nondecimal radix is refused. Exact large-integer radix digits can differ from a host engine's implementation-defined formatting.
  • toSorted with an inconsistent comparator has the order the executor's sorting algorithm gives it, as ECMAScript permits.
  • toLowerCase and toUpperCase are the Unicode Default Case Conversion at Unicode 17.0.0, the version the pinned Rust standard library carries and nanvm-lib asserts at compile time (prototype names). A host engine on another Unicode version may case a character assigned since then differently. A lone surrogate, which has no case, is kept.
  • Native strings hold at most 2³² − 1 UTF-16 code units; a host engine may exhaust its resources sooner.
  • Compiled functions carry EDAG-derived text. A native function without associated text is refused when conversion requests it (function-source exception).

The native array and string/number documentation gives the method-specific details and implementation-defined cases.

Examples

The compiler demo has no programs for this page yet: its accepted and refused examples are a follow-up.

The demo on this page runs sample.f.js, this page's example as a function of one number — array member functions chained: filter, map and join — with every output fjs compile makes of it: the expression graph (EDAG), the Rust and the WebAssembly that Rust builds to. Its Run button calls the default export with 0 and 2, as JavaScript and as WebAssembly, and shows what each call returned or threw.

export default (...a) => [1, 2, 3, 4].filter(x => x > a[0]).map(x => x * 10).join("-");

Reference

Demo

In FunctionalScript

fjs compile accepts this module, and it runs as JavaScript and as WebAssembly alike.

A FunctionalScript module and what fjs compile makes of it: the expression graph it lowers to, the Rust it compiles to on the NaNVM runtime, and the WebAssembly that Rust builds to. Run calls its default export with 0, then 2, first as the JavaScript it already is and then as WebAssembly, and shows what each call returned or threw and how long one call takes, timed over 1000 calls.

FunctionalScript source:

/**
 * The example of [`README.md`](./README.md) (Built-in Member Functions) as a
 * function of one number, for the page's WASM demo: array member functions
 * chained: `filter`, `map` and `join`.
 *
 * @module
 */

/** @type {(...a: readonly number[]) => unknown} */
export default (...a) => [1, 2, 3, 4].filter(x => x > a[0]).map(x => x * 10).join("-");

Expression graph (EDAG) that fjs compile lowers it to:

=>lengthbody0.join().()objkey....map()"join"[].()objkey....filter()"map"[][]0"-".()objkey...[]"filter"[][]0[]01231234[]0=>lengthbody1*=>lengthframe 0body1rest>*leftrightarg 010>leftrightarg 0..objidxframe 00

The same graph, as fjs compile writes it to a .edag.data.js file:

export default ["{}",[[":","default",["=>",0,[],[".",[".",[".",["[]",[1,2,3,4]],"filter",["|()",[["=>",1,[["rest"]],[">",["arg",0],[".",["frame",0],0]]]]]],"map",["|()",[["=>",1,[],["*",["arg",0],10]]]]],"join",["|()",["-"]]]]]]];

Rust that fjs compile writes from it, on the NaNVM runtime:

// @generated by `fjs compile`. Do not edit: recompile the source module instead.

use nanvm_lib::vm::unstable::{f64_any, string_any, string_key};
use nanvm_lib::vm::{Any, IStaticFunction, ToAny, ToArray, ToObject};

#[rustfmt::skip]
#[allow(clippy::if_same_then_else)]
pub fn module<A: IStaticFunction>(runtime: Any<A>) -> Result<Any<A>, Any<A>> {
    Ok([(string_key("default"), A::static_function(|_self, _args| {
        let _b642: Any<A> = _args.rest(0).to_any();
        Any::dot((Any::dot((Any::dot([f64_any(0x3ff0000000000000), f64_any(0x4000000000000000), f64_any(0x4008000000000000), f64_any(0x4010000000000000)].to_array().to_any(), string_any("filter")).end_call(&A::frame(_self)[0], || Ok([A::static_function(|_self, _args| { Any::gt(_args.argument(0), (Any::dot(A::frame(_self)[0].clone(), f64_any(0x0000000000000000)).end())?) }, 1, [_b642.clone(), A::frame(_self)[0].clone()].to_array(), Some("($1)=>$1>$0[0]")).to_any()].to_array().to_any())))?, string_any("map")).end_call(&A::frame(_self)[0], || Ok([A::static_function(|_self, _args| { _args.argument(0) * f64_any(0x4024000000000000) }, 1, [A::frame(_self)[0].clone()].to_array(), Some("($0)=>$0*10")).to_any()].to_array().to_any())))?, string_any("join")).end_call(&A::frame(_self)[0], || Ok([string_any("-")].to_array().to_any()))
    }, 0, [runtime.clone()].to_array(), Some("(...$0)=>[1,2,3,4].filter(($1)=>$1>$0[0]).map(($2)=>$2*10).join(\"-\")")).to_any())].to_object().to_any())
}

WebAssembly text (WAT) of the functions compiled from this source, without the NaNVM runtime:

  (func $"<nanvm_lib::vm::lambda::PropertyLambda<nanvm_lib::naive::Naive>>::end_call::<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#0}>" (;218;) (type 10) (param i32 i32 i32 i32 i32)
    (local i32 i32 i32 i64 i64 i32 i32)
    global.get $__stack_pointer
    i32.const 208
    i32.sub
    local.tee 5
    global.set $__stack_pointer
    block ;; label = @1
      block ;; label = @2
        block ;; label = @3
          block ;; label = @4
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            local.get 1
                            i32.load8_u
                            local.tee 6
                            i32.const 255
                            i32.ne
                            br_if 0 (;@12;)
                            local.get 5
                            local.get 1
                            i64.load offset=16
                            i64.store offset=39 align=1
                            local.get 5
                            local.get 1
                            i64.load offset=8
                            i64.store offset=31 align=1
                            br 1 (;@11;)
                          end
                          local.get 5
                          local.get 1
                          i32.const 1
                          i32.add
                          local.tee 7
                          i64.load align=1
                          i64.store offset=24
                          local.get 5
                          local.get 7
                          i64.load offset=8 align=1
                          i64.store offset=32
                          local.get 5
                          local.get 7
                          i64.load offset=15 align=1
                          i64.store offset=39 align=1
                          local.get 6
                          i32.const 255
                          i32.and
                          i32.const 8
                          i32.lt_u
                          br_if 1 (;@10;)
                          local.get 6
                          i32.const 255
                          i32.and
                          i32.const 9
                          i32.ne
                          br_if 2 (;@9;)
                        end
                        local.get 5
                        local.get 5
                        i64.load offset=39 align=1
                        i64.store offset=160
                        local.get 5
                        local.get 5
                        i64.load offset=31 align=1
                        i64.store offset=152
                        br 5 (;@5;)
                      end
                      local.get 1
                      i64.load offset=24
                      local.set 8
                      local.get 5
                      local.get 6
                      i32.store8 offset=72
                      local.get 5
                      local.get 8
                      i64.store offset=96
                      local.get 5
                      local.get 7
                      i64.load align=1
                      i64.store offset=73 align=1
                      local.get 5
                      local.get 7
                      i64.load offset=8 align=1
                      i64.store offset=81 align=1
                      local.get 5
                      local.get 7
                      i64.load offset=15 align=1
                      i64.store offset=88 align=1
                      local.get 5
                      i32.const 152
                      i32.add
                      local.get 5
                      i32.const 72
                      i32.add
                      local.get 2
                      call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::is_nullish
                      block ;; label = @10
                        local.get 5
                        i32.load8_u offset=152
                        local.tee 1
                        i32.const 255
                        i32.ne
                        br_if 0 (;@10;)
                        local.get 4
                        i32.load
                        local.set 1
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        local.get 3
                                        i32.load8_u
                                        local.tee 4
                                        br_table 6 (;@12;) 6 (;@12;) 0 (;@18;) 1 (;@17;) 2 (;@16;) 3 (;@15;) 4 (;@14;) 5 (;@13;) 6 (;@12;)
                                      end
                                      local.get 3
                                      i64.load offset=8
                                      local.set 8
                                      br 10 (;@7;)
                                    end
                                    local.get 3
                                    i32.load offset=4
                                    local.tee 7
                                    local.get 7
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 6
                                    i32.store
                                    local.get 6
                                    i32.eqz
                                    br_if 15 (;@1;)
                                    br 8 (;@8;)
                                  end
                                  local.get 3
                                  i32.load offset=4
                                  local.tee 7
                                  local.get 7
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 6
                                  i32.store
                                  local.get 6
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  local.get 3
                                  i64.load8_u offset=12
                                  i64.const 32
                                  i64.shl
                                  local.get 3
                                  i64.load32_u offset=8
                                  i64.or
                                  local.set 8
                                  br 8 (;@7;)
                                end
                                local.get 3
                                i32.load offset=4
                                local.tee 7
                                local.get 7
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 6
                                i32.store
                                local.get 6
                                br_if 6 (;@8;)
                                br 13 (;@1;)
                              end
                              local.get 3
                              i32.load offset=4
                              local.tee 7
                              local.get 7
                              i32.load
                              i32.const 1
                              i32.add
                              local.tee 6
                              i32.store
                              local.get 6
                              br_if 5 (;@8;)
                              br 12 (;@1;)
                            end
                            local.get 3
                            i32.load offset=4
                            local.tee 7
                            local.get 7
                            i32.load
                            i32.const 1
                            i32.add
                            local.tee 6
                            i32.store
                            local.get 6
                            i32.eqz
                            br_if 11 (;@1;)
                            br 1 (;@11;)
                          end
                          local.get 3
                          i32.load8_u offset=1
                          local.set 3
                        end
                        br 3 (;@7;)
                      end
                      local.get 5
                      local.get 5
                      i32.load8_u offset=155
                      i32.store8 offset=59
                      local.get 5
                      local.get 5
                      i32.load16_u offset=153 align=1
                      i32.store16 offset=57 align=1
                      local.get 5
                      i64.load offset=156 align=4
                      local.set 9
                      local.get 5
                      i32.load offset=164
                      local.set 3
                      local.get 5
                      local.get 6
                      i32.store8 offset=152
                      local.get 5
                      local.get 2
                      i32.store offset=184
                      local.get 5
                      local.get 8
                      i64.store offset=176
                      local.get 5
                      local.get 7
                      i64.load align=1
                      i64.store offset=153 align=1
                      local.get 5
                      local.get 7
                      i64.load offset=8 align=1
                      i64.store offset=161 align=1
                      local.get 5
                      local.get 7
                      i64.load offset=15 align=1
                      i64.store offset=168 align=1
                      local.get 5
                      local.get 3
                      i32.store offset=68
                      local.get 5
                      local.get 9
                      i64.store offset=60 align=4
                      local.get 5
                      local.get 1
                      i32.store8 offset=56
                      local.get 5
                      i32.const 152
                      i32.add
                      call $"#func217 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                      local.get 5
                      i32.const 168
                      i32.add
                      call $"#func217 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                      br 3 (;@6;)
                    end
                    local.get 0
                    i32.const 256
                    i32.store16 offset=8
                    i64.const 0
                    local.set 8
                    br 4 (;@4;)
                  end
                  local.get 3
                  i64.load32_u offset=8
                  local.set 8
                end
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      local.get 1
                      i32.load offset=16
                      i32.eqz
                      br_if 0 (;@9;)
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      local.get 1
                                      i32.load offset=12
                                      local.tee 1
                                      i32.load8_u offset=8
                                      local.tee 10
                                      br_table 6 (;@11;) 6 (;@11;) 0 (;@17;) 1 (;@16;) 2 (;@15;) 3 (;@14;) 4 (;@13;) 5 (;@12;) 6 (;@11;)
                                    end
                                    local.get 1
                                    i64.load offset=16
                                    local.set 9
                                    br 9 (;@7;)
                                  end
                                  local.get 1
                                  i32.load offset=12
                                  local.tee 6
                                  local.get 6
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 11
                                  i32.store
                                  local.get 11
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  br 7 (;@8;)
                                end
                                local.get 1
                                i32.load offset=12
                                local.tee 6
                                local.get 6
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 11
                                i32.store
                                local.get 11
                                i32.eqz
                                br_if 13 (;@1;)
                                local.get 1
                                i64.load8_u offset=20
                                i64.const 32
                                i64.shl
                                local.get 1
                                i64.load32_u offset=16
                                i64.or
                                local.set 9
                                br 7 (;@7;)
                              end
                              local.get 1
                              i32.load offset=12
                              local.tee 6
                              local.get 6
                              i32.load
                              i32.const 1
                              i32.add
                              local.tee 11
                              i32.store
                              local.get 11
                              i32.eqz
                              br_if 12 (;@1;)
                              br 5 (;@8;)
                            end
                            local.get 1
                            i32.load offset=12
                            local.tee 6
                            local.get 6
                            i32.load
                            i32.const 1
                            i32.add
                            local.tee 11
                            i32.store
                            local.get 11
                            i32.eqz
                            br_if 11 (;@1;)
                            br 4 (;@8;)
                          end
                          local.get 1
                          i32.load offset=12
                          local.tee 6
                          local.get 6
                          i32.load
                          i32.const 1
                          i32.add
                          local.tee 1
                          i32.store
                          local.get 1
                          i32.eqz
                          br_if 10 (;@1;)
                          br 1 (;@10;)
                        end
                        local.get 1
                        i32.load8_u offset=9
                        local.set 1
                      end
                      br 2 (;@7;)
                    end
                    i32.const 0
                    i32.const 0
                    i32.const 1069140
                    call $core::panicking::panic_bounds_check
                    unreachable
                  end
                  local.get 1
                  i64.load32_u offset=16
                  local.set 9
                end
                local.get 5
                i32.const 0
                i32.store8 offset=104
                local.get 5
                local.get 9
                i64.store offset=184
                local.get 5
                local.get 6
                i32.store offset=180
                local.get 5
                local.get 1
                i32.store8 offset=177
                local.get 5
                local.get 10
                i32.store8 offset=176
                local.get 5
                local.get 8
                i64.store offset=168
                local.get 5
                local.get 7
                i32.store offset=164
                local.get 5
                local.get 3
                i32.store8 offset=161
                local.get 5
                local.get 4
                i32.store8 offset=160
                local.get 5
                i64.const 8589934592
                i64.store offset=152
                local.get 5
                local.get 5
                i32.const 104
                i32.add
                i32.store offset=192
                local.get 5
                i32.const 16
                i32.add
                local.get 5
                i32.const 152
                i32.add
                call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 2>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
                local.get 5
                local.get 5
                i32.load offset=20
                local.tee 7
                i32.store offset=124
                local.get 5
                local.get 5
                i32.load offset=16
                local.tee 1
                i32.store offset=120
                block ;; label = @7
                  local.get 5
                  i32.load8_u offset=104
                  i32.const 1
                  i32.ne
                  br_if 0 (;@7;)
                  local.get 1
                  local.get 1
                  i32.load
                  i32.const -1
                  i32.add
                  local.tee 0
                  i32.store
                  local.get 0
                  br_if 5 (;@2;)
                  local.get 5
                  i32.const 120
                  i32.add
                  call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                  br 5 (;@2;)
                end
                local.get 1
                i32.eqz
                br_if 4 (;@2;)
                i32.const 33
                i32.const 1
                local.get 1
                local.get 7
                i32.const 1057618
                i32.const 14
                call $"<nanvm_lib::naive::Naive as nanvm_lib::vm::internal::IVm>::static_function"
                local.set 1
                local.get 5
                i32.const 0
                i32.store8 offset=104
                local.get 5
                local.get 1
                i32.store offset=164
                local.get 5
                i32.const 7
                i32.store8 offset=160
                local.get 5
                i64.const 4294967296
                i64.store offset=152
                local.get 5
                local.get 5
                i32.const 104
                i32.add
                i32.store offset=176
                local.get 5
                i32.const 8
                i32.add
                local.get 5
                i32.const 152
                i32.add
                call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 1>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
                local.get 5
                local.get 5
                i32.load offset=12
                local.tee 7
                i32.store offset=124
                local.get 5
                local.get 5
                i32.load offset=8
                local.tee 1
                i32.store offset=120
                block ;; label = @7
                  local.get 5
                  i32.load8_u offset=104
                  i32.const 1
                  i32.ne
                  br_if 0 (;@7;)
                  local.get 1
                  local.get 1
                  i32.load
                  i32.const -1
                  i32.add
                  local.tee 0
                  i32.store
                  local.get 0
                  br_if 4 (;@3;)
                  local.get 5
                  i32.const 120
                  i32.add
                  call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                  br 4 (;@3;)
                end
                local.get 1
                i32.eqz
                br_if 3 (;@3;)
                local.get 5
                local.get 7
                i32.store offset=112
                local.get 5
                local.get 1
                i32.store offset=108
                local.get 5
                i32.const 6
                i32.store8 offset=104
                local.get 5
                local.get 5
                i64.load offset=96
                i64.store offset=144
                local.get 5
                local.get 5
                i64.load offset=88
                i64.store offset=136
                local.get 5
                local.get 5
                i64.load offset=80
                i64.store offset=128
                local.get 5
                local.get 5
                i64.load offset=72
                i64.store offset=120
                local.get 5
                i32.const 48
                i32.add
                local.get 5
                i32.const 120
                i32.add
                local.get 2
                local.get 5
                i32.const 104
                i32.add
                call $"<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive> as nanvm_lib::vm::lambda::Live<nanvm_lib::naive::Naive>>::call"
                local.get 5
                i32.load offset=48
                br_if 0 (;@6;)
                local.get 5
                local.get 5
                i64.load offset=64
                local.tee 8
                i64.store offset=160
                local.get 5
                local.get 5
                i64.load offset=56
                local.tee 9
                i64.store offset=152
                local.get 0
                local.get 8
                i64.store offset=16
                local.get 0
                local.get 9
                i64.store offset=8
                i64.const 0
                local.set 8
                br 2 (;@4;)
              end
              local.get 5
              local.get 5
              i64.load offset=64
              i64.store offset=160
              local.get 5
              local.get 5
              i64.load offset=56
              i64.store offset=152
            end
            local.get 0
            local.get 5
            i64.load offset=160
            i64.store offset=16
            local.get 0
            local.get 5
            i64.load offset=152
            i64.store offset=8
            i64.const 1
            local.set 8
          end
          local.get 0
          local.get 8
          i64.store
          local.get 5
          i32.const 208
          i32.add
          global.set $__stack_pointer
          return
        end
        i32.const 1064316
        i32.const 43
        local.get 5
        i32.const 207
        i32.add
        i32.const 1064300
        i32.const 1064360
        call $core::result::unwrap_failed
        unreachable
      end
      i32.const 1064316
      i32.const 43
      local.get 5
      i32.const 207
      i32.add
      i32.const 1064300
      i32.const 1064360
      call $core::result::unwrap_failed
      unreachable
    end
    unreachable
  )
  (func $"<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#0}::{closure#0} as core::ops::function::FnOnce<(&nanvm_lib::naive::function::Function, nanvm_lib::vm::array::Array<nanvm_lib::naive::Naive>)>>::call_once" (;219;) (type 4) (param i32 i32 i32 i32)
    (local i32 i32 i64 i32)
    global.get $__stack_pointer
    i32.const 128
    i32.sub
    local.tee 4
    global.set $__stack_pointer
    local.get 1
    i32.load
    local.set 1
    local.get 4
    local.get 3
    i32.store offset=12
    local.get 4
    local.get 2
    i32.store offset=8
    local.get 4
    i32.const 80
    i32.add
    local.get 4
    i32.const 8
    i32.add
    i32.const 0
    call $<nanvm_lib::vm::array::Array<nanvm_lib::naive::Naive>>::present
    block ;; label = @1
      block ;; label = @2
        local.get 4
        i32.load8_u offset=80
        i32.const 255
        i32.eq
        br_if 0 (;@2;)
        local.get 4
        local.get 4
        i64.load offset=88
        i64.store offset=24
        local.get 4
        local.get 4
        i64.load offset=80
        i64.store offset=16
        br 1 (;@1;)
      end
      local.get 4
      i32.const 256
      i32.store16 offset=16
    end
    block ;; label = @1
      block ;; label = @2
        block ;; label = @3
          block ;; label = @4
            local.get 1
            i32.load offset=16
            i32.eqz
            br_if 0 (;@4;)
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            local.get 1
                            i32.load offset=12
                            local.tee 3
                            i32.load8_u offset=8
                            local.tee 5
                            br_table 6 (;@6;) 6 (;@6;) 0 (;@12;) 1 (;@11;) 2 (;@10;) 3 (;@9;) 4 (;@8;) 5 (;@7;) 6 (;@6;)
                          end
                          local.get 3
                          i64.load offset=16
                          local.set 6
                          br 10 (;@1;)
                        end
                        local.get 3
                        i32.load offset=12
                        local.tee 1
                        local.get 1
                        i32.load
                        i32.const 1
                        i32.add
                        local.tee 7
                        i32.store
                        local.get 7
                        i32.eqz
                        br_if 7 (;@3;)
                        br 8 (;@2;)
                      end
                      local.get 3
                      i32.load offset=12
                      local.tee 1
                      local.get 1
                      i32.load
                      i32.const 1
                      i32.add
                      local.tee 7
                      i32.store
                      local.get 7
                      i32.eqz
                      br_if 6 (;@3;)
                      local.get 3
                      i64.load8_u offset=20
                      i64.const 32
                      i64.shl
                      local.get 3
                      i64.load32_u offset=16
                      i64.or
                      local.set 6
                      br 8 (;@1;)
                    end
                    local.get 3
                    i32.load offset=12
                    local.tee 1
                    local.get 1
                    i32.load
                    i32.const 1
                    i32.add
                    local.tee 7
                    i32.store
                    local.get 7
                    br_if 6 (;@2;)
                    br 5 (;@3;)
                  end
                  local.get 3
                  i32.load offset=12
                  local.tee 1
                  local.get 1
                  i32.load
                  i32.const 1
                  i32.add
                  local.tee 7
                  i32.store
                  local.get 7
                  br_if 5 (;@2;)
                  br 4 (;@3;)
                end
                local.get 3
                i32.load offset=12
                local.tee 1
                local.get 1
                i32.load
                i32.const 1
                i32.add
                local.tee 3
                i32.store
                local.get 3
                i32.eqz
                br_if 3 (;@3;)
                br 1 (;@5;)
              end
              local.get 3
              i32.load8_u offset=9
              local.set 3
            end
            br 3 (;@1;)
          end
          i32.const 0
          i32.const 0
          i32.const 1069140
          call $core::panicking::panic_bounds_check
          unreachable
        end
        unreachable
      end
      local.get 3
      i64.load32_u offset=16
      local.set 6
    end
    local.get 4
    local.get 6
    i64.store offset=120
    local.get 4
    local.get 1
    i32.store offset=116
    local.get 4
    local.get 3
    i32.store8 offset=113
    local.get 4
    local.get 5
    i32.store8 offset=112
    local.get 4
    i64.const 0
    i64.store offset=88
    local.get 4
    i32.const 2
    i32.store8 offset=80
    local.get 4
    i32.const 48
    i32.add
    local.get 4
    i32.const 112
    i32.add
    local.get 4
    i32.const 80
    i32.add
    call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
    block ;; label = @1
      block ;; label = @2
        block ;; label = @3
          local.get 4
          i32.load8_u offset=48
          i32.const 255
          i32.ne
          br_if 0 (;@3;)
          local.get 0
          local.get 4
          i64.load offset=64
          i64.store offset=16
          local.get 0
          local.get 4
          i64.load offset=56
          i64.store offset=8
          local.get 0
          i64.const 1
          i64.store
          local.get 4
          i32.const 16
          i32.add
          call $"#func217 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
          local.get 2
          local.get 2
          i32.load
          i32.const -1
          i32.add
          local.tee 0
          i32.store
          local.get 0
          i32.eqz
          br_if 1 (;@2;)
          br 2 (;@1;)
        end
        local.get 4
        local.get 4
        i64.load offset=72
        i64.store offset=104
        local.get 4
        local.get 4
        i64.load offset=64
        i64.store offset=96
        local.get 4
        local.get 4
        i64.load offset=56
        i64.store offset=88
        local.get 4
        local.get 4
        i64.load offset=48
        i64.store offset=80
        local.get 4
        i32.const 112
        i32.add
        local.get 4
        i32.const 80
        i32.add
        call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::own
        block ;; label = @3
          block ;; label = @4
            local.get 4
            i32.load8_u offset=112
            i32.const 255
            i32.eq
            br_if 0 (;@4;)
            local.get 4
            local.get 4
            i64.load offset=120
            i64.store offset=40
            local.get 4
            local.get 4
            i64.load offset=112
            i64.store offset=32
            br 1 (;@3;)
          end
          local.get 4
          i32.const 256
          i32.store16 offset=32
        end
        local.get 4
        i32.const 80
        i32.add
        call $"#func693 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
        local.get 4
        i32.const 96
        i32.add
        call $"#func693 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
        local.get 4
        i32.const 80
        i32.add
        local.get 4
        i32.const 16
        i32.add
        local.get 4
        i32.const 32
        i32.add
        call $nanvm_lib::vm::any::relational::compare::<nanvm_lib::naive::Naive>
        local.get 4
        i32.load8_u offset=81
        local.set 1
        block ;; label = @3
          block ;; label = @4
            local.get 4
            i32.load8_u offset=80
            local.tee 3
            i32.const 255
            i32.eq
            br_if 0 (;@4;)
            local.get 0
            local.get 4
            i64.load offset=88 align=2
            i64.store offset=16 align=2
            local.get 0
            local.get 4
            i64.load offset=82 align=2
            i64.store offset=10 align=2
            i64.const 1
            local.set 6
            br 1 (;@3;)
          end
          i32.const 1
          local.set 3
          local.get 1
          i32.const 255
          i32.and
          i32.const 1
          i32.eq
          local.set 1
          i64.const 0
          local.set 6
        end
        local.get 0
        local.get 1
        i32.store8 offset=9
        local.get 0
        local.get 3
        i32.store8 offset=8
        local.get 0
        local.get 6
        i64.store
        local.get 2
        local.get 2
        i32.load
        i32.const -1
        i32.add
        local.tee 0
        i32.store
        local.get 0
        br_if 1 (;@1;)
      end
      local.get 4
      i32.const 8
      i32.add
      call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
    end
    local.get 4
    i32.const 128
    i32.add
    global.set $__stack_pointer
  )
  (func $"<nanvm_lib::vm::lambda::PropertyLambda<nanvm_lib::naive::Naive>>::end_call::<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#2}>" (;220;) (type 3) (param i32 i32 i32)
    (local i32 i32 i32 i64 i64 i32)
    global.get $__stack_pointer
    i32.const 192
    i32.sub
    local.tee 3
    global.set $__stack_pointer
    block ;; label = @1
      block ;; label = @2
        block ;; label = @3
          block ;; label = @4
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        local.get 1
                        i32.load8_u
                        local.tee 4
                        i32.const 255
                        i32.ne
                        br_if 0 (;@10;)
                        local.get 3
                        local.get 1
                        i64.load offset=16
                        i64.store offset=31 align=1
                        local.get 3
                        local.get 1
                        i64.load offset=8
                        i64.store offset=23 align=1
                        br 1 (;@9;)
                      end
                      local.get 3
                      local.get 1
                      i32.const 1
                      i32.add
                      local.tee 5
                      i64.load align=1
                      i64.store offset=16
                      local.get 3
                      local.get 5
                      i64.load offset=8 align=1
                      i64.store offset=24
                      local.get 3
                      local.get 5
                      i64.load offset=15 align=1
                      i64.store offset=31 align=1
                      local.get 4
                      i32.const 255
                      i32.and
                      i32.const 8
                      i32.lt_u
                      br_if 1 (;@8;)
                      local.get 4
                      i32.const 255
                      i32.and
                      i32.const 9
                      i32.ne
                      br_if 4 (;@5;)
                    end
                    local.get 3
                    local.get 3
                    i64.load offset=31 align=1
                    i64.store offset=104
                    local.get 3
                    local.get 3
                    i64.load offset=23 align=1
                    i64.store offset=96
                    br 1 (;@7;)
                  end
                  local.get 1
                  i64.load offset=24
                  local.set 6
                  local.get 3
                  local.get 4
                  i32.store8 offset=64
                  local.get 3
                  local.get 6
                  i64.store offset=88
                  local.get 3
                  local.get 5
                  i64.load align=1
                  i64.store offset=65 align=1
                  local.get 3
                  local.get 5
                  i64.load offset=8 align=1
                  i64.store offset=73 align=1
                  local.get 3
                  local.get 5
                  i64.load offset=15 align=1
                  i64.store offset=80 align=1
                  local.get 3
                  i32.const 96
                  i32.add
                  local.get 3
                  i32.const 64
                  i32.add
                  local.get 2
                  call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::is_nullish
                  block ;; label = @8
                    block ;; label = @9
                      local.get 3
                      i32.load8_u offset=96
                      local.tee 1
                      i32.const 255
                      i32.eq
                      br_if 0 (;@9;)
                      local.get 3
                      local.get 3
                      i32.load8_u offset=99
                      i32.store8 offset=51
                      local.get 3
                      local.get 3
                      i32.load16_u offset=97 align=1
                      i32.store16 offset=49 align=1
                      local.get 3
                      i64.load offset=100 align=4
                      local.set 7
                      local.get 3
                      i32.load offset=108
                      local.set 8
                      local.get 3
                      local.get 4
                      i32.store8 offset=96
                      local.get 3
                      local.get 2
                      i32.store offset=128
                      local.get 3
                      local.get 6
                      i64.store offset=120
                      local.get 3
                      local.get 5
                      i64.load align=1
                      i64.store offset=97 align=1
                      local.get 3
                      local.get 5
                      i64.load offset=8 align=1
                      i64.store offset=105 align=1
                      local.get 3
                      local.get 5
                      i64.load offset=15 align=1
                      i64.store offset=112 align=1
                      local.get 3
                      local.get 8
                      i32.store offset=60
                      local.get 3
                      local.get 7
                      i64.store offset=52 align=4
                      local.get 3
                      local.get 1
                      i32.store8 offset=48
                      local.get 3
                      i32.const 96
                      i32.add
                      call $"#func217 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                      local.get 3
                      i32.const 112
                      i32.add
                      call $"#func217 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                      br 1 (;@8;)
                    end
                    local.get 3
                    i32.const 0
                    i32.store16 offset=144
                    local.get 3
                    i32.const 1057633
                    i32.store offset=140
                    local.get 3
                    i32.const 1057632
                    i32.store offset=136
                    local.get 3
                    i32.const 96
                    i32.add
                    local.get 3
                    i32.const 136
                    i32.add
                    call $"core::iter::adapters::try_process::<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, u16, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>, <core::result::Result<alloc::rc::Rc<[u16]>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as core::iter::traits::collect::FromIterator<core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>>::from_iter<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>>::{closure#0}, alloc::rc::Rc<[u16]>>"
                    local.get 3
                    i32.load8_u offset=96
                    local.tee 1
                    i32.const 255
                    i32.ne
                    br_if 6 (;@2;)
                    local.get 3
                    i64.load offset=100 align=4
                    local.set 7
                    local.get 3
                    i32.const 0
                    i32.store8 offset=136
                    local.get 3
                    local.get 7
                    i64.store offset=108 align=4
                    local.get 3
                    i32.const 3
                    i32.store8 offset=104
                    local.get 3
                    i64.const 4294967296
                    i64.store offset=96
                    local.get 3
                    local.get 3
                    i32.const 136
                    i32.add
                    i32.store offset=120
                    local.get 3
                    i32.const 8
                    i32.add
                    local.get 3
                    i32.const 96
                    i32.add
                    call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 1>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
                    local.get 3
                    local.get 3
                    i32.load offset=12
                    local.tee 8
                    i32.store offset=156
                    local.get 3
                    local.get 3
                    i32.load offset=8
                    local.tee 1
                    i32.store offset=152
                    block ;; label = @9
                      local.get 3
                      i32.load8_u offset=136
                      i32.const 1
                      i32.ne
                      br_if 0 (;@9;)
                      local.get 1
                      local.get 1
                      i32.load
                      i32.const -1
                      i32.add
                      local.tee 0
                      i32.store
                      local.get 0
                      br_if 8 (;@1;)
                      local.get 3
                      i32.const 152
                      i32.add
                      call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                      br 8 (;@1;)
                    end
                    local.get 1
                    i32.eqz
                    br_if 7 (;@1;)
                    local.get 3
                    local.get 8
                    i32.store offset=144
                    local.get 3
                    local.get 1
                    i32.store offset=140
                    local.get 3
                    i32.const 6
                    i32.store8 offset=136
                    local.get 3
                    local.get 4
                    i32.store8 offset=152
                    local.get 3
                    local.get 6
                    i64.store offset=176
                    local.get 3
                    local.get 5
                    i64.load align=1
                    i64.store offset=153 align=1
                    local.get 3
                    local.get 5
                    i64.load offset=8 align=1
                    i64.store offset=161 align=1
                    local.get 3
                    local.get 5
                    i64.load offset=15 align=1
                    i64.store offset=168 align=1
                    local.get 3
                    i32.const 40
                    i32.add
                    local.get 3
                    i32.const 152
                    i32.add
                    local.get 2
                    local.get 3
                    i32.const 136
                    i32.add
                    call $"<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive> as nanvm_lib::vm::lambda::Live<nanvm_lib::naive::Naive>>::call"
                    local.get 3
                    i32.load offset=40
                    i32.eqz
                    br_if 2 (;@6;)
                  end
                  local.get 3
                  local.get 3
                  i64.load offset=56
                  i64.store offset=104
                  local.get 3
                  local.get 3
                  i64.load offset=48
                  i64.store offset=96
                end
                local.get 0
                local.get 3
                i64.load offset=104
                i64.store offset=16
                local.get 0
                local.get 3
                i64.load offset=96
                i64.store offset=8
                i64.const 1
                local.set 6
                br 3 (;@3;)
              end
              local.get 3
              local.get 3
              i64.load offset=56
              local.tee 6
              i64.store offset=104
              local.get 3
              local.get 3
              i64.load offset=48
              local.tee 7
              i64.store offset=96
              local.get 0
              local.get 6
              i64.store offset=16
              local.get 0
              local.get 7
              i64.store offset=8
              br 1 (;@4;)
            end
            local.get 0
            i32.const 256
            i32.store16 offset=8
          end
          i64.const 0
          local.set 6
        end
        local.get 0
        local.get 6
        i64.store
        local.get 3
        i32.const 192
        i32.add
        global.set $__stack_pointer
        return
      end
      local.get 3
      local.get 3
      i32.load8_u offset=99
      i32.store8 offset=155
      local.get 3
      local.get 3
      i32.load16_u offset=97 align=1
      i32.store16 offset=153 align=1
      local.get 3
      local.get 3
      i32.load offset=108
      i32.store offset=164
      local.get 3
      local.get 3
      i64.load offset=100 align=4
      i64.store offset=156 align=4
      local.get 3
      local.get 1
      i32.store8 offset=152
      i32.const 1057960
      i32.const 43
      local.get 3
      i32.const 152
      i32.add
      i32.const 1057944
      i32.const 1058004
      call $core::result::unwrap_failed
      unreachable
    end
    i32.const 1064316
    i32.const 43
    local.get 3
    i32.const 191
    i32.add
    i32.const 1064300
    i32.const 1064360
    call $core::result::unwrap_failed
    unreachable
  )
  (func $"<nanvm_lib::vm::lambda::PropertyLambda<nanvm_lib::naive::Naive>>::end_call::<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#1}>" (;221;) (type 4) (param i32 i32 i32 i32)
    (local i32 i32 i32 i64 i64)
    global.get $__stack_pointer
    i32.const 192
    i32.sub
    local.tee 4
    global.set $__stack_pointer
    block ;; label = @1
      block ;; label = @2
        block ;; label = @3
          block ;; label = @4
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            local.get 1
                            i32.load8_u
                            local.tee 5
                            i32.const 255
                            i32.ne
                            br_if 0 (;@12;)
                            local.get 4
                            local.get 1
                            i64.load offset=16
                            i64.store offset=31 align=1
                            local.get 4
                            local.get 1
                            i64.load offset=8
                            i64.store offset=23 align=1
                            br 1 (;@11;)
                          end
                          local.get 4
                          local.get 1
                          i32.const 1
                          i32.add
                          local.tee 6
                          i64.load align=1
                          i64.store offset=16
                          local.get 4
                          local.get 6
                          i64.load offset=8 align=1
                          i64.store offset=24
                          local.get 4
                          local.get 6
                          i64.load offset=15 align=1
                          i64.store offset=31 align=1
                          local.get 5
                          i32.const 255
                          i32.and
                          i32.const 8
                          i32.lt_u
                          br_if 1 (;@10;)
                          local.get 5
                          i32.const 255
                          i32.and
                          i32.const 9
                          i32.ne
                          br_if 2 (;@9;)
                        end
                        local.get 4
                        local.get 4
                        i64.load offset=31 align=1
                        i64.store offset=104
                        local.get 4
                        local.get 4
                        i64.load offset=23 align=1
                        i64.store offset=96
                        br 6 (;@4;)
                      end
                      local.get 3
                      i32.load
                      local.set 3
                      local.get 1
                      i64.load offset=24
                      local.set 7
                      local.get 4
                      local.get 5
                      i32.store8 offset=64
                      local.get 4
                      local.get 7
                      i64.store offset=88
                      local.get 4
                      local.get 6
                      i64.load align=1
                      i64.store offset=65 align=1
                      local.get 4
                      local.get 6
                      i64.load offset=8 align=1
                      i64.store offset=73 align=1
                      local.get 4
                      local.get 6
                      i64.load offset=15 align=1
                      i64.store offset=80 align=1
                      local.get 4
                      i32.const 96
                      i32.add
                      local.get 4
                      i32.const 64
                      i32.add
                      local.get 2
                      call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::is_nullish
                      block ;; label = @10
                        block ;; label = @11
                          local.get 4
                          i32.load8_u offset=96
                          local.tee 1
                          i32.const 255
                          i32.ne
                          br_if 0 (;@11;)
                          local.get 3
                          i32.load offset=16
                          i32.eqz
                          br_if 1 (;@10;)
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        block ;; label = @19
                                          local.get 3
                                          i32.load offset=12
                                          local.tee 1
                                          i32.load8_u offset=8
                                          local.tee 5
                                          br_table 6 (;@13;) 6 (;@13;) 0 (;@19;) 1 (;@18;) 2 (;@17;) 3 (;@16;) 4 (;@15;) 5 (;@14;) 6 (;@13;)
                                        end
                                        local.get 1
                                        i64.load offset=16
                                        local.set 7
                                        br 12 (;@6;)
                                      end
                                      local.get 1
                                      i32.load offset=12
                                      local.tee 6
                                      local.get 6
                                      i32.load
                                      i32.const 1
                                      i32.add
                                      local.tee 3
                                      i32.store
                                      local.get 3
                                      i32.eqz
                                      br_if 9 (;@8;)
                                      br 10 (;@7;)
                                    end
                                    local.get 1
                                    i32.load offset=12
                                    local.tee 6
                                    local.get 6
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 3
                                    i32.store
                                    local.get 3
                                    i32.eqz
                                    br_if 8 (;@8;)
                                    local.get 1
                                    i64.load8_u offset=20
                                    i64.const 32
                                    i64.shl
                                    local.get 1
                                    i64.load32_u offset=16
                                    i64.or
                                    local.set 7
                                    br 10 (;@6;)
                                  end
                                  local.get 1
                                  i32.load offset=12
                                  local.tee 6
                                  local.get 6
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 3
                                  i32.store
                                  local.get 3
                                  br_if 8 (;@7;)
                                  br 7 (;@8;)
                                end
                                local.get 1
                                i32.load offset=12
                                local.tee 6
                                local.get 6
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 3
                                i32.store
                                local.get 3
                                br_if 7 (;@7;)
                                br 6 (;@8;)
                              end
                              local.get 1
                              i32.load offset=12
                              local.tee 6
                              local.get 6
                              i32.load
                              i32.const 1
                              i32.add
                              local.tee 1
                              i32.store
                              local.get 1
                              i32.eqz
                              br_if 5 (;@8;)
                              br 1 (;@12;)
                            end
                            local.get 1
                            i32.load8_u offset=9
                            local.set 1
                          end
                          br 5 (;@6;)
                        end
                        local.get 4
                        local.get 4
                        i32.load8_u offset=99
                        i32.store8 offset=51
                        local.get 4
                        local.get 4
                        i32.load16_u offset=97 align=1
                        i32.store16 offset=49 align=1
                        local.get 4
                        i64.load offset=100 align=4
                        local.set 8
                        local.get 4
                        i32.load offset=108
                        local.set 3
                        local.get 4
                        local.get 5
                        i32.store8 offset=96
                        local.get 4
                        local.get 2
                        i32.store offset=128
                        local.get 4
                        local.get 7
                        i64.store offset=120
                        local.get 4
                        local.get 6
                        i64.load align=1
                        i64.store offset=97 align=1
                        local.get 4
                        local.get 6
                        i64.load offset=8 align=1
                        i64.store offset=105 align=1
                        local.get 4
                        local.get 6
                        i64.load offset=15 align=1
                        i64.store offset=112 align=1
                        local.get 4
                        local.get 3
                        i32.store offset=60
                        local.get 4
                        local.get 8
                        i64.store offset=52 align=4
                        local.get 4
                        local.get 1
                        i32.store8 offset=48
                        local.get 4
                        i32.const 96
                        i32.add
                        call $"#func217 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                        local.get 4
                        i32.const 112
                        i32.add
                        call $"#func217 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                        br 5 (;@5;)
                      end
                      i32.const 0
                      i32.const 0
                      i32.const 1069140
                      call $core::panicking::panic_bounds_check
                      unreachable
                    end
                    local.get 0
                    i32.const 256
                    i32.store16 offset=8
                    i64.const 0
                    local.set 7
                    br 5 (;@3;)
                  end
                  unreachable
                end
                local.get 1
                i64.load32_u offset=16
                local.set 7
              end
              local.get 4
              i32.const 0
              i32.store8 offset=136
              local.get 4
              local.get 7
              i64.store offset=112
              local.get 4
              local.get 6
              i32.store offset=108
              local.get 4
              local.get 1
              i32.store8 offset=105
              local.get 4
              local.get 5
              i32.store8 offset=104
              local.get 4
              i64.const 4294967296
              i64.store offset=96
              local.get 4
              local.get 4
              i32.const 136
              i32.add
              i32.store offset=120
              local.get 4
              i32.const 8
              i32.add
              local.get 4
              i32.const 96
              i32.add
              call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 1>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
              local.get 4
              local.get 4
              i32.load offset=12
              local.tee 6
              i32.store offset=156
              local.get 4
              local.get 4
              i32.load offset=8
              local.tee 1
              i32.store offset=152
              block ;; label = @6
                local.get 4
                i32.load8_u offset=136
                i32.const 1
                i32.ne
                br_if 0 (;@6;)
                local.get 1
                local.get 1
                i32.load
                i32.const -1
                i32.add
                local.tee 0
                i32.store
                local.get 0
                br_if 5 (;@1;)
                local.get 4
                i32.const 152
                i32.add
                call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                br 5 (;@1;)
              end
              local.get 1
              i32.eqz
              br_if 4 (;@1;)
              i32.const 34
              i32.const 1
              local.get 1
              local.get 6
              i32.const 1057633
              i32.const 11
              call $"<nanvm_lib::naive::Naive as nanvm_lib::vm::internal::IVm>::static_function"
              local.set 1
              local.get 4
              i32.const 0
              i32.store8 offset=136
              local.get 4
              local.get 1
              i32.store offset=108
              local.get 4
              i32.const 7
              i32.store8 offset=104
              local.get 4
              i64.const 4294967296
              i64.store offset=96
              local.get 4
              local.get 4
              i32.const 136
              i32.add
              i32.store offset=120
              local.get 4
              local.get 4
              i32.const 96
              i32.add
              call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 1>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
              local.get 4
              local.get 4
              i32.load offset=4
              local.tee 6
              i32.store offset=156
              local.get 4
              local.get 4
              i32.load
              local.tee 1
              i32.store offset=152
              block ;; label = @6
                local.get 4
                i32.load8_u offset=136
                i32.const 1
                i32.ne
                br_if 0 (;@6;)
                local.get 1
                local.get 1
                i32.load
                i32.const -1
                i32.add
                local.tee 0
                i32.store
                local.get 0
                br_if 4 (;@2;)
                local.get 4
                i32.const 152
                i32.add
                call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                br 4 (;@2;)
              end
              local.get 1
              i32.eqz
              br_if 3 (;@2;)
              local.get 4
              local.get 6
              i32.store offset=144
              local.get 4
              local.get 1
              i32.store offset=140
              local.get 4
              i32.const 6
              i32.store8 offset=136
              local.get 4
              local.get 4
              i64.load offset=88
              i64.store offset=176
              local.get 4
              local.get 4
              i64.load offset=80
              i64.store offset=168
              local.get 4
              local.get 4
              i64.load offset=72
              i64.store offset=160
              local.get 4
              local.get 4
              i64.load offset=64
              i64.store offset=152
              local.get 4
              i32.const 40
              i32.add
              local.get 4
              i32.const 152
              i32.add
              local.get 2
              local.get 4
              i32.const 136
              i32.add
              call $"<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive> as nanvm_lib::vm::lambda::Live<nanvm_lib::naive::Naive>>::call"
              local.get 4
              i32.load offset=40
              br_if 0 (;@5;)
              local.get 4
              local.get 4
              i64.load offset=56
              local.tee 7
              i64.store offset=104
              local.get 4
              local.get 4
              i64.load offset=48
              local.tee 8
              i64.store offset=96
              local.get 0
              local.get 7
              i64.store offset=16
              local.get 0
              local.get 8
              i64.store offset=8
              i64.const 0
              local.set 7
              br 2 (;@3;)
            end
            local.get 4
            local.get 4
            i64.load offset=56
            i64.store offset=104
            local.get 4
            local.get 4
            i64.load offset=48
            i64.store offset=96
          end
          local.get 0
          local.get 4
          i64.load offset=104
          i64.store offset=16
          local.get 0
          local.get 4
          i64.load offset=96
          i64.store offset=8
          i64.const 1
          local.set 7
        end
        local.get 0
        local.get 7
        i64.store
        local.get 4
        i32.const 192
        i32.add
        global.set $__stack_pointer
        return
      end
      i32.const 1064316
      i32.const 43
      local.get 4
      i32.const 191
      i32.add
      i32.const 1064300
      i32.const 1064360
      call $core::result::unwrap_failed
      unreachable
    end
    i32.const 1064316
    i32.const 43
    local.get 4
    i32.const 191
    i32.add
    i32.const 1064300
    i32.const 1064360
    call $core::result::unwrap_failed
    unreachable
  )
  (func $"<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#1}::{closure#0} as core::ops::function::FnOnce<(&nanvm_lib::naive::function::Function, nanvm_lib::vm::array::Array<nanvm_lib::naive::Naive>)>>::call_once" (;222;) (type 4) (param i32 i32 i32 i32)
    (local i32)
    global.get $__stack_pointer
    i32.const 48
    i32.sub
    local.tee 4
    global.set $__stack_pointer
    local.get 4
    local.get 3
    i32.store offset=12
    local.get 4
    local.get 2
    i32.store offset=8
    local.get 4
    i32.const 32
    i32.add
    local.get 4
    i32.const 8
    i32.add
    i32.const 0
    call $<nanvm_lib::vm::array::Array<nanvm_lib::naive::Naive>>::present
    block ;; label = @1
      block ;; label = @2
        local.get 4
        i32.load8_u offset=32
        i32.const 255
        i32.eq
        br_if 0 (;@2;)
        local.get 4
        local.get 4
        i64.load offset=40
        i64.store offset=24
        local.get 4
        local.get 4
        i64.load offset=32
        i64.store offset=16
        br 1 (;@1;)
      end
      local.get 4
      i32.const 256
      i32.store16 offset=16
    end
    local.get 4
    i64.const 4621819117588971520
    i64.store offset=40
    local.get 4
    i32.const 2
    i32.store8 offset=32
    local.get 0
    local.get 4
    i32.const 16
    i32.add
    local.get 4
    i32.const 32
    i32.add
    call $"<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::numeric_op::<<nanvm_lib::vm::numeric::Numeric<nanvm_lib::naive::Naive> as core::ops::arith::Mul>::mul>"
    local.get 2
    local.get 2
    i32.load
    i32.const -1
    i32.add
    local.tee 3
    i32.store
    block ;; label = @1
      local.get 3
      br_if 0 (;@1;)
      local.get 4
      i32.const 8
      i32.add
      call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
    end
    local.get 4
    i32.const 48
    i32.add
    global.set $__stack_pointer
  )
  (func $nanvm_demos::samples::member_functions::module::<nanvm_lib::naive::Naive> (;418;) (type 1) (param i32 i32)
    (local i32 i32 i32 i32 i32 i64 i32)
    global.get $__stack_pointer
    i32.const 96
    i32.sub
    local.tee 2
    global.set $__stack_pointer
    local.get 2
    i32.const 0
    i32.store16 offset=28
    local.get 2
    i32.const 1061143
    i32.store offset=24
    local.get 2
    i32.const 1061136
    i32.store offset=20
    local.get 2
    i32.const 48
    i32.add
    local.get 2
    i32.const 20
    i32.add
    call $"core::iter::adapters::try_process::<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, u16, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>, <core::result::Result<alloc::rc::Rc<[u16]>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as core::iter::traits::collect::FromIterator<core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>>::from_iter<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>>::{closure#0}, alloc::rc::Rc<[u16]>>"
    block ;; label = @1
      block ;; label = @2
        block ;; label = @3
          block ;; label = @4
            local.get 2
            i32.load8_u offset=48
            local.tee 3
            i32.const 255
            i32.ne
            br_if 0 (;@4;)
            local.get 2
            i32.load offset=56
            local.set 4
            local.get 2
            i32.load offset=52
            local.set 5
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            local.get 1
                            i32.load8_u
                            local.tee 6
                            br_table 6 (;@6;) 6 (;@6;) 0 (;@12;) 1 (;@11;) 2 (;@10;) 3 (;@9;) 4 (;@8;) 5 (;@7;) 6 (;@6;)
                          end
                          local.get 1
                          i64.load offset=8
                          local.set 7
                          br 10 (;@1;)
                        end
                        local.get 1
                        i32.load offset=4
                        local.tee 3
                        local.get 3
                        i32.load
                        i32.const 1
                        i32.add
                        local.tee 8
                        i32.store
                        local.get 8
                        i32.eqz
                        br_if 7 (;@3;)
                        br 8 (;@2;)
                      end
                      local.get 1
                      i32.load offset=4
                      local.tee 3
                      local.get 3
                      i32.load
                      i32.const 1
                      i32.add
                      local.tee 8
                      i32.store
                      local.get 8
                      i32.eqz
                      br_if 6 (;@3;)
                      local.get 1
                      i64.load8_u offset=12
                      i64.const 32
                      i64.shl
                      local.get 1
                      i64.load32_u offset=8
                      i64.or
                      local.set 7
                      br 8 (;@1;)
                    end
                    local.get 1
                    i32.load offset=4
                    local.tee 3
                    local.get 3
                    i32.load
                    i32.const 1
                    i32.add
                    local.tee 8
                    i32.store
                    local.get 8
                    br_if 6 (;@2;)
                    br 5 (;@3;)
                  end
                  local.get 1
                  i32.load offset=4
                  local.tee 3
                  local.get 3
                  i32.load
                  i32.const 1
                  i32.add
                  local.tee 8
                  i32.store
                  local.get 8
                  br_if 5 (;@2;)
                  br 4 (;@3;)
                end
                local.get 1
                i32.load offset=4
                local.tee 3
                local.get 3
                i32.load
                i32.const 1
                i32.add
                local.tee 8
                i32.store
                local.get 8
                i32.eqz
                br_if 3 (;@3;)
                br 1 (;@5;)
              end
              local.get 1
              i32.load8_u offset=1
              local.set 8
            end
            br 3 (;@1;)
          end
          local.get 2
          local.get 2
          i32.load8_u offset=51
          i32.store8 offset=35
          local.get 2
          local.get 2
          i32.load16_u offset=49 align=1
          i32.store16 offset=33 align=1
          local.get 2
          local.get 2
          i32.load offset=60
          i32.store offset=44
          local.get 2
          local.get 2
          i64.load offset=52 align=4
          i64.store offset=36 align=4
          local.get 2
          local.get 3
          i32.store8 offset=32
          i32.const 1057960
          i32.const 43
          local.get 2
          i32.const 32
          i32.add
          i32.const 1057944
          i32.const 1058004
          call $core::result::unwrap_failed
          unreachable
        end
        unreachable
      end
      local.get 1
      i64.load32_u offset=8
      local.set 7
    end
    local.get 2
    i32.const 0
    i32.store8 offset=20
    local.get 2
    local.get 7
    i64.store offset=64
    local.get 2
    local.get 3
    i32.store offset=60
    local.get 2
    local.get 8
    i32.store8 offset=57
    local.get 2
    local.get 6
    i32.store8 offset=56
    local.get 2
    i64.const 4294967296
    i64.store offset=48
    local.get 2
    local.get 2
    i32.const 20
    i32.add
    i32.store offset=72
    local.get 2
    i32.const 8
    i32.add
    local.get 2
    i32.const 48
    i32.add
    call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 1>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
    local.get 2
    local.get 2
    i32.load offset=12
    local.tee 6
    i32.store offset=36
    local.get 2
    local.get 2
    i32.load offset=8
    local.tee 3
    i32.store offset=32
    block ;; label = @1
      block ;; label = @2
        local.get 2
        i32.load8_u offset=20
        i32.const 1
        i32.ne
        br_if 0 (;@2;)
        local.get 3
        local.get 3
        i32.load
        i32.const -1
        i32.add
        local.tee 0
        i32.store
        local.get 0
        br_if 1 (;@1;)
        local.get 2
        i32.const 32
        i32.add
        call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
        br 1 (;@1;)
      end
      local.get 3
      i32.eqz
      br_if 0 (;@1;)
      i32.const 81
      i32.const 0
      local.get 3
      local.get 6
      i32.const 1061143
      i32.const 68
      call $"<nanvm_lib::naive::Naive as nanvm_lib::vm::internal::IVm>::static_function"
      local.set 3
      local.get 2
      i32.const 0
      i32.store8 offset=20
      local.get 2
      local.get 3
      i32.store offset=68
      local.get 2
      i32.const 7
      i32.store8 offset=64
      local.get 2
      local.get 4
      i32.store offset=60
      local.get 2
      local.get 5
      i32.store offset=56
      local.get 2
      i64.const 4294967296
      i64.store offset=48
      local.get 2
      local.get 2
      i32.const 20
      i32.add
      i32.store offset=80
      local.get 2
      local.get 2
      i32.const 48
      i32.add
      call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>), 1>, core::result::Result<(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>), ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>)>>::to_rc_slice"
      local.get 2
      local.get 2
      i32.load offset=4
      local.tee 6
      i32.store offset=36
      local.get 2
      local.get 2
      i32.load
      local.tee 3
      i32.store offset=32
      block ;; label = @2
        block ;; label = @3
          local.get 2
          i32.load8_u offset=20
          i32.const 1
          i32.ne
          br_if 0 (;@3;)
          local.get 3
          local.get 3
          i32.load
          i32.const -1
          i32.add
          local.tee 0
          i32.store
          local.get 0
          br_if 1 (;@2;)
          local.get 2
          i32.const 32
          i32.add
          call $"<alloc::rc::Rc<[(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>)]>>::drop_slow"
          br 1 (;@2;)
        end
        local.get 3
        i32.eqz
        br_if 0 (;@2;)
        local.get 0
        local.get 6
        i32.store offset=16
        local.get 0
        local.get 3
        i32.store offset=12
        local.get 0
        i32.const 5
        i32.store8 offset=8
        local.get 0
        i64.const 0
        i64.store
        local.get 1
        call $"#func416 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
        local.get 2
        i32.const 96
        i32.add
        global.set $__stack_pointer
        return
      end
      i32.const 1064316
      i32.const 43
      local.get 2
      i32.const 95
      i32.add
      i32.const 1064300
      i32.const 1064360
      call $core::result::unwrap_failed
      unreachable
    end
    i32.const 1064316
    i32.const 43
    local.get 2
    i32.const 95
    i32.add
    i32.const 1064300
    i32.const 1064360
    call $core::result::unwrap_failed
    unreachable
  )
  (func $"<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0} as core::ops::function::FnOnce<(&nanvm_lib::naive::function::Function, nanvm_lib::vm::array::Array<nanvm_lib::naive::Naive>)>>::call_once" (;419;) (type 4) (param i32 i32 i32 i32)
    (local i32 i32)
    global.get $__stack_pointer
    i32.const 272
    i32.sub
    local.tee 4
    global.set $__stack_pointer
    local.get 4
    local.get 3
    i32.store offset=12
    local.get 4
    local.get 2
    i32.store offset=8
    local.get 2
    local.get 2
    i32.load
    i32.const 1
    i32.add
    local.tee 5
    i32.store
    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 5
                    i32.eqz
                    br_if 0 (;@8;)
                    local.get 4
                    local.get 3
                    i32.store offset=24
                    local.get 4
                    local.get 2
                    i32.store offset=20
                    local.get 4
                    i32.const 6
                    i32.store8 offset=16
                    local.get 4
                    i32.const 0
                    i32.store8 offset=144
                    local.get 4
                    i64.const 4616189618054758400
                    i64.store offset=224
                    local.get 4
                    i32.const 2
                    i32.store8 offset=216
                    local.get 4
                    i64.const 4613937818241073152
                    i64.store offset=208
                    local.get 4
                    i32.const 2
                    i32.store8 offset=200
                    local.get 4
                    i64.const 4611686018427387904
                    i64.store offset=192
                    local.get 4
                    i32.const 2
                    i32.store8 offset=184
                    local.get 4
                    i64.const 4607182418800017408
                    i64.store offset=176
                    local.get 4
                    i32.const 2
                    i32.store8 offset=168
                    local.get 4
                    i64.const 17179869184
                    i64.store offset=160
                    local.get 4
                    local.get 4
                    i32.const 144
                    i32.add
                    i32.store offset=232
                    local.get 4
                    local.get 4
                    i32.const 160
                    i32.add
                    call $"<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::array::iter::IntoIter<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, 4>, core::result::Result<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>, ()>::Ok>, core::result::Result<core::convert::Infallible, ()>> as alloc::rc::ToRcSlice<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>::to_rc_slice"
                    local.get 4
                    local.get 4
                    i32.load offset=4
                    local.tee 5
                    i32.store offset=244
                    local.get 4
                    local.get 4
                    i32.load
                    local.tee 3
                    i32.store offset=240
                    block ;; label = @9
                      local.get 4
                      i32.load8_u offset=144
                      i32.const 1
                      i32.ne
                      br_if 0 (;@9;)
                      local.get 3
                      local.get 3
                      i32.load
                      i32.const -1
                      i32.add
                      local.tee 2
                      i32.store
                      local.get 2
                      br_if 8 (;@1;)
                      local.get 4
                      i32.const 240
                      i32.add
                      call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                      br 8 (;@1;)
                    end
                    local.get 3
                    i32.eqz
                    br_if 7 (;@1;)
                    local.get 4
                    local.get 5
                    i32.store offset=152
                    local.get 4
                    local.get 3
                    i32.store offset=148
                    local.get 4
                    i32.const 6
                    i32.store8 offset=144
                    local.get 4
                    i32.const 0
                    i32.store16 offset=264
                    local.get 4
                    i32.const 1063185
                    i32.store offset=260
                    local.get 4
                    i32.const 1063179
                    i32.store offset=256
                    local.get 4
                    i32.const 160
                    i32.add
                    local.get 4
                    i32.const 256
                    i32.add
                    call $"core::iter::adapters::try_process::<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, u16, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>, <core::result::Result<alloc::rc::Rc<[u16]>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as core::iter::traits::collect::FromIterator<core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>>::from_iter<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>>::{closure#0}, alloc::rc::Rc<[u16]>>"
                    local.get 4
                    i32.load8_u offset=160
                    local.tee 3
                    i32.const 255
                    i32.ne
                    br_if 1 (;@7;)
                    local.get 4
                    local.get 4
                    i64.load offset=164 align=4
                    i64.store offset=244 align=4
                    local.get 4
                    i32.const 3
                    i32.store8 offset=240
                    local.get 4
                    i32.const 160
                    i32.add
                    local.get 4
                    i32.const 144
                    i32.add
                    local.get 4
                    i32.const 240
                    i32.add
                    call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
                    local.get 1
                    i32.load
                    local.tee 3
                    i32.load offset=16
                    i32.eqz
                    br_if 2 (;@6;)
                    local.get 4
                    i32.const 120
                    i32.add
                    i32.const 8
                    i32.add
                    local.set 5
                    local.get 4
                    i32.const 120
                    i32.add
                    local.get 4
                    i32.const 160
                    i32.add
                    local.get 3
                    i32.load offset=12
                    i32.const 8
                    i32.add
                    local.get 4
                    i32.const 16
                    i32.add
                    local.get 1
                    call $"<nanvm_lib::vm::lambda::PropertyLambda<nanvm_lib::naive::Naive>>::end_call::<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#0}>"
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              local.get 4
                              i64.load offset=120
                              i64.const 1
                              i64.ne
                              br_if 0 (;@13;)
                              local.get 0
                              i64.const 1
                              i64.store
                              local.get 0
                              local.get 5
                              i64.load offset=8
                              i64.store offset=16
                              local.get 0
                              local.get 5
                              i64.load
                              i64.store offset=8
                              br 1 (;@12;)
                            end
                            local.get 4
                            local.get 5
                            i64.load offset=8
                            i64.store offset=152
                            local.get 4
                            local.get 5
                            i64.load
                            i64.store offset=144
                            local.get 4
                            i32.const 0
                            i32.store16 offset=264
                            local.get 4
                            i32.const 1063188
                            i32.store offset=260
                            local.get 4
                            i32.const 1063185
                            i32.store offset=256
                            local.get 4
                            i32.const 160
                            i32.add
                            local.get 4
                            i32.const 256
                            i32.add
                            call $"core::iter::adapters::try_process::<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, u16, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>, <core::result::Result<alloc::rc::Rc<[u16]>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as core::iter::traits::collect::FromIterator<core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>>::from_iter<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>>::{closure#0}, alloc::rc::Rc<[u16]>>"
                            local.get 4
                            i32.load8_u offset=160
                            local.tee 5
                            i32.const 255
                            i32.ne
                            br_if 7 (;@5;)
                            local.get 4
                            local.get 4
                            i64.load offset=164 align=4
                            i64.store offset=244 align=4
                            local.get 4
                            i32.const 3
                            i32.store8 offset=240
                            local.get 4
                            i32.const 88
                            i32.add
                            local.get 4
                            i32.const 144
                            i32.add
                            local.get 4
                            i32.const 240
                            i32.add
                            call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
                            local.get 3
                            i32.load offset=16
                            i32.eqz
                            br_if 8 (;@4;)
                            local.get 4
                            i32.const 64
                            i32.add
                            i32.const 8
                            i32.add
                            local.set 5
                            local.get 4
                            i32.const 64
                            i32.add
                            local.get 4
                            i32.const 88
                            i32.add
                            local.get 3
                            i32.load offset=12
                            i32.const 8
                            i32.add
                            local.get 1
                            call $"<nanvm_lib::vm::lambda::PropertyLambda<nanvm_lib::naive::Naive>>::end_call::<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#1}>"
                            local.get 4
                            i64.load offset=64
                            i64.const 1
                            i64.ne
                            br_if 1 (;@11;)
                            local.get 0
                            i64.const 1
                            i64.store
                            local.get 0
                            local.get 5
                            i64.load offset=8
                            i64.store offset=16
                            local.get 0
                            local.get 5
                            i64.load
                            i64.store offset=8
                          end
                          local.get 4
                          i32.const 16
                          i32.add
                          call $"#func416 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
                          local.get 2
                          local.get 2
                          i32.load
                          i32.const -1
                          i32.add
                          local.tee 1
                          i32.store
                          local.get 1
                          i32.eqz
                          br_if 1 (;@10;)
                          br 2 (;@9;)
                        end
                        local.get 4
                        local.get 5
                        i64.load offset=8
                        i64.store offset=248
                        local.get 4
                        local.get 5
                        i64.load
                        i64.store offset=240
                        local.get 4
                        i32.const 0
                        i32.store16 offset=264
                        local.get 4
                        i32.const 1063192
                        i32.store offset=260
                        local.get 4
                        i32.const 1063188
                        i32.store offset=256
                        local.get 4
                        i32.const 160
                        i32.add
                        local.get 4
                        i32.const 256
                        i32.add
                        call $"core::iter::adapters::try_process::<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>, u16, core::result::Result<core::convert::Infallible, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>, <core::result::Result<alloc::rc::Rc<[u16]>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as core::iter::traits::collect::FromIterator<core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>>>::from_iter<core::iter::adapters::map::Map<core::str::iter::EncodeUtf16, core::result::Result<u16, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::Ok>>::{closure#0}, alloc::rc::Rc<[u16]>>"
                        local.get 4
                        i32.load8_u offset=160
                        local.tee 1
                        i32.const 255
                        i32.ne
                        br_if 7 (;@3;)
                        local.get 4
                        local.get 4
                        i64.load offset=164 align=4
                        i64.store offset=92 align=4
                        local.get 4
                        i32.const 3
                        i32.store8 offset=88
                        local.get 4
                        i32.const 32
                        i32.add
                        local.get 4
                        i32.const 240
                        i32.add
                        local.get 4
                        i32.const 88
                        i32.add
                        call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
                        local.get 3
                        i32.load offset=16
                        i32.eqz
                        br_if 8 (;@2;)
                        local.get 0
                        local.get 4
                        i32.const 32
                        i32.add
                        local.get 3
                        i32.load offset=12
                        i32.const 8
                        i32.add
                        call $"<nanvm_lib::vm::lambda::PropertyLambda<nanvm_lib::naive::Naive>>::end_call::<nanvm_demos::samples::member_functions::module<nanvm_lib::naive::Naive>::{closure#0}::{closure#2}>"
                        local.get 4
                        i32.const 16
                        i32.add
                        call $"#func416 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
                        local.get 2
                        local.get 2
                        i32.load
                        i32.const -1
                        i32.add
                        local.tee 1
                        i32.store
                        local.get 1
                        br_if 1 (;@9;)
                      end
                      local.get 4
                      i32.const 8
                      i32.add
                      call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                    end
                    local.get 4
                    i32.const 272
                    i32.add
                    global.set $__stack_pointer
                    return
                  end
                  unreachable
                end
                local.get 4
                local.get 4
                i32.load8_u offset=163
                i32.store8 offset=243
                local.get 4
                local.get 4
                i32.load16_u offset=161 align=1
                i32.store16 offset=241 align=1
                local.get 4
                local.get 4
                i32.load offset=172
                i32.store offset=252
                local.get 4
                local.get 4
                i64.load offset=164 align=4
                i64.store offset=244 align=4
                local.get 4
                local.get 3
                i32.store8 offset=240
                i32.const 1057960
                i32.const 43
                local.get 4
                i32.const 240
                i32.add
                i32.const 1057944
                i32.const 1058004
                call $core::result::unwrap_failed
                unreachable
              end
              i32.const 0
              i32.const 0
              i32.const 1069140
              call $core::panicking::panic_bounds_check
              unreachable
            end
            local.get 4
            local.get 4
            i32.load8_u offset=163
            i32.store8 offset=243
            local.get 4
            local.get 4
            i32.load16_u offset=161 align=1
            i32.store16 offset=241 align=1
            local.get 4
            local.get 4
            i32.load offset=172
            i32.store offset=252
            local.get 4
            local.get 4
            i64.load offset=164 align=4
            i64.store offset=244 align=4
            local.get 4
            local.get 5
            i32.store8 offset=240
            i32.const 1057960
            i32.const 43
            local.get 4
            i32.const 240
            i32.add
            i32.const 1057944
            i32.const 1058004
            call $core::result::unwrap_failed
            unreachable
          end
          i32.const 0
          i32.const 0
          i32.const 1069140
          call $core::panicking::panic_bounds_check
          unreachable
        end
        local.get 4
        local.get 4
        i32.load8_u offset=163
        i32.store8 offset=91
        local.get 4
        local.get 4
        i32.load16_u offset=161 align=1
        i32.store16 offset=89 align=1
        local.get 4
        local.get 4
        i32.load offset=172
        i32.store offset=100
        local.get 4
        local.get 4
        i64.load offset=164 align=4
        i64.store offset=92 align=4
        local.get 4
        local.get 1
        i32.store8 offset=88
        i32.const 1057960
        i32.const 43
        local.get 4
        i32.const 88
        i32.add
        i32.const 1057944
        i32.const 1058004
        call $core::result::unwrap_failed
        unreachable
      end
      i32.const 0
      i32.const 0
      i32.const 1069140
      call $core::panicking::panic_bounds_check
      unreachable
    end
    i32.const 1064316
    i32.const 43
    local.get 4
    i32.const 271
    i32.add
    i32.const 1064300
    i32.const 1064360
    call $core::result::unwrap_failed
    unreachable
  )

Emergent Testing

Idle. Press Run to start the suite.

  • ./proof.f.mjs