Skip to content

Instantly share code, notes, and snippets.

@quininer
Last active May 6, 2018 11:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quininer/53820dbf2bcadfca807aee1e9adb4865 to your computer and use it in GitHub Desktop.
Save quininer/53820dbf2bcadfca807aee1e9adb4865 to your computer and use it in GitHub Desktop.
wasm stack overflow
[package]
name = "wasm-stack-overflow-zero"
version = "0.1.0"
authors = ["quininer <quininer@live.com>"]
[lib]
crate-type = ["cdylib"]
path = "lib.rs"
[dependencies]
wasm-bindgen = "0.2"
[profile.release]
debug = true
opt-level = "s"
lto = true
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type"/>
</head>
<body>
<script src='./wasm_stack_overflow_zero.js'></script>
<script src='./index.js'></script>
</body>
</html>
const { hash_with_key, table_index } = wasm_bindgen;
function js_hash(a) {
let sum = 0;
for (let v of a) {
sum ^= v;
}
return sum;
}
function run() {
console.log(hash_with_key("key", "aaaaaaaaa"));
console.log(table_index(-28), table_index(-27), table_index(-26));
}
wasm_bindgen('wasm_stack_overflow_zero_bg.wasm').then(run);
#![feature(proc_macro, wasm_custom_section, wasm_import_module)]
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
fn js_hash(data: &[u8]) -> u32;
}
#[wasm_bindgen]
pub fn hash_with_key(key: &str, data: &str) -> u32 {
let mut val = [0; 32];
let key = key.as_bytes();
let data = data.as_bytes();
val[..3].copy_from_slice(&key[..3]);
val[3] = 0x33;
val[4..][..data.len()].copy_from_slice(&data);
js_hash(&val)
}
#[wasm_bindgen]
pub fn table_index(i: usize) -> u8 {
let a = [b'a', b'd', b'c', b'b'];
unsafe { *a.get_unchecked(i) }
}
(module
(type (;0;) (func))
(type (;1;) (func (param i32)))
(type (;2;) (func (param i32 i32) (result i32)))
(type (;3;) (func (param i32 i32 i32) (result i32)))
(type (;4;) (func (param i32) (result i32)))
(type (;5;) (func (param i32 i32)))
(type (;6;) (func (result i32)))
(type (;7;) (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32)))
(import "./wasm_stack_overflow_zero" "__wbg_f_js_hash_js_hash_n" (func $__wbg_f_js_hash_js_hash_n (type 4)))
(import "./wasm_stack_overflow_zero" "__wbindgen_throw" (func $__wbindgen_throw (type 5)))
(func $hash_with_key (type 2) (param i32 i32) (result i32)
(local i32 i32 i32)
get_global 0
i32.const 32
i32.sub
tee_local 2
set_global 0
i32.const 0
i32.load offset=1028
set_local 3
i32.const 0
i32.load offset=1024
set_local 4
get_local 2
i32.const 24
i32.add
i64.const 0
i64.store
get_local 2
i32.const 16
i32.add
i64.const 0
i64.store
get_local 2
i32.const 8
i32.add
i64.const 0
i64.store
get_local 2
i64.const 0
i64.store
block ;; label = @1
block ;; label = @2
get_local 4
i32.const 2
i32.le_u
br_if 0 (;@2;)
get_local 2
get_local 0
i32.load16_u align=1
i32.store16
get_local 2
get_local 0
i32.const 2
i32.add
i32.load8_u
i32.store8 offset=2
get_local 2
i32.const 51
i32.store8 offset=3
get_local 3
i32.const 29
i32.ge_u
br_if 1 (;@1;)
get_local 2
i32.const 4
i32.or
get_local 1
get_local 3
call $memcpy
drop
i32.const 0
i32.const 32
i32.store offset=1024
get_local 2
call $__wbg_f_js_hash_js_hash_n
set_local 0
get_local 2
i32.const 32
i32.add
set_global 0
get_local 0
return
end
i32.const 3
get_local 4
call $core::slice::slice_index_len_fail::hdf37baaf81c4880a
unreachable
end
get_local 3
i32.const 28
call $core::slice::slice_index_len_fail::hdf37baaf81c4880a
unreachable)
(func $core::slice::slice_index_len_fail::hdf37baaf81c4880a (type 5) (param i32 i32)
(local i32)
get_global 0
i32.const 48
i32.sub
tee_local 2
set_global 0
get_local 2
get_local 1
i32.store offset=4
get_local 2
get_local 0
i32.store
get_local 2
i32.const 32
i32.add
i32.const 12
i32.add
i32.const 1
i32.store
get_local 2
i32.const 8
i32.add
i32.const 12
i32.add
i32.const 2
i32.store
get_local 2
i32.const 28
i32.add
i32.const 2
i32.store
get_local 2
i32.const 1
i32.store offset=36
get_local 2
i32.const 1932
i32.store offset=8
get_local 2
i32.const 2
i32.store offset=12
get_local 2
i32.const 1596
i32.store offset=16
get_local 2
get_local 2
i32.store offset=32
get_local 2
get_local 2
i32.const 4
i32.add
i32.store offset=40
get_local 2
get_local 2
i32.const 32
i32.add
i32.store offset=24
get_local 2
i32.const 8
i32.add
i32.const 1948
call $core::panicking::panic_fmt::h4d53977031397ce1
unreachable)
(func $table_index (type 4) (param i32) (result i32)
(local i32)
get_global 0
i32.const 16
i32.sub
tee_local 1
i32.const 1650680929
i32.store offset=12 align=1
get_local 1
i32.const 12
i32.add
get_local 0
i32.add
i32.load8_u)
(func $wasm_bindgen::throw::ha829d54fe55e17ad (type 0)
i32.const 1572
i32.const 22
call $__wbindgen_throw
unreachable)
(func $__wbindgen_global_argument_ptr (type 6) (result i32)
i32.const 1024)
(func $__wbindgen_malloc (type 4) (param i32) (result i32)
block ;; label = @1
block ;; label = @2
get_local 0
i32.eqz
br_if 0 (;@2;)
get_local 0
i32.const 0
i32.lt_s
br_if 1 (;@1;)
get_local 0
call $dlmalloc::dlmalloc::Dlmalloc::malloc::hd768c0420c32c837
tee_local 0
i32.eqz
br_if 1 (;@1;)
get_local 0
return
end
i32.const 1
return
end
call $wasm_bindgen::throw::ha829d54fe55e17ad
unreachable)
(func $dlmalloc::dlmalloc::Dlmalloc::malloc::hd768c0420c32c837 (type 4) (param i32) (result i32)
(local i32 i32 i32 i32 i32 i32 i32 i32 i32 i64)
block ;; label = @1
block ;; label = @2
block ;; label = @3
block ;; label = @4
block ;; label = @5
block ;; label = @6
block ;; label = @7
block ;; label = @8
block ;; label = @9
block ;; label = @10
block ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
block ;; label = @15
block ;; label = @16
block ;; label = @17
block ;; label = @18
block ;; label = @19
block ;; label = @20
block ;; label = @21
block ;; label = @22
block ;; label = @23
block ;; label = @24
block ;; label = @25
block ;; label = @26
block ;; label = @27
block ;; label = @28
block ;; label = @29
block ;; label = @30
block ;; label = @31
block ;; label = @32
block ;; label = @33
block ;; label = @34
block ;; label = @35
block ;; label = @36
block ;; label = @37
get_local 0
i32.const 244
i32.gt_u
br_if 0 (;@37;)
i32.const 0
i32.load offset=1116
tee_local 1
i32.const 16
get_local 0
i32.const 11
i32.add
i32.const -8
i32.and
get_local 0
i32.const 11
i32.lt_u
select
tee_local 2
i32.const 3
i32.shr_u
tee_local 3
i32.const 31
i32.and
tee_local 4
i32.shr_u
tee_local 0
i32.const 3
i32.and
i32.eqz
br_if 1 (;@36;)
get_local 0
i32.const -1
i32.xor
i32.const 1
i32.and
get_local 3
i32.add
tee_local 2
i32.const 3
i32.shl
tee_local 4
i32.const 1132
i32.add
i32.load
tee_local 0
i32.const 8
i32.add
set_local 5
get_local 0
i32.load offset=8
tee_local 3
get_local 4
i32.const 1124
i32.add
tee_local 4
i32.eq
br_if 2 (;@35;)
get_local 3
get_local 4
i32.store offset=12
get_local 4
i32.const 8
i32.add
get_local 3
i32.store
br 3 (;@34;)
end
i32.const 0
set_local 3
get_local 0
i32.const -64
i32.ge_u
br_if 28 (;@8;)
get_local 0
i32.const 11
i32.add
tee_local 0
i32.const -8
i32.and
set_local 2
i32.const 0
i32.load offset=1120
tee_local 6
i32.eqz
br_if 9 (;@27;)
i32.const 0
set_local 7
block ;; label = @37
get_local 0
i32.const 8
i32.shr_u
tee_local 0
i32.eqz
br_if 0 (;@37;)
i32.const 31
set_local 7
get_local 2
i32.const 16777215
i32.gt_u
br_if 0 (;@37;)
get_local 2
i32.const 38
get_local 0
i32.clz
tee_local 0
i32.sub
i32.const 31
i32.and
i32.shr_u
i32.const 1
i32.and
i32.const 31
get_local 0
i32.sub
i32.const 1
i32.shl
i32.or
set_local 7
end
i32.const 0
get_local 2
i32.sub
set_local 3
get_local 7
i32.const 2
i32.shl
i32.const 1388
i32.add
i32.load
tee_local 0
i32.eqz
br_if 6 (;@30;)
i32.const 0
set_local 4
get_local 2
i32.const 0
i32.const 25
get_local 7
i32.const 1
i32.shr_u
i32.sub
i32.const 31
i32.and
get_local 7
i32.const 31
i32.eq
select
i32.shl
set_local 1
i32.const 0
set_local 5
loop ;; label = @37
block ;; label = @38
get_local 0
i32.load offset=4
i32.const -8
i32.and
tee_local 8
get_local 2
i32.lt_u
br_if 0 (;@38;)
get_local 8
get_local 2
i32.sub
tee_local 8
get_local 3
i32.ge_u
br_if 0 (;@38;)
get_local 8
set_local 3
get_local 0
set_local 5
get_local 8
i32.eqz
br_if 6 (;@32;)
end
get_local 0
i32.const 20
i32.add
i32.load
tee_local 8
get_local 4
get_local 8
get_local 0
get_local 1
i32.const 29
i32.shr_u
i32.const 4
i32.and
i32.add
i32.const 16
i32.add
i32.load
tee_local 0
i32.ne
select
get_local 4
get_local 8
select
set_local 4
get_local 1
i32.const 1
i32.shl
set_local 1
get_local 0
br_if 0 (;@37;)
end
get_local 4
i32.eqz
br_if 5 (;@31;)
get_local 4
set_local 0
br 7 (;@29;)
end
get_local 2
i32.const 0
i32.load offset=1516
i32.le_u
br_if 8 (;@27;)
get_local 0
i32.eqz
br_if 2 (;@33;)
get_local 0
get_local 4
i32.shl
i32.const 2
get_local 4
i32.shl
tee_local 0
i32.const 0
get_local 0
i32.sub
i32.or
i32.and
tee_local 0
i32.const 0
get_local 0
i32.sub
i32.and
i32.ctz
tee_local 3
i32.const 3
i32.shl
tee_local 5
i32.const 1132
i32.add
i32.load
tee_local 0
i32.load offset=8
tee_local 4
get_local 5
i32.const 1124
i32.add
tee_local 5
i32.eq
br_if 10 (;@25;)
get_local 4
get_local 5
i32.store offset=12
get_local 5
i32.const 8
i32.add
get_local 4
i32.store
br 11 (;@24;)
end
i32.const 0
get_local 1
i32.const -2
get_local 2
i32.rotl
i32.and
i32.store offset=1116
end
get_local 0
get_local 2
i32.const 3
i32.shl
tee_local 2
i32.const 3
i32.or
i32.store offset=4
get_local 0
get_local 2
i32.add
tee_local 0
get_local 0
i32.load offset=4
i32.const 1
i32.or
i32.store offset=4
get_local 5
return
end
i32.const 0
i32.load offset=1120
tee_local 0
i32.eqz
br_if 5 (;@27;)
get_local 0
i32.const 0
get_local 0
i32.sub
i32.and
i32.ctz
i32.const 2
i32.shl
i32.const 1388
i32.add
i32.load
tee_local 1
i32.load offset=4
i32.const -8
i32.and
get_local 2
i32.sub
set_local 3
get_local 1
set_local 4
get_local 1
i32.load offset=16
tee_local 0
i32.eqz
br_if 20 (;@12;)
i32.const 0
set_local 9
br 21 (;@11;)
end
i32.const 0
set_local 3
get_local 0
set_local 5
br 2 (;@29;)
end
get_local 5
br_if 2 (;@28;)
end
i32.const 0
set_local 5
i32.const 2
get_local 7
i32.const 31
i32.and
i32.shl
tee_local 0
i32.const 0
get_local 0
i32.sub
i32.or
get_local 6
i32.and
tee_local 0
i32.eqz
br_if 2 (;@27;)
get_local 0
i32.const 0
get_local 0
i32.sub
i32.and
i32.ctz
i32.const 2
i32.shl
i32.const 1388
i32.add
i32.load
tee_local 0
i32.eqz
br_if 2 (;@27;)
end
loop ;; label = @29
get_local 0
i32.load offset=4
i32.const -8
i32.and
tee_local 4
get_local 2
i32.ge_u
get_local 4
get_local 2
i32.sub
tee_local 8
get_local 3
i32.lt_u
i32.and
set_local 1
block ;; label = @30
get_local 0
i32.load offset=16
tee_local 4
br_if 0 (;@30;)
get_local 0
i32.const 20
i32.add
i32.load
set_local 4
end
get_local 0
get_local 5
get_local 1
select
set_local 5
get_local 8
get_local 3
get_local 1
select
set_local 3
get_local 4
set_local 0
get_local 4
br_if 0 (;@29;)
end
get_local 5
i32.eqz
br_if 1 (;@27;)
end
i32.const 0
i32.load offset=1516
tee_local 0
get_local 2
i32.lt_u
br_if 1 (;@26;)
get_local 3
get_local 0
get_local 2
i32.sub
i32.lt_u
br_if 1 (;@26;)
end
block ;; label = @27
block ;; label = @28
block ;; label = @29
block ;; label = @30
i32.const 0
i32.load offset=1516
tee_local 0
get_local 2
i32.ge_u
br_if 0 (;@30;)
i32.const 0
i32.load offset=1520
tee_local 0
get_local 2
i32.le_u
br_if 1 (;@29;)
i32.const 0
get_local 0
get_local 2
i32.sub
tee_local 3
i32.store offset=1520
i32.const 0
i32.const 0
i32.load offset=1528
tee_local 0
get_local 2
i32.add
tee_local 4
i32.store offset=1528
get_local 4
get_local 3
i32.const 1
i32.or
i32.store offset=4
get_local 0
get_local 2
i32.const 3
i32.or
i32.store offset=4
get_local 0
i32.const 8
i32.add
return
end
i32.const 0
i32.load offset=1524
set_local 3
get_local 0
get_local 2
i32.sub
tee_local 4
i32.const 16
i32.ge_u
br_if 1 (;@28;)
i32.const 0
i32.const 0
i32.store offset=1524
i32.const 0
i32.const 0
i32.store offset=1516
get_local 3
get_local 0
i32.const 3
i32.or
i32.store offset=4
get_local 3
get_local 0
i32.add
tee_local 2
i32.const 4
i32.add
set_local 0
get_local 2
i32.load offset=4
i32.const 1
i32.or
set_local 2
br 2 (;@27;)
end
i32.const 0
set_local 3
get_local 2
i32.const 65583
i32.add
tee_local 4
i32.const 16
i32.shr_u
grow_memory
tee_local 0
i32.const -1
i32.eq
tee_local 5
br_if 20 (;@8;)
get_local 0
i32.const 16
i32.shl
tee_local 1
i32.eqz
br_if 20 (;@8;)
i32.const 0
i32.const 0
i32.load offset=1532
i32.const 0
get_local 4
i32.const -65536
i32.and
get_local 5
select
tee_local 8
i32.add
tee_local 0
i32.store offset=1532
i32.const 0
i32.const 0
i32.load offset=1536
tee_local 3
get_local 0
get_local 0
get_local 3
i32.lt_u
select
i32.store offset=1536
i32.const 0
i32.load offset=1528
tee_local 3
i32.eqz
br_if 6 (;@22;)
i32.const 1540
set_local 0
loop ;; label = @29
get_local 0
i32.load
tee_local 4
get_local 0
i32.load offset=4
tee_local 5
i32.add
get_local 1
i32.eq
br_if 11 (;@18;)
get_local 0
i32.load offset=8
tee_local 0
br_if 0 (;@29;)
br 19 (;@10;)
end
end
i32.const 0
get_local 4
i32.store offset=1516
i32.const 0
get_local 3
get_local 2
i32.add
tee_local 1
i32.store offset=1524
get_local 1
get_local 4
i32.const 1
i32.or
i32.store offset=4
get_local 3
get_local 0
i32.add
get_local 4
i32.store
get_local 2
i32.const 3
i32.or
set_local 2
get_local 3
i32.const 4
i32.add
set_local 0
end
get_local 0
get_local 2
i32.store
get_local 3
i32.const 8
i32.add
return
end
get_local 5
call $dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk::h33acb3d068a3a47c
get_local 3
i32.const 15
i32.gt_u
br_if 2 (;@23;)
get_local 5
get_local 3
get_local 2
i32.add
tee_local 0
i32.const 3
i32.or
i32.store offset=4
get_local 5
get_local 0
i32.add
tee_local 0
get_local 0
i32.load offset=4
i32.const 1
i32.or
i32.store offset=4
br 12 (;@13;)
end
i32.const 0
get_local 1
i32.const -2
get_local 3
i32.rotl
i32.and
i32.store offset=1116
end
get_local 0
i32.const 8
i32.add
set_local 4
get_local 0
get_local 2
i32.const 3
i32.or
i32.store offset=4
get_local 0
get_local 2
i32.add
tee_local 1
get_local 3
i32.const 3
i32.shl
tee_local 3
get_local 2
i32.sub
tee_local 2
i32.const 1
i32.or
i32.store offset=4
get_local 0
get_local 3
i32.add
get_local 2
i32.store
i32.const 0
i32.load offset=1516
tee_local 0
i32.eqz
br_if 4 (;@19;)
get_local 0
i32.const 3
i32.shr_u
tee_local 5
i32.const 3
i32.shl
i32.const 1124
i32.add
set_local 3
i32.const 0
i32.load offset=1524
set_local 0
i32.const 0
i32.load offset=1116
tee_local 8
i32.const 1
get_local 5
i32.const 31
i32.and
i32.shl
tee_local 5
i32.and
i32.eqz
br_if 2 (;@21;)
get_local 3
i32.load offset=8
set_local 5
br 3 (;@20;)
end
get_local 5
get_local 2
i32.const 3
i32.or
i32.store offset=4
get_local 5
get_local 2
i32.add
tee_local 0
get_local 3
i32.const 1
i32.or
i32.store offset=4
get_local 0
get_local 3
i32.add
get_local 3
i32.store
get_local 3
i32.const 255
i32.gt_u
br_if 5 (;@17;)
get_local 3
i32.const 3
i32.shr_u
tee_local 3
i32.const 3
i32.shl
i32.const 1124
i32.add
set_local 2
i32.const 0
i32.load offset=1116
tee_local 4
i32.const 1
get_local 3
i32.const 31
i32.and
i32.shl
tee_local 3
i32.and
i32.eqz
br_if 7 (;@15;)
get_local 2
i32.const 8
i32.add
set_local 4
get_local 2
i32.load offset=8
set_local 3
br 8 (;@14;)
end
block ;; label = @22
block ;; label = @23
i32.const 0
i32.load offset=1560
tee_local 0
i32.eqz
br_if 0 (;@23;)
get_local 0
get_local 1
i32.le_u
br_if 1 (;@22;)
end
i32.const 0
get_local 1
i32.store offset=1560
end
i32.const 0
set_local 0
i32.const 0
get_local 8
i32.store offset=1544
i32.const 0
get_local 1
i32.store offset=1540
i32.const 0
i32.const 4095
i32.store offset=1564
i32.const 0
i32.const 0
i32.store offset=1552
loop ;; label = @22
get_local 0
i32.const 1132
i32.add
get_local 0
i32.const 1124
i32.add
tee_local 3
i32.store
get_local 0
i32.const 1136
i32.add
get_local 3
i32.store
get_local 0
i32.const 8
i32.add
tee_local 0
i32.const 256
i32.ne
br_if 0 (;@22;)
end
get_local 1
get_local 8
i32.const -40
i32.add
tee_local 0
i32.const 1
i32.or
i32.store offset=4
i32.const 0
get_local 1
i32.store offset=1528
i32.const 0
i32.const 2097152
i32.store offset=1556
i32.const 0
get_local 0
i32.store offset=1520
get_local 1
get_local 0
i32.add
i32.const 40
i32.store offset=4
br 12 (;@9;)
end
i32.const 0
get_local 8
get_local 5
i32.or
i32.store offset=1116
get_local 3
set_local 5
end
get_local 3
i32.const 8
i32.add
get_local 0
i32.store
get_local 5
get_local 0
i32.store offset=12
get_local 0
get_local 3
i32.store offset=12
get_local 0
get_local 5
i32.store offset=8
end
i32.const 0
get_local 1
i32.store offset=1524
i32.const 0
get_local 2
i32.store offset=1516
get_local 4
return
end
get_local 0
i32.load offset=12
i32.eqz
br_if 1 (;@16;)
br 7 (;@10;)
end
get_local 0
get_local 3
call $dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk::hb692ef7ac6874b20
br 3 (;@13;)
end
get_local 1
get_local 3
i32.le_u
br_if 5 (;@10;)
get_local 4
get_local 3
i32.gt_u
br_if 5 (;@10;)
get_local 0
i32.const 4
i32.add
get_local 5
get_local 8
i32.add
i32.store
i32.const 0
i32.load offset=1528
tee_local 0
i32.const 15
i32.add
i32.const -8
i32.and
tee_local 3
i32.const -8
i32.add
tee_local 4
i32.const 0
i32.load offset=1520
get_local 8
i32.add
tee_local 1
get_local 3
get_local 0
i32.const 8
i32.add
i32.sub
i32.sub
tee_local 3
i32.const 1
i32.or
i32.store offset=4
i32.const 0
i32.const 2097152
i32.store offset=1556
i32.const 0
get_local 4
i32.store offset=1528
i32.const 0
get_local 3
i32.store offset=1520
get_local 0
get_local 1
i32.add
i32.const 40
i32.store offset=4
br 6 (;@9;)
end
i32.const 0
get_local 4
get_local 3
i32.or
i32.store offset=1116
get_local 2
i32.const 8
i32.add
set_local 4
get_local 2
set_local 3
end
get_local 4
get_local 0
i32.store
get_local 3
get_local 0
i32.store offset=12
get_local 0
get_local 2
i32.store offset=12
get_local 0
get_local 3
i32.store offset=8
end
get_local 5
i32.const 8
i32.add
set_local 3
br 4 (;@8;)
end
i32.const 1
set_local 9
end
loop ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
block ;; label = @15
block ;; label = @16
block ;; label = @17
block ;; label = @18
block ;; label = @19
block ;; label = @20
block ;; label = @21
block ;; label = @22
block ;; label = @23
block ;; label = @24
block ;; label = @25
block ;; label = @26
block ;; label = @27
block ;; label = @28
block ;; label = @29
get_local 9
br_table 0 (;@29;) 1 (;@28;) 2 (;@27;) 4 (;@25;) 5 (;@24;) 6 (;@23;) 8 (;@21;) 9 (;@20;) 10 (;@19;) 7 (;@22;) 3 (;@26;) 3 (;@26;)
end
get_local 0
i32.load offset=4
i32.const -8
i32.and
get_local 2
i32.sub
tee_local 1
get_local 3
get_local 1
get_local 3
i32.lt_u
tee_local 1
select
set_local 3
get_local 0
get_local 4
get_local 1
select
set_local 4
get_local 0
tee_local 1
i32.load offset=16
tee_local 0
br_if 10 (;@18;)
i32.const 1
set_local 9
br 17 (;@11;)
end
get_local 1
i32.const 20
i32.add
i32.load
tee_local 0
br_if 10 (;@17;)
i32.const 2
set_local 9
br 16 (;@11;)
end
get_local 4
call $dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk::h33acb3d068a3a47c
get_local 3
i32.const 16
i32.ge_u
br_if 10 (;@16;)
i32.const 10
set_local 9
br 15 (;@11;)
end
get_local 4
get_local 3
get_local 2
i32.add
tee_local 0
i32.const 3
i32.or
i32.store offset=4
get_local 4
get_local 0
i32.add
tee_local 0
get_local 0
i32.load offset=4
i32.const 1
i32.or
i32.store offset=4
br 13 (;@12;)
end
get_local 4
get_local 2
i32.const 3
i32.or
i32.store offset=4
get_local 4
get_local 2
i32.add
tee_local 2
get_local 3
i32.const 1
i32.or
i32.store offset=4
get_local 2
get_local 3
i32.add
get_local 3
i32.store
i32.const 0
i32.load offset=1516
tee_local 0
i32.eqz
br_if 9 (;@15;)
i32.const 4
set_local 9
br 13 (;@11;)
end
get_local 0
i32.const 3
i32.shr_u
tee_local 5
i32.const 3
i32.shl
i32.const 1124
i32.add
set_local 1
i32.const 0
i32.load offset=1524
set_local 0
i32.const 0
i32.load offset=1116
tee_local 8
i32.const 1
get_local 5
i32.const 31
i32.and
i32.shl
tee_local 5
i32.and
i32.eqz
br_if 9 (;@14;)
i32.const 5
set_local 9
br 12 (;@11;)
end
get_local 1
i32.load offset=8
set_local 5
br 9 (;@13;)
end
i32.const 0
get_local 8
get_local 5
i32.or
i32.store offset=1116
get_local 1
set_local 5
i32.const 6
set_local 9
br 10 (;@11;)
end
get_local 1
i32.const 8
i32.add
get_local 0
i32.store
get_local 5
get_local 0
i32.store offset=12
get_local 0
get_local 1
i32.store offset=12
get_local 0
get_local 5
i32.store offset=8
i32.const 7
set_local 9
br 9 (;@11;)
end
i32.const 0
get_local 2
i32.store offset=1524
i32.const 0
get_local 3
i32.store offset=1516
i32.const 8
set_local 9
br 8 (;@11;)
end
get_local 4
i32.const 8
i32.add
return
end
i32.const 0
set_local 9
br 6 (;@11;)
end
i32.const 0
set_local 9
br 5 (;@11;)
end
i32.const 3
set_local 9
br 4 (;@11;)
end
i32.const 7
set_local 9
br 3 (;@11;)
end
i32.const 9
set_local 9
br 2 (;@11;)
end
i32.const 6
set_local 9
br 1 (;@11;)
end
i32.const 8
set_local 9
br 0 (;@11;)
end
end
i32.const 0
i32.const 0
i32.load offset=1560
tee_local 0
get_local 1
get_local 0
get_local 1
i32.lt_u
select
i32.store offset=1560
get_local 1
get_local 8
i32.add
set_local 4
i32.const 1540
set_local 0
block ;; label = @10
block ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
loop ;; label = @15
get_local 0
i32.load
get_local 4
i32.eq
br_if 1 (;@14;)
get_local 0
i32.load offset=8
tee_local 0
br_if 0 (;@15;)
br 2 (;@13;)
end
end
get_local 0
i32.load offset=12
i32.eqz
br_if 1 (;@12;)
end
i32.const 1540
set_local 0
block ;; label = @13
loop ;; label = @14
block ;; label = @15
get_local 0
i32.load
tee_local 4
get_local 3
i32.gt_u
br_if 0 (;@15;)
get_local 4
get_local 0
i32.load offset=4
i32.add
tee_local 4
get_local 3
i32.gt_u
br_if 2 (;@13;)
end
get_local 0
i32.load offset=8
set_local 0
br 0 (;@14;)
end
end
get_local 1
get_local 8
i32.const -40
i32.add
tee_local 0
i32.const 1
i32.or
i32.store offset=4
get_local 1
get_local 0
i32.add
i32.const 40
i32.store offset=4
get_local 3
get_local 4
i32.const -32
i32.add
i32.const -8
i32.and
i32.const -8
i32.add
tee_local 5
get_local 5
get_local 3
i32.const 16
i32.add
i32.lt_u
select
tee_local 5
i32.const 27
i32.store offset=4
i32.const 0
get_local 1
i32.store offset=1528
i32.const 0
i32.const 2097152
i32.store offset=1556
i32.const 0
get_local 0
i32.store offset=1520
i32.const 0
i64.load offset=1540 align=4
set_local 10
get_local 5
i32.const 16
i32.add
i32.const 0
i64.load offset=1548 align=4
i64.store align=4
get_local 5
get_local 10
i64.store offset=8 align=4
i32.const 0
get_local 8
i32.store offset=1544
i32.const 0
get_local 1
i32.store offset=1540
i32.const 0
get_local 5
i32.const 8
i32.add
i32.store offset=1548
i32.const 0
i32.const 0
i32.store offset=1552
get_local 5
i32.const 28
i32.add
set_local 0
loop ;; label = @13
get_local 0
i32.const 7
i32.store
get_local 4
get_local 0
i32.const 4
i32.add
tee_local 0
i32.gt_u
br_if 0 (;@13;)
end
get_local 5
get_local 3
i32.eq
br_if 3 (;@9;)
get_local 5
get_local 5
i32.load offset=4
i32.const -2
i32.and
i32.store offset=4
get_local 3
get_local 5
get_local 3
i32.sub
tee_local 0
i32.const 1
i32.or
i32.store offset=4
get_local 5
get_local 0
i32.store
block ;; label = @13
get_local 0
i32.const 255
i32.gt_u
br_if 0 (;@13;)
get_local 0
i32.const 3
i32.shr_u
tee_local 4
i32.const 3
i32.shl
i32.const 1124
i32.add
set_local 0
i32.const 0
i32.load offset=1116
tee_local 1
i32.const 1
get_local 4
i32.const 31
i32.and
i32.shl
tee_local 4
i32.and
i32.eqz
br_if 2 (;@11;)
get_local 0
i32.load offset=8
set_local 4
br 3 (;@10;)
end
get_local 3
get_local 0
call $dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk::hb692ef7ac6874b20
br 3 (;@9;)
end
get_local 0
get_local 1
i32.store
get_local 0
get_local 0
i32.load offset=4
get_local 8
i32.add
i32.store offset=4
get_local 1
get_local 2
i32.const 3
i32.or
i32.store offset=4
get_local 1
get_local 2
i32.add
set_local 0
get_local 4
get_local 1
i32.sub
get_local 2
i32.sub
set_local 2
i32.const 0
i32.load offset=1528
get_local 4
i32.eq
br_if 4 (;@7;)
i32.const 0
i32.load offset=1524
get_local 4
i32.eq
br_if 5 (;@6;)
get_local 4
i32.load offset=4
tee_local 3
i32.const 3
i32.and
i32.const 1
i32.ne
br_if 9 (;@2;)
get_local 3
i32.const -8
i32.and
tee_local 5
i32.const 255
i32.gt_u
br_if 6 (;@5;)
get_local 4
i32.load offset=12
tee_local 8
get_local 4
i32.load offset=8
tee_local 7
i32.eq
br_if 7 (;@4;)
get_local 7
get_local 8
i32.store offset=12
get_local 8
get_local 7
i32.store offset=8
br 8 (;@3;)
end
i32.const 0
get_local 1
get_local 4
i32.or
i32.store offset=1116
get_local 0
set_local 4
end
get_local 0
i32.const 8
i32.add
get_local 3
i32.store
get_local 4
get_local 3
i32.store offset=12
get_local 3
get_local 0
i32.store offset=12
get_local 3
get_local 4
i32.store offset=8
end
i32.const 0
set_local 3
i32.const 0
i32.load offset=1520
tee_local 0
get_local 2
i32.le_u
br_if 0 (;@8;)
i32.const 0
get_local 0
get_local 2
i32.sub
tee_local 3
i32.store offset=1520
i32.const 0
i32.const 0
i32.load offset=1528
tee_local 0
get_local 2
i32.add
tee_local 4
i32.store offset=1528
get_local 4
get_local 3
i32.const 1
i32.or
i32.store offset=4
get_local 0
get_local 2
i32.const 3
i32.or
i32.store offset=4
get_local 0
i32.const 8
i32.add
return
end
get_local 3
return
end
i32.const 0
get_local 0
i32.store offset=1528
i32.const 0
i32.const 0
i32.load offset=1520
get_local 2
i32.add
tee_local 2
i32.store offset=1520
get_local 0
get_local 2
i32.const 1
i32.or
i32.store offset=4
br 5 (;@1;)
end
get_local 0
i32.const 0
i32.load offset=1516
get_local 2
i32.add
tee_local 2
i32.const 1
i32.or
i32.store offset=4
i32.const 0
get_local 0
i32.store offset=1524
i32.const 0
get_local 2
i32.store offset=1516
get_local 0
get_local 2
i32.add
get_local 2
i32.store
br 4 (;@1;)
end
get_local 4
call $dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk::h33acb3d068a3a47c
br 1 (;@3;)
end
i32.const 0
i32.const 0
i32.load offset=1116
i32.const -2
get_local 3
i32.const 3
i32.shr_u
i32.rotl
i32.and
i32.store offset=1116
end
get_local 5
get_local 2
i32.add
set_local 2
get_local 4
get_local 5
i32.add
set_local 4
end
get_local 4
get_local 4
i32.load offset=4
i32.const -2
i32.and
i32.store offset=4
get_local 0
get_local 2
i32.const 1
i32.or
i32.store offset=4
get_local 0
get_local 2
i32.add
get_local 2
i32.store
block ;; label = @2
block ;; label = @3
block ;; label = @4
get_local 2
i32.const 255
i32.gt_u
br_if 0 (;@4;)
get_local 2
i32.const 3
i32.shr_u
tee_local 3
i32.const 3
i32.shl
i32.const 1124
i32.add
set_local 2
i32.const 0
i32.load offset=1116
tee_local 4
i32.const 1
get_local 3
i32.const 31
i32.and
i32.shl
tee_local 3
i32.and
i32.eqz
br_if 1 (;@3;)
get_local 2
i32.const 8
i32.add
set_local 4
get_local 2
i32.load offset=8
set_local 3
br 2 (;@2;)
end
get_local 0
get_local 2
call $dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk::hb692ef7ac6874b20
br 2 (;@1;)
end
i32.const 0
get_local 4
get_local 3
i32.or
i32.store offset=1116
get_local 2
i32.const 8
i32.add
set_local 4
get_local 2
set_local 3
end
get_local 4
get_local 0
i32.store
get_local 3
get_local 0
i32.store offset=12
get_local 0
get_local 2
i32.store offset=12
get_local 0
get_local 3
i32.store offset=8
end
get_local 1
i32.const 8
i32.add)
(func $__wbindgen_free (type 5) (param i32 i32)
block ;; label = @1
get_local 1
i32.eqz
br_if 0 (;@1;)
get_local 0
call $dlmalloc::dlmalloc::Dlmalloc::free::h28b696f4b16d6a6c
end)
(func $dlmalloc::dlmalloc::Dlmalloc::free::h28b696f4b16d6a6c (type 1) (param i32)
(local i32 i32 i32 i32 i32)
get_local 0
i32.const -8
i32.add
tee_local 1
get_local 0
i32.const -4
i32.add
i32.load
tee_local 2
i32.const -8
i32.and
tee_local 0
i32.add
set_local 3
block ;; label = @1
block ;; label = @2
get_local 2
i32.const 1
i32.and
br_if 0 (;@2;)
get_local 2
i32.const 3
i32.and
i32.eqz
br_if 1 (;@1;)
get_local 1
i32.load
tee_local 2
get_local 0
i32.add
set_local 0
block ;; label = @3
block ;; label = @4
block ;; label = @5
i32.const 0
i32.load offset=1524
get_local 1
get_local 2
i32.sub
tee_local 1
i32.eq
br_if 0 (;@5;)
get_local 2
i32.const 255
i32.gt_u
br_if 1 (;@4;)
get_local 1
i32.load offset=12
tee_local 4
get_local 1
i32.load offset=8
tee_local 5
i32.eq
br_if 2 (;@3;)
get_local 5
get_local 4
i32.store offset=12
get_local 4
get_local 5
i32.store offset=8
br 3 (;@2;)
end
get_local 3
i32.load offset=4
tee_local 2
i32.const 3
i32.and
i32.const 3
i32.ne
br_if 2 (;@2;)
i32.const 0
get_local 0
i32.store offset=1516
get_local 3
i32.const 4
i32.add
get_local 2
i32.const -2
i32.and
i32.store
get_local 1
get_local 0
i32.const 1
i32.or
i32.store offset=4
get_local 1
get_local 0
i32.add
get_local 0
i32.store
return
end
get_local 1
call $dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk::h33acb3d068a3a47c
br 1 (;@2;)
end
i32.const 0
i32.const 0
i32.load offset=1116
i32.const -2
get_local 2
i32.const 3
i32.shr_u
i32.rotl
i32.and
i32.store offset=1116
end
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
get_local 3
i32.load offset=4
tee_local 2
i32.const 2
i32.and
br_if 0 (;@10;)
i32.const 0
i32.load offset=1528
get_local 3
i32.eq
br_if 1 (;@9;)
i32.const 0
i32.load offset=1524
get_local 3
i32.eq
br_if 2 (;@8;)
get_local 2
i32.const -8
i32.and
tee_local 4
get_local 0
i32.add
set_local 0
get_local 4
i32.const 255
i32.gt_u
br_if 3 (;@7;)
get_local 3
i32.load offset=12
tee_local 4
get_local 3
i32.load offset=8
tee_local 3
i32.eq
br_if 4 (;@6;)
get_local 3
get_local 4
i32.store offset=12
get_local 4
get_local 3
i32.store offset=8
br 5 (;@5;)
end
get_local 3
i32.const 4
i32.add
get_local 2
i32.const -2
i32.and
i32.store
get_local 1
get_local 0
i32.const 1
i32.or
i32.store offset=4
get_local 1
get_local 0
i32.add
get_local 0
i32.store
br 7 (;@2;)
end
i32.const 0
get_local 1
i32.store offset=1528
i32.const 0
i32.const 0
i32.load offset=1520
get_local 0
i32.add
tee_local 0
i32.store offset=1520
get_local 1
get_local 0
i32.const 1
i32.or
i32.store offset=4
block ;; label = @9
get_local 1
i32.const 0
i32.load offset=1524
i32.ne
br_if 0 (;@9;)
i32.const 0
i32.const 0
i32.store offset=1516
i32.const 0
i32.const 0
i32.store offset=1524
end
i32.const 0
i32.load offset=1556
get_local 0
i32.ge_u
br_if 7 (;@1;)
block ;; label = @9
get_local 0
i32.const 41
i32.lt_u
br_if 0 (;@9;)
i32.const 1540
set_local 0
loop ;; label = @10
block ;; label = @11
get_local 0
i32.load
tee_local 3
get_local 1
i32.gt_u
br_if 0 (;@11;)
get_local 3
get_local 0
i32.load offset=4
i32.add
get_local 1
i32.gt_u
br_if 2 (;@9;)
end
get_local 0
i32.load offset=8
tee_local 0
br_if 0 (;@10;)
end
end
i32.const 0
set_local 1
i32.const 0
i32.load offset=1548
tee_local 0
i32.eqz
br_if 4 (;@4;)
loop ;; label = @9
get_local 1
i32.const 1
i32.add
set_local 1
get_local 0
i32.load offset=8
tee_local 0
br_if 0 (;@9;)
end
get_local 1
i32.const 4095
get_local 1
i32.const 4095
i32.gt_u
select
set_local 1
br 5 (;@3;)
end
i32.const 0
get_local 1
i32.store offset=1524
i32.const 0
i32.const 0
i32.load offset=1516
get_local 0
i32.add
tee_local 0
i32.store offset=1516
get_local 1
get_local 0
i32.const 1
i32.or
i32.store offset=4
get_local 1
get_local 0
i32.add
get_local 0
i32.store
return
end
get_local 3
call $dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk::h33acb3d068a3a47c
br 1 (;@5;)
end
i32.const 0
i32.const 0
i32.load offset=1116
i32.const -2
get_local 2
i32.const 3
i32.shr_u
i32.rotl
i32.and
i32.store offset=1116
end
get_local 1
get_local 0
i32.const 1
i32.or
i32.store offset=4
get_local 1
get_local 0
i32.add
get_local 0
i32.store
get_local 1
i32.const 0
i32.load offset=1524
i32.ne
br_if 2 (;@2;)
i32.const 0
get_local 0
i32.store offset=1516
return
end
i32.const 4095
set_local 1
end
i32.const 0
i32.const -1
i32.store offset=1556
i32.const 0
get_local 1
i32.store offset=1564
return
end
block ;; label = @2
block ;; label = @3
block ;; label = @4
block ;; label = @5
block ;; label = @6
get_local 0
i32.const 255
i32.gt_u
br_if 0 (;@6;)
get_local 0
i32.const 3
i32.shr_u
tee_local 3
i32.const 3
i32.shl
i32.const 1124
i32.add
set_local 0
i32.const 0
i32.load offset=1116
tee_local 2
i32.const 1
get_local 3
i32.const 31
i32.and
i32.shl
tee_local 3
i32.and
i32.eqz
br_if 1 (;@5;)
get_local 0
i32.const 8
i32.add
set_local 2
get_local 0
i32.load offset=8
set_local 3
br 2 (;@4;)
end
get_local 1
get_local 0
call $dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk::hb692ef7ac6874b20
i32.const 0
i32.const 0
i32.load offset=1564
i32.const -1
i32.add
tee_local 1
i32.store offset=1564
get_local 1
br_if 4 (;@1;)
i32.const 0
i32.load offset=1548
tee_local 0
i32.eqz
br_if 2 (;@3;)
i32.const 0
set_local 1
loop ;; label = @6
get_local 1
i32.const 1
i32.add
set_local 1
get_local 0
i32.load offset=8
tee_local 0
br_if 0 (;@6;)
end
get_local 1
i32.const 4095
get_local 1
i32.const 4095
i32.gt_u
select
set_local 1
br 3 (;@2;)
end
i32.const 0
get_local 2
get_local 3
i32.or
i32.store offset=1116
get_local 0
i32.const 8
i32.add
set_local 2
get_local 0
set_local 3
end
get_local 2
get_local 1
i32.store
get_local 3
get_local 1
i32.store offset=12
get_local 1
get_local 0
i32.store offset=12
get_local 1
get_local 3
i32.store offset=8
return
end
i32.const 4095
set_local 1
end
i32.const 0
get_local 1
i32.store offset=1564
end)
(func $std::panicking::rust_panic_with_hook::h00e551ef664e61a7 (type 1) (param i32)
(local i32 i32)
i32.const 1
set_local 1
block ;; label = @1
block ;; label = @2
block ;; label = @3
i32.const 0
i32.load offset=1096
i32.const 1
i32.ne
br_if 0 (;@3;)
i32.const 0
i32.const 0
i32.load offset=1100
i32.const 1
i32.add
tee_local 1
i32.store offset=1100
get_local 1
i32.const 3
i32.lt_u
br_if 1 (;@2;)
br 2 (;@1;)
end
i32.const 0
i64.const 4294967297
i64.store offset=1096
end
i32.const 0
i32.load offset=1108
tee_local 2
i32.const -1
i32.le_s
br_if 0 (;@1;)
i32.const 0
get_local 2
i32.store offset=1108
get_local 1
i32.const 2
i32.lt_u
drop
end
unreachable
unreachable)
(func $rust_begin_unwind (type 7) (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32)
(local i32)
get_global 0
i32.const 48
i32.sub
tee_local 10
set_global 0
get_local 10
i32.const 20
i32.add
get_local 3
i32.store
get_local 10
i32.const 28
i32.add
get_local 5
i32.store
get_local 10
get_local 1
i32.store offset=12
get_local 10
get_local 0
i32.store offset=8
get_local 10
get_local 2
i32.store offset=16
get_local 10
get_local 4
i32.store offset=24
get_local 10
get_local 7
i32.store offset=36
get_local 10
get_local 6
i32.store offset=32
get_local 10
get_local 8
i32.store offset=40
get_local 10
get_local 9
i32.store offset=44
get_local 10
i32.const 8
i32.add
get_local 10
i32.const 32
i32.add
call $std::panicking::begin_panic_fmt::had0feab75a141b16
unreachable)
(func $std::panicking::begin_panic_fmt::had0feab75a141b16 (type 5) (param i32 i32)
get_local 1
call $std::panicking::rust_panic_with_hook::h00e551ef664e61a7
unreachable)
(func $dlmalloc::dlmalloc::Dlmalloc::unlink_large_chunk::h33acb3d068a3a47c (type 1) (param i32)
(local i32 i32 i32 i32 i32)
get_local 0
i32.load offset=24
set_local 1
block ;; label = @1
block ;; label = @2
block ;; label = @3
block ;; label = @4
get_local 0
i32.load offset=12
tee_local 2
get_local 0
i32.eq
br_if 0 (;@4;)
get_local 0
i32.load offset=8
tee_local 3
get_local 2
i32.store offset=12
get_local 2
get_local 3
i32.store offset=8
get_local 1
br_if 1 (;@3;)
br 2 (;@2;)
end
block ;; label = @4
get_local 0
i32.const 20
i32.add
tee_local 3
get_local 0
i32.const 16
i32.add
get_local 3
i32.load
select
tee_local 3
i32.load
tee_local 4
i32.eqz
br_if 0 (;@4;)
loop ;; label = @5
get_local 3
set_local 5
get_local 4
tee_local 2
i32.const 20
i32.add
tee_local 3
i32.load
tee_local 4
br_if 0 (;@5;)
get_local 2
i32.const 16
i32.add
set_local 3
get_local 2
i32.load offset=16
tee_local 4
br_if 0 (;@5;)
end
get_local 5
i32.const 0
i32.store
get_local 1
br_if 1 (;@3;)
br 2 (;@2;)
end
i32.const 0
set_local 2
get_local 1
i32.eqz
br_if 1 (;@2;)
end
block ;; label = @3
block ;; label = @4
get_local 0
i32.load offset=28
tee_local 4
i32.const 2
i32.shl
i32.const 1388
i32.add
tee_local 3
i32.load
get_local 0
i32.eq
br_if 0 (;@4;)
get_local 1
i32.const 16
i32.add
get_local 1
i32.const 20
i32.add
get_local 1
i32.load offset=16
get_local 0
i32.eq
select
get_local 2
i32.store
get_local 2
br_if 1 (;@3;)
br 2 (;@2;)
end
get_local 3
get_local 2
i32.store
get_local 2
i32.eqz
br_if 2 (;@1;)
end
get_local 2
get_local 1
i32.store offset=24
block ;; label = @3
get_local 0
i32.load offset=16
tee_local 3
i32.eqz
br_if 0 (;@3;)
get_local 2
get_local 3
i32.store offset=16
get_local 3
get_local 2
i32.store offset=24
end
get_local 0
i32.const 20
i32.add
i32.load
tee_local 3
i32.eqz
br_if 0 (;@2;)
get_local 2
i32.const 20
i32.add
get_local 3
i32.store
get_local 3
get_local 2
i32.store offset=24
end
return
end
i32.const 0
i32.const 0
i32.load offset=1120
i32.const -2
get_local 4
i32.rotl
i32.and
i32.store offset=1120)
(func $dlmalloc::dlmalloc::Dlmalloc::insert_large_chunk::hb692ef7ac6874b20 (type 5) (param i32 i32)
(local i32 i32 i32 i32)
i32.const 0
set_local 2
block ;; label = @1
get_local 1
i32.const 8
i32.shr_u
tee_local 3
i32.eqz
br_if 0 (;@1;)
i32.const 31
set_local 2
get_local 1
i32.const 16777215
i32.gt_u
br_if 0 (;@1;)
get_local 1
i32.const 38
get_local 3
i32.clz
tee_local 2
i32.sub
i32.const 31
i32.and
i32.shr_u
i32.const 1
i32.and
i32.const 31
get_local 2
i32.sub
i32.const 1
i32.shl
i32.or
set_local 2
end
get_local 0
get_local 2
i32.store offset=28
get_local 0
i64.const 0
i64.store offset=16 align=4
get_local 2
i32.const 2
i32.shl
i32.const 1388
i32.add
set_local 3
block ;; label = @1
block ;; label = @2
block ;; label = @3
block ;; label = @4
i32.const 0
i32.load offset=1120
tee_local 4
i32.const 1
get_local 2
i32.const 31
i32.and
i32.shl
tee_local 5
i32.and
i32.eqz
br_if 0 (;@4;)
get_local 3
i32.load
tee_local 4
i32.load offset=4
i32.const -8
i32.and
get_local 1
i32.ne
br_if 1 (;@3;)
get_local 4
set_local 2
br 2 (;@2;)
end
get_local 3
get_local 0
i32.store
i32.const 0
get_local 4
get_local 5
i32.or
i32.store offset=1120
get_local 0
get_local 3
i32.store offset=24
get_local 0
get_local 0
i32.store offset=8
get_local 0
get_local 0
i32.store offset=12
return
end
get_local 1
i32.const 0
i32.const 25
get_local 2
i32.const 1
i32.shr_u
i32.sub
i32.const 31
i32.and
get_local 2
i32.const 31
i32.eq
select
i32.shl
set_local 3
loop ;; label = @3
get_local 4
get_local 3
i32.const 29
i32.shr_u
i32.const 4
i32.and
i32.add
i32.const 16
i32.add
tee_local 5
i32.load
tee_local 2
i32.eqz
br_if 2 (;@1;)
get_local 3
i32.const 1
i32.shl
set_local 3
get_local 2
set_local 4
get_local 2
i32.load offset=4
i32.const -8
i32.and
get_local 1
i32.ne
br_if 0 (;@3;)
end
end
get_local 2
i32.load offset=8
tee_local 3
get_local 0
i32.store offset=12
get_local 2
get_local 0
i32.store offset=8
get_local 0
get_local 2
i32.store offset=12
get_local 0
get_local 3
i32.store offset=8
get_local 0
i32.const 0
i32.store offset=24
return
end
get_local 5
get_local 0
i32.store
get_local 0
get_local 4
i32.store offset=24
get_local 0
get_local 0
i32.store offset=12
get_local 0
get_local 0
i32.store offset=8)
(func $core::fmt::Formatter::pad_integral::__closure__::h09e9cab49bbd5a8d (type 2) (param i32 i32) (result i32)
(local i32 i32 i32 i32 i32)
get_global 0
i32.const 16
i32.sub
tee_local 2
set_global 0
block ;; label = @1
block ;; label = @2
get_local 0
i32.load
i32.load
tee_local 3
i32.const 1114112
i32.eq
br_if 0 (;@2;)
get_local 1
i32.const 28
i32.add
i32.load
set_local 4
get_local 1
i32.load offset=24
set_local 5
get_local 2
i32.const 0
i32.store offset=12
block ;; label = @3
block ;; label = @4
get_local 3
i32.const 127
i32.gt_u
br_if 0 (;@4;)
get_local 2
get_local 3
i32.store8 offset=12
i32.const 1
set_local 6
br 1 (;@3;)
end
block ;; label = @4
get_local 3
i32.const 2047
i32.gt_u
br_if 0 (;@4;)
get_local 2
get_local 3
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=13
get_local 2
get_local 3
i32.const 6
i32.shr_u
i32.const 31
i32.and
i32.const 192
i32.or
i32.store8 offset=12
i32.const 2
set_local 6
br 1 (;@3;)
end
block ;; label = @4
get_local 3
i32.const 65535
i32.gt_u
br_if 0 (;@4;)
get_local 2
get_local 3
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=14
get_local 2
get_local 3
i32.const 6
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=13
get_local 2
get_local 3
i32.const 12
i32.shr_u
i32.const 15
i32.and
i32.const 224
i32.or
i32.store8 offset=12
i32.const 3
set_local 6
br 1 (;@3;)
end
get_local 2
get_local 3
i32.const 18
i32.shr_u
i32.const 240
i32.or
i32.store8 offset=12
get_local 2
get_local 3
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=15
get_local 2
get_local 3
i32.const 12
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=13
get_local 2
get_local 3
i32.const 6
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=14
i32.const 4
set_local 6
end
i32.const 1
set_local 3
get_local 5
get_local 2
i32.const 12
i32.add
get_local 6
get_local 4
i32.load offset=12
call_indirect (type 3)
br_if 1 (;@1;)
end
block ;; label = @2
get_local 0
i32.load offset=4
i32.load8_u
i32.eqz
br_if 0 (;@2;)
get_local 1
i32.load offset=24
get_local 0
i32.load offset=8
tee_local 0
i32.load
get_local 0
i32.load offset=4
get_local 1
i32.const 28
i32.add
i32.load
i32.load offset=12
call_indirect (type 3)
set_local 3
br 1 (;@1;)
end
i32.const 0
set_local 3
end
get_local 2
i32.const 16
i32.add
set_global 0
get_local 3)
(func $core::panicking::panic_fmt::h4d53977031397ce1 (type 5) (param i32 i32)
get_local 0
i32.load
get_local 0
i32.load offset=4
get_local 0
i32.load offset=8
get_local 0
i32.const 12
i32.add
i32.load
get_local 0
i32.load offset=16
get_local 0
i32.const 20
i32.add
i32.load
get_local 1
i32.load
get_local 1
i32.load offset=4
get_local 1
i32.load offset=8
get_local 1
i32.load offset=12
call $rust_begin_unwind
unreachable)
(func $core::fmt::num::<impl_core::fmt::Display_for_usize>::fmt::h643baf2e84091bc0 (type 2) (param i32 i32) (result i32)
(local i32 i32 i32 i32 i32 i32 i32 i32)
get_global 0
i32.const 80
i32.sub
tee_local 2
set_global 0
i32.const 39
set_local 3
block ;; label = @1
block ;; label = @2
get_local 0
i32.load
tee_local 0
i32.const 10000
i32.lt_u
br_if 0 (;@2;)
i32.const 39
set_local 3
loop ;; label = @3
get_local 2
i32.const 9
i32.add
get_local 3
i32.add
tee_local 4
i32.const -4
i32.add
get_local 0
i32.const 10000
i32.div_u
tee_local 5
i32.const -10000
i32.mul
get_local 0
i32.add
tee_local 6
i32.const 100
i32.div_u
tee_local 7
i32.const 1
i32.shl
i32.const 1709
i32.add
i32.load16_u align=1
i32.store16 align=1
get_local 4
i32.const -2
i32.add
get_local 7
i32.const -100
i32.mul
get_local 6
i32.add
i32.const 1
i32.shl
i32.const 1709
i32.add
i32.load16_u align=1
i32.store16 align=1
get_local 3
i32.const -4
i32.add
set_local 3
get_local 0
i32.const 99999999
i32.gt_u
set_local 4
get_local 5
set_local 0
get_local 4
br_if 0 (;@3;)
br 2 (;@1;)
end
end
get_local 0
set_local 5
end
block ;; label = @1
block ;; label = @2
get_local 5
i32.const 100
i32.lt_s
br_if 0 (;@2;)
get_local 2
i32.const 9
i32.add
get_local 3
i32.const -2
i32.add
tee_local 3
i32.add
get_local 5
i32.const 100
i32.div_u
tee_local 0
i32.const -100
i32.mul
get_local 5
i32.add
i32.const 1
i32.shl
i32.const 1709
i32.add
i32.load16_u align=1
i32.store16 align=1
br 1 (;@1;)
end
get_local 5
set_local 0
end
block ;; label = @1
block ;; label = @2
get_local 0
i32.const 9
i32.gt_s
br_if 0 (;@2;)
get_local 2
i32.const 9
i32.add
get_local 3
i32.const -1
i32.add
tee_local 3
i32.add
tee_local 6
get_local 0
i32.const 48
i32.add
i32.store8
br 1 (;@1;)
end
get_local 2
i32.const 9
i32.add
get_local 3
i32.const -2
i32.add
tee_local 3
i32.add
tee_local 6
get_local 0
i32.const 1
i32.shl
i32.const 1709
i32.add
i32.load16_u align=1
i32.store16 align=1
end
get_local 2
i32.const 0
i32.store offset=52
get_local 2
i32.const 1708
i32.store offset=48
get_local 2
i32.const 1114112
i32.store offset=56
i32.const 39
get_local 3
i32.sub
tee_local 4
set_local 3
block ;; label = @1
get_local 1
i32.load
tee_local 0
i32.const 1
i32.and
i32.eqz
br_if 0 (;@1;)
get_local 2
i32.const 43
i32.store offset=56
get_local 4
i32.const 1
i32.add
set_local 3
end
get_local 2
get_local 0
i32.const 2
i32.shr_u
i32.const 1
i32.and
i32.store8 offset=63
get_local 1
i32.load offset=8
set_local 5
get_local 2
get_local 2
i32.const 63
i32.add
i32.store offset=68
get_local 2
get_local 2
i32.const 56
i32.add
i32.store offset=64
get_local 2
get_local 2
i32.const 48
i32.add
i32.store offset=72
block ;; label = @1
block ;; label = @2
block ;; label = @3
block ;; label = @4
block ;; label = @5
block ;; label = @6
block ;; label = @7
block ;; label = @8
block ;; label = @9
block ;; label = @10
block ;; label = @11
block ;; label = @12
block ;; label = @13
block ;; label = @14
block ;; label = @15
block ;; label = @16
block ;; label = @17
get_local 5
i32.const 1
i32.ne
br_if 0 (;@17;)
get_local 1
i32.const 12
i32.add
i32.load
tee_local 5
get_local 3
i32.le_u
br_if 1 (;@16;)
get_local 0
i32.const 8
i32.and
br_if 2 (;@15;)
get_local 5
get_local 3
i32.sub
set_local 3
i32.const 1
get_local 1
i32.load8_u offset=48
tee_local 0
get_local 0
i32.const 3
i32.eq
select
i32.const 3
i32.and
tee_local 0
i32.eqz
br_if 4 (;@13;)
get_local 0
i32.const 2
i32.eq
br_if 3 (;@14;)
i32.const 0
set_local 8
br 5 (;@12;)
end
get_local 2
i32.const 64
i32.add
get_local 1
call $core::fmt::Formatter::pad_integral::__closure__::h09e9cab49bbd5a8d
br_if 14 (;@2;)
get_local 1
i32.load offset=24
get_local 6
get_local 4
get_local 1
i32.const 28
i32.add
i32.load
i32.load offset=12
call_indirect (type 3)
set_local 0
br 15 (;@1;)
end
get_local 2
i32.const 64
i32.add
get_local 1
call $core::fmt::Formatter::pad_integral::__closure__::h09e9cab49bbd5a8d
br_if 13 (;@2;)
get_local 1
i32.load offset=24
get_local 6
get_local 4
get_local 1
i32.const 28
i32.add
i32.load
i32.load offset=12
call_indirect (type 3)
set_local 0
br 14 (;@1;)
end
get_local 1
i32.const 1
i32.store8 offset=48
get_local 1
i32.const 48
i32.store offset=4
get_local 2
i32.const 64
i32.add
get_local 1
call $core::fmt::Formatter::pad_integral::__closure__::h09e9cab49bbd5a8d
br_if 12 (;@2;)
get_local 5
get_local 3
i32.sub
set_local 9
i32.const 1
get_local 1
i32.const 48
i32.add
i32.load8_u
tee_local 0
get_local 0
i32.const 3
i32.eq
select
i32.const 3
i32.and
tee_local 0
i32.eqz
br_if 4 (;@10;)
get_local 0
i32.const 2
i32.eq
br_if 3 (;@11;)
i32.const 0
set_local 8
br 5 (;@9;)
end
get_local 3
i32.const 1
i32.add
i32.const 1
i32.shr_u
set_local 8
get_local 3
i32.const 1
i32.shr_u
set_local 3
br 1 (;@12;)
end
get_local 3
set_local 8
i32.const 0
set_local 3
end
get_local 2
i32.const 0
i32.store offset=76
block ;; label = @12
get_local 1
i32.load offset=4
tee_local 0
i32.const 127
i32.gt_u
br_if 0 (;@12;)
get_local 2
get_local 0
i32.store8 offset=76
i32.const 1
set_local 5
get_local 3
br_if 5 (;@7;)
br 6 (;@6;)
end
block ;; label = @12
get_local 0
i32.const 2047
i32.gt_u
br_if 0 (;@12;)
get_local 2
get_local 0
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=77
get_local 2
get_local 0
i32.const 6
i32.shr_u
i32.const 31
i32.and
i32.const 192
i32.or
i32.store8 offset=76
i32.const 2
set_local 5
get_local 3
br_if 5 (;@7;)
br 6 (;@6;)
end
get_local 0
i32.const 65535
i32.gt_u
br_if 3 (;@8;)
get_local 2
get_local 0
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=78
get_local 2
get_local 0
i32.const 6
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=77
get_local 2
get_local 0
i32.const 12
i32.shr_u
i32.const 15
i32.and
i32.const 224
i32.or
i32.store8 offset=76
i32.const 3
set_local 5
get_local 3
br_if 4 (;@7;)
br 5 (;@6;)
end
get_local 9
i32.const 1
i32.add
i32.const 1
i32.shr_u
set_local 8
get_local 9
i32.const 1
i32.shr_u
set_local 9
br 1 (;@9;)
end
get_local 9
set_local 8
i32.const 0
set_local 9
end
get_local 2
i32.const 0
i32.store offset=76
block ;; label = @9
get_local 1
i32.const 4
i32.add
i32.load
tee_local 0
i32.const 127
i32.gt_u
br_if 0 (;@9;)
get_local 2
get_local 0
i32.store8 offset=76
i32.const 1
set_local 7
br 5 (;@4;)
end
get_local 0
i32.const 2047
i32.gt_u
br_if 3 (;@5;)
get_local 2
get_local 0
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=77
get_local 2
get_local 0
i32.const 6
i32.shr_u
i32.const 31
i32.and
i32.const 192
i32.or
i32.store8 offset=76
i32.const 2
set_local 7
br 4 (;@4;)
end
get_local 2
get_local 0
i32.const 18
i32.shr_u
i32.const 240
i32.or
i32.store8 offset=76
get_local 2
get_local 0
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=79
get_local 2
get_local 0
i32.const 12
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=77
get_local 2
get_local 0
i32.const 6
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=78
i32.const 4
set_local 5
get_local 3
i32.eqz
br_if 1 (;@6;)
end
get_local 1
i32.const 28
i32.add
i32.load
i32.load offset=12
set_local 7
get_local 1
i32.load offset=24
set_local 9
i32.const 0
set_local 0
loop ;; label = @7
get_local 9
get_local 2
i32.const 76
i32.add
get_local 5
get_local 7
call_indirect (type 3)
br_if 5 (;@2;)
get_local 0
i32.const 1
i32.add
tee_local 0
get_local 3
i32.lt_u
br_if 0 (;@7;)
end
end
get_local 2
i32.const 64
i32.add
get_local 1
call $core::fmt::Formatter::pad_integral::__closure__::h09e9cab49bbd5a8d
br_if 3 (;@2;)
get_local 1
i32.load offset=24
tee_local 3
get_local 6
get_local 4
get_local 1
i32.const 28
i32.add
i32.load
i32.load offset=12
tee_local 7
call_indirect (type 3)
br_if 3 (;@2;)
get_local 8
i32.eqz
br_if 2 (;@3;)
i32.const 0
set_local 0
loop ;; label = @6
get_local 3
get_local 2
i32.const 76
i32.add
get_local 5
get_local 7
call_indirect (type 3)
br_if 4 (;@2;)
get_local 0
i32.const 1
i32.add
tee_local 0
get_local 8
i32.lt_u
br_if 0 (;@6;)
br 3 (;@3;)
end
end
block ;; label = @5
get_local 0
i32.const 65535
i32.gt_u
br_if 0 (;@5;)
get_local 2
get_local 0
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=78
get_local 2
get_local 0
i32.const 6
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=77
get_local 2
get_local 0
i32.const 12
i32.shr_u
i32.const 15
i32.and
i32.const 224
i32.or
i32.store8 offset=76
i32.const 3
set_local 7
br 1 (;@4;)
end
get_local 2
get_local 0
i32.const 18
i32.shr_u
i32.const 240
i32.or
i32.store8 offset=76
get_local 2
get_local 0
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=79
get_local 2
get_local 0
i32.const 12
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=77
get_local 2
get_local 0
i32.const 6
i32.shr_u
i32.const 63
i32.and
i32.const 128
i32.or
i32.store8 offset=78
i32.const 4
set_local 7
end
get_local 1
i32.const 28
i32.add
i32.load
i32.load offset=12
set_local 3
get_local 1
i32.load offset=24
set_local 5
block ;; label = @4
get_local 9
i32.eqz
br_if 0 (;@4;)
i32.const 0
set_local 0
loop ;; label = @5
get_local 5
get_local 2
i32.const 76
i32.add
get_local 7
get_local 3
call_indirect (type 3)
br_if 3 (;@2;)
get_local 0
i32.const 1
i32.add
tee_local 0
get_local 9
i32.lt_u
br_if 0 (;@5;)
end
end
get_local 5
get_local 6
get_local 4
get_local 3
call_indirect (type 3)
br_if 1 (;@2;)
get_local 8
i32.eqz
br_if 0 (;@3;)
i32.const 0
set_local 0
loop ;; label = @4
get_local 5
get_local 2
i32.const 76
i32.add
get_local 7
get_local 3
call_indirect (type 3)
br_if 2 (;@2;)
get_local 0
i32.const 1
i32.add
tee_local 0
get_local 8
i32.lt_u
br_if 0 (;@4;)
end
end
i32.const 0
set_local 0
br 1 (;@1;)
end
i32.const 1
set_local 0
end
get_local 2
i32.const 80
i32.add
set_global 0
get_local 0)
(func $memcpy (type 3) (param i32 i32 i32) (result i32)
(local i32)
block ;; label = @1
get_local 2
i32.eqz
br_if 0 (;@1;)
get_local 0
set_local 3
loop ;; label = @2
get_local 3
get_local 1
i32.load8_u
i32.store8
get_local 1
i32.const 1
i32.add
set_local 1
get_local 3
i32.const 1
i32.add
set_local 3
get_local 2
i32.const -1
i32.add
tee_local 2
br_if 0 (;@2;)
end
end
get_local 0)
(table (;0;) 2 2 anyfunc)
(memory (;0;) 17)
(global (;0;) (mut i32) (i32.const 1050544))
(export "memory" (memory 0))
(export "hash_with_key" (func $hash_with_key))
(export "table_index" (func $table_index))
(export "__wbindgen_global_argument_ptr" (func $__wbindgen_global_argument_ptr))
(export "__wbindgen_malloc" (func $__wbindgen_malloc))
(export "__wbindgen_free" (func $__wbindgen_free))
(elem (i32.const 1) $core::fmt::num::<impl_core::fmt::Display_for_usize>::fmt::h643baf2e84091bc0)
(data (i32.const 1024) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
(data (i32.const 1572) "invalid malloc request\00\00\01\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\01\00\00\00\01\00\00\00 \00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00\00\00\00\00\03\00\00\00index out of range for slice of length \0000010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899libcore/slice/mod.rs")
(data (i32.const 1932) "\84\06\00\00\06\00\00\00\8a\06\00\00\22\00\00\00u\07\00\00\14\00\00\00\d0\08\00\00\05\00\00\00"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment