(module (import "js" "table" (table 1 anyfunc)) (type $to_void (func (param $s i32) (param $s0 i64) (param $s1 i64) (param $s2 i64) (param $s3 i64) (param $s4 i64) (param $s5 i64) (param $s6 i64) (param $s7 i64) (param $s8 i64) (param $s9 i64) (param $s10 i64) (param $s11 i64) (param $s12 i64) (param $s13 i64) (param $s14 i64) (param $s15 i64) (param $s16 i64) (param $s17 i64) (param $s18 i64) (param $s19 i64) (param $s20 i64) (param $s21 i64) (param $s22 i64) (param $s23 i64))) (func $i32.log (import "debug" "log") (param i32)) (func $i32.log_tee (import "debug" "log_tee") (param i32) (result i32)) ;; No i64 interop with JS yet - but maybe coming with WebAssembly BigInt ;; So we can instead fake this by splitting the i64 into two i32 limbs, ;; however these are WASM functions using i32x2.log: (func $i32x2.log (import "debug" "log") (param i32) (param i32)) (func $f32.log (import "debug" "log") (param f32)) (func $f32.log_tee (import "debug" "log_tee") (param f32) (result f32)) (func $f64.log (import "debug" "log") (param f64)) (func $f64.log_tee (import "debug" "log_tee") (param f64) (result f64)) ;; i64 logging by splitting into two i32 limbs (func $i64.log (param $0 i64) (call $i32x2.log ;; Upper limb (i32.wrap/i64 (i64.shr_s (get_local $0) (i64.const 32))) ;; Lower limb (i32.wrap/i64 (get_local $0)))) (func $i64.log_tee (param $0 i64) (result i64) (call $i64.log (get_local $0)) (return (get_local $0))) (memory $0 1) (export "memory" (memory $0)) (func $sc25519_muladd (export "sc25519_muladd") (param $s i32) (param $a i32) (param $b i32) (param $c i32) (local $tmp i64) (local $a0 i64) (local $a1 i64) (local $a2 i64) (local $a3 i64) (local $a4 i64) (local $a5 i64) (local $a6 i64) (local $a7 i64) (local $a8 i64) (local $a9 i64) (local $a10 i64) (local $a11 i64) (local $b0 i64) (local $b1 i64) (local $b2 i64) (local $b3 i64) (local $b4 i64) (local $b5 i64) (local $b6 i64) (local $b7 i64) (local $b8 i64) (local $b9 i64) (local $b10 i64) (local $b11 i64) (local $c0 i64) (local $c1 i64) (local $c2 i64) (local $c3 i64) (local $c4 i64) (local $c5 i64) (local $c6 i64) (local $c7 i64) (local $c8 i64) (local $c9 i64) (local $c10 i64) (local $c11 i64) (local $s0 i64) (local $s1 i64) (local $s2 i64) (local $s3 i64) (local $s4 i64) (local $s5 i64) (local $s6 i64) (local $s7 i64) (local $s8 i64) (local $s9 i64) (local $s10 i64) (local $s11 i64) (local $s12 i64) (local $s13 i64) (local $s14 i64) (local $s15 i64) (local $s16 i64) (local $s17 i64) (local $s18 i64) (local $s19 i64) (local $s20 i64) (local $s21 i64) (local $s22 i64) (local $s23 i64) (local $carry0 i64) (local $carry1 i64) (local $carry2 i64) (local $carry3 i64) (local $carry4 i64) (local $carry5 i64) (local $carry6 i64) (local $carry7 i64) (local $carry8 i64) (local $carry9 i64) (local $carry10 i64) (local $carry11 i64) (local $carry12 i64) (local $carry13 i64) (local $carry14 i64) (local $carry15 i64) (local $carry16 i64) (local $carry17 i64) (local $carry18 i64) (local $carry19 i64) (local $carry20 i64) (local $carry21 i64) (local $carry22 i64) (set_local $a0 (i64.load32_u offset=0 (get_local $a))) (set_local $a1 (i64.load32_u offset=4 (get_local $a))) (set_local $a2 (i64.load32_u offset=8 (get_local $a))) (set_local $a3 (i64.load32_u offset=12 (get_local $a))) (set_local $a4 (i64.load32_u offset=16 (get_local $a))) (set_local $a5 (i64.load32_u offset=20 (get_local $a))) (set_local $a6 (i64.load32_u offset=24 (get_local $a))) (set_local $a7 (i64.load32_u offset=28 (get_local $a))) (set_local $a8 (i64.load32_u offset=32 (get_local $a))) (set_local $a9 (i64.load32_u offset=36 (get_local $a))) (set_local $a10 (i64.load32_u offset=40 (get_local $a))) (set_local $a11 (i64.load32_u offset=44 (get_local $a))) (set_local $b0 (i64.load32_u offset=0 (get_local $b))) (set_local $b1 (i64.load32_u offset=4 (get_local $b))) (set_local $b2 (i64.load32_u offset=8 (get_local $b))) (set_local $b3 (i64.load32_u offset=12 (get_local $b))) (set_local $b4 (i64.load32_u offset=16 (get_local $b))) (set_local $b5 (i64.load32_u offset=20 (get_local $b))) (set_local $b6 (i64.load32_u offset=24 (get_local $b))) (set_local $b7 (i64.load32_u offset=28 (get_local $b))) (set_local $b8 (i64.load32_u offset=32 (get_local $b))) (set_local $b9 (i64.load32_u offset=36 (get_local $b))) (set_local $b10 (i64.load32_u offset=40 (get_local $b))) (set_local $b11 (i64.load32_u offset=44 (get_local $b))) (set_local $c0 (i64.load32_u offset=0 (get_local $c))) (set_local $c1 (i64.load32_u offset=4 (get_local $c))) (set_local $c2 (i64.load32_u offset=8 (get_local $c))) (set_local $c3 (i64.load32_u offset=12 (get_local $c))) (set_local $c4 (i64.load32_u offset=16 (get_local $c))) (set_local $c5 (i64.load32_u offset=20 (get_local $c))) (set_local $c6 (i64.load32_u offset=24 (get_local $c))) (set_local $c7 (i64.load32_u offset=28 (get_local $c))) (set_local $c8 (i64.load32_u offset=32 (get_local $c))) (set_local $c9 (i64.load32_u offset=36 (get_local $c))) (set_local $c10 (i64.load32_u offset=40 (get_local $c))) (set_local $c11 (i64.load32_u offset=44 (get_local $c))) (set_local $a0 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a0)))) (set_local $a1 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a1)))) (set_local $a2 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a2)))) (set_local $a3 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a3)))) (set_local $a4 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a4)))) (set_local $a5 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a5)))) (set_local $a6 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a6)))) (set_local $a7 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a7)))) (set_local $a8 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a8)))) (set_local $a9 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a9)))) (set_local $a10 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a10)))) (set_local $a11 (i64.extend_s/i32 (i32.wrap/i64 (get_local $a11)))) (set_local $b0 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b0)))) (set_local $b1 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b1)))) (set_local $b2 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b2)))) (set_local $b3 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b3)))) (set_local $b4 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b4)))) (set_local $b5 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b5)))) (set_local $b6 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b6)))) (set_local $b7 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b7)))) (set_local $b8 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b8)))) (set_local $b9 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b9)))) (set_local $b10 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b10)))) (set_local $b11 (i64.extend_s/i32 (i32.wrap/i64 (get_local $b11)))) (set_local $c0 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c0)))) (set_local $c1 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c1)))) (set_local $c2 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c2)))) (set_local $c3 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c3)))) (set_local $c4 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c4)))) (set_local $c5 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c5)))) (set_local $c6 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c6)))) (set_local $c7 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c7)))) (set_local $c8 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c8)))) (set_local $c9 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c9)))) (set_local $c10 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c10)))) (set_local $c11 (i64.extend_s/i32 (i32.wrap/i64 (get_local $c11)))) (set_local $s0 (i64.add (get_local $c0 ) (i64.mul (get_local $a0) (get_local $b0)))) (set_local $s1 (i64.add (get_local $c1 ) (i64.add (i64.mul (get_local $a0) (get_local $b1 )) (i64.mul (get_local $a1) (get_local $b0))))) (set_local $s2 (i64.add (get_local $c2 ) (i64.add (i64.mul (get_local $a0) (get_local $b2 )) (i64.add (i64.mul (get_local $a1) (get_local $b1 )) (i64.mul (get_local $a2) (get_local $b0)))))) (set_local $s3 (i64.add (get_local $c3 ) (i64.add (i64.mul (get_local $a0) (get_local $b3 )) (i64.add (i64.mul (get_local $a1) (get_local $b2 )) (i64.add (i64.mul (get_local $a2) (get_local $b1)) (i64.mul (get_local $a3) (get_local $b0))))))) (set_local $s4 (i64.add (get_local $c4 ) (i64.add (i64.mul (get_local $a0) (get_local $b4 )) (i64.add (i64.mul (get_local $a1) (get_local $b3 )) (i64.add (i64.mul (get_local $a2) (get_local $b2)) (i64.add (i64.mul (get_local $a3) (get_local $b1)) (i64.mul (get_local $a4) (get_local $b0)))))))) (set_local $s5 (i64.add (get_local $c5 ) (i64.add (i64.mul (get_local $a0) (get_local $b5 )) (i64.add (i64.mul (get_local $a1) (get_local $b4 )) (i64.add (i64.mul (get_local $a2) (get_local $b3)) (i64.add (i64.mul (get_local $a3) (get_local $b2)) (i64.add (i64.mul (get_local $a4) (get_local $b1)) (i64.mul (get_local $a5) (get_local $b0))))))))) (set_local $s6 (i64.add (get_local $c6 ) (i64.add (i64.mul (get_local $a0) (get_local $b6 )) (i64.add (i64.mul (get_local $a1) (get_local $b5 )) (i64.add (i64.mul (get_local $a2) (get_local $b4)) (i64.add (i64.mul (get_local $a3) (get_local $b3)) (i64.add (i64.mul (get_local $a4) (get_local $b2)) (i64.add (i64.mul (get_local $a5) (get_local $b1)) (i64.mul (get_local $a6) (get_local $b0)))))))))) (set_local $s7 (i64.add (get_local $c7 ) (i64.add (i64.mul (get_local $a0) (get_local $b7 )) (i64.add (i64.mul (get_local $a1) (get_local $b6 )) (i64.add (i64.mul (get_local $a2) (get_local $b5)) (i64.add (i64.mul (get_local $a3) (get_local $b4)) (i64.add (i64.mul (get_local $a4) (get_local $b3)) (i64.add (i64.mul (get_local $a5) (get_local $b2)) (i64.add (i64.mul (get_local $a6) (get_local $b1)) (i64.mul (get_local $a7) (get_local $b0))))))))))) (set_local $s8 (i64.add (get_local $c8 ) (i64.add (i64.mul (get_local $a0) (get_local $b8 )) (i64.add (i64.mul (get_local $a1) (get_local $b7 )) (i64.add (i64.mul (get_local $a2) (get_local $b6)) (i64.add (i64.mul (get_local $a3) (get_local $b5)) (i64.add (i64.mul (get_local $a4) (get_local $b4)) (i64.add (i64.mul (get_local $a5) (get_local $b3)) (i64.add (i64.mul (get_local $a6) (get_local $b2)) (i64.add (i64.mul (get_local $a7) (get_local $b1)) (i64.mul (get_local $a8) (get_local $b0)))))))))))) (set_local $s9 (i64.add (get_local $c9 ) (i64.add (i64.mul (get_local $a0) (get_local $b9 )) (i64.add (i64.mul (get_local $a1) (get_local $b8 )) (i64.add (i64.mul (get_local $a2) (get_local $b7)) (i64.add (i64.mul (get_local $a3) (get_local $b6)) (i64.add (i64.mul (get_local $a4) (get_local $b5)) (i64.add (i64.mul (get_local $a5) (get_local $b4)) (i64.add (i64.mul (get_local $a6) (get_local $b3)) (i64.add (i64.mul (get_local $a7) (get_local $b2)) (i64.add (i64.mul (get_local $a8) (get_local $b1)) (i64.mul (get_local $a9) (get_local $b0))))))))))))) (set_local $s10 (i64.add (get_local $c10) (i64.add (i64.mul (get_local $a0) (get_local $b10)) (i64.add (i64.mul (get_local $a1) (get_local $b9 )) (i64.add (i64.mul (get_local $a2) (get_local $b8)) (i64.add (i64.mul (get_local $a3) (get_local $b7)) (i64.add (i64.mul (get_local $a4) (get_local $b6)) (i64.add (i64.mul (get_local $a5) (get_local $b5)) (i64.add (i64.mul (get_local $a6) (get_local $b4)) (i64.add (i64.mul (get_local $a7) (get_local $b3)) (i64.add (i64.mul (get_local $a8) (get_local $b2)) (i64.add (i64.mul (get_local $a9) (get_local $b1)) (i64.mul (get_local $a10) (get_local $b0)))))))))))))) (set_local $s11 (i64.add (get_local $c11) (i64.add (i64.mul (get_local $a0) (get_local $b11)) (i64.add (i64.mul (get_local $a1) (get_local $b10)) (i64.add (i64.mul (get_local $a2) (get_local $b9)) (i64.add (i64.mul (get_local $a3) (get_local $b8)) (i64.add (i64.mul (get_local $a4) (get_local $b7)) (i64.add (i64.mul (get_local $a5) (get_local $b6)) (i64.add (i64.mul (get_local $a6) (get_local $b5)) (i64.add (i64.mul (get_local $a7) (get_local $b4)) (i64.add (i64.mul (get_local $a8) (get_local $b3)) (i64.add (i64.mul (get_local $a9) (get_local $b2)) (i64.add (i64.mul (get_local $a10) (get_local $b1)) (i64.mul (get_local $a11) (get_local $b0))))))))))))))) (set_local $s12 (i64.add (i64.mul (get_local $a1) (get_local $b11)) (i64.add (i64.mul (get_local $a2) (get_local $b10)) (i64.add (i64.mul (get_local $a3) (get_local $b9)) (i64.add (i64.mul (get_local $a4) (get_local $b8)) (i64.add (i64.mul (get_local $a5) (get_local $b7)) (i64.add (i64.mul (get_local $a6) (get_local $b6)) (i64.add (i64.mul (get_local $a7) (get_local $b5)) (i64.add (i64.mul (get_local $a8) (get_local $b4)) (i64.add (i64.mul (get_local $a9) (get_local $b3)) (i64.add (i64.mul (get_local $a10) (get_local $b2)) (i64.mul (get_local $a11) (get_local $b1))))))))))))) (set_local $s13 (i64.add (i64.mul (get_local $a2) (get_local $b11)) (i64.add (i64.mul (get_local $a3) (get_local $b10)) (i64.add (i64.mul (get_local $a4) (get_local $b9)) (i64.add (i64.mul (get_local $a5) (get_local $b8)) (i64.add (i64.mul (get_local $a6) (get_local $b7)) (i64.add (i64.mul (get_local $a7) (get_local $b6)) (i64.add (i64.mul (get_local $a8) (get_local $b5)) (i64.add (i64.mul (get_local $a9) (get_local $b4)) (i64.add (i64.mul (get_local $a10) (get_local $b3)) (i64.mul (get_local $a11) (get_local $b2)))))))))))) (set_local $s14 (i64.add (i64.mul (get_local $a3) (get_local $b11)) (i64.add (i64.mul (get_local $a4) (get_local $b10)) (i64.add (i64.mul (get_local $a5) (get_local $b9)) (i64.add (i64.mul (get_local $a6) (get_local $b8)) (i64.add (i64.mul (get_local $a7) (get_local $b7)) (i64.add (i64.mul (get_local $a8) (get_local $b6)) (i64.add (i64.mul (get_local $a9) (get_local $b5)) (i64.add (i64.mul (get_local $a10) (get_local $b4)) (i64.mul (get_local $a11) (get_local $b3))))))))))) (set_local $s15 (i64.add (i64.mul (get_local $a4) (get_local $b11)) (i64.add (i64.mul (get_local $a5) (get_local $b10)) (i64.add (i64.mul (get_local $a6) (get_local $b9)) (i64.add (i64.mul (get_local $a7) (get_local $b8)) (i64.add (i64.mul (get_local $a8) (get_local $b7)) (i64.add (i64.mul (get_local $a9) (get_local $b6)) (i64.add (i64.mul (get_local $a10) (get_local $b5)) (i64.mul (get_local $a11) (get_local $b4)))))))))) (set_local $s16 (i64.add (i64.mul (get_local $a5) (get_local $b11)) (i64.add (i64.mul (get_local $a6) (get_local $b10)) (i64.add (i64.mul (get_local $a7) (get_local $b9)) (i64.add (i64.mul (get_local $a8) (get_local $b8)) (i64.add (i64.mul (get_local $a9) (get_local $b7)) (i64.add (i64.mul (get_local $a10) (get_local $b6)) (i64.mul (get_local $a11) (get_local $b5))))))))) (set_local $s17 (i64.add (i64.mul (get_local $a6) (get_local $b11)) (i64.add (i64.mul (get_local $a7) (get_local $b10)) (i64.add (i64.mul (get_local $a8) (get_local $b9)) (i64.add (i64.mul (get_local $a9) (get_local $b8)) (i64.add (i64.mul (get_local $a10) (get_local $b7)) (i64.mul (get_local $a11) (get_local $b6)))))))) (set_local $s18 (i64.add (i64.mul (get_local $a7) (get_local $b11)) (i64.add (i64.mul (get_local $a8) (get_local $b10)) (i64.add (i64.mul (get_local $a9) (get_local $b9)) (i64.add (i64.mul (get_local $a10) (get_local $b8)) (i64.mul (get_local $a11) (get_local $b7))))))) (set_local $s19 (i64.add (i64.mul (get_local $a8) (get_local $b11)) (i64.add (i64.mul (get_local $a9) (get_local $b10)) (i64.add (i64.mul (get_local $a10) (get_local $b9)) (i64.mul (get_local $a11) (get_local $b8)))))) (set_local $s20 (i64.add (i64.mul (get_local $a9) (get_local $b11)) (i64.add (i64.mul (get_local $a10) (get_local $b10)) (i64.mul (get_local $a11) (get_local $b9))))) (set_local $s21 (i64.add (i64.mul (get_local $a10) (get_local $b11)) (i64.mul (get_local $a11) (get_local $b10)))) (set_local $s22 (i64.mul (get_local $a11) (get_local $b11))) (set_local $s23 (i64.const 0)) (set_local $carry0 (i64.shr_s (i64.add (get_local $s0) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s1 (i64.add (get_local $s1) (get_local $carry0))) (set_local $s0 (i64.sub (get_local $s0) (i64.mul (get_local $carry0) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry2 (i64.shr_s (i64.add (get_local $s2) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s3 (i64.add (get_local $s3) (get_local $carry2))) (set_local $s2 (i64.sub (get_local $s2) (i64.mul (get_local $carry2) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry4 (i64.shr_s (i64.add (get_local $s4) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s5 (i64.add (get_local $s5) (get_local $carry4))) (set_local $s4 (i64.sub (get_local $s4) (i64.mul (get_local $carry4) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry6 (i64.shr_s (i64.add (get_local $s6) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s7 (i64.add (get_local $s7) (get_local $carry6))) (set_local $s6 (i64.sub (get_local $s6) (i64.mul (get_local $carry6) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry8 (i64.shr_s (i64.add (get_local $s8) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s9 (i64.add (get_local $s9) (get_local $carry8))) (set_local $s8 (i64.sub (get_local $s8) (i64.mul (get_local $carry8) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry10 (i64.shr_s (i64.add (get_local $s10) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s11 (i64.add (get_local $s11) (get_local $carry10))) (set_local $s10 (i64.sub (get_local $s10) (i64.mul (get_local $carry10) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry12 (i64.shr_s (i64.add (get_local $s12) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s13 (i64.add (get_local $s13) (get_local $carry12))) (set_local $s12 (i64.sub (get_local $s12) (i64.mul (get_local $carry12) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry14 (i64.shr_s (i64.add (get_local $s14) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s15 (i64.add (get_local $s15) (get_local $carry14))) (set_local $s14 (i64.sub (get_local $s14) (i64.mul (get_local $carry14) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry16 (i64.shr_s (i64.add (get_local $s16) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s17 (i64.add (get_local $s17) (get_local $carry16))) (set_local $s16 (i64.sub (get_local $s16) (i64.mul (get_local $carry16) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry18 (i64.shr_s (i64.add (get_local $s18) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s19 (i64.add (get_local $s19) (get_local $carry18))) (set_local $s18 (i64.sub (get_local $s18) (i64.mul (get_local $carry18) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry20 (i64.shr_s (i64.add (get_local $s20) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s21 (i64.add (get_local $s21) (get_local $carry20))) (set_local $s20 (i64.sub (get_local $s20) (i64.mul (get_local $carry20) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry22 (i64.shr_s (i64.add (get_local $s22) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s23 (i64.add (get_local $s23) (get_local $carry22))) (set_local $s22 (i64.sub (get_local $s22) (i64.mul (get_local $carry22) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry1 (i64.shr_s (i64.add (get_local $s1) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s2 (i64.add (get_local $s2) (get_local $carry1))) (set_local $s1 (i64.sub (get_local $s1) (i64.mul (get_local $carry1) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry3 (i64.shr_s (i64.add (get_local $s3) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s4 (i64.add (get_local $s4) (get_local $carry3))) (set_local $s3 (i64.sub (get_local $s3) (i64.mul (get_local $carry3) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry5 (i64.shr_s (i64.add (get_local $s5) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s6 (i64.add (get_local $s6) (get_local $carry5))) (set_local $s5 (i64.sub (get_local $s5) (i64.mul (get_local $carry5) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry7 (i64.shr_s (i64.add (get_local $s7) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s8 (i64.add (get_local $s8) (get_local $carry7))) (set_local $s7 (i64.sub (get_local $s7) (i64.mul (get_local $carry7) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry9 (i64.shr_s (i64.add (get_local $s9) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s10 (i64.add (get_local $s10) (get_local $carry9))) (set_local $s9 (i64.sub (get_local $s9) (i64.mul (get_local $carry9) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry11 (i64.shr_s (i64.add (get_local $s11) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s12 (i64.add (get_local $s12) (get_local $carry11))) (set_local $s11 (i64.sub (get_local $s11) (i64.mul (get_local $carry11) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry13 (i64.shr_s (i64.add (get_local $s13) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s14 (i64.add (get_local $s14) (get_local $carry13))) (set_local $s13 (i64.sub (get_local $s13) (i64.mul (get_local $carry13) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry15 (i64.shr_s (i64.add (get_local $s15) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s16 (i64.add (get_local $s16) (get_local $carry15))) (set_local $s15 (i64.sub (get_local $s15) (i64.mul (get_local $carry15) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry17 (i64.shr_s (i64.add (get_local $s17) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s18 (i64.add (get_local $s18) (get_local $carry17))) (set_local $s17 (i64.sub (get_local $s17) (i64.mul (get_local $carry17) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry19 (i64.shr_s (i64.add (get_local $s19) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s20 (i64.add (get_local $s20) (get_local $carry19))) (set_local $s19 (i64.sub (get_local $s19) (i64.mul (get_local $carry19) (i64.shl (i64.const 1) (i64.const 21))))) (set_local $carry21 (i64.shr_s (i64.add (get_local $s21) (i64.shl (i64.const 1) (i64.const 20))) (i64.const 21))) (set_local $s22 (i64.add (get_local $s22) (get_local $carry21))) (set_local $s21 (i64.sub (get_local $s21) (i64.mul (get_local $carry21) (i64.shl (i64.const 1) (i64.const 21))))) (get_local $s) (get_local $s0) (get_local $s1) (get_local $s2) (get_local $s3) (get_local $s4) (get_local $s5) (get_local $s6) (get_local $s7) (get_local $s8) (get_local $s9) (get_local $s10) (get_local $s11) (get_local $s12) (get_local $s13) (get_local $s14) (get_local $s15) (get_local $s16) (get_local $s17) (get_local $s18) (get_local $s19) (get_local $s20) (get_local $s21) (get_local $s22) (get_local $s23) (i32.const 0) (call_indirect (type $to_void))))