Built-in Static Functions

Status: implemented

const { is, entries } = Object;
const { isInteger } = Number;
export default [Object.is(0, -0), is(NaN, NaN), [1, 1.5].map(isInteger), Number.isFinite("1"), entries({ b: 1, "0": 2 })];

The language admits eight static functions. Object.is is JavaScript's SameValue, which tells 0 from -0 and holds NaN equal to itself, where === says the opposite of both. Object.entries is JavaScript's too: a fresh array of fresh [key, value] pairs, one per enumerable own string-keyed property in JavaScript's own-key order — array-index keys ascending, then every other key in insertion order, so the example's last element is [["0", 2], ["b", 1]] — an array's elements and a string's UTF-16 code units under their index strings, nothing for a number, a boolean, a bigint or a function, and a failure on null and undefined. An entry holding undefined is listed, as JavaScript lists it (undefined-valued properties). Object.fromEntries is its inverse, JavaScript's over an array of entries: a fresh object with each element's [0] as a key, converted to a string, and its [1] as the value, in order, so a key written twice keeps its first position and its last value, and __proto__ is an own key like any other. An element that is not an object fails, as JavaScript's TypeError does, and so does an argument that is not an array: JavaScript also takes any iterable, which the language builds none of but the array. The four Number predicates are JavaScript's, none converting its argument: Number.isInteger, Number.isSafeInteger — an integer within 2^53 - 1 of 0 — Number.isNaN and Number.isFinite, so Number.isFinite("1") is false where the global isFinite("1"), which converts and is not admitted, is true. Each is a value, as in JavaScript — passed, compared, read as Object.is.length — and one function however often it is read, so Object.is === Object.is. A value is a function, not an operator, so a call of it takes any number of arguments, as in JavaScript — Number.isInteger(1, 2) is true (operators and functions). Both spellings of the read are that value, Object.is and Object["is"], and a call of it, guarded or not — Object.is?.(a, b) — is a call of that value. A guard on the namespace itself, Object?.is or Object?.["is"], is refused at the word (reserved word): a guard asks whether a value is nullish, and a namespace is no value, so the expression asks nothing. JavaScript, whose Object is never nullish, reads it as Object.is, and a missing global would throw before the guard was asked, so no module needs it. sergey-shandar decided the refusal in the LLM working session: "Object?.is doesn't make any sense." Destructuring is sugar (destructuring): const { is } = Object; is const is = Object.is;, and an object pattern over a namespace reads each of its keys as that access does, a nested pattern reading through the function as through any value — const { entries } = Object; too, the namespace admitting entries before the rule that refuses a prototype name, Array.prototype's, as a key. The sugar holds because no admitted static reads this: JavaScript runs const { is } = Object; is(a, b) with this undefined, and each admitted function answers alike detached and on its namespace, which the runtime's proof checks on every engine the suite runs on (fjs/js/static). A built-in that builds with this as its constructor — Promise.resolve, Uint8Array.from — throws detached, and is not admissible.

Object is a reserved word, under the same global-name rule as Number and String, reserved together with the member it admits. A module cannot bind it as a const, parameter or import, and it is no value: the word alone, const o = Object;, an array pattern over it, a member the namespace does not admit — Object.keys(o) — and a computed key, Object[k], are compilation errors (reserved word), a namespace being closed at compile time. It stands in one other place, the entry helper's Object.getOwnPropertyDescriptor. A key or a property name remains ordinary, { Object: 1 }.Object being 1. Number, reserved for its conversion already, is a namespace the same way, beside the call Number(x) (number conversion). Each later member is an admission of its own (built-ins).

Each read reaches the graph as the node of its name, ['Object.is'] or ['Number.isInteger'], and a call of it as the ordinary call, ['()', ['Object.is'], [a, b]] (fjs/edag). Each body is written once, in the statics table of fjs/js/runtime, a VM's and no module's — a module calls the built-in — and checked there against the host's own; every executor answers the node from it, and an executor with no binding for it fails, naming it, rather than answer. Object.entries alone has no body, since enumerating keys is what no body can do otherwise; the others, Object.fromEntries among them, have one: every executor binds it natively, and its text, String(Object.entries), is function entries() { [native code] }, the NativeFunction syntax ECMAScript requires of a built-in, there being no EDAG to render (function source). The graph outputs write the node back: the FunctionalScript one as its name, Object.is, the Rust one as the binding the VM answers — a body from the one runtime NaNVM holds, Object.entries as a built-in identified by its name, which nothing creates or holds — so every read there is one function too.

Examples

The compiler demo offers the programs staticFunctions in module.f.js, each with its real output.

The demo on this page runs sample.f.js, this page's example as a function of one number — the static functions as values: Object.is, the Number predicates and Object.entries — 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 1.5, as JavaScript and as WebAssembly, and shows what each call returned or threw.

const { is } = Object;
const { isInteger } = Number;
export default (...a) => [is(a[0], -0), isInteger(a[0]), Number.isFinite(1 / a[0]), Object.entries({ b: a[0], "0": 2 })];

Reference

String.fromCharCode(...codes) is a native static that constructs a string from the arguments converted to UTF-16 code units. It preserves lone surrogates and wraps values modulo 0x1_0000. An empty call returns ''. It reads no this, so const { fromCharCode } = String; fromCharCode(5, 6) works, and fromCharCode.length is 1 despite accepting any number of arguments. Other String statics remain prohibited.

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 1.5, 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 Static Functions) as a
 * function of one number, for the page's WASM demo: the static functions as
 * values: `Object.is`, the `Number` predicates and `Object.entries`.
 *
 * @module
 */

const { is } = Object;
const { isInteger } = Number;
/** @type {(...a: readonly number[]) => unknown} */
export default (...a) => [is(a[0], -0), isInteger(a[0]), Number.isFinite(1 / a[0]), Object.entries({ b: a[0], "0": 2 })];

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

=>lengthframe 0frame 1body0Object.isNumber.isInteger[][]0123()callee...frame 0[]()callee...frame 1[]()callee...Number.isFinite[]()callee...Object.entries[][]01.-0[]0[]0[]0.objidxrest0.objidxrest0/leftright1.{}b0.2.objidxrest0.objidxrest0

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

const $0=["rest"];export default ["{}",[[":","default",["=>",0,[["Object.is"],["Number.isInteger"]],["[]",[["()",["frame",0],[[".",$0,0],-0]],["()",["frame",1],[[".",$0,0]]],["()",["Number.isFinite"],[["/",1,[".",$0,0]]]],["()",["Object.entries"],[["{}",[[":","b",[".",$0,0]],[":","0",2]]]]]]]]]]];

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, static_read, 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>> {
    let _b0: Any<A> = (static_read(&runtime, "Object.is"))?;
    let _b1: Any<A> = (static_read(&runtime, "Number.isInteger"))?;
    Ok([(string_key("default"), A::static_function(|_self, _args| {
        let _b972: Any<A> = _args.rest(0).to_any();
        let _b9: Any<A> = (static_read(&A::frame(_self)[2], "Number.isFinite"))?;
        let _b13: Any<A> = (static_read(&A::frame(_self)[2], "Object.entries"))?;
        Ok([(Any::call(A::frame(_self)[0].clone(), [(Any::dot(_b972.clone(), f64_any(0x0000000000000000)).end())?, f64_any(0x8000000000000000)].to_array().to_any()))?, (Any::call(A::frame(_self)[1].clone(), [(Any::dot(_b972.clone(), f64_any(0x0000000000000000)).end())?].to_array().to_any()))?, (Any::call(_b9.clone(), [(f64_any(0x3ff0000000000000) / (Any::dot(_b972.clone(), f64_any(0x0000000000000000)).end())?)?].to_array().to_any()))?, (Any::call(_b13.clone(), [[(string_key("b"), (Any::dot(_b972.clone(), f64_any(0x0000000000000000)).end())?), (string_key("0"), f64_any(0x4000000000000000))].to_object().to_any()].to_array().to_any()))?].to_array().to_any())
    }, 0, [_b0.clone(), _b1.clone(), runtime.clone()].to_array(), Some("(...$2)=>{const $3=Number.isFinite;const $4=Object.entries;return [$0($2[0],-0),$1($2[0]),$3(1/$2[0]),$4({\"b\":$2[0],\"0\":2})];}")).to_any())].to_object().to_any())
}

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

  (func $nanvm_demos::samples::static_functions::module::<nanvm_lib::naive::Naive> (;157;) (type 1) (param i32 i32)
    (local i32 i32 i32 i32 i32 i64 i32 i32 i32 i64 i32 i32 i32 i64 i32)
    global.get $__stack_pointer
    i32.const 160
    i32.sub
    local.tee 2
    global.set $__stack_pointer
    local.get 2
    i32.const 88
    i32.add
    local.get 1
    i32.const 1053834
    i32.const 9
    call $nanvm_lib::vm::unstable::static_read::<nanvm_lib::naive::Naive>
    local.get 2
    local.get 2
    i64.load offset=96
    i64.store offset=72
    local.get 2
    local.get 2
    i64.load offset=104
    i64.store offset=80
    block ;; label = @1
      block ;; label = @2
        block ;; label = @3
          block ;; label = @4
            block ;; label = @5
              local.get 2
              i64.load offset=88
              i64.const 1
              i64.ne
              br_if 0 (;@5;)
              local.get 0
              local.get 2
              i64.load offset=80
              i64.store offset=16
              local.get 0
              local.get 2
              i64.load offset=72
              i64.store offset=8
              local.get 0
              i64.const 1
              i64.store
              br 1 (;@4;)
            end
            local.get 2
            local.get 2
            i64.load offset=80
            i64.store offset=32
            local.get 2
            local.get 2
            i64.load offset=72
            i64.store offset=24
            local.get 2
            i32.const 88
            i32.add
            local.get 1
            i32.const 1053843
            i32.const 16
            call $nanvm_lib::vm::unstable::static_read::<nanvm_lib::naive::Naive>
            local.get 2
            local.get 2
            i64.load offset=96
            i64.store offset=72
            local.get 2
            local.get 2
            i64.load offset=104
            i64.store offset=80
            block ;; label = @5
              local.get 2
              i64.load offset=88
              i64.const 1
              i64.ne
              br_if 0 (;@5;)
              local.get 0
              local.get 2
              i64.load offset=80
              i64.store offset=16
              local.get 0
              local.get 2
              i64.load offset=72
              i64.store offset=8
              local.get 0
              i64.const 1
              i64.store
              local.get 2
              i32.const 24
              i32.add
              call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
              br 1 (;@4;)
            end
            local.get 2
            local.get 2
            i64.load offset=80
            i64.store offset=48
            local.get 2
            local.get 2
            i64.load offset=72
            i64.store offset=40
            local.get 2
            i32.const 0
            i32.store16 offset=68
            local.get 2
            i32.const 1053797
            i32.store offset=64
            local.get 2
            i32.const 1053790
            i32.store offset=60
            local.get 2
            i32.const 88
            i32.add
            local.get 2
            i32.const 60
            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 = @5
              block ;; label = @6
                block ;; label = @7
                  local.get 2
                  i32.load8_u offset=88
                  local.tee 3
                  i32.const 255
                  i32.ne
                  br_if 0 (;@7;)
                  local.get 2
                  i32.load offset=96
                  local.set 4
                  local.get 2
                  i32.load offset=92
                  local.set 5
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  local.get 2
                                  i32.load8_u offset=24
                                  local.tee 6
                                  br_table 6 (;@9;) 6 (;@9;) 0 (;@15;) 1 (;@14;) 2 (;@13;) 3 (;@12;) 4 (;@11;) 5 (;@10;) 6 (;@9;)
                                end
                                local.get 2
                                i64.load offset=32
                                local.set 7
                                br 9 (;@5;)
                              end
                              local.get 2
                              i32.load offset=28
                              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 12 (;@1;)
                              br 7 (;@6;)
                            end
                            local.get 2
                            i32.load offset=28
                            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 11 (;@1;)
                            local.get 2
                            i64.load8_u offset=36
                            i64.const 32
                            i64.shl
                            local.get 2
                            i64.load32_u offset=32
                            i64.or
                            local.set 7
                            br 7 (;@5;)
                          end
                          local.get 2
                          i32.load offset=28
                          local.tee 3
                          local.get 3
                          i32.load
                          i32.const 1
                          i32.add
                          local.tee 8
                          i32.store
                          local.get 8
                          br_if 5 (;@6;)
                          br 10 (;@1;)
                        end
                        local.get 2
                        i32.load offset=28
                        local.tee 3
                        local.get 3
                        i32.load
                        i32.const 1
                        i32.add
                        local.tee 8
                        i32.store
                        local.get 8
                        br_if 4 (;@6;)
                        br 9 (;@1;)
                      end
                      local.get 2
                      i32.load offset=28
                      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 8 (;@1;)
                      br 1 (;@8;)
                    end
                    local.get 2
                    i32.load8_u offset=25
                    local.set 9
                  end
                  br 2 (;@5;)
                end
                local.get 2
                local.get 2
                i32.load8_u offset=91
                i32.store8 offset=75
                local.get 2
                local.get 2
                i32.load16_u offset=89 align=1
                i32.store16 offset=73 align=1
                local.get 2
                local.get 2
                i32.load offset=100
                i32.store offset=84
                local.get 2
                local.get 2
                i64.load offset=92 align=4
                i64.store offset=76 align=4
                local.get 2
                local.get 3
                i32.store8 offset=72
                i32.const 1065572
                i32.const 43
                local.get 2
                i32.const 72
                i32.add
                i32.const 1065556
                i32.const 1065616
                call $core::result::unwrap_failed
                unreachable
              end
              local.get 2
              i64.load32_u offset=32
              local.set 7
            end
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                local.get 2
                                i32.load8_u offset=40
                                local.tee 10
                                br_table 6 (;@8;) 6 (;@8;) 0 (;@14;) 1 (;@13;) 2 (;@12;) 3 (;@11;) 4 (;@10;) 5 (;@9;) 6 (;@8;)
                              end
                              local.get 2
                              i64.load offset=48
                              local.set 11
                              br 8 (;@5;)
                            end
                            local.get 2
                            i32.load offset=44
                            local.tee 8
                            local.get 8
                            i32.load
                            i32.const 1
                            i32.add
                            local.tee 12
                            i32.store
                            local.get 12
                            i32.eqz
                            br_if 11 (;@1;)
                            br 6 (;@6;)
                          end
                          local.get 2
                          i32.load offset=44
                          local.tee 8
                          local.get 8
                          i32.load
                          i32.const 1
                          i32.add
                          local.tee 12
                          i32.store
                          local.get 12
                          i32.eqz
                          br_if 10 (;@1;)
                          local.get 2
                          i64.load8_u offset=52
                          i64.const 32
                          i64.shl
                          local.get 2
                          i64.load32_u offset=48
                          i64.or
                          local.set 11
                          br 6 (;@5;)
                        end
                        local.get 2
                        i32.load offset=44
                        local.tee 8
                        local.get 8
                        i32.load
                        i32.const 1
                        i32.add
                        local.tee 12
                        i32.store
                        local.get 12
                        i32.eqz
                        br_if 9 (;@1;)
                        br 4 (;@6;)
                      end
                      local.get 2
                      i32.load offset=44
                      local.tee 8
                      local.get 8
                      i32.load
                      i32.const 1
                      i32.add
                      local.tee 12
                      i32.store
                      local.get 12
                      i32.eqz
                      br_if 8 (;@1;)
                      br 3 (;@6;)
                    end
                    local.get 2
                    i32.load offset=44
                    local.tee 8
                    local.get 8
                    i32.load
                    i32.const 1
                    i32.add
                    local.tee 12
                    i32.store
                    local.get 12
                    i32.eqz
                    br_if 7 (;@1;)
                    br 1 (;@7;)
                  end
                  local.get 2
                  i32.load8_u offset=41
                  local.set 13
                end
                br 1 (;@5;)
              end
              local.get 2
              i64.load32_u offset=48
              local.set 11
            end
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                local.get 1
                                i32.load8_u
                                local.tee 14
                                br_table 6 (;@8;) 6 (;@8;) 0 (;@14;) 1 (;@13;) 2 (;@12;) 3 (;@11;) 4 (;@10;) 5 (;@9;) 6 (;@8;)
                              end
                              local.get 1
                              i64.load offset=8
                              local.set 15
                              br 8 (;@5;)
                            end
                            local.get 1
                            i32.load offset=4
                            local.tee 12
                            local.get 12
                            i32.load
                            i32.const 1
                            i32.add
                            local.tee 16
                            i32.store
                            local.get 16
                            i32.eqz
                            br_if 11 (;@1;)
                            br 6 (;@6;)
                          end
                          local.get 1
                          i32.load offset=4
                          local.tee 12
                          local.get 12
                          i32.load
                          i32.const 1
                          i32.add
                          local.tee 16
                          i32.store
                          local.get 16
                          i32.eqz
                          br_if 10 (;@1;)
                          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 15
                          br 6 (;@5;)
                        end
                        local.get 1
                        i32.load offset=4
                        local.tee 12
                        local.get 12
                        i32.load
                        i32.const 1
                        i32.add
                        local.tee 16
                        i32.store
                        local.get 16
                        i32.eqz
                        br_if 9 (;@1;)
                        br 4 (;@6;)
                      end
                      local.get 1
                      i32.load offset=4
                      local.tee 12
                      local.get 12
                      i32.load
                      i32.const 1
                      i32.add
                      local.tee 16
                      i32.store
                      local.get 16
                      i32.eqz
                      br_if 8 (;@1;)
                      br 3 (;@6;)
                    end
                    local.get 1
                    i32.load offset=4
                    local.tee 12
                    local.get 12
                    i32.load
                    i32.const 1
                    i32.add
                    local.tee 16
                    i32.store
                    local.get 16
                    i32.eqz
                    br_if 7 (;@1;)
                    br 1 (;@7;)
                  end
                  local.get 1
                  i32.load8_u offset=1
                  local.set 16
                end
                br 1 (;@5;)
              end
              local.get 1
              i64.load32_u offset=8
              local.set 15
            end
            local.get 2
            i32.const 0
            i32.store8 offset=60
            local.get 2
            local.get 15
            i64.store offset=136
            local.get 2
            local.get 12
            i32.store offset=132
            local.get 2
            local.get 16
            i32.store8 offset=129
            local.get 2
            local.get 14
            i32.store8 offset=128
            local.get 2
            local.get 11
            i64.store offset=120
            local.get 2
            local.get 8
            i32.store offset=116
            local.get 2
            local.get 13
            i32.store8 offset=113
            local.get 2
            local.get 10
            i32.store8 offset=112
            local.get 2
            local.get 7
            i64.store offset=104
            local.get 2
            local.get 3
            i32.store offset=100
            local.get 2
            local.get 9
            i32.store8 offset=97
            local.get 2
            local.get 6
            i32.store8 offset=96
            local.get 2
            i64.const 12884901888
            i64.store offset=88
            local.get 2
            local.get 2
            i32.const 60
            i32.add
            i32.store offset=144
            local.get 2
            i32.const 16
            i32.add
            local.get 2
            i32.const 88
            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>, 3>, 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=20
            local.tee 8
            i32.store offset=76
            local.get 2
            local.get 2
            i32.load offset=16
            local.tee 3
            i32.store offset=72
            block ;; label = @5
              local.get 2
              i32.load8_u offset=60
              i32.const 1
              i32.ne
              br_if 0 (;@5;)
              local.get 3
              local.get 3
              i32.load
              i32.const -1
              i32.add
              local.tee 0
              i32.store
              local.get 0
              br_if 3 (;@2;)
              local.get 2
              i32.const 72
              i32.add
              call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
              br 3 (;@2;)
            end
            local.get 3
            i32.eqz
            br_if 2 (;@2;)
            i32.const 4
            i32.const 0
            local.get 3
            local.get 8
            i32.const 1053859
            i32.const 126
            call $<nanvm_lib::naive::function::Function>::new
            local.set 3
            local.get 2
            i32.const 0
            i32.store8 offset=60
            local.get 2
            local.get 3
            i32.store offset=108
            local.get 2
            i32.const 7
            i32.store8 offset=104
            local.get 2
            local.get 4
            i32.store offset=100
            local.get 2
            local.get 5
            i32.store offset=96
            local.get 2
            i64.const 4294967296
            i64.store offset=88
            local.get 2
            local.get 2
            i32.const 60
            i32.add
            i32.store offset=120
            local.get 2
            i32.const 8
            i32.add
            local.get 2
            i32.const 88
            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=12
            local.tee 8
            i32.store offset=76
            local.get 2
            local.get 2
            i32.load offset=8
            local.tee 3
            i32.store offset=72
            block ;; label = @5
              local.get 2
              i32.load8_u offset=60
              i32.const 1
              i32.ne
              br_if 0 (;@5;)
              local.get 3
              local.get 3
              i32.load
              i32.const -1
              i32.add
              local.tee 0
              i32.store
              local.get 0
              br_if 2 (;@3;)
              local.get 2
              i32.const 72
              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 2 (;@3;)
            end
            local.get 3
            i32.eqz
            br_if 1 (;@3;)
            local.get 0
            local.get 8
            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 2
            i32.const 40
            i32.add
            call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
            local.get 2
            i32.const 24
            i32.add
            call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
          end
          local.get 1
          call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
          local.get 2
          i32.const 160
          i32.add
          global.set $__stack_pointer
          return
        end
        i32.const 1057428
        i32.const 43
        local.get 2
        i32.const 159
        i32.add
        i32.const 1057412
        i32.const 1057472
        call $core::result::unwrap_failed
        unreachable
      end
      i32.const 1057428
      i32.const 43
      local.get 2
      i32.const 159
      i32.add
      i32.const 1057412
      i32.const 1057472
      call $core::result::unwrap_failed
      unreachable
    end
    unreachable
  )
  (func $"<nanvm_demos::samples::static_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" (;158;) (type 4) (param i32 i32 i32 i32)
    (local i32 i32 i32 i64 i32)
    global.get $__stack_pointer
    i32.const 640
    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=68
    local.get 4
    local.get 2
    i32.store offset=64
    local.get 2
    local.get 2
    i32.load
    i32.const 1
    i32.add
    local.tee 5
    i32.store
    block ;; label = @1
      local.get 5
      i32.eqz
      br_if 0 (;@1;)
      local.get 4
      local.get 3
      i32.store offset=80
      local.get 4
      local.get 2
      i32.store offset=76
      local.get 4
      i32.const 6
      i32.store8 offset=72
      block ;; label = @2
        block ;; label = @3
          block ;; label = @4
            block ;; label = @5
              block ;; label = @6
                block ;; label = @7
                  block ;; label = @8
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              local.get 1
                              i32.load offset=16
                              local.tee 3
                              i32.const 2
                              i32.le_u
                              br_if 0 (;@13;)
                              local.get 4
                              i32.const 120
                              i32.add
                              local.get 1
                              i32.load offset=12
                              i32.const 40
                              i32.add
                              i32.const 1055448
                              i32.const 15
                              call $nanvm_lib::vm::unstable::static_read::<nanvm_lib::naive::Naive>
                              local.get 4
                              local.get 4
                              i64.load offset=128
                              i64.store offset=584
                              local.get 4
                              local.get 4
                              i64.load offset=136
                              i64.store offset=592
                              block ;; label = @14
                                local.get 4
                                i64.load offset=120
                                i64.const 1
                                i64.ne
                                br_if 0 (;@14;)
                                local.get 0
                                local.get 4
                                i64.load offset=592
                                i64.store offset=16
                                local.get 0
                                local.get 4
                                i64.load offset=584
                                i64.store offset=8
                                local.get 0
                                i64.const 1
                                i64.store
                                br 7 (;@7;)
                              end
                              local.get 4
                              local.get 4
                              i64.load offset=592
                              i64.store offset=96
                              local.get 4
                              local.get 4
                              i64.load offset=584
                              i64.store offset=88
                              local.get 1
                              i32.load offset=16
                              local.tee 3
                              i32.const 2
                              i32.le_u
                              br_if 1 (;@12;)
                              local.get 4
                              i32.const 120
                              i32.add
                              local.get 1
                              i32.load offset=12
                              i32.const 40
                              i32.add
                              i32.const 1055463
                              i32.const 14
                              call $nanvm_lib::vm::unstable::static_read::<nanvm_lib::naive::Naive>
                              local.get 4
                              local.get 4
                              i64.load offset=128
                              i64.store offset=584
                              local.get 4
                              local.get 4
                              i64.load offset=136
                              i64.store offset=592
                              block ;; label = @14
                                local.get 4
                                i64.load offset=120
                                i64.const 1
                                i64.ne
                                br_if 0 (;@14;)
                                local.get 0
                                local.get 4
                                i64.load offset=592
                                i64.store offset=16
                                local.get 0
                                local.get 4
                                i64.load offset=584
                                i64.store offset=8
                                local.get 0
                                i64.const 1
                                i64.store
                                br 6 (;@8;)
                              end
                              local.get 4
                              local.get 4
                              i64.load offset=592
                              i64.store offset=112
                              local.get 4
                              local.get 4
                              i64.load offset=584
                              i64.store offset=104
                              local.get 1
                              i32.load offset=16
                              i32.eqz
                              br_if 2 (;@11;)
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        block ;; label = @19
                                          block ;; label = @20
                                            block ;; label = @21
                                              local.get 1
                                              i32.load offset=12
                                              local.tee 3
                                              i32.load8_u offset=8
                                              local.tee 6
                                              br_table 6 (;@15;) 6 (;@15;) 0 (;@21;) 1 (;@20;) 2 (;@19;) 3 (;@18;) 4 (;@17;) 5 (;@16;) 6 (;@15;)
                                            end
                                            local.get 3
                                            i64.load offset=16
                                            local.set 7
                                            br 11 (;@9;)
                                          end
                                          local.get 3
                                          i32.load offset=12
                                          local.tee 5
                                          local.get 5
                                          i32.load
                                          i32.const 1
                                          i32.add
                                          local.tee 8
                                          i32.store
                                          local.get 8
                                          i32.eqz
                                          br_if 18 (;@1;)
                                          br 9 (;@10;)
                                        end
                                        local.get 3
                                        i32.load offset=12
                                        local.tee 5
                                        local.get 5
                                        i32.load
                                        i32.const 1
                                        i32.add
                                        local.tee 8
                                        i32.store
                                        local.get 8
                                        i32.eqz
                                        br_if 17 (;@1;)
                                        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 7
                                        br 9 (;@9;)
                                      end
                                      local.get 3
                                      i32.load offset=12
                                      local.tee 5
                                      local.get 5
                                      i32.load
                                      i32.const 1
                                      i32.add
                                      local.tee 8
                                      i32.store
                                      local.get 8
                                      br_if 7 (;@10;)
                                      br 16 (;@1;)
                                    end
                                    local.get 3
                                    i32.load offset=12
                                    local.tee 5
                                    local.get 5
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 8
                                    i32.store
                                    local.get 8
                                    br_if 6 (;@10;)
                                    br 15 (;@1;)
                                  end
                                  local.get 3
                                  i32.load offset=12
                                  local.tee 5
                                  local.get 5
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 3
                                  i32.store
                                  local.get 3
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  br 1 (;@14;)
                                end
                                local.get 3
                                i32.load8_u offset=9
                                local.set 3
                              end
                              br 4 (;@9;)
                            end
                            i32.const 2
                            local.get 3
                            i32.const 1063408
                            call $core::panicking::panic_bounds_check
                            unreachable
                          end
                          i32.const 2
                          local.get 3
                          i32.const 1063408
                          call $core::panicking::panic_bounds_check
                          unreachable
                        end
                        i32.const 0
                        i32.const 0
                        i32.const 1063408
                        call $core::panicking::panic_bounds_check
                        unreachable
                      end
                      local.get 3
                      i64.load32_u offset=16
                      local.set 7
                    end
                    local.get 4
                    local.get 7
                    i64.store offset=464
                    local.get 4
                    local.get 5
                    i32.store offset=460
                    local.get 4
                    local.get 3
                    i32.store8 offset=457
                    local.get 4
                    local.get 6
                    i32.store8 offset=456
                    block ;; label = @9
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        local.get 4
                                        i32.load8_u offset=72
                                        local.tee 5
                                        br_table 6 (;@12;) 6 (;@12;) 0 (;@18;) 1 (;@17;) 2 (;@16;) 3 (;@15;) 4 (;@14;) 5 (;@13;) 6 (;@12;)
                                      end
                                      local.get 4
                                      i64.load offset=80
                                      local.set 7
                                      br 8 (;@9;)
                                    end
                                    local.get 4
                                    i32.load offset=76
                                    local.tee 3
                                    local.get 3
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 6
                                    i32.store
                                    local.get 6
                                    i32.eqz
                                    br_if 15 (;@1;)
                                    br 6 (;@10;)
                                  end
                                  local.get 4
                                  i32.load offset=76
                                  local.tee 3
                                  local.get 3
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 6
                                  i32.store
                                  local.get 6
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  local.get 4
                                  i64.load8_u offset=84
                                  i64.const 32
                                  i64.shl
                                  local.get 4
                                  i64.load32_u offset=80
                                  i64.or
                                  local.set 7
                                  br 6 (;@9;)
                                end
                                local.get 4
                                i32.load offset=76
                                local.tee 3
                                local.get 3
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 6
                                i32.store
                                local.get 6
                                i32.eqz
                                br_if 13 (;@1;)
                                br 4 (;@10;)
                              end
                              local.get 4
                              i32.load offset=76
                              local.tee 3
                              local.get 3
                              i32.load
                              i32.const 1
                              i32.add
                              local.tee 6
                              i32.store
                              local.get 6
                              i32.eqz
                              br_if 12 (;@1;)
                              br 3 (;@10;)
                            end
                            local.get 4
                            i32.load offset=76
                            local.tee 3
                            local.get 3
                            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 4
                          i32.load8_u offset=73
                          local.set 6
                        end
                        br 1 (;@9;)
                      end
                      local.get 4
                      i64.load32_u offset=80
                      local.set 7
                    end
                    local.get 4
                    local.get 7
                    i64.store offset=528
                    local.get 4
                    local.get 3
                    i32.store offset=524
                    local.get 4
                    local.get 6
                    i32.store8 offset=521
                    local.get 4
                    local.get 5
                    i32.store8 offset=520
                    local.get 4
                    i64.const 0
                    i64.store offset=592
                    local.get 4
                    i32.const 2
                    i32.store8 offset=584
                    local.get 4
                    i32.const 424
                    i32.add
                    local.get 4
                    i32.const 520
                    i32.add
                    local.get 4
                    i32.const 584
                    i32.add
                    call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
                    block ;; label = @9
                      block ;; label = @10
                        local.get 4
                        i32.load8_u offset=424
                        i32.const 255
                        i32.ne
                        br_if 0 (;@10;)
                        local.get 0
                        local.get 4
                        i64.load offset=440
                        i64.store offset=16
                        local.get 0
                        local.get 4
                        i64.load offset=432
                        i64.store offset=8
                        local.get 0
                        i64.const 1
                        i64.store
                        local.get 4
                        i32.const 456
                        i32.add
                        call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                        br 1 (;@9;)
                      end
                      local.get 4
                      local.get 4
                      i64.load offset=448
                      i64.store offset=608
                      local.get 4
                      local.get 4
                      i64.load offset=440
                      i64.store offset=600
                      local.get 4
                      local.get 4
                      i64.load offset=432
                      i64.store offset=592
                      local.get 4
                      local.get 4
                      i64.load offset=424
                      i64.store offset=584
                      local.get 4
                      i32.const 520
                      i32.add
                      local.get 4
                      i32.const 584
                      i32.add
                      call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::own
                      i32.const 1
                      local.set 3
                      i32.const 0
                      local.set 5
                      block ;; label = @10
                        local.get 4
                        i32.load8_u offset=520
                        local.tee 6
                        i32.const 255
                        i32.eq
                        br_if 0 (;@10;)
                        local.get 4
                        local.get 4
                        i64.load offset=522 align=2
                        i64.store offset=408
                        local.get 4
                        local.get 4
                        i64.load offset=528 align=2
                        i64.store offset=414 align=2
                        local.get 4
                        i32.load8_u offset=521
                        local.set 3
                        local.get 6
                        local.set 5
                      end
                      local.get 4
                      i32.const 584
                      i32.add
                      call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
                      local.get 4
                      i32.const 600
                      i32.add
                      call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
                      local.get 4
                      i32.const 0
                      i32.store8 offset=384
                      local.get 4
                      local.get 3
                      i32.store8 offset=593
                      local.get 4
                      local.get 5
                      i32.store8 offset=592
                      local.get 4
                      i64.const 8589934592
                      i64.store offset=584
                      local.get 4
                      local.get 4
                      i64.load offset=408
                      i64.store offset=594 align=2
                      local.get 4
                      local.get 4
                      i64.load offset=414 align=2
                      i64.store offset=600 align=2
                      local.get 4
                      i64.const -9223372036854775808
                      i64.store offset=616
                      local.get 4
                      i32.const 2
                      i32.store8 offset=608
                      local.get 4
                      local.get 4
                      i32.const 384
                      i32.add
                      i32.store offset=624
                      local.get 4
                      i32.const 56
                      i32.add
                      local.get 4
                      i32.const 584
                      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 4
                      local.get 4
                      i32.load offset=60
                      local.tee 5
                      i32.store offset=524
                      local.get 4
                      local.get 4
                      i32.load offset=56
                      local.tee 3
                      i32.store offset=520
                      block ;; label = @10
                        local.get 4
                        i32.load8_u offset=384
                        i32.const 1
                        i32.ne
                        br_if 0 (;@10;)
                        local.get 3
                        local.get 3
                        i32.load
                        i32.const -1
                        i32.add
                        local.tee 2
                        i32.store
                        local.get 2
                        br_if 8 (;@2;)
                        local.get 4
                        i32.const 520
                        i32.add
                        call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                        br 8 (;@2;)
                      end
                      local.get 3
                      i32.eqz
                      br_if 7 (;@2;)
                      local.get 4
                      local.get 5
                      i32.store offset=496
                      local.get 4
                      local.get 3
                      i32.store offset=492
                      local.get 4
                      i32.const 6
                      i32.store8 offset=488
                      local.get 4
                      i32.const 552
                      i32.add
                      local.get 4
                      i32.const 456
                      i32.add
                      local.get 4
                      i32.const 488
                      i32.add
                      call $<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::call
                      local.get 4
                      local.get 4
                      i64.load offset=560
                      i64.store offset=200
                      local.get 4
                      local.get 4
                      i64.load offset=568
                      i64.store offset=208
                      block ;; label = @10
                        local.get 4
                        i64.load offset=552
                        i64.const 1
                        i64.ne
                        br_if 0 (;@10;)
                        local.get 0
                        local.get 4
                        i64.load offset=208
                        i64.store offset=16
                        local.get 0
                        local.get 4
                        i64.load offset=200
                        i64.store offset=8
                        local.get 0
                        i64.const 1
                        i64.store
                        br 1 (;@9;)
                      end
                      local.get 4
                      local.get 4
                      i64.load offset=208
                      i64.store offset=192
                      local.get 4
                      local.get 4
                      i64.load offset=200
                      i64.store offset=184
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            local.get 1
                            i32.load offset=16
                            local.tee 3
                            i32.const 1
                            i32.le_u
                            br_if 0 (;@12;)
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        block ;; label = @19
                                          block ;; label = @20
                                            local.get 1
                                            i32.load offset=12
                                            local.tee 1
                                            i32.load8_u offset=24
                                            local.tee 5
                                            br_table 6 (;@14;) 6 (;@14;) 0 (;@20;) 1 (;@19;) 2 (;@18;) 3 (;@17;) 4 (;@16;) 5 (;@15;) 6 (;@14;)
                                          end
                                          local.get 1
                                          i64.load offset=32
                                          local.set 7
                                          br 9 (;@10;)
                                        end
                                        local.get 1
                                        i32.load offset=28
                                        local.tee 3
                                        local.get 3
                                        i32.load
                                        i32.const 1
                                        i32.add
                                        local.tee 6
                                        i32.store
                                        local.get 6
                                        i32.eqz
                                        br_if 17 (;@1;)
                                        br 7 (;@11;)
                                      end
                                      local.get 1
                                      i32.load offset=28
                                      local.tee 3
                                      local.get 3
                                      i32.load
                                      i32.const 1
                                      i32.add
                                      local.tee 6
                                      i32.store
                                      local.get 6
                                      i32.eqz
                                      br_if 16 (;@1;)
                                      local.get 1
                                      i64.load8_u offset=36
                                      i64.const 32
                                      i64.shl
                                      local.get 1
                                      i64.load32_u offset=32
                                      i64.or
                                      local.set 7
                                      br 7 (;@10;)
                                    end
                                    local.get 1
                                    i32.load offset=28
                                    local.tee 3
                                    local.get 3
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 6
                                    i32.store
                                    local.get 6
                                    i32.eqz
                                    br_if 15 (;@1;)
                                    br 5 (;@11;)
                                  end
                                  local.get 1
                                  i32.load offset=28
                                  local.tee 3
                                  local.get 3
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 6
                                  i32.store
                                  local.get 6
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  br 4 (;@11;)
                                end
                                local.get 1
                                i32.load offset=28
                                local.tee 3
                                local.get 3
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 1
                                i32.store
                                local.get 1
                                i32.eqz
                                br_if 13 (;@1;)
                                br 1 (;@13;)
                              end
                              local.get 1
                              i32.load8_u offset=25
                              local.set 1
                            end
                            br 2 (;@10;)
                          end
                          i32.const 1
                          local.get 3
                          i32.const 1063408
                          call $core::panicking::panic_bounds_check
                          unreachable
                        end
                        local.get 1
                        i64.load32_u offset=32
                        local.set 7
                      end
                      local.get 4
                      local.get 7
                      i64.store offset=416
                      local.get 4
                      local.get 3
                      i32.store offset=412
                      local.get 4
                      local.get 1
                      i32.store8 offset=409
                      local.get 4
                      local.get 5
                      i32.store8 offset=408
                      block ;; label = @10
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        block ;; label = @19
                                          local.get 4
                                          i32.load8_u offset=72
                                          local.tee 3
                                          br_table 6 (;@13;) 6 (;@13;) 0 (;@19;) 1 (;@18;) 2 (;@17;) 3 (;@16;) 4 (;@15;) 5 (;@14;) 6 (;@13;)
                                        end
                                        local.get 4
                                        i64.load offset=80
                                        local.set 7
                                        br 8 (;@10;)
                                      end
                                      local.get 4
                                      i32.load offset=76
                                      local.tee 1
                                      local.get 1
                                      i32.load
                                      i32.const 1
                                      i32.add
                                      local.tee 5
                                      i32.store
                                      local.get 5
                                      i32.eqz
                                      br_if 16 (;@1;)
                                      br 6 (;@11;)
                                    end
                                    local.get 4
                                    i32.load offset=76
                                    local.tee 1
                                    local.get 1
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 5
                                    i32.store
                                    local.get 5
                                    i32.eqz
                                    br_if 15 (;@1;)
                                    local.get 4
                                    i64.load8_u offset=84
                                    i64.const 32
                                    i64.shl
                                    local.get 4
                                    i64.load32_u offset=80
                                    i64.or
                                    local.set 7
                                    br 6 (;@10;)
                                  end
                                  local.get 4
                                  i32.load offset=76
                                  local.tee 1
                                  local.get 1
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 5
                                  i32.store
                                  local.get 5
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  br 4 (;@11;)
                                end
                                local.get 4
                                i32.load offset=76
                                local.tee 1
                                local.get 1
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 5
                                i32.store
                                local.get 5
                                i32.eqz
                                br_if 13 (;@1;)
                                br 3 (;@11;)
                              end
                              local.get 4
                              i32.load offset=76
                              local.tee 1
                              local.get 1
                              i32.load
                              i32.const 1
                              i32.add
                              local.tee 5
                              i32.store
                              local.get 5
                              i32.eqz
                              br_if 12 (;@1;)
                              br 1 (;@12;)
                            end
                            local.get 4
                            i32.load8_u offset=73
                            local.set 5
                          end
                          br 1 (;@10;)
                        end
                        local.get 4
                        i64.load32_u offset=80
                        local.set 7
                      end
                      local.get 4
                      local.get 7
                      i64.store offset=528
                      local.get 4
                      local.get 1
                      i32.store offset=524
                      local.get 4
                      local.get 5
                      i32.store8 offset=521
                      local.get 4
                      local.get 3
                      i32.store8 offset=520
                      local.get 4
                      i64.const 0
                      i64.store offset=592
                      local.get 4
                      i32.const 2
                      i32.store8 offset=584
                      local.get 4
                      i32.const 456
                      i32.add
                      local.get 4
                      i32.const 520
                      i32.add
                      local.get 4
                      i32.const 584
                      i32.add
                      call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
                      block ;; label = @10
                        block ;; label = @11
                          local.get 4
                          i32.load8_u offset=456
                          i32.const 255
                          i32.ne
                          br_if 0 (;@11;)
                          local.get 0
                          local.get 4
                          i64.load offset=472
                          i64.store offset=16
                          local.get 0
                          local.get 4
                          i64.load offset=464
                          i64.store offset=8
                          local.get 0
                          i64.const 1
                          i64.store
                          local.get 4
                          i32.const 408
                          i32.add
                          call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                          br 1 (;@10;)
                        end
                        local.get 4
                        local.get 4
                        i64.load offset=480
                        i64.store offset=608
                        local.get 4
                        local.get 4
                        i64.load offset=472
                        i64.store offset=600
                        local.get 4
                        local.get 4
                        i64.load offset=464
                        i64.store offset=592
                        local.get 4
                        local.get 4
                        i64.load offset=456
                        i64.store offset=584
                        local.get 4
                        i32.const 520
                        i32.add
                        local.get 4
                        i32.const 584
                        i32.add
                        call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::own
                        i32.const 1
                        local.set 1
                        i32.const 0
                        local.set 3
                        block ;; label = @11
                          local.get 4
                          i32.load8_u offset=520
                          local.tee 5
                          i32.const 255
                          i32.eq
                          br_if 0 (;@11;)
                          local.get 4
                          local.get 4
                          i64.load offset=522 align=2
                          i64.store offset=384
                          local.get 4
                          local.get 4
                          i64.load offset=528 align=2
                          i64.store offset=390 align=2
                          local.get 4
                          i32.load8_u offset=521
                          local.set 1
                          local.get 5
                          local.set 3
                        end
                        local.get 4
                        i32.const 584
                        i32.add
                        call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
                        local.get 4
                        i32.const 600
                        i32.add
                        call $"#func562 core::ptr::drop_glue::<nanvm_lib::vm::unpacked::Unpacked<nanvm_lib::naive::Naive>>"
                        local.get 4
                        i32.const 0
                        i32.store8 offset=368
                        local.get 4
                        local.get 1
                        i32.store8 offset=593
                        local.get 4
                        local.get 3
                        i32.store8 offset=592
                        local.get 4
                        i64.const 4294967296
                        i64.store offset=584
                        local.get 4
                        local.get 4
                        i64.load offset=384
                        i64.store offset=594 align=2
                        local.get 4
                        local.get 4
                        i64.load offset=390 align=2
                        i64.store offset=600 align=2
                        local.get 4
                        local.get 4
                        i32.const 368
                        i32.add
                        i32.store offset=608
                        local.get 4
                        i32.const 48
                        i32.add
                        local.get 4
                        i32.const 584
                        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=52
                        local.tee 3
                        i32.store offset=524
                        local.get 4
                        local.get 4
                        i32.load offset=48
                        local.tee 1
                        i32.store offset=520
                        block ;; label = @11
                          local.get 4
                          i32.load8_u offset=368
                          i32.const 1
                          i32.ne
                          br_if 0 (;@11;)
                          local.get 1
                          local.get 1
                          i32.load
                          i32.const -1
                          i32.add
                          local.tee 2
                          i32.store
                          local.get 2
                          br_if 8 (;@3;)
                          local.get 4
                          i32.const 520
                          i32.add
                          call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
                          br 8 (;@3;)
                        end
                        local.get 1
                        i32.eqz
                        br_if 7 (;@3;)
                        local.get 4
                        local.get 3
                        i32.store offset=496
                        local.get 4
                        local.get 1
                        i32.store offset=492
                        local.get 4
                        i32.const 6
                        i32.store8 offset=488
                        local.get 4
                        i32.const 552
                        i32.add
                        local.get 4
                        i32.const 408
                        i32.add
                        local.get 4
                        i32.const 488
                        i32.add
                        call $<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::call
                        local.get 4
                        local.get 4
                        i64.load offset=560
                        i64.store offset=232
                        local.get 4
                        local.get 4
                        i64.load offset=568
                        i64.store offset=240
                        block ;; label = @11
                          local.get 4
                          i64.load offset=552
                          i64.const 1
                          i64.ne
                          br_if 0 (;@11;)
                          local.get 0
                          local.get 4
                          i64.load offset=240
                          i64.store offset=16
                          local.get 0
                          local.get 4
                          i64.load offset=232
                          i64.store offset=8
                          local.get 0
                          i64.const 1
                          i64.store
                          br 1 (;@10;)
                        end
                        local.get 4
                        local.get 4
                        i64.load offset=240
                        i64.store offset=224
                        local.get 4
                        local.get 4
                        i64.load offset=232
                        i64.store offset=216
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        block ;; label = @19
                                          block ;; label = @20
                                            local.get 4
                                            i32.load8_u offset=88
                                            local.tee 3
                                            br_table 6 (;@14;) 6 (;@14;) 0 (;@20;) 1 (;@19;) 2 (;@18;) 3 (;@17;) 4 (;@16;) 5 (;@15;) 6 (;@14;)
                                          end
                                          local.get 4
                                          i64.load offset=96
                                          local.set 7
                                          br 8 (;@11;)
                                        end
                                        local.get 4
                                        i32.load offset=92
                                        local.tee 1
                                        local.get 1
                                        i32.load
                                        i32.const 1
                                        i32.add
                                        local.tee 5
                                        i32.store
                                        local.get 5
                                        i32.eqz
                                        br_if 17 (;@1;)
                                        br 6 (;@12;)
                                      end
                                      local.get 4
                                      i32.load offset=92
                                      local.tee 1
                                      local.get 1
                                      i32.load
                                      i32.const 1
                                      i32.add
                                      local.tee 5
                                      i32.store
                                      local.get 5
                                      i32.eqz
                                      br_if 16 (;@1;)
                                      local.get 4
                                      i64.load8_u offset=100
                                      i64.const 32
                                      i64.shl
                                      local.get 4
                                      i64.load32_u offset=96
                                      i64.or
                                      local.set 7
                                      br 6 (;@11;)
                                    end
                                    local.get 4
                                    i32.load offset=92
                                    local.tee 1
                                    local.get 1
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 5
                                    i32.store
                                    local.get 5
                                    i32.eqz
                                    br_if 15 (;@1;)
                                    br 4 (;@12;)
                                  end
                                  local.get 4
                                  i32.load offset=92
                                  local.tee 1
                                  local.get 1
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 5
                                  i32.store
                                  local.get 5
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  br 3 (;@12;)
                                end
                                local.get 4
                                i32.load offset=92
                                local.tee 1
                                local.get 1
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 5
                                i32.store
                                local.get 5
                                i32.eqz
                                br_if 13 (;@1;)
                                br 1 (;@13;)
                              end
                              local.get 4
                              i32.load8_u offset=89
                              local.set 5
                            end
                            br 1 (;@11;)
                          end
                          local.get 4
                          i64.load32_u offset=96
                          local.set 7
                        end
                        local.get 4
                        local.get 7
                        i64.store offset=392
                        local.get 4
                        local.get 1
                        i32.store offset=388
                        local.get 4
                        local.get 5
                        i32.store8 offset=385
                        local.get 4
                        local.get 3
                        i32.store8 offset=384
                        local.get 4
                        i64.const 4607182418800017408
                        i64.store offset=528
                        local.get 4
                        i32.const 2
                        i32.store8 offset=520
                        block ;; label = @11
                          block ;; label = @12
                            block ;; label = @13
                              block ;; label = @14
                                block ;; label = @15
                                  block ;; label = @16
                                    block ;; label = @17
                                      block ;; label = @18
                                        block ;; label = @19
                                          block ;; label = @20
                                            local.get 4
                                            i32.load8_u offset=72
                                            local.tee 3
                                            br_table 6 (;@14;) 6 (;@14;) 0 (;@20;) 1 (;@19;) 2 (;@18;) 3 (;@17;) 4 (;@16;) 5 (;@15;) 6 (;@14;)
                                          end
                                          local.get 4
                                          i64.load offset=80
                                          local.set 7
                                          br 8 (;@11;)
                                        end
                                        local.get 4
                                        i32.load offset=76
                                        local.tee 1
                                        local.get 1
                                        i32.load
                                        i32.const 1
                                        i32.add
                                        local.tee 5
                                        i32.store
                                        local.get 5
                                        i32.eqz
                                        br_if 17 (;@1;)
                                        br 6 (;@12;)
                                      end
                                      local.get 4
                                      i32.load offset=76
                                      local.tee 1
                                      local.get 1
                                      i32.load
                                      i32.const 1
                                      i32.add
                                      local.tee 5
                                      i32.store
                                      local.get 5
                                      i32.eqz
                                      br_if 16 (;@1;)
                                      local.get 4
                                      i64.load8_u offset=84
                                      i64.const 32
                                      i64.shl
                                      local.get 4
                                      i64.load32_u offset=80
                                      i64.or
                                      local.set 7
                                      br 6 (;@11;)
                                    end
                                    local.get 4
                                    i32.load offset=76
                                    local.tee 1
                                    local.get 1
                                    i32.load
                                    i32.const 1
                                    i32.add
                                    local.tee 5
                                    i32.store
                                    local.get 5
                                    i32.eqz
                                    br_if 15 (;@1;)
                                    br 4 (;@12;)
                                  end
                                  local.get 4
                                  i32.load offset=76
                                  local.tee 1
                                  local.get 1
                                  i32.load
                                  i32.const 1
                                  i32.add
                                  local.tee 5
                                  i32.store
                                  local.get 5
                                  i32.eqz
                                  br_if 14 (;@1;)
                                  br 3 (;@12;)
                                end
                                local.get 4
                                i32.load offset=76
                                local.tee 1
                                local.get 1
                                i32.load
                                i32.const 1
                                i32.add
                                local.tee 5
                                i32.store
                                local.get 5
                                i32.eqz
                                br_if 13 (;@1;)
                                br 1 (;@13;)
                              end
                              local.get 4
                              i32.load8_u offset=73
                              local.set 5
                            end
                            br 1 (;@11;)
                          end
                          local.get 4
                          i64.load32_u offset=80
                          local.set 7
                        end
                        local.get 4
                        local.get 7
                        i64.store offset=560
                        local.get 4
                        local.get 1
                        i32.store offset=556
                        local.get 4
                        local.get 5
                        i32.store8 offset=553
                        local.get 4
                        local.get 3
                        i32.store8 offset=552
                        local.get 4
                        i64.const 0
                        i64.store offset=592
                        local.get 4
                        i32.const 2
                        i32.store8 offset=584
                        local.get 4
                        i32.const 488
                        i32.add
                        local.get 4
                        i32.const 552
                        i32.add
                        local.get 4
                        i32.const 584
                        i32.add
                        call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
                        block ;; label = @11
                          block ;; label = @12
                            local.get 4
                            i32.load8_u offset=488
                            i32.const 255
                            i32.ne
                            br_if 0 (;@12;)
                            local.get 0
                            local.get 4
                            i64.load offset=504
                            i64.store offset=16
                            local.get 0
                            local.get 4
                            i64.load offset=496
                            i64.store offset=8
                            local.get 0
                            i64.const 1
                            i64.store
                            local.get 4
                            i32.const 520
                            i32.add
                            call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                            local.get 4
                            i32.const 384
                            i32.add
                            call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                            br 1 (;@11;)
                          end
                          local.get 4
                          i32.const 288
                          i32.add
                          i32.const 8
                          i32.add
                          local.set 1
                          local.get 4
                          local.get 4
                          i64.load offset=512
                          i64.store offset=608
                          local.get 4
                          local.get 4
                          i64.load offset=504
                          i64.store offset=600
                          local.get 4
                          local.get 4
                          i64.load offset=496
                          i64.store offset=592
                          local.get 4
                          local.get 4
                          i64.load offset=488
                          i64.store offset=584
                          local.get 4
                          i32.const 312
                          i32.add
                          local.get 4
                          i32.const 584
                          i32.add
                          call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::read
                          local.get 4
                          i32.const 288
                          i32.add
                          local.get 4
                          i32.const 520
                          i32.add
                          local.get 4
                          i32.const 312
                          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::Div>::div>"
                          block ;; label = @12
                            local.get 4
                            i64.load offset=288
                            i64.const 1
                            i64.ne
                            br_if 0 (;@12;)
                            local.get 0
                            i64.const 1
                            i64.store
                            local.get 0
                            local.get 1
                            i64.load offset=8
                            i64.store offset=16
                            local.get 0
                            local.get 1
                            i64.load
                            i64.store offset=8
                            local.get 4
                            i32.const 384
                            i32.add
                            call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                            br 1 (;@11;)
                          end
                          local.get 4
                          i32.const 264
                          i32.add
                          i32.const 8
                          i32.add
                          local.set 3
                          local.get 4
                          i32.const 40
                          i32.add
                          local.get 1
                          call $"<nanvm_lib::naive::container::Container<(), nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as nanvm_lib::vm::internal::icontainer::IContainer<nanvm_lib::naive::Naive>>::new_ok::<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>; 1]>"
                          local.get 4
                          i32.const 6
                          i32.store8 offset=408
                          local.get 4
                          local.get 4
                          i64.load offset=40
                          i64.store offset=412 align=4
                          local.get 4
                          i32.const 264
                          i32.add
                          local.get 4
                          i32.const 384
                          i32.add
                          local.get 4
                          i32.const 408
                          i32.add
                          call $<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::call
                          block ;; label = @12
                            local.get 4
                            i64.load offset=264
                            i64.const 1
                            i64.ne
                            br_if 0 (;@12;)
                            local.get 0
                            i64.const 1
                            i64.store
                            local.get 0
                            local.get 3
                            i64.load offset=8
                            i64.store offset=16
                            local.get 0
                            local.get 3
                            i64.load
                            i64.store offset=8
                            br 1 (;@11;)
                          end
                          local.get 4
                          local.get 3
                          i64.load offset=8
                          i64.store offset=256
                          local.get 4
                          local.get 3
                          i64.load
                          i64.store offset=248
                          local.get 4
                          i32.const 352
                          i32.add
                          local.get 4
                          i32.const 104
                          i32.add
                          call $"<nanvm_lib::naive::Naive as core::clone::Clone>::clone"
                          local.get 4
                          i32.const 32
                          i32.add
                          i32.const 1055477
                          i32.const 1
                          call $"<nanvm_lib::vm::string::String<nanvm_lib::naive::Naive> as core::convert::From<&str>>::from"
                          local.get 4
                          local.get 4
                          i32.load offset=36
                          local.tee 6
                          i32.store offset=404
                          local.get 4
                          local.get 4
                          i32.load offset=32
                          local.tee 1
                          i32.store offset=400
                          local.get 4
                          i32.const 408
                          i32.add
                          local.get 4
                          i32.const 72
                          i32.add
                          call $"<nanvm_lib::naive::Naive as core::clone::Clone>::clone"
                          local.get 4
                          i64.const 0
                          i64.store offset=560
                          local.get 4
                          i32.const 2
                          i32.store8 offset=552
                          local.get 4
                          i32.const 520
                          i32.add
                          local.get 4
                          i32.const 408
                          i32.add
                          local.get 4
                          i32.const 552
                          i32.add
                          call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::new
                          block ;; label = @12
                            block ;; label = @13
                              local.get 4
                              i32.load8_u offset=520
                              i32.const 255
                              i32.ne
                              br_if 0 (;@13;)
                              local.get 0
                              local.get 4
                              i64.load offset=536
                              i64.store offset=16
                              local.get 0
                              local.get 4
                              i64.load offset=528
                              i64.store offset=8
                              local.get 0
                              i64.const 1
                              i64.store
                              local.get 1
                              local.get 1
                              i32.load
                              i32.const -1
                              i32.add
                              local.tee 0
                              i32.store
                              block ;; label = @14
                                local.get 0
                                br_if 0 (;@14;)
                                local.get 4
                                i32.const 400
                                i32.add
                                call $"<alloc::rc::Rc<[u16]>>::drop_slow"
                              end
                              local.get 4
                              i32.const 352
                              i32.add
                              call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                              br 1 (;@12;)
                            end
                            local.get 4
                            i32.const 328
                            i32.add
                            i32.const 8
                            i32.add
                            local.set 5
                            local.get 4
                            local.get 4
                            i64.load offset=544
                            i64.store offset=576
                            local.get 4
                            local.get 4
                            i64.load offset=536
                            i64.store offset=568
                            local.get 4
                            local.get 4
                            i64.load offset=528
                            i64.store offset=560
                            local.get 4
                            local.get 4
                            i64.load offset=520
                            i64.store offset=552
                            local.get 4
                            i32.const 592
                            i32.add
                            local.get 4
                            i32.const 552
                            i32.add
                            call $<nanvm_lib::vm::lambda::member::Member<nanvm_lib::naive::Naive>>::read
                            local.get 4
                            i32.const 24
                            i32.add
                            i32.const 1055478
                            i32.const 1
                            call $"<nanvm_lib::vm::string::String<nanvm_lib::naive::Naive> as core::convert::From<&str>>::from"
                            local.get 4
                            i64.const 4611686018427387904
                            i64.store offset=624
                            local.get 4
                            i32.const 2
                            i32.store8 offset=616
                            local.get 4
                            local.get 6
                            i32.store offset=588
                            local.get 4
                            local.get 1
                            i32.store offset=584
                            local.get 4
                            local.get 4
                            i64.load offset=24
                            i64.store offset=608
                            local.get 4
                            i32.const 16
                            i32.add
                            local.get 4
                            i32.const 584
                            i32.add
                            call $"<nanvm_lib::naive::container::Container<(), (nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>)> as nanvm_lib::vm::internal::icontainer::IContainer<nanvm_lib::naive::Naive>>::new_ok::<[(nanvm_lib::vm::string::String<nanvm_lib::naive::Naive>, nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>); 2]>"
                            local.get 4
                            i32.const 5
                            i32.store8 offset=384
                            local.get 4
                            local.get 4
                            i64.load offset=16
                            i64.store offset=388 align=4
                            local.get 4
                            i32.const 8
                            i32.add
                            local.get 4
                            i32.const 384
                            i32.add
                            call $"<nanvm_lib::naive::container::Container<(), nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as nanvm_lib::vm::internal::icontainer::IContainer<nanvm_lib::naive::Naive>>::new_ok::<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>; 1]>"
                            local.get 4
                            i32.const 6
                            i32.store8 offset=368
                            local.get 4
                            local.get 4
                            i64.load offset=8
                            i64.store offset=372 align=4
                            local.get 4
                            i32.const 328
                            i32.add
                            local.get 4
                            i32.const 352
                            i32.add
                            local.get 4
                            i32.const 368
                            i32.add
                            call $<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>::call
                            local.get 4
                            i64.load offset=328
                            i64.const 1
                            i64.ne
                            br_if 6 (;@6;)
                            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 248
                          i32.add
                          call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                        end
                        local.get 4
                        i32.const 216
                        i32.add
                        call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                      end
                      local.get 4
                      i32.const 184
                      i32.add
                      call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                    end
                    local.get 4
                    i32.const 104
                    i32.add
                    call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                  end
                  local.get 4
                  i32.const 88
                  i32.add
                  call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
                end
                local.get 4
                i32.const 72
                i32.add
                call $"#func152 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 1
                i32.store
                local.get 1
                i32.eqz
                br_if 1 (;@5;)
                br 2 (;@4;)
              end
              local.get 4
              local.get 4
              i64.load offset=184
              i64.store offset=120
              local.get 4
              local.get 4
              i64.load offset=192
              i64.store offset=128
              local.get 4
              local.get 4
              i64.load offset=216
              i64.store offset=136
              local.get 4
              local.get 4
              i64.load offset=224
              i64.store offset=144
              local.get 4
              local.get 5
              i64.load offset=8
              i64.store offset=176
              local.get 4
              local.get 5
              i64.load
              i64.store offset=168
              local.get 4
              local.get 3
              i64.load
              i64.store offset=152
              local.get 4
              local.get 3
              i64.load offset=8
              i64.store offset=160
              local.get 4
              local.get 4
              i32.const 120
              i32.add
              call $"<nanvm_lib::naive::container::Container<(), nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>> as nanvm_lib::vm::internal::icontainer::IContainer<nanvm_lib::naive::Naive>>::new_ok::<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>; 4]>"
              local.get 0
              local.get 4
              i64.load
              i64.store offset=12 align=4
              local.get 0
              i32.const 6
              i32.store8 offset=8
              local.get 0
              i64.const 0
              i64.store
              local.get 4
              i32.const 104
              i32.add
              call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
              local.get 4
              i32.const 88
              i32.add
              call $"#func152 core::ptr::drop_glue::<nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>>"
              local.get 4
              i32.const 72
              i32.add
              call $"#func152 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 1
              i32.store
              local.get 1
              br_if 1 (;@4;)
            end
            local.get 4
            i32.const 64
            i32.add
            call $"<alloc::rc::Rc<[nanvm_lib::vm::any::Any<nanvm_lib::naive::Naive>]>>::drop_slow"
          end
          local.get 4
          i32.const 640
          i32.add
          global.set $__stack_pointer
          return
        end
        i32.const 1057428
        i32.const 43
        local.get 4
        i32.const 639
        i32.add
        i32.const 1057412
        i32.const 1057472
        call $core::result::unwrap_failed
        unreachable
      end
      i32.const 1057428
      i32.const 43
      local.get 4
      i32.const 639
      i32.add
      i32.const 1057412
      i32.const 1057472
      call $core::result::unwrap_failed
      unreachable
    end
    unreachable
  )

Emergent Testing

Idle. Press Run to start the suite.

  • ./guarded/proof.f.mjs
  • ./proof.f.mjs