sodium-javascript/fe25519_25/sc25519_mul.wat

307 lines
20 KiB
Plaintext
Raw Normal View History

(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)))
(memory $0 1)
(export "memory" (memory $0))
(func $sc25519_mul (export "sc25519_mul") (param $s i32) (param $a i32) (param $b 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 $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 $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 $s0 (i64.mul (get_local $a0) (get_local $b0)))
(set_local $s1 (i64.add (i64.mul (get_local $a0) (get_local $b1 )) (i64.mul (get_local $a1) (get_local $b0))))
(set_local $s2 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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))))