(module $hello.wasm (type (;0;) (func (param i32 i32 i32) (result i32))) (type (;1;) (func (param i32 i64 i32) (result i64))) (type (;2;) (func (param i32) (result i32))) (type (;3;) (func (param i32 i32) (result i32))) (type (;4;) (func (param i32 i64 i32 i32) (result i32))) (type (;5;) (func (param i32 i32 i32 i32) (result i32))) (type (;6;) (func (param i32))) (type (;7;) (func)) (type (;8;) (func (result i32))) (import "wasi_snapshot_preview1" "fd_close" (func $__imported_wasi_snapshot_preview1_fd_close (type 2))) (import "wasi_snapshot_preview1" "fd_fdstat_get" (func $__imported_wasi_snapshot_preview1_fd_fdstat_get (type 3))) (import "wasi_snapshot_preview1" "fd_seek" (func $__imported_wasi_snapshot_preview1_fd_seek (type 4))) (import "wasi_snapshot_preview1" "fd_write" (func $__imported_wasi_snapshot_preview1_fd_write (type 5))) (import "wasi_snapshot_preview1" "proc_exit" (func $__imported_wasi_snapshot_preview1_proc_exit (type 6))) (func $__wasm_call_ctors (type 7)) (func $_start (type 7) (local i32) block ;; label = @1 block ;; label = @2 global.get $GOT.data.internal.__memory_base i32.const 1168 i32.add i32.load br_if 0 (;@2;) global.get $GOT.data.internal.__memory_base i32.const 1168 i32.add i32.const 1 i32.store call $__wasm_call_ctors call $__original_main local.set 0 call $__wasm_call_dtors local.get 0 br_if 1 (;@1;) return end unreachable end local.get 0 call $__wasi_proc_exit unreachable) (func $__original_main (type 8) (result i32) i32.const 1024 call $puts drop i32.const 0) (func $__wasi_fd_close (type 2) (param i32) (result i32) local.get 0 call $__imported_wasi_snapshot_preview1_fd_close i32.const 65535 i32.and) (func $__wasi_fd_fdstat_get (type 3) (param i32 i32) (result i32) local.get 0 local.get 1 call $__imported_wasi_snapshot_preview1_fd_fdstat_get i32.const 65535 i32.and) (func $__wasi_fd_seek (type 4) (param i32 i64 i32 i32) (result i32) local.get 0 local.get 1 local.get 2 local.get 3 call $__imported_wasi_snapshot_preview1_fd_seek i32.const 65535 i32.and) (func $__wasi_fd_write (type 5) (param i32 i32 i32 i32) (result i32) local.get 0 local.get 1 local.get 2 local.get 3 call $__imported_wasi_snapshot_preview1_fd_write i32.const 65535 i32.and) (func $__wasi_proc_exit (type 6) (param i32) local.get 0 call $__imported_wasi_snapshot_preview1_proc_exit unreachable) (func $dummy (type 7)) (func $__wasm_call_dtors (type 7) call $dummy call $__stdio_exit) (func $__ofl_lock (type 8) (result i32) i32.const 1172) (func $__stdio_exit (type 7) (local i32 i32 i32) block ;; label = @1 call $__ofl_lock i32.load local.tee 0 i32.eqz br_if 0 (;@1;) loop ;; label = @2 block ;; label = @3 local.get 0 i32.load offset=20 local.get 0 i32.load offset=24 i32.eq br_if 0 (;@3;) local.get 0 i32.const 0 i32.const 0 local.get 0 i32.load offset=32 call_indirect (type 0) drop end block ;; label = @3 local.get 0 i32.load offset=4 local.tee 1 local.get 0 i32.load offset=8 local.tee 2 i32.eq br_if 0 (;@3;) local.get 0 local.get 1 local.get 2 i32.sub i64.extend_i32_s i32.const 1 local.get 0 i32.load offset=36 call_indirect (type 1) drop end local.get 0 i32.load offset=52 local.tee 0 br_if 0 (;@2;) end end block ;; label = @1 i32.const 0 i32.load offset=1176 local.tee 0 i32.eqz br_if 0 (;@1;) block ;; label = @2 local.get 0 i32.load offset=20 local.get 0 i32.load offset=24 i32.eq br_if 0 (;@2;) local.get 0 i32.const 0 i32.const 0 local.get 0 i32.load offset=32 call_indirect (type 0) drop end local.get 0 i32.load offset=4 local.tee 1 local.get 0 i32.load offset=8 local.tee 2 i32.eq br_if 0 (;@1;) local.get 0 local.get 1 local.get 2 i32.sub i64.extend_i32_s i32.const 1 local.get 0 i32.load offset=36 call_indirect (type 1) drop end block ;; label = @1 i32.const 0 i32.load offset=1152 local.tee 0 i32.eqz br_if 0 (;@1;) block ;; label = @2 local.get 0 i32.load offset=20 local.get 0 i32.load offset=24 i32.eq br_if 0 (;@2;) local.get 0 i32.const 0 i32.const 0 local.get 0 i32.load offset=32 call_indirect (type 0) drop end local.get 0 i32.load offset=4 local.tee 1 local.get 0 i32.load offset=8 local.tee 2 i32.eq br_if 0 (;@1;) local.get 0 local.get 1 local.get 2 i32.sub i64.extend_i32_s i32.const 1 local.get 0 i32.load offset=36 call_indirect (type 1) drop end block ;; label = @1 i32.const 0 i32.load offset=1176 local.tee 0 i32.eqz br_if 0 (;@1;) block ;; label = @2 local.get 0 i32.load offset=20 local.get 0 i32.load offset=24 i32.eq br_if 0 (;@2;) local.get 0 i32.const 0 i32.const 0 local.get 0 i32.load offset=32 call_indirect (type 0) drop end local.get 0 i32.load offset=4 local.tee 1 local.get 0 i32.load offset=8 local.tee 2 i32.eq br_if 0 (;@1;) local.get 0 local.get 1 local.get 2 i32.sub i64.extend_i32_s i32.const 1 local.get 0 i32.load offset=36 call_indirect (type 1) drop end) (func $__towrite (type 2) (param i32) (result i32) (local i32) local.get 0 local.get 0 i32.load offset=60 local.tee 1 i32.const -1 i32.add local.get 1 i32.or i32.store offset=60 block ;; label = @1 local.get 0 i32.load local.tee 1 i32.const 8 i32.and i32.eqz br_if 0 (;@1;) local.get 0 local.get 1 i32.const 32 i32.or i32.store i32.const -1 return end local.get 0 i64.const 0 i64.store offset=4 align=4 local.get 0 local.get 0 i32.load offset=40 local.tee 1 i32.store offset=24 local.get 0 local.get 1 i32.store offset=20 local.get 0 local.get 1 local.get 0 i32.load offset=44 i32.add i32.store offset=16 i32.const 0) (func $fwrite (type 5) (param i32 i32 i32 i32) (result i32) (local i32 i32 i32 i32 i32) local.get 2 local.get 1 i32.mul local.set 4 block ;; label = @1 block ;; label = @2 local.get 3 i32.load offset=16 local.tee 5 br_if 0 (;@2;) i32.const 0 local.set 6 local.get 3 call $__towrite br_if 1 (;@1;) local.get 3 i32.load offset=16 local.set 5 end block ;; label = @2 local.get 4 local.get 5 local.get 3 i32.load offset=20 local.tee 7 i32.sub i32.le_u br_if 0 (;@2;) local.get 3 local.get 0 local.get 4 local.get 3 i32.load offset=32 call_indirect (type 0) local.set 6 br 1 (;@1;) end i32.const 0 local.set 8 block ;; label = @2 block ;; label = @3 local.get 4 br_if 0 (;@3;) local.get 4 local.set 5 br 1 (;@2;) end i32.const 0 local.set 5 block ;; label = @3 local.get 3 i32.load offset=64 i32.const 0 i32.ge_s br_if 0 (;@3;) local.get 4 local.set 5 br 1 (;@2;) end local.get 0 local.get 4 i32.add local.set 6 block ;; label = @3 loop ;; label = @4 local.get 6 local.get 5 i32.add i32.const -1 i32.add i32.load8_u i32.const 10 i32.eq br_if 1 (;@3;) local.get 4 local.get 5 i32.const -1 i32.add local.tee 5 i32.add br_if 0 (;@4;) end i32.const 0 local.set 8 local.get 4 local.set 5 br 1 (;@2;) end local.get 3 local.get 0 local.get 4 local.get 5 i32.add local.tee 8 local.get 3 i32.load offset=32 call_indirect (type 0) local.tee 6 local.get 8 i32.lt_u br_if 1 (;@1;) local.get 8 local.get 0 i32.add local.set 0 i32.const 0 local.get 5 i32.sub local.set 5 local.get 3 i32.load offset=20 local.set 7 end block ;; label = @2 local.get 5 i32.eqz br_if 0 (;@2;) local.get 7 local.get 0 local.get 5 memory.copy end local.get 3 local.get 3 i32.load offset=20 local.get 5 i32.add i32.store offset=20 local.get 8 local.get 5 i32.add local.set 6 end block ;; label = @1 local.get 6 local.get 4 i32.ne br_if 0 (;@1;) local.get 2 i32.const 0 local.get 1 select return end local.get 6 local.get 1 i32.div_u) (func $fputs (type 3) (param i32 i32) (result i32) (local i32) local.get 0 call $strlen local.set 2 i32.const -1 i32.const 0 local.get 2 local.get 0 i32.const 1 local.get 2 local.get 1 call $fwrite i32.ne select) (func $__overflow (type 3) (param i32 i32) (result i32) (local i32 i32 i32) global.get $__stack_pointer i32.const 16 i32.sub local.tee 2 global.set $__stack_pointer local.get 2 local.get 1 i32.store8 offset=15 block ;; label = @1 block ;; label = @2 local.get 0 i32.load offset=16 local.tee 3 br_if 0 (;@2;) block ;; label = @3 local.get 0 call $__towrite i32.eqz br_if 0 (;@3;) i32.const -1 local.set 3 br 2 (;@1;) end local.get 0 i32.load offset=16 local.set 3 end block ;; label = @2 local.get 0 i32.load offset=20 local.tee 4 local.get 3 i32.eq br_if 0 (;@2;) local.get 0 i32.load offset=64 local.get 1 i32.const 255 i32.and local.tee 3 i32.eq br_if 0 (;@2;) local.get 0 local.get 4 i32.const 1 i32.add i32.store offset=20 local.get 4 local.get 1 i32.store8 br 1 (;@1;) end block ;; label = @2 local.get 0 local.get 2 i32.const 15 i32.add i32.const 1 local.get 0 i32.load offset=32 call_indirect (type 0) i32.const 1 i32.eq br_if 0 (;@2;) i32.const -1 local.set 3 br 1 (;@1;) end local.get 2 i32.load8_u offset=15 local.set 3 end local.get 2 i32.const 16 i32.add global.set $__stack_pointer local.get 3) (func $puts (type 2) (param i32) (result i32) block ;; label = @1 local.get 0 i32.const 1040 call $fputs i32.const 0 i32.ge_s br_if 0 (;@1;) i32.const -1 return end block ;; label = @1 i32.const 0 i32.load offset=1104 i32.const 10 i32.eq br_if 0 (;@1;) i32.const 0 i32.load offset=1060 local.tee 0 i32.const 0 i32.load offset=1056 i32.eq br_if 0 (;@1;) i32.const 0 local.get 0 i32.const 1 i32.add i32.store offset=1060 local.get 0 i32.const 10 i32.store8 i32.const 0 return end i32.const 1040 i32.const 10 call $__overflow i32.const 31 i32.shr_s) (func $__wasilibc_populate_preopens (type 7)) (func $close (type 2) (param i32) (result i32) call $__wasilibc_populate_preopens block ;; label = @1 local.get 0 call $__wasi_fd_close local.tee 0 br_if 0 (;@1;) i32.const 0 return end i32.const 0 local.get 0 i32.store offset=1180 i32.const -1) (func $__stdio_close (type 2) (param i32) (result i32) local.get 0 i32.load offset=56 call $close) (func $writev (type 0) (param i32 i32 i32) (result i32) (local i32 i32) global.get $__stack_pointer i32.const 16 i32.sub local.tee 3 global.set $__stack_pointer i32.const -1 local.set 4 block ;; label = @1 block ;; label = @2 local.get 2 i32.const -1 i32.gt_s br_if 0 (;@2;) i32.const 0 i32.const 28 i32.store offset=1180 br 1 (;@1;) end block ;; label = @2 local.get 0 local.get 1 local.get 2 local.get 3 i32.const 12 i32.add call $__wasi_fd_write local.tee 2 i32.eqz br_if 0 (;@2;) i32.const 0 local.get 2 i32.store offset=1180 i32.const -1 local.set 4 br 1 (;@1;) end local.get 3 i32.load offset=12 local.set 4 end local.get 3 i32.const 16 i32.add global.set $__stack_pointer local.get 4) (func $__stdio_write (type 0) (param i32 i32 i32) (result i32) (local i32 i32 i32 i32 i32 i32 i32) global.get $__stack_pointer i32.const 16 i32.sub local.tee 3 global.set $__stack_pointer local.get 3 local.get 2 i32.store offset=12 local.get 3 local.get 1 i32.store offset=8 local.get 3 local.get 0 i32.load offset=24 local.tee 1 i32.store local.get 3 local.get 0 i32.load offset=20 local.get 1 i32.sub local.tee 4 i32.store offset=4 i32.const 2 local.set 5 block ;; label = @1 block ;; label = @2 local.get 0 i32.load offset=56 local.get 3 i32.const 2 call $writev local.tee 1 local.get 4 local.get 2 i32.add local.tee 6 i32.eq br_if 0 (;@2;) local.get 3 local.set 4 loop ;; label = @3 block ;; label = @4 local.get 1 i32.const -1 i32.gt_s br_if 0 (;@4;) i32.const 0 local.set 1 local.get 0 i32.const 0 i32.store offset=24 local.get 0 i64.const 0 i64.store offset=16 local.get 0 local.get 0 i32.load i32.const 32 i32.or i32.store local.get 5 i32.const 2 i32.eq br_if 3 (;@1;) local.get 2 local.get 4 i32.load offset=4 i32.sub local.set 1 br 3 (;@1;) end local.get 4 i32.const 8 i32.const 0 local.get 1 local.get 4 i32.load offset=4 local.tee 7 i32.gt_u local.tee 8 select i32.add local.tee 9 local.get 9 i32.load local.get 1 local.get 7 i32.const 0 local.get 8 select i32.sub local.tee 7 i32.add i32.store local.get 4 i32.const 12 i32.const 4 local.get 8 select i32.add local.tee 4 local.get 4 i32.load local.get 7 i32.sub i32.store local.get 9 local.set 4 local.get 6 local.get 1 i32.sub local.tee 6 local.get 0 i32.load offset=56 local.get 9 local.get 5 local.get 8 i32.sub local.tee 5 call $writev local.tee 1 i32.ne br_if 0 (;@3;) end end local.get 0 local.get 0 i32.load offset=40 local.tee 1 i32.store offset=24 local.get 0 local.get 1 i32.store offset=20 local.get 0 local.get 1 local.get 0 i32.load offset=44 i32.add i32.store offset=16 local.get 2 local.set 1 end local.get 3 i32.const 16 i32.add global.set $__stack_pointer local.get 1) (func $__isatty (type 2) (param i32) (result i32) (local i32 i32) global.get $__stack_pointer i32.const 32 i32.sub local.tee 1 global.set $__stack_pointer block ;; label = @1 block ;; label = @2 local.get 0 local.get 1 i32.const 8 i32.add call $__wasi_fd_fdstat_get local.tee 0 br_if 0 (;@2;) i32.const 59 local.set 0 local.get 1 i32.load8_u offset=8 i32.const 2 i32.ne br_if 0 (;@2;) local.get 1 i32.load8_u offset=16 i32.const 36 i32.and br_if 0 (;@2;) i32.const 1 local.set 2 br 1 (;@1;) end i32.const 0 local.set 2 i32.const 0 local.get 0 i32.store offset=1180 end local.get 1 i32.const 32 i32.add global.set $__stack_pointer local.get 2) (func $__stdout_write (type 0) (param i32 i32 i32) (result i32) local.get 0 i32.const 1 i32.store offset=32 block ;; label = @1 local.get 0 i32.load8_u i32.const 64 i32.and br_if 0 (;@1;) local.get 0 i32.load offset=56 call $__isatty br_if 0 (;@1;) local.get 0 i32.const -1 i32.store offset=64 end local.get 0 local.get 1 local.get 2 call $__stdio_write) (func $__lseek (type 1) (param i32 i64 i32) (result i64) (local i32) global.get $__stack_pointer i32.const 16 i32.sub local.tee 3 global.set $__stack_pointer block ;; label = @1 block ;; label = @2 local.get 0 local.get 1 local.get 2 i32.const 255 i32.and local.get 3 i32.const 8 i32.add call $__wasi_fd_seek local.tee 2 i32.eqz br_if 0 (;@2;) i32.const 0 i32.const 70 local.get 2 local.get 2 i32.const 76 i32.eq select i32.store offset=1180 i64.const -1 local.set 1 br 1 (;@1;) end local.get 3 i64.load offset=8 local.set 1 end local.get 3 i32.const 16 i32.add global.set $__stack_pointer local.get 1) (func $__stdio_seek (type 1) (param i32 i64 i32) (result i64) local.get 0 i32.load offset=56 local.get 1 local.get 2 call $__lseek) (func $strlen (type 2) (param i32) (result i32) (local i32 i32 i32) local.get 0 local.set 1 block ;; label = @1 block ;; label = @2 local.get 0 i32.const 3 i32.and i32.eqz br_if 0 (;@2;) block ;; label = @3 local.get 0 i32.load8_u br_if 0 (;@3;) local.get 0 local.get 0 i32.sub return end local.get 0 i32.const 1 i32.add local.tee 1 i32.const 3 i32.and i32.eqz br_if 0 (;@2;) local.get 1 i32.load8_u i32.eqz br_if 1 (;@1;) local.get 0 i32.const 2 i32.add local.tee 1 i32.const 3 i32.and i32.eqz br_if 0 (;@2;) local.get 1 i32.load8_u i32.eqz br_if 1 (;@1;) local.get 0 i32.const 3 i32.add local.tee 1 i32.const 3 i32.and i32.eqz br_if 0 (;@2;) local.get 1 i32.load8_u i32.eqz br_if 1 (;@1;) local.get 0 i32.const 4 i32.add local.tee 1 i32.const 3 i32.and br_if 1 (;@1;) end local.get 1 i32.const -4 i32.add local.set 2 local.get 1 i32.const -5 i32.add local.set 1 loop ;; label = @2 local.get 1 i32.const 4 i32.add local.set 1 i32.const 16843008 local.get 2 i32.const 4 i32.add local.tee 2 i32.load local.tee 3 i32.sub local.get 3 i32.or i32.const -2139062144 i32.and i32.const -2139062144 i32.eq br_if 0 (;@2;) end loop ;; label = @2 local.get 1 i32.const 1 i32.add local.set 1 local.get 2 i32.load8_u local.set 3 local.get 2 i32.const 1 i32.add local.set 2 local.get 3 br_if 0 (;@2;) end end local.get 1 local.get 0 i32.sub) (table (;0;) 5 5 funcref) (memory (;0;) 2) (global $__stack_pointer (mut i32) (i32.const 67760)) (global $GOT.data.internal.__memory_base i32 (i32.const 0)) (export "memory" (memory 0)) (export "_start" (func $_start)) (elem (;0;) (i32.const 1) func $__stdio_write $__stdio_close $__stdout_write $__stdio_seek) (data $.rodata (i32.const 1024) "Hello World!\00") (data $.data (i32.const 1040) "\05\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00\a8\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\0a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\04\00\00"))