(module (type $0 (func (param i32 i64))) (type $1 (func)) (type $2 (func (result i32))) (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32))) (type $5 (func (param i32))) (type $6 (func (param i32 i32) (result i32))) (memory $0 0) (export "load-off-2" (func $load-off-2)) (func $f (type $0) (param $i1 i32) (param $i2 i64) (if (i32.eqz (get_local $i1) ) (drop (i32.const 10) ) ) (if (get_local $i1) (drop (i32.const 12) ) (drop (i32.const 11) ) ) (if (i64.eqz (get_local $i2) ) (drop (i32.const 11) ) (drop (i32.const 12) ) ) (drop (i32.le_s (i32.const 1) (i32.const 2) ) ) (drop (i32.lt_s (i32.const 1) (i32.const 2) ) ) (drop (i32.ge_s (i32.const 1) (i32.const 2) ) ) (drop (i32.gt_s (i32.const 1) (i32.const 2) ) ) (drop (i32.le_u (i32.const 1) (i32.const 2) ) ) (drop (i32.lt_u (i32.const 1) (i32.const 2) ) ) (drop (i32.ge_u (i32.const 1) (i32.const 2) ) ) (drop (i32.gt_u (i32.const 1) (i32.const 2) ) ) (drop (i32.eqz (f32.gt (f32.const 1) (f32.const 2) ) ) ) (drop (i32.eqz (f32.ge (f32.const 1) (f32.const 2) ) ) ) (drop (i32.eqz (f32.lt (f32.const 1) (f32.const 2) ) ) ) (drop (i32.eqz (f32.le (f32.const 1) (f32.const 2) ) ) ) (drop (i32.eqz (f64.gt (f64.const 1) (f64.const 2) ) ) ) (drop (i32.eqz (f64.ge (f64.const 1) (f64.const 2) ) ) ) (drop (i32.eqz (f64.lt (f64.const 1) (f64.const 2) ) ) ) (drop (i32.eqz (f64.le (f64.const 1) (f64.const 2) ) ) ) (drop (f32.ne (f32.const 1) (f32.const 2) ) ) (drop (f32.eq (f32.const 1) (f32.const 2) ) ) (drop (f64.ne (f64.const 1) (f64.const 2) ) ) (drop (f64.eq (f64.const 1) (f64.const 2) ) ) (drop (i32.eqz (i32.const 100) ) ) (drop (i32.eq (i32.const 0) (i32.const 100) ) ) (drop (i32.eqz (i32.const 0) ) ) (if (i32.const 123) (nop) ) (drop (select (i32.const 102) (i32.const 101) (get_local $i1) ) ) (drop (select (tee_local $i1 (i32.const 103) ) (tee_local $i1 (i32.const 104) ) (i32.eqz (get_local $i1) ) ) ) (drop (select (i32.const 0) (i32.const 1) (i32.const 2) ) ) ) (func $load-store (type $1) (drop (i32.load8_u (i32.const 0) ) ) (drop (i32.load8_u (i32.const 1) ) ) (drop (i32.and (i32.load8_s (i32.const 2) ) (i32.const 254) ) ) (drop (i32.and (i32.load8_u (i32.const 3) ) (i32.const 1) ) ) (drop (i32.load16_u (i32.const 4) ) ) (drop (i32.load16_u (i32.const 5) ) ) (drop (i32.and (i32.load16_s (i32.const 6) ) (i32.const 65534) ) ) (drop (i32.and (i32.load16_u (i32.const 7) ) (i32.const 1) ) ) (i32.store8 (i32.const 8) (i32.const -1) ) (i32.store8 (i32.const 9) (i32.and (i32.const -2) (i32.const 254) ) ) (i32.store16 (i32.const 10) (i32.const -3) ) (i32.store16 (i32.const 11) (i32.and (i32.const -4) (i32.const 65534) ) ) (i64.store8 (i32.const 11) (i64.const 1) ) (i64.store16 (i32.const 11) (i64.const 2) ) (i64.store32 (i32.const 11) (i64.const 3) ) ) (func $and-neg1 (type $1) (drop (i32.const 100) ) (drop (i32.and (i32.const 100) (i32.const 1) ) ) ) (func $and-pos1 (type $1) (drop (i32.eqz (i32.const 1000) ) ) (drop (i32.eqz (i32.const 1000) ) ) (drop (i32.and (i32.const 100) (i32.const 1) ) ) (drop (i32.lt_s (i32.const 2000) (i32.const 3000) ) ) ) (func $canonicalize-binary (type $1) (drop (i32.and (unreachable) (i32.const 1) ) ) (drop (i32.and (unreachable) (i32.const 1) ) ) (drop (i32.div_s (unreachable) (i32.const 1) ) ) (drop (i32.div_s (i32.const 1) (unreachable) ) ) ) (func $ne0 (type $2) (result i32) (if (call $ne0) (nop) ) (if (call $ne0) (nop) ) (if (i32.or (call $ne0) (call $ne0) ) (nop) ) (if (i32.and (i32.ne (call $ne0) (i32.const 0) ) (i32.ne (call $ne0) (i32.const 0) ) ) (nop) ) (i32.const 1) ) (func $recurse-bool (type $1) (if (if i32 (i32.const 1) (call $ne0) (call $ne0) ) (nop) ) (if (block $block i32 (nop) (call $ne0) ) (nop) ) ) (func $load-off-2 (type $3) (param $0 i32) (result i32) (i32.store (i32.const 6) (get_local $0) ) (i32.store (i32.const 6) (get_local $0) ) (i32.store offset=2 (i32.add (get_local $0) (i32.const 5) ) (get_local $0) ) (i32.store offset=2 (i32.add (get_local $0) (i32.const 7) ) (get_local $0) ) (i32.store offset=2 (i32.add (get_local $0) (i32.const -11) ) (get_local $0) ) (i32.store offset=2 (i32.add (get_local $0) (i32.const -13) ) (get_local $0) ) (i32.store (i32.const 4) (get_local $0) ) (i32.store (i32.const 0) (get_local $0) ) (i32.store (i32.const 25) (get_local $0) ) (i32.store (i32.const -23) (get_local $0) ) (drop (i32.load (i32.const 8) ) ) (drop (i32.load (i32.const 8) ) ) (drop (i32.load offset=2 (i32.add (get_local $0) (i32.const 6) ) ) ) (drop (i32.load (i32.const 10) ) ) (i32.load offset=2 (i32.add (get_local $0) (i32.const 10) ) ) ) (func $sign-ext (type $4) (param $0 i32) (param $1 i32) (drop (i32.eqz (i32.and (get_local $0) (i32.const 255) ) ) ) (drop (i32.eqz (i32.and (get_local $0) (i32.const 65535) ) ) ) (drop (i32.eqz (i32.and (get_local $0) (i32.const 134217727) ) ) ) (drop (i32.eq (i32.and (get_local $0) (i32.const 255) ) (i32.const 100) ) ) (drop (i32.eq (i32.and (get_local $0) (i32.const 255) ) (i32.const -2147483648) ) ) (drop (i32.eq (i32.and (get_local $0) (i32.const 255) ) (i32.const 107) ) ) (drop (i32.eq (i32.and (get_local $0) (i32.const 255) ) (i32.and (get_local $1) (i32.const 255) ) ) ) (drop (i32.eq (i32.and (get_local $0) (i32.const 65535) ) (i32.and (get_local $1) (i32.const 65535) ) ) ) (drop (i32.eqz (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 23) ) ) ) (drop (i32.eqz (i32.shr_u (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) ) (drop (i32.lt_s (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) (i32.const 0) ) ) ) (func $sign-ext-input (type $4) (param $0 i32) (param $1 i32) (drop (i32.const 100) ) (drop (i32.const 127) ) (drop (i32.shr_s (i32.shl (i32.const 128) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (unreachable) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (i32.div_s (i32.const 1) (i32.const 2) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.and (i32.const 127) (i32.const 128) ) ) (drop (i32.shr_s (i32.shl (i32.and (i32.const 128) (i32.const 129) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.xor (i32.const 127) (i32.const 126) ) ) (drop (i32.shr_s (i32.shl (i32.xor (i32.const 127) (i32.const 128) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.or (i32.const 127) (i32.const 126) ) ) (drop (i32.shr_s (i32.shl (i32.or (i32.const 127) (i32.const 128) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (i32.const 32) (i32.const 26) ) (i32.const 24) ) ) (drop (i32.shl (i32.const 32) (i32.const 1) ) ) (drop (i32.shr_s (i32.shl (i32.const 32) (i32.const 59) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (i32.shr_u (i32.const 256) (i32.const 1) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_u (i32.const 256) (i32.const 2) ) ) (drop (i32.shr_u (i32.const 128) (i32.const 35) ) ) (drop (i32.shr_s (i32.shl (i32.shr_s (i32.const 256) (i32.const 1) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.const 256) (i32.const 2) ) ) (drop (i32.shr_s (i32.const 128) (i32.const 35) ) ) (drop (i32.shr_s (i32.shl (i32.shr_s (i32.const -1) (i32.const 32) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.and (i32.const -1) (i32.const 2147483647) ) (i32.const 32) ) ) (drop (i32.ne (i32.const -1) (i32.const -1) ) ) (drop (f32.le (f32.const -1) (f32.const -1) ) ) (drop (i32.clz (i32.const 0) ) ) (drop (i32.shl (i32.clz (i32.const 0) ) (i32.const 2) ) ) (drop (i32.shr_s (i32.shl (i32.clz (i32.const 0) ) (i32.const 27) ) (i32.const 24) ) ) (drop (i32.wrap/i64 (i64.clz (i64.const 0) ) ) ) (drop (i32.shl (i32.wrap/i64 (i64.clz (i64.const 0) ) ) (i32.const 1) ) ) (drop (i32.shr_s (i32.shl (i32.wrap/i64 (i64.clz (i64.const 0) ) ) (i32.const 26) ) (i32.const 24) ) ) (drop (i32.eqz (i32.const -1) ) ) (drop (i32.shr_s (i32.shl (i32.shr_u (i32.wrap/i64 (i64.const -1) ) (i32.const 24) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_u (i32.wrap/i64 (i64.const -1) ) (i32.const 25) ) ) (drop (i32.shr_s (i32.shl (i32.shr_u (i32.wrap/i64 (i64.extend_s/i32 (i32.const -1) ) ) (i32.const 24) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_u (i32.wrap/i64 (i64.extend_s/i32 (i32.const -1) ) ) (i32.const 25) ) ) (drop (i32.shr_s (i32.shl (i32.xor (i32.le_u (get_local $0) (i32.const 2) ) (get_local $0) ) (i32.const 24) ) (i32.const 24) ) ) ) (func $linear-sums (type $4) (param $0 i32) (param $1 i32) (drop (i32.add (get_local $1) (i32.shl (get_local $0) (i32.const 4) ) ) ) (drop (i32.add (i32.add (get_local $1) (i32.shl (get_local $0) (i32.const 3) ) ) (i32.const 12) ) ) (drop (i32.const 4) ) (drop (i32.const 18) ) (drop (i32.const 6) ) (drop (i32.const -4) ) (drop (i32.const 2) ) (drop (i32.const 1) ) (drop (i32.const 26) ) (drop (i32.const -20) ) (drop (i32.const 22) ) (drop (i32.add (i32.shl (i32.const 1) (get_local $0) ) (i32.const 14) ) ) (drop (i32.add (i32.shl (get_local $1) (i32.const 3) ) (i32.const -66) ) ) (drop (i32.const 44) ) (drop (i32.add (i32.mul (get_local $0) (i32.const 10) ) (i32.const 14) ) ) (drop (i32.add (i32.mul (get_local $0) (i32.const 2) ) (i32.const 34) ) ) (drop (get_local $0) ) ) (func $almost-sign-ext (type $4) (param $0 i32) (param $0 i32) (drop (i32.shr_s (i32.shl (i32.const 100) (i32.const 25) ) (i32.const 24) ) ) (drop (i32.shl (i32.const 50) (i32.const 1) ) ) ) (func $squaring (type $4) (param $0 i32) (param $1 i32) (drop (i32.and (get_local $0) (i32.const 8) ) ) (drop (i32.and (i32.and (get_local $0) (i32.const 11) ) (get_local $0) ) ) (drop (i32.and (get_local $0) (i32.const 8) ) ) (drop (i32.or (get_local $0) (i32.const 203) ) ) (drop (i32.shl (get_local $0) (i32.const 211) ) ) (drop (i32.shr_s (get_local $0) (i32.const 211) ) ) (drop (i32.shr_u (get_local $0) (i32.const 211) ) ) (drop (i32.shr_u (i32.shr_s (get_local $0) (i32.const 11) ) (i32.const 200) ) ) ) (func $sign-ext-ne (type $4) (param $0 i32) (param $1 i32) (drop (i32.ne (i32.and (get_local $0) (i32.const 255) ) (i32.const -2147483648) ) ) (drop (i32.ne (i32.and (get_local $0) (i32.const 255) ) (i32.const -2147483648) ) ) (drop (i32.ne (i32.and (get_local $0) (i32.const 255) ) (i32.const 107) ) ) (drop (i32.ne (i32.and (get_local $0) (i32.const 255) ) (i32.const 111) ) ) (drop (i32.ne (i32.and (get_local $0) (i32.const 255) ) (i32.and (get_local $1) (i32.const 255) ) ) ) ) (func $sign-ext-eqz (type $4) (param $0 i32) (param $1 i32) (drop (i32.eqz (i32.and (get_local $0) (i32.const 255) ) ) ) ) (func $sign-ext-boolean (type $4) (param $0 i32) (param $1 i32) (drop (if i32 (i32.and (get_local $0) (i32.const 255) ) (i32.const 100) (i32.const 200) ) ) ) (func $add-sub-zero (type $4) (param $0 i32) (param $1 i32) (drop (get_local $0) ) (drop (get_local $0) ) ) (func $store-signext (type $5) (param $0 i32) (i32.store8 (i32.const 8) (get_local $0) ) (i32.store8 (i32.const 8) (i32.shr_s (i32.shl (get_local $0) (i32.const 25) ) (i32.const 25) ) ) (i32.store8 (i32.const 8) (get_local $0) ) (i32.store16 (i32.const 8) (get_local $0) ) (i32.store16 (i32.const 8) (i32.shr_s (i32.shl (get_local $0) (i32.const 17) ) (i32.const 17) ) ) (i32.store16 (i32.const 8) (get_local $0) ) (i32.store (i32.const 8) (i32.shr_s (i32.shl (get_local $0) (i32.const 16) ) (i32.const 16) ) ) (i32.store (i32.const 8) (i32.shr_s (i32.shl (get_local $0) (i32.const 8) ) (i32.const 8) ) ) ) (func $sign-ext-tee (type $4) (param $0 i32) (param $1 i32) (drop (i32.shr_s (i32.shl (tee_local $0 (i32.const 128) ) (i32.const 24) ) (i32.const 24) ) ) (drop (tee_local $0 (i32.const 127) ) ) ) (func $sign-ext-load (type $4) (param $0 i32) (param $1 i32) (drop (i32.load8_s (i32.const 256) ) ) (drop (i32.shr_s (i32.shl (i32.shr_u (i32.load8_s (i32.const 256) ) (i32.const 1) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_u (i32.load8_u (i32.const 256) ) (i32.const 1) ) ) (drop (i32.load16_s (i32.const 256) ) ) (drop (tee_local $1 (i32.load8_s (i32.const 1) ) ) ) (drop (i32.shr_s (i32.shl (tee_local $1 (i32.load8_u (i32.const 1) ) ) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.and (tee_local $1 (i32.load8_s (i32.const 1) ) ) (i32.const 255) ) ) (drop (tee_local $1 (i32.load8_u (i32.const 1) ) ) ) ) (func $mask-bits (type $4) (param $0 i32) (param $1 i32) (drop (tee_local $0 (i32.const 127) ) ) (drop (tee_local $0 (i32.const 128) ) ) (drop (i32.and (tee_local $0 (i32.const 128) ) (i32.const 254) ) ) (drop (i32.and (tee_local $0 (i32.const 128) ) (i32.const 1279) ) ) (drop (i32.and (tee_local $0 (i32.const 128) ) (i32.const 1290) ) ) (drop (tee_local $0 (i32.const 128) ) ) (drop (tee_local $0 (i32.const 128) ) ) (drop (i32.and (tee_local $0 (i32.const 128) ) (i32.const 127) ) ) ) (func $local-info-zero-ext (type $4) (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) (local $w i32) (set_local $x (i32.const 212) ) (drop (get_local $x) ) (set_local $y (i32.const 500) ) (drop (i32.and (get_local $y) (i32.const 255) ) ) (set_local $0 (i32.const 212) ) (drop (i32.and (get_local $0) (i32.const 255) ) ) (set_local $z (i32.const 212) ) (set_local $z (i32.const 220) ) (drop (get_local $z) ) (set_local $w (i32.const 212) ) (set_local $w (i32.const 1000) ) (drop (i32.and (get_local $w) (i32.const 255) ) ) ) (func $local-info-sign-ext-bitsize (type $4) (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) (local $w i32) (set_local $x (i32.const 127) ) (drop (get_local $x) ) (set_local $y (i32.const 128) ) (drop (i32.shr_s (i32.shl (get_local $y) (i32.const 24) ) (i32.const 24) ) ) (set_local $0 (i32.const 127) ) (drop (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) (set_local $z (i32.const 127) ) (set_local $z (i32.const 100) ) (drop (get_local $z) ) (set_local $w (i32.const 127) ) (set_local $w (i32.const 150) ) (drop (i32.shr_s (i32.shl (get_local $w) (i32.const 24) ) (i32.const 24) ) ) ) (func $local-info-sign-ext-already-exted (type $4) (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) (local $w i32) (set_local $x (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) (drop (get_local $x) ) (set_local $y (i32.shr_s (i32.shl (get_local $0) (i32.const 16) ) (i32.const 16) ) ) (drop (i32.shr_s (i32.shl (get_local $y) (i32.const 24) ) (i32.const 24) ) ) (set_local $0 (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) (set_local $z (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) (set_local $z (i32.shr_s (i32.shl (get_local $1) (i32.const 24) ) (i32.const 24) ) ) (drop (get_local $z) ) (set_local $w (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 24) ) ) (set_local $w (i32.shr_s (i32.shl (get_local $0) (i32.const 23) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (get_local $w) (i32.const 24) ) (i32.const 24) ) ) (drop (i32.shr_s (i32.shl (get_local $0) (i32.const 24) ) (i32.const 23) ) ) ) (func $signed-loads-fill-the-bits (type $3) (param $$e i32) (result i32) (local $$0 i32) (local $$conv i32) (set_local $$0 (i32.load8_s (i32.const 1024) ) ) (set_local $$conv (i32.and (get_local $$0) (i32.const 255) ) ) (return (i32.eq (get_local $$conv) (get_local $$e) ) ) ) (func $local-info-sign-ext-already-exted-by-load (type $4) (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) (local $w i32) (set_local $x (i32.load8_s (i32.const 1024) ) ) (drop (get_local $x) ) (set_local $y (i32.load8_u (i32.const 1024) ) ) (drop (i32.shr_s (i32.shl (get_local $y) (i32.const 24) ) (i32.const 24) ) ) (set_local $z (i32.load16_s (i32.const 1024) ) ) (drop (i32.shr_s (i32.shl (get_local $z) (i32.const 24) ) (i32.const 24) ) ) ) (func $compare-load-s-sign-extend (type $4) (param $0 i32) (param $1 i32) (drop (i32.eq (i32.load8_u (get_local $0) ) (i32.and (get_local $1) (i32.const 255) ) ) ) (drop (i32.eq (i32.and (get_local $1) (i32.const 255) ) (i32.load8_u (get_local $0) ) ) ) (drop (i32.eq (i32.load8_u (get_local $0) ) (i32.shr_s (i32.shl (get_local $1) (i32.const 24) ) (i32.const 24) ) ) ) (drop (i32.eq (i32.load8_s (get_local $0) ) (i32.shr_s (i32.shl (get_local $1) (i32.const 16) ) (i32.const 16) ) ) ) (drop (i32.eq (i32.shr_s (i32.shl (get_local $1) (i32.const 24) ) (i32.const 24) ) (i32.load8_u (get_local $0) ) ) ) (drop (i32.eq (i32.shr_s (i32.shl (get_local $1) (i32.const 16) ) (i32.const 16) ) (i32.load8_s (get_local $0) ) ) ) ) (func $unsign-diff-sizes (type $6) (param $x i32) (param $y i32) (result i32) (i32.ne (i32.shr_s (i32.shl (call $unsign-diff-sizes (i32.const -1) (i32.const 5) ) (i32.const 24) ) (i32.const 24) ) (i32.shr_s (i32.shl (call $unsign-diff-sizes (i32.const 1) (i32.const 2006) ) (i32.const 16) ) (i32.const 16) ) ) ) (func $unsign-same-sizes (type $6) (param $x i32) (param $y i32) (result i32) (i32.ne (i32.and (call $unsign-same-sizes (i32.const -1) (i32.const 5) ) (i32.const 255) ) (i32.and (call $unsign-same-sizes (i32.const 1) (i32.const 2006) ) (i32.const 255) ) ) ) (func $fuzz-almost-sign-ext (type $1) (drop (i32.shr_s (i32.shl (i32.load16_u (i32.const 2278) ) (i32.const 17) ) (i32.const 16) ) ) (drop (i32.shr_s (i32.shl (i32.load16_u (i32.const 2278) ) (i32.const 17) ) (i32.const 16) ) ) ) (func $fuzz-comp-impossible (type $5) (param $x i32) (drop (i32.eq (i32.and (get_local $x) (i32.const 65535) ) (i32.const -2147483648) ) ) (drop (i32.eq (i32.and (get_local $x) (i32.const 255) ) (i32.const -2147483648) ) ) (drop (i32.eq (i32.and (get_local $x) (i32.const 255) ) (i32.const 127) ) ) (drop (i32.eq (i32.and (get_local $x) (i32.const 255) ) (i32.const -2147483648) ) ) (drop (i32.eq (i32.and (get_local $x) (i32.const 255) ) (i32.const -2147483648) ) ) (drop (i32.eq (i32.and (get_local $x) (i32.const 255) ) (i32.const -2147483648) ) ) (drop (i32.eq (i32.and (get_local $x) (i32.const 255) ) (i32.const 252) ) ) ) )