(* TEST
 readonly_files = "main.c";
 arguments = "-DINT_INT -DFUN=catch_fact main.c";
 asmgen;
*)

(function "catch_fact" (b:int)
  (catch (exit fact b 1)
   with (fact c:val acc:val)
     (if (== c 0) acc
         (exit fact (- c 1) ( * c acc)))))
