diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_basics.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_basics.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_basics.h
@@ -0,0 +1,172 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: October, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef PATS_CCOMP_BASICS_H
+#define PATS_CCOMP_BASICS_H
+
+/* ****** ****** */
+//
+// HX: boolean values
+//
+#define atsbool_true 1
+#define atsbool_false 0
+//
+#define atsptr_null ((void*)0)
+#define the_atsptr_null ((void*)0)
+//
+/* ****** ****** */
+//
+#define ATSstruct struct
+//
+/* ****** ****** */
+/*
+#define ATStypedef typedef
+*/
+//
+/* ****** ****** */
+
+#ifndef \
+ATS_EXTERN_DEF__
+#define ATSextern() extern
+#else
+#define ATSextern() ATS_EXTERN_DEF__
+#endif // #ifndef
+
+/* ****** ****** */
+
+#ifndef \
+ATS_STATIC_DEF__
+#define ATSstatic() static
+#else
+#define ATSstatic() ATS_STATIC_DEF__
+#endif // #ifndef
+
+/* ****** ****** */
+
+#ifndef \
+ATS_INLINE_DEF__
+#define ATSinline() static inline
+#else
+#define ATSinline() ATS_INLINE_DEF__
+#endif // #ifndef
+
+/* ****** ****** */
+//
+#define ATSdynload()
+//
+#define ATSdynloadflag_sta(flag)
+#define ATSdynloadflag_ext(flag) ATSextern() int flag
+//
+#define ATSdynloadflag_init(flag) int flag = 0
+//
+#define ATSdynloadflag_minit(flag) int flag = 0
+//
+#define ATSdynloadset(flag) flag = 1
+#define ATSdynloadfcall(dynloadfun) dynloadfun()
+//
+/* ****** ****** */
+
+#ifndef \
+_ATS_CCOMP_EXCEPTION_NONE_
+//
+#define \
+ATSdynexn_dec(d2c) \
+atstype_exncon d2c = { 0, "__ATSEXNMSG__" }
+//
+#define \
+ATSdynexn_extdec(d2c) ATSextern() atstype_exncon d2c
+//
+#define \
+ATSdynexn_initize(d2c, exnmsg) the_atsexncon_initize(&(d2c), exnmsg)
+//
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+
+/* ****** ****** */
+
+#define ATSassume(flag) void *flag = (void*)0
+
+/* ****** ****** */
+//
+#define ATSclosurerize_end(flab)
+#define ATSclosurerize_beg(flab, tenvs, targs, tres)
+//
+/* ****** ****** */
+
+#define ATSdyncst_mac(d2c)
+#define ATSdyncst_castfn(d2c)
+#define ATSdyncst_extfun(d2c, targs, tres) ATSextern() tres d2c targs
+#define ATSdyncst_stafun(d2c, targs, tres) ATSstatic() tres d2c targs
+
+/* ****** ****** */
+
+#define ATSdyncst_valimp(d2c, type) type d2c
+#define ATSdyncst_valdec(d2c, type) ATSextern() type d2c
+
+/* ****** ****** */
+//
+#define \
+ATSmainats_void_0(err) mainats_void_0()
+#define \
+ATSmainats_argc_argv_0(argc, argv, err) mainats_argc_argv_0(argc, argv)
+#define \
+ATSmainats_argc_argv_envp_0(argc, argv, envp, err) mainats_argc_argv_envp_0(argc, argv, envp)
+//
+#define \
+ATSmainats_void_int(err) err = mainats_void_int()
+#define \
+ATSmainats_argc_argv_int(argc, argv, err) err = mainats_argc_argv_int(argc, argv)
+#define \
+ATSmainats_argc_argv_envp_int(argc, argv, envp, err) err = mainats_argc_argv_envp_int(argc, argv, envp)
+//
+/* ****** ****** */
+//
+extern
+void atsruntime_raise (void *exn) ;
+extern
+void atsruntime_handle_uncaughtexn (void *exn0) ;
+extern
+void atsruntime_handle_unmatchedval (char *msg0) ;
+extern
+void atsruntime_handle_unmatchedarg (char *msg0) ;
+//
+/* ****** ****** */
+
+#endif /* PATS_CCOMP_BASICS_H */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_basics.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_config.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_config.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_config.h
@@ -0,0 +1,49 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef PATS_CCOMP_CONFIG_H
+#define PATS_CCOMP_CONFIG_H
+
+/* ****** ****** */
+
+// HX: it is yet empty
+
+/* ****** ****** */
+
+#endif /* PATS_CCOMP_CONFIG_H */
+
+/* end of [pats_ccomp_config.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_exception.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_exception.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_exception.h
@@ -0,0 +1,179 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: June, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef PATS_CCOMP_EXCEPTION_H
+#define PATS_CCOMP_EXCEPTION_H
+
+/* ****** ****** */
+
+/*
+use -D_XOPEN_SOURCE
+*/
+#include <setjmp.h>
+
+/* ****** ****** */
+
+#define atstype_jmp_buf jmp_buf
+#define atspre_setjmp(env, mask) setjmp(env)
+#define atspre_longjmp(env, ret) longjmp(env, ret)
+
+/* ****** ****** */
+
+/*
+#include <alloca.h>
+*/
+extern void *alloca (size_t bsz) ;
+
+/* ****** ****** */
+
+/*
+extern
+atstype_exncon *atspre_AssertExn_make() ;
+extern
+atstype_exncon *atspre_NotFoundExn_make() ;
+extern
+atstype_exncon *atspre_IllegalArgExn_make(const char*) ;
+extern
+atstype_exncon *atspre_ListSubscriptExn_make() ;
+extern
+atstype_exncon *atspre_StreamSubscriptExn_make() ;
+extern
+atstype_exncon *atspre_ArraySubscriptExn_make() ;
+extern
+atstype_exncon *atspre_MatrixSubscriptExn_make() ;
+//
+extern atstype_exncon *atspre_NotSomeExn_make() ;
+//
+extern
+atstype_bool atspre_isListSubscriptExn (const atstype_exncon*) ;
+extern
+atstype_bool atspre_isStreamSubscriptExn (const atstype_exncon*) ;
+extern
+atstype_bool atspre_isArraySubscriptExn (const atstype_exncon*) ;
+extern
+atstype_bool atspre_isMatrixSubscriptExn (const atstype_exncon*) ;
+//
+extern atstype_bool atspre_isNotSomeExn (const atstype_exncon*) ; 
+*/
+
+/* ****** ****** */
+
+typedef
+struct atsexnframe
+{
+  atstype_jmp_buf env ;
+  atstype_exnconptr exn ;
+  struct atsexnframe *prev ;
+} atsexnframe_t ;
+
+typedef
+atsexnframe_t *atsexnframe_ptr ;
+
+/* ****** ****** */
+
+#define \
+atsexnframe_alloc() alloca(sizeof(atsexnframe_t))
+#define \
+atsexnframe_mfree(frame) /* there-is-nothing-to-do */
+
+/* ****** ****** */
+
+extern
+atsexnframe_ptr *my_atsexnframe_getref () ;
+
+/* ****** ****** */
+
+static
+inline
+void my_atsexnframe_enter
+(
+  atsexnframe_ptr frame
+, atsexnframe_ptr *framep
+) {
+  frame->prev = *framep ; *framep = frame ; return ;
+} // end of [my_atsexnframe_enter]
+
+static
+inline
+void my_atsexnframe_leave
+(
+  atsexnframe_ptr *framep
+) {
+  atsexnframe_mfree(*framep) ; *framep = (*framep)->prev ; return ;
+} // end of [my_atsexnframe_leave]
+
+/* ****** ****** */
+
+/*
+** HX:
+** beg-of-WARNING:
+** DO NOT USE THE FOLLOWING MACROS:
+*/
+
+#define \
+ATStrywith_try(tmpexn) \
+do { \
+  int flag ; \
+  atsexnframe_ptr frame ; \
+  atsexnframe_ptr *framep ; \
+  frame = atsexnframe_alloc() ; \
+  framep = my_atsexnframe_getref() ; \
+  my_atsexnframe_enter(frame, framep) ; \
+  flag = atspre_setjmp(frame->env, 1) ; \
+  if (flag==0) { /* normal */
+
+#define \
+ATStrywith_with(tmpexn) \
+    my_atsexnframe_leave(framep) ; \
+  } else { /* flag<>0 : exceptional */ \
+    tmpexn = (*framep)->exn ; \
+    my_atsexnframe_leave(framep) ;
+
+#define \
+ATStrywith_end(tmpexn) \
+  } \
+} while(0) ; /* end of [do] */
+
+/* end-of-WARNING */
+
+/* ****** ****** */
+
+#endif /* PATS_CCOMP_EXCEPTION_H */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_exception.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_instrset.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_instrset.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_instrset.h
@@ -0,0 +1,441 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: October, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef PATS_CCOMP_INSTRSET_H
+#define PATS_CCOMP_INSTRSET_H
+
+/* ****** ****** */
+//
+// HX: boolean values
+//
+#define atsbool_true 1
+#define atsbool_false 0
+//
+/* ****** ****** */
+
+#define ATStysum() struct{ int contag; }
+#define ATStyexn() struct{ int exntag; char *exnmsg; }
+#define ATStylist(tyelt) struct{ tyelt head; void *tail; }
+#define ATStyclo() struct{ void *cfun; }
+
+/* ****** ****** */
+//
+// HX: for supporting lazy-evaluation
+//
+#define \
+ATStylazy(tyval) \
+  struct{ int flag; union{ void* thunk; tyval saved; } lazy; }
+//
+/* ****** ****** */
+
+#define ATSif(x) if(x)
+#define ATSthen()
+#define ATSelse() else
+
+/* ****** ****** */
+
+#define ATSifthen(x) if(x)
+#define ATSifnthen(x) if(!(x))
+
+/* ****** ****** */
+
+#define ATSdo() do
+#define ATSwhile(x) while(x)
+#define ATSbreak() break
+#define ATScontinue() continue
+
+/* ****** ****** */
+//
+// HX: handling for/while loops
+//
+#define \
+ATSloop_open(init, fini, cont) \
+  do { init:
+#define \
+ATSloop_close(init, fini, cont) \
+  goto init ; fini: break ; } while(0)
+//
+#define ATSbreak2(fini) goto fini
+#define ATScontinue2(cont) goto cont
+//
+/* ****** ****** */
+
+#define ATSreturn(x) return(x)
+#define ATSreturn_void(x) return
+
+/* ****** ****** */
+
+#define ATSFCreturn(x) return(x)
+#define ATSFCreturn_void(x) (x); return
+
+/* ****** ****** */
+//
+#define ATSbranch_beg()
+#define ATSbranch_end() break ;
+//
+#define ATScaseof_beg() do {
+#define ATScaseof_end() } while(0) ;
+//
+/* ****** ****** */
+
+#define ATSextcode_beg()
+#define ATSextcode_end()
+
+/* ****** ****** */
+
+#define ATSfunbody_beg()
+#define ATSfunbody_end()
+
+/* ****** ****** */
+
+#define ATSPMVint(i) i
+#define ATSPMVintrep(rep) (rep)
+
+#define ATSPMVbool_true() atsbool_true
+#define ATSPMVbool_false() atsbool_false
+#define ATSPMVchar(c) (c)
+#define ATSPMVfloat(rep) (rep)
+#define ATSPMVstring(str) (str)
+
+#define ATSPMVi0nt(tok) (tok)
+#define ATSPMVf0loat(tok) (tok)
+
+/* ****** ****** */
+
+#define ATSCSTSPmyfil(info) info
+#define ATSCSTSPmyloc(info) info
+
+/* ****** ****** */
+//
+#define ATSPMVtop() atserror_top
+//
+#define ATSPMVempty() /*empty*/
+#define ATSPMVextval(name) (name)
+//
+/* ****** ****** */
+
+#define ATSPMVptrof(lval) (&(lval))
+#define ATSPMVptrof_void(lval) ((void*)0)
+
+/* ****** ****** */
+
+#define ATSPMVrefarg0(val) (val)
+#define ATSPMVrefarg1(ref) (ref)
+
+/* ****** ****** */
+
+#define ATSPMVvararg0() 0
+#define ATSPMVvararg1(...) __VA_ARGS__
+  
+/* ****** ****** */
+
+#define ATSPMVtyrep(rep) (rep)
+
+/* ****** ****** */
+
+#define ATSPMVsizeof(hit) (sizeof(hit))
+
+/* ****** ****** */
+//
+#define ATSPMVfunlab(flab) (flab)
+//
+// HX-2015-07-06: not yet in use:
+//
+#define ATSPMVfunlab2(flab, arity) (flab)
+//
+/* ****** ****** */
+
+#define ATSPMVcfunlab(knd, flab, env) (flab##__closurerize)env
+
+/* ****** ****** */
+
+//
+// HX: castfn application
+//
+#define ATSPMVcastfn(d2c, hit, arg) ((hit)arg)
+//
+/* ****** ****** */
+
+#define ATSfuncall(fun, funarg) (fun)funarg
+
+/* ****** ****** */
+//
+#define ATSextfcall(fun, funarg) (fun)funarg
+#define ATSextmcall(obj, mtd, funarg) (obj->mtd)funarg
+//
+/* ****** ****** */
+//
+#define \
+ATSfunclo_fun(pmv, targs, tres) ((tres(*)targs)(pmv))
+#define \
+ATSfunclo_clo(pmv, targs, tres) ((tres(*)targs)(((ATStyclo()*)pmv)->cfun))
+//
+/* ****** ****** */
+//
+#define ATStmpdec(tmp, hit) hit tmp
+#define ATStmpdec_void(tmp)
+//
+#define ATSstatmpdec(tmp, hit) static hit tmp
+#define ATSstatmpdec_void(tmp)
+//
+/* ****** ****** */
+
+#define ATSderef(pmv, hit) (*(hit*)pmv)
+
+/* ****** ****** */
+//
+// HX: [ATSSELcon] is the same as [ATSSELboxrec]
+//
+#define ATSSELcon(pmv, tysum, lab) (((tysum*)pmv)->lab)
+//
+#define ATSSELrecsin(pmv, tyrec, lab) (pmv)
+#define ATSSELfltrec(pmv, tyrec, lab) ((pmv).lab)
+#define ATSSELboxrec(pmv, tyrec, lab) (((tyrec*)pmv)->lab)
+#define ATSSELarrind(pmv, tyarr, lab) (((tyarr)pmv).lab)
+#define ATSSELarrptrind(pmv, tyelt, lab) (((tyelt*)pmv)lab)
+//
+/* ****** ****** */
+//
+#define ATSCKnot(x) ((x)==0)
+//
+#define ATSCKiseqz(x) ((x)==0)
+#define ATSCKisneqz(x) ((x)!=0)
+//
+#define ATSCKptriscons(x) (0 != (void*)(x))
+#define ATSCKptrisnull(x) (0 == (void*)(x))
+//
+/* ****** ****** */
+//
+#define ATSCKpat_int(pmv, pat) ((pmv)==pat)
+#define ATSCKpat_bool(pmv, pat) ((pmv)==pat)
+#define ATSCKpat_char(pmv, pat) ((pmv)==pat)
+#define ATSCKpat_float(pmv, pat) ((pmv)==pat)
+#define ATSCKpat_string(pmv, pat) (atspre_string_equal(pmv, pat))
+//
+/*
+** a datatype should not contain more than 1024 constructors!
+*/
+#define ATS_DATACONMAX 1024
+//
+#define ATSCKpat_con0(pmv, tag) ((pmv)==(void*)tag)
+#define ATSCKpat_con1(pmv, tag) \
+  ((pmv)>=(void*)ATS_DATACONMAX && ((ATStysum()*)(pmv))->contag==tag)
+//
+#define ATSCKpat_exn0(pmv, d2con) ((pmv)==(void*)(&(d2con)))
+#define ATSCKpat_exn1(pmv, d2con) (((ATStyexn()*)(pmv))->exntag==(&(d2con))->exntag)
+//
+/* ****** ****** */
+//
+#define ATSINSlab(lab) lab
+#define ATSINSgoto(lab) goto lab
+//
+#define ATSINSflab(flab) flab
+#define ATSINSfgoto(flab) goto flab
+//
+/* ****** ****** */
+
+#define ATSINSfreeclo(cloptr) ATS_MFREE(cloptr)
+#define ATSINSfreecon(datconptr) ATS_MFREE(datconptr)
+
+/* ****** ****** */
+
+#define ATSINSmove(tmp, val) (tmp = val)
+#define ATSINSpmove(tmp, hit, val) (*(hit*)tmp = val)
+
+/* ****** ****** */
+/*
+** HX-2013-01-20:
+** Do not have parentheses around [command]
+*/
+#define ATSINSmove_void(tmp, command) command
+#define ATSINSpmove_void(tmp, hit, command) command
+
+/* ****** ****** */
+
+#define ATSINSmove_ptralloc(tmp, hit) (tmp = ATS_MALLOC(sizeof(hit)))
+
+/* ****** ****** */
+//
+#define \
+ATSINSmove_nil(tmp) (tmp = ((void*)0))
+//
+#define \
+ATSINSmove_con0(tmp, tag) (tmp = ((void*)tag))
+//
+#define ATSINSmove_con1_beg()
+#define ATSINSmove_con1_end()
+#define ATSINSmove_con1_new(tmp, tysum) (tmp = ATS_MALLOC(sizeof(tysum)))
+#define ATSINSstore_con1_tag(tmp, val) (((ATStysum()*)(tmp))->contag = val)
+#define ATSINSstore_con1_ofs(tmp, tysum, lab, val) (((tysum*)(tmp))->lab = val)
+//
+/* ****** ****** */
+//
+#define ATSINSmove_exn0(tmp, d2con) (tmp = &(d2con))
+//
+#define ATSINSmove_exn1_beg()
+#define ATSINSmove_exn1_end()
+#define ATSINSmove_exn1_new(tmp, tyexn) (tmp = ATS_MALLOC(sizeof(tyexn)))
+#define ATSINSstore_exn1_tag(tmp, d2con) (((ATStyexn()*)tmp)->exntag = (&(d2con))->exntag)
+#define ATSINSstore_exn1_msg(tmp, d2con) (((ATStyexn()*)tmp)->exnmsg = (&(d2con))->exnmsg)
+//
+/* ****** ****** */
+//
+#define ATStailcal_beg() do {
+#define ATStailcal_end() } while(0) ;
+//
+#define ATSINSmove_tlcal(apy, tmp) (apy = tmp)
+#define ATSINSargmove_tlcal(arg, apy) (arg = apy)
+//
+/* ****** ****** */
+
+#define ATSINSmove_fltrec_beg()
+#define ATSINSmove_fltrec_end()
+#define ATSINSstore_fltrec_ofs(tmp, tyrec, lab, val) ((tmp).lab = val)
+
+/* ****** ****** */
+
+#define ATSINSmove_boxrec_beg()
+#define ATSINSmove_boxrec_end()
+#define ATSINSmove_boxrec_new(tmp, tyrec) (tmp = ATS_MALLOC(sizeof(tyrec)))
+#define ATSINSstore_boxrec_ofs(tmp, tyrec, lab, val) (((tyrec*)(tmp))->lab = val)
+
+/* ****** ****** */
+
+#define ATSINSload(tmp, pmv) (tmp = pmv)
+#define ATSINSstore(pmv1, pmv2) (pmv1 = pmv2)
+#define ATSINSxstore(tmp, pmv1, pmv2) (tmp = pmv1, pmv1 = pmv2, pmv2 = tmp)
+
+/* ****** ****** */
+//
+#define ATSINSmove_list_nil(tmp) (tmp = (void*)0)
+#define ATSINSmove_list_phead(tmp1, tmp2, tyelt) (tmp1 = &(((ATStylist(tyelt)*)(*(void**)tmp2))->head))
+#define ATSINSmove_list_ptail(tmp1, tmp2, tyelt) (tmp1 = &(((ATStylist(tyelt)*)(*(void**)tmp2))->tail))
+#define ATSINSpmove_list_nil(tmp) (*(void**)tmp = (void*)0)
+#define ATSINSpmove_list_cons(tmp, tyelt) (*(void**)tmp = ATS_MALLOC(sizeof(ATStylist(tyelt))))
+//
+/* ****** ****** */
+//
+#define ATSINSstore_arrpsz_asz(tmp, asz) ((tmp).size = asz)
+#define ATSINSstore_arrpsz_ptr(tmp, tyelt, asz) ((tmp).ptr = ATS_MALLOC(asz*sizeof(tyelt)))
+//
+#define ATSINSmove_arrpsz_ptr(tmp, psz) (tmp = (psz).ptr)
+//
+#define ATSINSupdate_ptrinc(tmp, tyelt) (tmp = (tyelt*)(tmp) + 1)
+#define ATSINSupdate_ptrdec(tmp, tyelt) (tmp = (tyelt*)(tmp) - 1)
+//
+/* ****** ****** */
+
+#define ATSINSextvar_assign(var, pmv) var = (pmv)
+#define ATSINSdyncst_valbind(d2cst, pmv) d2cst = (pmv)
+
+/* ****** ****** */
+
+#define ATSINSclosure_initize(flab, tmpenv) (flab##__closureinit)tmpenv
+
+/* ****** ****** */
+//
+#define ATSINSraise_exn(tmp, pmv) atsruntime_raise(pmv)
+//
+/* ****** ****** */
+//
+#define ATSINScaseof_fail(msg) atsruntime_handle_unmatchedval(msg)
+#define ATSINSfunarg_fail(msg) atsruntime_handle_unmatchedarg(msg)
+//
+/* ****** ****** */
+
+#define \
+ATSINSmove_delay(tmpret, tyval, pmv_thk) \
+do { \
+  tmpret = \
+    ATS_MALLOC(sizeof(ATStylazy(tyval))) ; \
+  (*(ATStylazy(tyval)*)tmpret).flag = 0 ; \
+  (*(ATStylazy(tyval)*)tmpret).lazy.thunk = pmv_thk ; \
+} while(0) ; /* end of [do ... while ...] */
+
+#define \
+ATSINSmove_lazyeval(tmpret, tyval, pmv_lazy) \
+do { \
+  if ( \
+    (*(ATStylazy(tyval)*)pmv_lazy).flag==0 \
+  ) { \
+    (*(ATStylazy(tyval)*)pmv_lazy).flag += 1 ; \
+    atstype_cloptr __thunk = (*(ATStylazy(tyval)*)pmv_lazy).lazy.thunk ; \
+    tmpret = ATSfuncall(ATSfunclo_clo(__thunk, (atstype_cloptr), tyval), (__thunk)) ; \
+    (*(ATStylazy(tyval)*)pmv_lazy).lazy.saved = tmpret ; \
+  } else { \
+    tmpret = (*(ATStylazy(tyval)*)pmv_lazy).lazy.saved ; \
+  } /* end of [if] */ \
+} while(0) /* end of [do ... while ...] */
+
+/* ****** ****** */
+
+#define \
+ATSINSmove_ldelay(tmpret, tyval, __thunk) \
+do { \
+  ATSINSmove(tmpret, __thunk) ; \
+} while(0) /* end of [do ... while ...] */
+
+#define \
+ATSINSmove_llazyeval(tmpret, tyval, __thunk) \
+do { \
+  tmpret = \
+  ATSfuncall(ATSfunclo_clo(__thunk, (atstype_cloptr, atstype_bool), tyval), (__thunk, atsbool_true)) ; \
+  ATS_MFREE(__thunk) ; \
+} while(0) /* end of [do ... while ...] */
+
+/* ****** ****** */
+
+#define \
+atspre_lazy_vt_free(__thunk) \
+do { \
+  ATSfuncall(ATSfunclo_clo(__thunk, (atstype_cloptr, atstype_bool), void), (__thunk, atsbool_false)) ; \
+  ATS_MFREE(__thunk) ; \
+} while(0) /* atspre_lazy_vt_free */
+
+/* ****** ****** */
+//
+// HX-2014-10:
+//
+#define atspre_lazy2cloref(pmv_lazy) ((*(ATStylazy(atstype_ptr)*)pmv_lazy).lazy.thunk)
+//
+/* ****** ****** */
+
+#endif /* PATS_CCOMP_INSTRSET_H */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_instrset.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc.h
@@ -0,0 +1,132 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: October, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef PATS_CCOMP_MEMALLOC_H
+#define PATS_CCOMP_MEMALLOC_H
+
+/* ****** ****** */
+//
+// HX: for size_t
+//
+#include <stddef.h>
+//
+/* ****** ****** */
+//
+extern
+void atsruntime_mfree_undef (void *ptr) ;
+//
+extern
+void *atsruntime_malloc_undef (size_t bsz) ;
+extern
+void *atsruntime_calloc_undef (size_t asz, size_t tsz) ;
+extern
+void *atsruntime_realloc_undef (void *ptr, size_t bsz) ;
+//
+/* ****** ****** */
+
+#ifdef ATS_MEMALLOC_FLAG
+#undef ATS_MEMALLOC_FLAG
+#endif // ifdef(ATS_MEMALLOC_FLAG)
+
+/* ****** ****** */
+
+#ifdef ATS_MEMALLOC_LIBC
+//
+#define ATS_MEMALLOC_FLAG
+//
+#include "pats_ccomp_memalloc_libc.h"
+//
+#define ATS_MINIT atsruntime_minit_libc
+#define ATS_MFREE atsruntime_mfree_libc
+#define ATS_MALLOC atsruntime_malloc_libc_exn
+#define ATS_CALLOC atsruntime_calloc_libc_exn
+#define ATS_REALLOC atsruntime_realloc_libc_exn
+//
+#endif // end of [ATS_MEMALLOC_LIBC]
+
+/* ****** ****** */
+
+#ifdef ATS_MEMALLOC_GCBDW
+//
+#define ATS_MEMALLOC_FLAG
+//
+#include "pats_ccomp_memalloc_gcbdw.h"
+//
+#define ATS_MINIT atsruntime_minit_gcbdw
+#define ATS_MFREE atsruntime_mfree_gcbdw
+#define ATS_MALLOC atsruntime_malloc_gcbdw_exn
+#define ATS_CALLOC atsruntime_calloc_gcbdw_exn
+#define ATS_REALLOC atsruntime_realloc_gcbdw_exn
+//
+#endif // end of [ATS_MEMALLOC_GCBDW]
+
+/* ****** ****** */
+
+#ifdef ATS_MEMALLOC_USER
+//
+#define ATS_MEMALLOC_FLAG
+//
+#include "pats_ccomp_memalloc_user.h"
+//
+#define ATS_MINIT atsruntime_minit_user
+#define ATS_MFREE atsruntime_mfree_user
+#define ATS_MALLOC atsruntime_malloc_user
+#define ATS_CALLOC atsruntime_calloc_user
+#define ATS_REALLOC atsruntime_realloc_user
+//
+#endif // end of [ATS_MEMALLOC_USER]
+
+/* ****** ****** */
+
+#ifndef ATS_MEMALLOC_FLAG
+#define ATS_MEMALLOC_FLAG
+//
+#define ATS_MINIT atsruntime_minit_undef
+#define ATS_MFREE atsruntime_mfree_undef
+#define ATS_MALLOC atsruntime_malloc_undef
+#define ATS_CALLOC atsruntime_calloc_undef
+#define ATS_REALLOC atsruntime_realloc_undef
+//
+#endif // end of [ATS_MEMALLOC_FLAG]
+
+/* ****** ****** */
+
+#endif /* PATS_CCOMP_MEMALLOC_H */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_memalloc.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_gcbdw.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_gcbdw.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_gcbdw.h
@@ -0,0 +1,146 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+//
+#include <stdio.h>
+/*
+extern
+int fprintf (FILE *stream, const char *format, ...) ;
+*/
+/* ****** ****** */
+/*
+#include <stdlib.h>
+*/
+extern void exit (int code) ; 
+
+/* ****** ****** */
+/*
+#include <gc.h>
+*/
+extern void GC_init () ;
+extern void GC_free (void *ptr) ;
+extern void *GC_malloc(size_t bsz) ;
+extern void *GC_realloc(void *ptr, size_t bsz) ;
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atsruntime_minit_gcbdw
+  (/*void*/) { GC_init() ; return ; }
+// end of [atsruntime_minit_gcbdw]
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atsruntime_mfree_gcbdw
+  (void *ptr) { GC_free(ptr) ; return ; }
+// end of [atsruntime_mfree_gcbdw]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atsruntime_malloc_gcbdw
+  (size_t bsz) { return GC_malloc(bsz) ; }
+// end of [atsruntime_malloc_gcbdw]
+
+ATSinline()
+atstype_ptr
+atsruntime_malloc_gcbdw_exn
+  (size_t bsz)
+{
+  void *ptr ;
+  ptr = atsruntime_malloc_gcbdw(bsz) ;
+  if (!ptr)
+  {
+    fprintf(
+      stderr, "exit(ATS): atsruntime_malloc_gcbdw_exn: [malloc] failed.\n"
+    ) ; exit(1) ;
+  } // end of [if]
+  return (ptr) ;
+} /* end of [atsruntime_malloc_gcbdw_exn] */
+
+/* ****** ****** */
+//
+// HX:
+// [GC_malloc] already
+// clears the allocated region!
+//
+ATSinline()
+atstype_ptr
+atsruntime_calloc_gcbdw
+  (size_t asz, size_t tsz)
+{
+  return atsruntime_malloc_gcbdw (asz*tsz) ;
+} // end of [atsruntime_calloc_gcbdw]
+
+ATSinline()
+atstype_ptr
+atsruntime_calloc_gcbdw_exn
+  (size_t asz, size_t tsz)
+{
+  return atsruntime_malloc_gcbdw_exn (asz*tsz) ;
+} // end of [atsruntime_calloc_gcbdw_exn]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atsruntime_realloc_gcbdw
+  (void *ptr, size_t bsz) { return GC_realloc(ptr, bsz) ; }
+// end of [atsruntime_realloc_gcbdw]
+
+ATSinline()
+atstype_ptr
+atsruntime_realloc_gcbdw_exn
+  (void *ptr, size_t bsz)
+{
+  void *ptr2 ;
+  ptr2 = atsruntime_realloc_gcbdw(ptr, bsz) ;
+  if (!ptr2)
+  {
+    fprintf(
+    stderr, "exit(ATS): atsruntime_realloc_gcbdw_exn: [realloc] failed.\n"
+    ) ; exit(1) ;
+  } // end of [if]
+  return (ptr2) ;
+} /* end of [atsruntime_realloc_gcbdw_exn] */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_memalloc_gcbdw.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_libc.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_libc.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_libc.h
@@ -0,0 +1,140 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+//
+#include <stdio.h>
+/*
+extern
+int fprintf (FILE *stream, const char *format, ...) ;
+*/
+/* ****** ****** */
+//
+// stdlib.h
+//
+extern void exit (int code) ;
+//
+extern void free (void *ptr) ;
+extern void *malloc (size_t bsz) ;
+extern void *calloc(size_t asz, size_t tsz) ;
+extern void *realloc(void *ptr, size_t bsz) ;
+//
+/* ****** ****** */
+//
+ATSinline()
+atsvoid_t0ype
+atsruntime_minit_libc() { return ; }
+//
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atsruntime_mfree_libc
+  (atstype_ptr ptr) { free(ptr) ; return ; }
+// end of [atsruntime_mfree_libc]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atsruntime_malloc_libc
+  (atstype_size bsz) { return malloc(bsz) ; }
+// end of [atsruntime_malloc_libc]
+
+ATSinline()
+atstype_ptr
+atsruntime_malloc_libc_exn
+  (atstype_size bsz)
+{
+  atstype_ptr p ;
+  p = atsruntime_malloc_libc(bsz) ;
+  if (!p) {
+    fprintf(stderr, "exit(ATS): atsruntime_malloc_libc_exn: [malloc] failed.\n") ;
+    exit(1) ;
+  } // end of [if]
+  return (p) ;
+} /* end of [atsruntime_malloc_libc_exn] */
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atsruntime_calloc_libc
+  (atstype_size asz, atstype_size tsz) { return calloc(asz, tsz) ; }
+// end of [atsruntime_calloc_libc]
+
+ATSinline()
+atstype_ptr
+atsruntime_calloc_libc_exn
+(
+  atstype_size asz, atstype_size tsz
+)
+{
+  atstype_ptr p ;
+  p = atsruntime_calloc_libc(asz, tsz) ;
+  if (!p) {
+    fprintf(stderr, "exit(ATS): atsruntime_calloc_libc_exn: [calloc] failed.\n") ;
+    exit(1) ;
+  } // end of [if]
+  return (p) ;
+} /* end of [atsruntime_calloc_libc_exn] */
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atsruntime_realloc_libc
+  (atstype_ptr ptr, atstype_size bsz) { return realloc(ptr, bsz) ; }
+// end of [atsruntime_realloc_libc]
+
+ATSinline()
+atstype_ptr
+atsruntime_realloc_libc_exn
+(
+  atstype_ptr ptr, atstype_size bsz
+)
+{
+  atstype_ptr p ;
+  p = atsruntime_realloc_libc(ptr, bsz) ;
+  if (!p) {
+    fprintf(stderr, "exit(ATS): atsruntime_realloc_libc_exn: [realloc] failed.\n") ;
+    exit(1) ;
+  } // end of [if]
+  return (p) ;
+} /* end of [atsruntime_realloc_libc_exn] */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_memalloc_libc.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_user.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_user.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_user.h
@@ -0,0 +1,74 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+//
+#include <stdio.h>
+/*
+extern
+int fprintf (FILE *stream, const char *format, ...) ;
+*/
+/* ****** ****** */
+//
+// stdlib.h
+//
+extern void exit (int code) ;
+//
+/* ****** ****** */
+
+extern void atsruntime_mfree_user (void *ptr) ;
+extern void *atsruntime_malloc_user (size_t bsz) ;
+extern void *atsruntime_calloc_user (size_t asz, size_t tsz) ;
+extern void *atsruntime_realloc_user (void *ptr, size_t bsz) ;
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atsruntime_malloc_user_exn
+  (atstype_size bsz)
+{
+  atstype_ptr p ;
+  p = atsruntime_malloc_user(bsz) ;
+  if (!p) {
+    fprintf(stderr, "exit(ATS): atsruntime_malloc_user_exn: [malloc] failed.\n") ;
+    exit(1) ;
+  } // end of [if]
+  return (p) ;
+} /* end of [atsruntime_malloc_user_exn] */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_memalloc_user.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_user2.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_user2.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloc_user2.h
@@ -0,0 +1,58 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+//
+#include <stdio.h>
+/*
+extern
+int fprintf (FILE *stream, const char *format, ...) ;
+*/
+/* ****** ****** */
+//
+// stdlib.h
+//
+extern void exit (int code) ;
+//
+/* ****** ****** */
+
+extern void atsruntime_mfree_user2 (void *ptr) ;
+extern void *atsruntime_malloc_user2 (size_t bsz) ;
+extern void *atsruntime_calloc_user2 (size_t asz, size_t tsz) ;
+extern void *atsruntime_realloc_user2 (void *ptr, size_t bsz) ;
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_memalloc_user2.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloca.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloca.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_memalloca.h
@@ -0,0 +1,69 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef PATS_CCOMP_MEMALLOCA_H
+#define PATS_CCOMP_MEMALLOCA_H
+
+/* ****** ****** */
+//
+// alloca.h
+//
+extern void *alloca (size_t bsz) ;
+//
+/* ****** ****** */
+//
+// HX: [afree] matches [alloca]
+//
+ATSinline()
+atsvoid_t0ype
+atsruntime_afree_libc
+  (atstype_ptr ptr) { return ; }
+// end of [atsruntime_afree_libc]
+
+ATSinline()
+atstype_ptr
+atsruntime_alloca_libc
+  (atstype_size bsz) { return alloca(bsz) ; }
+// end of [atsruntime_alloca_libc]
+
+/* ****** ****** */
+
+#endif /* PATS_CCOMP_MEMALLOCA_H */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_memalloca.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime.c b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime.c
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime.c
@@ -0,0 +1,166 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: April, 2013 *)
+*/
+
+/* ****** ****** */
+//
+#include <stdio.h>
+//
+extern void exit (int) ; // in [stdlib.h]
+//
+/* ****** ****** */
+
+#include "pats_ccomp_basics.h"
+#include "pats_ccomp_typedefs.h"
+
+/* ****** ****** */
+//
+// HX-2013-04: some pre-initialized exceptions
+//
+/* ****** ****** */
+
+#ifndef \
+_ATS_CCOMP_EXCEPTION_NONE_
+//
+atstype_exncon
+ATSLIB_056_prelude__AssertExn = { 10, "AssertException" } ;
+atstype_exncon
+ATSLIB_056_prelude__GenerallyExn = { 20, "GenerallyException" } ;
+atstype_exncon
+ATSLIB_056_prelude__IllegalArgExn = { 30, "IllegalArgException" } ;
+//
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+
+/* ****** ****** */
+
+#ifndef \
+_ATS_CCOMP_EXCEPTION_NONE_
+//
+atstype_exncon
+ATSLIB_056_prelude__NotSomeExn = { 40, "NotSomeException" } ;
+atstype_exncon
+ATSLIB_056_prelude__NotFoundExn = { 41, "NotFoundException" } ;
+//
+atstype_exncon
+ATSLIB_056_prelude__ListSubscriptExn = { 50, "ListSubscriptException" } ;
+atstype_exncon
+ATSLIB_056_prelude__StreamSubscriptExn = { 51, "StreamSubscriptException" } ;
+//
+atstype_exncon
+ATSLIB_056_prelude__ArraySubscriptExn = { 60, "ArraySubscriptException" } ;
+atstype_exncon
+ATSLIB_056_prelude__MatrixSubscriptExn = { 61, "MatrixSubscriptException" } ;
+//
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+
+/* ****** ****** */
+
+#ifndef \
+_ATS_CCOMP_EXCEPTION_NONE_
+//
+extern
+void
+the_atsexncon_initize
+(
+  atstype_exncon *d2c, char* exnmsg
+)
+{
+//
+  static int the_atsexntag = 1024 ;
+//
+  if (!d2c->exntag)
+  {
+    d2c->exntag = the_atsexntag ;
+    the_atsexntag = the_atsexntag + 1 ;
+  }
+  d2c->exnmsg = exnmsg ;
+  return ;
+} // end of [the_atsexncon_initize]
+//
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+
+/* ****** ****** */
+//
+// HX-2013:
+// for reporting pattern matching failure
+//
+extern
+void
+atsruntime_handle_unmatchedval
+  (char *msg0)
+{
+  fprintf
+  ( stderr
+  , "exit(ATS): unmatched value at run-time:\n%s\n", msg0
+  ) ; exit(1) ;
+  return ; // deadcode
+} /* end of [atsruntime_handle_unmatchedval] */
+//
+/* ****** ****** */
+//
+// HX-2014-06:
+// for reporting funarg-pattern matching failure
+//
+extern
+void
+atsruntime_handle_unmatchedarg
+  (char *msg0)
+{
+  fprintf
+  ( stderr
+  , "exit(ATS): unmatched funarg at run-time:\n%s\n", msg0
+  ) ; exit(1) ;
+  return ; // deadcode
+} /* end of [atsruntime_handle_unmatchedarg] */
+//
+/* ****** ****** */
+//
+// HX-2014-06:
+// for reporting failure due to uncaught exception
+//
+extern
+void
+atsruntime_handle_uncaughtexn_rest
+  (atstype_exncon *exn0)
+{
+  fprintf
+  ( stderr
+  , "exit(ATS): uncaught exception at run-time:\n%s(%d)\n", exn0->exnmsg, exn0->exntag
+  ) ; exit(1) ;
+  return ; // deadcode
+} /* end of [atsruntime_handle_uncaughtexn_rest] */
+//
+/* ****** ****** */
+
+/* end of [pats_ccomp_runtime.c] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime2_dats.c b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime2_dats.c
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime2_dats.c
@@ -0,0 +1,390 @@
+/*
+**
+** The C code is generated by ATS/Postiats
+** The compilation time is: 2014-8-4: 12h:36m
+**
+*/
+/*
+typedefs-for-tyrecs-and-tysums(beg)
+*/
+typedef
+ATSstruct {
+int exntag ;
+char *exnmsg ;
+atstkind_type(atstype_ptrk) atslab__0; 
+} pats_ccomp_runtime2_tyexn ;
+/*
+typedefs-for-tyrecs-and-tysums(end)
+*/
+/*
+dynconlst-declaration(beg)
+*/
+/*
+dynconlst-declaration(end)
+*/
+/*
+dyncstlst-declaration(beg)
+*/
+ATSdyncst_mac(atspre_prerr_string)
+ATSdyncst_mac(atspre_prerr_newline)
+ATSdyncst_mac(atspre_exit)
+ATSdyncst_extfun(atsruntime_handle_uncaughtexn_rest, (atstype_exnconptr), atsvoid_t0ype) ;
+/*
+dyncstlst-declaration(end)
+*/
+/*
+dynvalist-implementation(beg)
+*/
+/*
+dynvalist-implementation(end)
+*/
+/*
+exnconlst-declaration(beg)
+*/
+/*
+assumelst-declaration(beg)
+*/
+/*
+assumelst-declaration(end)
+*/
+/*
+extypelst-declaration(beg)
+*/
+/*
+extypelst-declaration(end)
+*/
+
+/* ****** ****** */
+
+/*
+/home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1541(line=43, offs=3) -- 2287(line=72, offs=4)
+*/
+/*
+local: 
+global: atsruntime_handle_uncaughtexn$0$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atsvoid_t0ype
+atsruntime_handle_uncaughtexn(void *arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec_void(tmpret0) ;
+ATStmpdec(tmp1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp2, atstkind_type(atstype_ptrk)) ;
+ATStmpdec_void(tmp3) ;
+ATStmpdec_void(tmp4) ;
+ATStmpdec_void(tmp5) ;
+ATStmpdec_void(tmp6) ;
+ATStmpdec_void(tmp7) ;
+ATStmpdec_void(tmp8) ;
+ATStmpdec_void(tmp9) ;
+ATStmpdec_void(tmp10) ;
+ATStmpdec_void(tmp11) ;
+ATStmpdec_void(tmp12) ;
+ATStmpdec_void(tmp13) ;
+ATStmpdec_void(tmp14) ;
+ATStmpdec_void(tmp15) ;
+ATStmpdec_void(tmp16) ;
+/* tmpvardeclst(end) */
+/* funbodyinstrlst(beg) */
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1509(line=42, offs=1) -- 2287(line=72, offs=4)
+*/
+ATSINSflab(__patsflab_atsruntime_handle_uncaughtexn):
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1641(line=51, offs=1) -- 2280(line=70, offs=65)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1659(line=53, offs=3) -- 1672(line=53, offs=16)
+*/
+ATSINSlab(__atstmplab0):
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1542(line=43, offs=4) -- 1545(line=43, offs=7)
+*/
+ATSifnthen(ATSCKpat_exn0(arg0, ATSLIB_056_prelude__AssertExn)) { ATSINSgoto(__atstmplab2) ; } ;
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1672(line=53, offs=16) -- 1672(line=53, offs=16)
+*/
+ATSINSlab(__atstmplab1):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1676(line=53, offs=20) -- 1761(line=56, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1693(line=54, offs=14) -- 1706(line=54, offs=27)
+*/
+ATSINSmove_void(tmp3, atspre_prerr_string(ATSPMVstring("exit(ATS): uncaught exception at run-time"))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1720(line=55, offs=14) -- 1744(line=55, offs=38)
+*/
+ATSINSmove_void(tmp4, atspre_prerr_string(ATSPMVstring(": AssertExn"))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1720(line=55, offs=14) -- 1744(line=55, offs=38)
+*/
+ATSINSmove_void(tmp5, atspre_prerr_newline()) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1748(line=55, offs=42) -- 1754(line=55, offs=48)
+*/
+ATSINSmove_void(tmpret0, atspre_exit(ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1676(line=53, offs=20) -- 1761(line=56, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1788(line=57, offs=3) -- 1803(line=57, offs=18)
+*/
+ATSINSlab(__atstmplab2):
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1542(line=43, offs=4) -- 1545(line=43, offs=7)
+*/
+ATSifnthen(ATSCKpat_exn0(arg0, ATSLIB_056_prelude__NotFoundExn)) { ATSINSgoto(__atstmplab4) ; } ;
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1803(line=57, offs=18) -- 1803(line=57, offs=18)
+*/
+ATSINSlab(__atstmplab3):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1807(line=57, offs=22) -- 1894(line=60, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1824(line=58, offs=14) -- 1837(line=58, offs=27)
+*/
+ATSINSmove_void(tmp6, atspre_prerr_string(ATSPMVstring("exit(ATS): uncaught exception at run-time"))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1851(line=59, offs=14) -- 1877(line=59, offs=40)
+*/
+ATSINSmove_void(tmp7, atspre_prerr_string(ATSPMVstring(": NotFoundExn"))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1851(line=59, offs=14) -- 1877(line=59, offs=40)
+*/
+ATSINSmove_void(tmp8, atspre_prerr_newline()) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1881(line=59, offs=44) -- 1887(line=59, offs=50)
+*/
+ATSINSmove_void(tmpret0, atspre_exit(ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1807(line=57, offs=22) -- 1894(line=60, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1921(line=61, offs=3) -- 1940(line=61, offs=22)
+*/
+ATSINSlab(__atstmplab4):
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1542(line=43, offs=4) -- 1545(line=43, offs=7)
+*/
+ATSifnthen(ATSCKpat_exn1(arg0, ATSLIB_056_prelude__GenerallyExn)) { ATSINSgoto(__atstmplab6) ; } ;
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1940(line=61, offs=22) -- 1940(line=61, offs=22)
+*/
+ATSINSlab(__atstmplab5):
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1936(line=61, offs=18) -- 1939(line=61, offs=21)
+*/
+ATSINSmove(tmp1, ATSSELcon(arg0, pats_ccomp_runtime2_tyexn, atslab__0)) ;
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1921(line=61, offs=3) -- 2039(line=64, offs=6)
+*/
+/*
+ATSINSfreecon(arg0) ;
+*/
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1944(line=61, offs=26) -- 2039(line=64, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1961(line=62, offs=14) -- 1974(line=62, offs=27)
+*/
+ATSINSmove_void(tmp9, atspre_prerr_string(ATSPMVstring("exit(ATS): uncaught exception at run-time"))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1988(line=63, offs=14) -- 2022(line=63, offs=48)
+*/
+ATSINSmove_void(tmp10, atspre_prerr_string(ATSPMVstring(": GenerallyExn: "))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1988(line=63, offs=14) -- 2022(line=63, offs=48)
+*/
+ATSINSmove_void(tmp11, atspre_prerr_string(tmp1)) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1988(line=63, offs=14) -- 2022(line=63, offs=48)
+*/
+ATSINSmove_void(tmp12, atspre_prerr_newline()) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2026(line=63, offs=52) -- 2032(line=63, offs=58)
+*/
+ATSINSmove_void(tmpret0, atspre_exit(ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1944(line=61, offs=26) -- 2039(line=64, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2066(line=65, offs=3) -- 2086(line=65, offs=23)
+*/
+ATSINSlab(__atstmplab6):
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 1542(line=43, offs=4) -- 1545(line=43, offs=7)
+*/
+ATSifnthen(ATSCKpat_exn1(arg0, ATSLIB_056_prelude__IllegalArgExn)) { ATSINSgoto(__atstmplab8) ; } ;
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2086(line=65, offs=23) -- 2086(line=65, offs=23)
+*/
+ATSINSlab(__atstmplab7):
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2082(line=65, offs=19) -- 2085(line=65, offs=22)
+*/
+ATSINSmove(tmp2, ATSSELcon(arg0, pats_ccomp_runtime2_tyexn, atslab__0)) ;
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2066(line=65, offs=3) -- 2186(line=68, offs=6)
+*/
+/*
+ATSINSfreecon(arg0) ;
+*/
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2090(line=65, offs=27) -- 2186(line=68, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2107(line=66, offs=14) -- 2120(line=66, offs=27)
+*/
+ATSINSmove_void(tmp13, atspre_prerr_string(ATSPMVstring("exit(ATS): uncaught exception at run-time"))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2134(line=67, offs=14) -- 2169(line=67, offs=49)
+*/
+ATSINSmove_void(tmp14, atspre_prerr_string(ATSPMVstring(": IllegalArgExn: "))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2134(line=67, offs=14) -- 2169(line=67, offs=49)
+*/
+ATSINSmove_void(tmp15, atspre_prerr_string(tmp2)) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2134(line=67, offs=14) -- 2169(line=67, offs=49)
+*/
+ATSINSmove_void(tmp16, atspre_prerr_newline()) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2173(line=67, offs=53) -- 2179(line=67, offs=59)
+*/
+ATSINSmove_void(tmpret0, atspre_exit(ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2090(line=65, offs=27) -- 2186(line=68, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2219(line=70, offs=4) -- 2219(line=70, offs=4)
+*/
+ATSINSlab(__atstmplab8):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/hwxi/research/Postiats/git/ccomp/runtime/pats_ccomp_runtime2.dats: 2240(line=70, offs=25) -- 2279(line=70, offs=64)
+*/
+ATSINSmove_void(tmpret0, atsruntime_handle_uncaughtexn_rest(arg0)) ;
+
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/* funbodyinstrlst(end) */
+ATSreturn_void(tmpret0) ;
+} /* end of [atsruntime_handle_uncaughtexn] */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_runtime2_dats.c] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime_memalloc.c b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime_memalloc.c
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime_memalloc.c
@@ -0,0 +1,104 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: April, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifdef ATS_MEMALLOC_LIBC
+
+extern
+void
+atsruntime_mfree_undef (void *ptr)
+{
+ atsruntime_mfree_libc (ptr) ; return ;
+}
+extern
+void
+*atsruntime_malloc_undef (size_t bsz)
+{
+ return atsruntime_malloc_libc (bsz) ;
+}
+extern
+void
+*atsruntime_calloc_undef
+  (size_t asz, size_t tsz)
+{
+ return atsruntime_calloc_libc (asz, tsz) ;
+}
+extern
+void
+*atsruntime_realloc_undef
+   (void *ptr, size_t bsz)
+{
+ return atsruntime_realloc_libc (ptr, bsz) ;
+}
+
+#endif // ATS_MEMALLOC_LIBC
+
+/* ****** ****** */
+
+#ifdef ATS_MEMALLOC_GCBDW
+
+extern
+void
+atsruntime_mfree_undef (void *ptr)
+{
+ atsruntime_mfree_gcbdw (ptr) ; return ;
+}
+extern
+void
+*atsruntime_malloc_undef (size_t bsz)
+{
+ return atsruntime_malloc_gcbdw (bsz) ;
+}
+extern
+void
+*atsruntime_calloc_undef
+  (size_t asz, size_t tsz)
+{
+ return atsruntime_calloc_gcbdw (asz, tsz) ;
+}
+extern
+void
+*atsruntime_realloc_undef
+   (void *ptr, size_t bsz)
+{
+ return atsruntime_realloc_gcbdw (ptr, bsz) ;
+}
+
+#endif // ATS_MEMALLOC_GCBDW
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_runtime_memalloc.c] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime_trywith.c b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime_trywith.c
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_runtime_trywith.c
@@ -0,0 +1,86 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: April, 2013 *)
+*/
+
+/* ****** ****** */
+//
+#include "pats_ccomp_basics.h"
+#include "pats_ccomp_typedefs.h"
+#include "pats_ccomp_exception.h"
+//
+/* ****** ****** */
+//
+// HX-2013-06:
+// it is only for single-threaded programs
+//
+/* ****** ****** */
+
+extern
+atsexnframe_ptr
+*my_atsexnframe_getref ()
+{
+//
+static
+atsexnframe_t *my_atsexnframe = (void*)0 ;
+//
+return &(my_atsexnframe) ;
+//
+} // end of [my_atsexnframe_getref]
+
+/* ****** ****** */
+
+extern
+void
+atsruntime_raise
+  (void *exn0)
+{
+//
+  atsexnframe_t *frame ;
+  frame = *(my_atsexnframe_getref()) ;
+//
+  do {
+    if (!frame) break ;
+    (frame)->exn = (atstype_exnconptr)exn0 ;
+    atspre_longjmp((frame)->env, 1/*retval*/) ;
+  } while (0) ; // end of [do]
+//
+  atsruntime_handle_uncaughtexn(exn0) ;
+//
+  return ;
+//
+} /* end of [atsruntime_raise] */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_runtime_trywith.c] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_typedefs.h b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_typedefs.h
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/pats_ccomp_typedefs.h
@@ -0,0 +1,225 @@
+/* ******************************************************************* */
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/* ******************************************************************* */
+
+/*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-20?? Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+** 
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+** 
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: October, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef PATS_CCOMP_TYPEDEFS_H
+#define PATS_CCOMP_TYPEDEFS_H
+
+/* ****** ****** */
+
+/*
+** HX:
+** of indefinite size
+*/
+struct atstype_struct ;
+
+/* ****** ****** */
+
+typedef void atstype_void ;
+typedef void atsvoid_t0ype ;
+
+/* ****** ****** */
+
+typedef int atstype_int ;
+typedef unsigned int atstype_uint ;
+
+typedef long int atstype_lint ;
+typedef unsigned long int atstype_ulint ;
+
+typedef long long int atstype_llint ;
+typedef unsigned long long int atstype_ullint ;
+
+typedef short int atstype_sint ;
+typedef unsigned short int atstype_usint ;
+
+/* ****** ****** */
+
+typedef atstype_lint atstype_ssize ;
+typedef atstype_ulint atstype_size ;
+
+/* ****** ****** */
+//
+// HX: true/false: 1/0
+//
+typedef int atstype_bool ;
+//
+/* ****** ****** */
+
+typedef unsigned char atstype_byte ;
+
+/* ****** ****** */
+
+typedef char atstype_char ;
+typedef signed char atstype_schar ;
+typedef unsigned char atstype_uchar ;
+
+/* ****** ****** */
+
+typedef char *atstype_string ;
+typedef char *atstype_stropt ;
+typedef char *atstype_strptr ;
+
+/* ****** ****** */
+
+typedef float atstype_float ;
+typedef double atstype_double ;
+typedef long double atstype_ldouble ;
+
+/* ****** ****** */
+/*
+** HX: for pointers
+*/
+typedef void *atstype_ptr ;
+typedef void *atstype_ptrk ;
+/*
+** HX: for references
+*/
+typedef void *atstype_ref ;
+/*
+** HX: for boxed values
+*/
+typedef void* atstype_boxed ;
+/*
+** HX: for [datconptr]
+*/
+typedef void* atstype_datconptr ;
+/*
+** HX: for [datcontyp]
+*/
+typedef void* atstype_datcontyp ;
+
+/* ****** ****** */
+
+#ifdef \
+_ATS_CCOMP_EXCEPTION_NONE_
+//
+// HX: should a message be issued?
+//
+#else
+//
+typedef struct
+{
+  atstype_int exntag ;
+  atstype_string exnmsg ;
+} atstype_exncon ;
+//
+typedef
+atstype_exncon *atstype_exnconptr ;
+//
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+
+/* ****** ****** */
+/*
+** HX: for pointers to arrays
+*/
+typedef void* atstype_arrptr ;
+/*
+** HX: for arrays plus size info
+*/
+typedef
+struct {
+  atstype_arrptr ptr ; atstype_size size ;
+} atstype_arrpsz ;
+
+/* ****** ****** */
+
+typedef void* atstype_funptr ;
+typedef void* atstype_cloptr ;
+
+/* ****** ****** */
+
+#define atstkind_type(tk) tk
+#define atstkind_t0ype(tk) tk
+
+/* ****** ****** */
+//
+// HX-2014-09-16:
+// making it unusable unless
+// _ATS_ARRAY_FIELD is defined
+//
+#ifdef _ATS_ARRAY_FIELD_
+#define atstyarr_field(fname) fname[]
+#else
+#define atstyarr_field(fname) atstyarr_field_undef(fname)
+#endif // end of [_ATS_ARRAY_FIELD_]
+//
+/* ****** ****** */
+//
+// HX-2014-05:
+// making it not usable!!!
+//
+#ifdef _ATSTYPE_VAR_SIZE_
+// HX: it is set by the user
+#else
+#define _ATSTYPE_VAR_SIZE_ 0X10000
+#endif // end of [#ifdef]
+//
+// HX-2014-05:
+// for 8-bit or 16-bit march,
+// _ATSTYPE_VAR_SIZE can be set to 0X100
+//
+typedef
+struct{char _[_ATSTYPE_VAR_SIZE_];} atstype_var[0] ;
+//
+/* ****** ****** */
+
+#define atstyvar_type(a) atstype_var
+
+/* ****** ****** */
+
+#define atstybox_type(hit) atstype_boxed
+
+/* ****** ****** */
+
+#define atstyclo_top struct{ void *cfun; }
+#define atstyclo_type(flab) flab##__closure_t0ype
+
+/* ****** ****** */
+
+#define atsvararg_type(hit) ...
+
+/* ****** ****** */
+
+#define atsrefarg0_type(hit) hit
+#define atsrefarg1_type(hit) atstype_ref
+
+/* ****** ****** */
+
+#endif /* PATS_CCOMP_TYPEDEFS_H */
+
+/* ****** ****** */
+
+/* end of [pats_ccomp_typedefs.h] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/alloca.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/alloca.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/alloca.cats
@@ -0,0 +1,61 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2014 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_ALLOCA
+#define ATSLIB_LIBATS_LIBC_CATS_ALLOCA
+
+/* ****** ****** */
+
+#include <alloca.h>
+
+/* ****** ****** */
+//
+#define atslib_libats_libc_alloca(bsz) alloca(bsz)
+//
+/* ****** ****** */
+//
+#define atslib_libats_libc_ptr_alloca_tsz(tsz) alloca(tsz)
+//
+#define atslib_libats_libc_array_ptr_alloca_tsz(asz, tsz) alloca((asz)*(tsz))
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_ALLOCA
+
+/* ****** ****** */
+
+/* end of [alloca.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/dirent.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/dirent.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/dirent.cats
@@ -0,0 +1,120 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_DIRENT
+#define ATSLIB_LIBATS_LIBC_CATS_DIRENT
+
+/* ****** ****** */
+
+#include <sys/types.h>
+#include <dirent.h> // HX: after sys/types
+
+/* ****** ****** */
+
+#include "share/H/pats_atslib.h"
+
+/* ****** ****** */
+//
+typedef DIR atslib_libats_libc_DIR_type ;
+//
+typedef
+struct dirent atslib_libats_libc_dirent_type ;
+//
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_dirent_get_d_ino(ent) \
+(((atslib_libats_libc_dirent_type*)ent)->d_ino)
+#define \
+atslib_libats_libc_dirent_get_d_name(ent) \
+(((atslib_libats_libc_dirent_type*)ent)->d_name)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_direntp_get_d_name(entp) \
+(((atslib_libats_libc_dirent_type*)entp)->d_name)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_direntp_free(x) atspre_mfree_gc(x)
+
+/* ****** ****** */
+
+#define atslib_libats_libc_alphasort alphasort
+#define atslib_libats_libc_versionsort versionsort
+
+/* ****** ****** */
+
+#define atslib_libats_libc_opendir opendir
+
+/* ****** ****** */
+
+#define atslib_libats_libc_closedir closedir
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_readdir readdir
+#define \
+atslib_libats_libc_readdir_r(dirp, ent, res) \
+  readdir_r((DIR*)dirp, (struct dirent*)ent, (struct dirent**)res)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_scandir(dirp, namelst, filter, compar) \
+  scandir((char*)dirp, (struct dirent***)namelst, (void*)filter, (void*)compar)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_rewinddir rewinddir
+
+/* ****** ****** */
+
+#define atslib_libats_libc_seekdir seekdir
+#define atslib_libats_libc_telldir telldir
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_DIRENT
+
+/* ****** ****** */
+
+/* end of [dirent.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/dlfcn.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/dlfcn.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/dlfcn.cats
@@ -0,0 +1,75 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: December, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_DLFCN
+#define ATSLIB_LIBATS_LIBC_CATS_DLFCN
+
+/* ****** ****** */
+
+#include <dlfcn.h>
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_dlopen dlopen
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_dlclose dlclose
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_dlerror dlerror
+
+/* ****** ****** */
+
+#define atslib_libats_libc_dlsym dlsym
+
+/* ****** ****** */
+
+#define atslib_libats_libc_dladdr dladdr
+#define atslib_libats_libc_dlvsym dlvsym
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_DLFCN
+
+/* ****** ****** */
+
+/* end of [dlfcn.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/errno.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/errno.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/errno.cats
@@ -0,0 +1,85 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/libc/CATS/CODEGEN/errno.atxt
+** Time of generation: Mon Sep  5 20:36:41 2016
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_ERRNO
+#define ATSLIB_LIBATS_LIBC_CATS_ERRNO
+
+/* ****** ****** */
+
+#include <errno.h>
+
+/* ****** ****** */
+
+typedef int errno_t ;
+
+/* ****** ****** */
+
+#define ENONE 0
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_the_errno_get() (errno)
+#define \
+atslib_libats_libc_the_errno_set(x) (errno = (x))
+#define \
+atslib_libats_libc_the_errno_reset() (errno = ENONE)
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atslib_libats_libc_the_errno_test(errno_t x)
+{
+  return (errno==(x)) ? atsbool_true : atsbool_false ;
+} /* end of [atslib_libats_libc_the_errno_test] */
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_ERRNO
+
+/* ****** ****** */
+
+/* end of [errno.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/fcntl.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/fcntl.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/fcntl.cats
@@ -0,0 +1,85 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_FCNTL
+#define ATSLIB_LIBATS_LIBC_CATS_FCNTL
+
+/* ****** ****** */
+
+#include <sys/types.h>
+#include <fcntl.h> // HX: after sys/types
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fildes_get_int(fd) (fd)
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atslib_libats_libc_fildes_isgtez
+  (atstype_int fd)
+{
+  return (fd >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atslib_libats_libc_fildes_isgtez]
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_fcntlflags_lor(x1, x2) ((x1)|(x2))
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_fcntl_getfl(fd) fcntl(fd, F_GETFL)
+#define \
+atslib_libats_libc_fcntl_setfl(fd, flags) fcntl(fd, F_SETFL, flags)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_open_flags(path, flags) open((char*)path, flags)
+#define \
+atslib_libats_libc_open_flags_mode(path, flags, mode) open((char*)path, flags, mode)
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_FCNTL
+
+/* ****** ****** */
+
+/* end of [fcntl.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/float.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/float.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/float.cats
@@ -0,0 +1,51 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: October, 2014 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_FLOAT
+#define ATSLIB_LIBATS_LIBC_CATS_FLOAT
+
+/* ****** ****** */
+
+#include <float.h>
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_FLOAT
+
+/* ****** ****** */
+
+/* end of [float.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/fnmatch.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/fnmatch.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/fnmatch.cats
@@ -0,0 +1,58 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_FNMATCH
+#define ATSLIB_LIBATS_LIBC_CATS_FNMATCH
+
+/* ****** ****** */
+
+#include <fnmatch.h>
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_fnmatch_null(pat, str) fnmatch((char*)pat, (char*)str, 0)
+#define \
+atslib_libats_libc_fnmatch_flags(pat, str, flags) fnmatch((char*)pat, (char*)str, flags)
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_FNMATCH
+
+/* ****** ****** */
+
+/* end of [fnmatch.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/malloc.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/malloc.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/malloc.cats
@@ -0,0 +1,60 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_MALLOC
+#define ATSLIB_LIBATS_LIBC_CATS_MALLOC
+
+/* ****** ****** */
+
+#include <malloc.h>
+
+/* ****** ****** */
+
+#define atslib_libats_libc_mallopt mallopt
+#define atslib_libats_libc_malloc_trim malloc_trim
+#define atslib_libats_libc_malloc_usable_size malloc_usable_size
+#define atslib_libats_libc_malloc_stats malloc_stats
+#define atslib_libats_libc_malloc_get_state malloc_get_state
+#define atslib_libats_libc_malloc_set_state malloc_set_state
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_MALLOC
+
+/* ****** ****** */
+
+/* end of [malloc.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/math.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/math.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/math.cats
@@ -0,0 +1,235 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_MATH
+#define ATSLIB_LIBATS_LIBC_CATS_MATH
+
+/* ****** ****** */
+
+#include <math.h>
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_isfinite_float isfinite
+#define \
+atslib_libats_libc_isfinite_double isfinite
+#define \
+atslib_libats_libc_isfinite_ldouble isfinite
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_isnormal_float isnormal
+#define \
+atslib_libats_libc_isnormal_double isnormal
+#define \
+atslib_libats_libc_isnormal_ldouble isnormal
+
+/* ****** ****** */
+
+#define atslib_libats_libc_isinf_float isinf
+#define atslib_libats_libc_isinf_double isinf
+#define atslib_libats_libc_isinf_ldouble isinf
+
+/* ****** ****** */
+
+#define atslib_libats_libc_isnan_float isnan
+#define atslib_libats_libc_isnan_double isnan
+#define atslib_libats_libc_isnan_ldouble isnan
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fpclassify_float fpclassify
+#define atslib_libats_libc_fpclassify_double fpclassify
+#define atslib_libats_libc_fpclassify_ldouble fpclassify
+
+/* ****** ****** */
+
+#define atslib_libats_libc_ceil_float ceilf
+#define atslib_libats_libc_ceil_double ceil
+#define atslib_libats_libc_ceil_ldouble ceill
+
+/* ****** ****** */
+
+#define atslib_libats_libc_floor_float floorf
+#define atslib_libats_libc_floor_double floor
+#define atslib_libats_libc_floor_ldouble floorl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_round_float roundf
+#define atslib_libats_libc_round_double round
+#define atslib_libats_libc_round_ldouble roundl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_trunc_float truncf
+#define atslib_libats_libc_trunc_double trunc
+#define atslib_libats_libc_trunc_ldouble truncl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fmod_float fmodf
+#define atslib_libats_libc_fmod_double fmod
+#define atslib_libats_libc_fmod_ldouble fmodl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fmax_float fmaxf
+#define atslib_libats_libc_fmax_double fmax
+#define atslib_libats_libc_fmax_ldouble fmaxl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fmin_float fminf
+#define atslib_libats_libc_fmin_double fmin
+#define atslib_libats_libc_fmin_ldouble fminl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fdim_float fdimf
+#define atslib_libats_libc_fdim_double fdim
+#define atslib_libats_libc_fdim_ldouble fdiml
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fma_float fmaf
+#define atslib_libats_libc_fma_double fma
+#define atslib_libats_libc_fma_ldouble fmal
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sqrt_float sqrtf
+#define atslib_libats_libc_sqrt_double sqrt
+#define atslib_libats_libc_sqrt_ldouble sqrtl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_cbrt_float cbrtf
+#define atslib_libats_libc_cbrt_double cbrt
+#define atslib_libats_libc_cbrt_ldouble cbrtl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_pow_float powf
+#define atslib_libats_libc_pow_double pow
+#define atslib_libats_libc_pow_ldouble powl
+
+/* ****** ****** */
+
+#define atslib_libats_libc_exp_float expf
+#define atslib_libats_libc_exp_double exp
+#define atslib_libats_libc_exp_ldouble expl
+
+/* ****** ****** */
+//
+#define atslib_libats_libc_log_float logf
+#define atslib_libats_libc_log_double log
+#define atslib_libats_libc_log_ldouble logl
+//
+#define atslib_libats_libc_log10_float log10f
+#define atslib_libats_libc_log10_double log10
+#define atslib_libats_libc_log10_ldouble log10l
+//
+/* ****** ****** */
+//
+#define atslib_libats_libc_sin_float sinf
+#define atslib_libats_libc_sin_double sin
+#define atslib_libats_libc_sin_ldouble sinl
+//
+#define atslib_libats_libc_cos_float cosf
+#define atslib_libats_libc_cos_double cos
+#define atslib_libats_libc_cos_ldouble cosl
+//
+#define atslib_libats_libc_tan_float tanf
+#define atslib_libats_libc_tan_double tan
+#define atslib_libats_libc_tan_ldouble tanl
+//
+/* ****** ****** */
+//
+#define atslib_libats_libc_asin_float asinf
+#define atslib_libats_libc_asin_double asin
+#define atslib_libats_libc_asin_ldouble asinl
+//
+#define atslib_libats_libc_acos_float acosf
+#define atslib_libats_libc_acos_double acos
+#define atslib_libats_libc_acos_ldouble cosl
+//
+#define atslib_libats_libc_atan_float atanf
+#define atslib_libats_libc_atan_double atan
+#define atslib_libats_libc_atan_ldouble atanl
+//
+#define atslib_libats_libc_atan2_float atan2f
+#define atslib_libats_libc_atan2_double atan2
+#define atslib_libats_libc_atan2_ldouble atan2l
+//
+/* ****** ****** */
+//
+#define atslib_libats_libc_sinh_float sinhf
+#define atslib_libats_libc_sinh_double sinh
+#define atslib_libats_libc_sinh_ldouble sinhl
+//
+#define atslib_libats_libc_cosh_float coshf
+#define atslib_libats_libc_cosh_double cosh
+#define atslib_libats_libc_cosh_ldouble coshl
+//
+#define atslib_libats_libc_tanh_float tanhf
+#define atslib_libats_libc_tanh_double tanh
+#define atslib_libats_libc_tanh_ldouble tanhl
+//
+/* ****** ****** */
+
+#define atslib_libats_libc_asinh_float asinhf
+#define atslib_libats_libc_asinh_double asinh
+#define atslib_libats_libc_asinh_ldouble asinhl
+//
+#define atslib_libats_libc_acosh_float acoshf
+#define atslib_libats_libc_acosh_double acosh
+#define atslib_libats_libc_acosh_ldouble acoshl
+//
+#define atslib_libats_libc_atanh_float atanhf
+#define atslib_libats_libc_atanh_double atanh
+#define atslib_libats_libc_atanh_ldouble atanhl
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_MATH
+
+/* ****** ****** */
+
+/* end of [math.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/signal.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/signal.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/signal.cats
@@ -0,0 +1,125 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: April, 2014 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_SIGNAL
+#define ATSLIB_LIBATS_LIBC_CATS_SIGNAL
+
+/* ****** ****** */
+
+#include <signal.h>
+
+/* ****** ****** */
+//
+typedef int signum_t ;
+//
+typedef
+void (*sighandler_t)(signum_t) ;
+//
+/* ****** ****** */
+
+typedef
+struct sigaction
+atslib_libats_libc_sigaction_struct ;
+
+/* ****** ****** */
+
+#define atslib_libats_libc_signal signal
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sigaddset sigaddset
+#define atslib_libats_libc_sigdelset sigdelset
+#define atslib_libats_libc_sigemptyset sigemptyset
+#define atslib_libats_libc_sigfillset sigfillset
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_sigaction sigaction
+#define \
+atslib_libats_libc_sigaction_null(sgn, act) \
+atslib_libats_libc_sigaction(sgn, act, (atslib_libats_libc_sigaction_struct*)0)
+
+/* ****** ****** */
+
+#define atslib_libats_libc_kill kill
+#define atslib_libats_libc_killpg killpg
+#define atslib_libats_libc_raise raise
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sigset sigset
+#define atslib_libats_libc_sighold sighold
+#define atslib_libats_libc_sigignore sigignore
+#define atslib_libats_libc_sigrelse sigrelse
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sigwait sigwait
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sigpause sigpause
+#define atslib_libats_libc_sigsuspend sigsuspend
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sigpending sigpending
+#define atslib_libats_libc_siginterrupt siginterrupt
+
+/* ****** ****** */
+
+#define atslib_libats_libc_psignal psignal
+
+/* ****** ****** */
+
+/*
+//
+// declared in <string.h>
+//
+extern
+char* strsignal (int signum) ;
+*/
+#define atslib_libats_libc_strsignal strsignal
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SIGNAL
+
+/* ****** ****** */
+
+/* end of [signal.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/stdio.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/stdio.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/stdio.cats
@@ -0,0 +1,226 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: September, 2011 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_STDIO
+#define ATSLIB_LIBATS_LIBC_CATS_STDIO
+
+/* ****** ****** */
+
+#include <stdio.h>
+/*
+extern
+void
+perror (const char* str) ; // in [stdio.h]
+*/
+extern void exit (int status) ; // in [stdlib.h]
+
+/* ****** ****** */
+//
+#define \
+atslib_libats_libc_FILEptr_is_null(p) (p == 0)
+#define \
+atslib_libats_libc_FILEptr_isnot_null(p) (p != 0)
+//
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_clearerr(p) clearerr(((FILE*)p))
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fopen fopen
+#define atslib_libats_libc_fopen_ref_exn atslib_libats_libc_fopen_exn
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fclose fclose
+#define atslib_libats_libc_fclose0 atslib_libats_libc_fclose
+#define atslib_libats_libc_fclose1 atslib_libats_libc_fclose
+#define atslib_libats_libc_fclose0_exn atslib_libats_libc_fclose_exn
+#define atslib_libats_libc_fclose1_exn atslib_libats_libc_fclose_exn
+
+/*
+#define atslib_libats_libc_fclose_stdin() atslib_libats_libc_fclose_exn(stdin)
+#define atslib_libats_libc_fclose_stdout() atslib_libats_libc_fclose_exn(stdout)
+#define atslib_libats_libc_fclose_stderr() atslib_libats_libc_fclose_exn(stderr)
+*/
+
+/* ****** ****** */
+//
+#define atslib_libats_libc_fflush fflush
+#define atslib_libats_libc_fflush0 atslib_libats_libc_fflush
+#define atslib_libats_libc_fflush1 atslib_libats_libc_fflush
+#define atslib_libats_libc_fflush0_exn atslib_libats_libc_fflush_exn
+#define atslib_libats_libc_fflush1_exn atslib_libats_libc_fflush_exn
+//
+#define atslib_libats_libc_fflush_all() atslib_libats_libc_fclose_exn((FILE*)0)
+#define atslib_libats_libc_fflush_stdout() atslib_libats_libc_fclose_exn(stdout)
+//
+/* ****** ****** */
+
+#define atslib_libats_libc_fileno fileno
+#define atslib_libats_libc_fileno0 atslib_libats_libc_fileno
+#define atslib_libats_libc_fileno1 atslib_libats_libc_fileno
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fdopen fdopen
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_feof(p) feof(((FILE*)p))
+#define atslib_libats_libc_feof0 atslib_libats_libc_feof
+#define atslib_libats_libc_feof1 atslib_libats_libc_feof
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_ferror(p) ferror(((FILE*)p))
+#define atslib_libats_libc_ferror0 atslib_libats_libc_ferror
+#define atslib_libats_libc_ferror1 atslib_libats_libc_ferror
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fgetc fgetc
+#define atslib_libats_libc_fgetc0 atslib_libats_libc_fgetc
+#define atslib_libats_libc_fgetc1 atslib_libats_libc_fgetc
+
+/* ****** ****** */
+
+#define atslib_libats_libc_getchar getchar
+#define atslib_libats_libc_getchar0 atslib_libats_libc_getchar
+#define atslib_libats_libc_getchar1 atslib_libats_libc_getchar
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fputc fputc
+#define atslib_libats_libc_fputc0_int atslib_libats_libc_fputc
+#define atslib_libats_libc_fputc0_char(c, fp) atslib_libats_libc_fputc((int)c, fp)
+#define atslib_libats_libc_fputc1_int atslib_libats_libc_fputc
+#define atslib_libats_libc_fputc1_char(c, fp) atslib_libats_libc_fputc((int)c, fp)
+
+#define atslib_libats_libc_fputc0_exn_int atslib_libats_libc_fputc_exn
+#define atslib_libats_libc_fputc0_exn_char atslib_libats_libc_fputc_exn
+
+/* ****** ****** */
+
+#define atslib_libats_libc_putchar putchar
+#define atslib_libats_libc_putchar0 atslib_libats_libc_putchar
+#define atslib_libats_libc_putchar1 atslib_libats_libc_putchar
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fgets fgets
+#define atslib_libats_libc_fgets0 atslib_libats_libc_fgets
+#define atslib_libats_libc_fgets1 atslib_libats_libc_fgets
+#define atslib_libats_libc_fgets1_err atslib_libats_libc_fgets
+#define atslib_libats_libc_fgets0_gc atslib_libats_libc_fgets_gc
+#define atslib_libats_libc_fgets1_gc atslib_libats_libc_fgets_gc
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fputs fputs
+#define atslib_libats_libc_fputs0 atslib_libats_libc_fputs
+#define atslib_libats_libc_fputs1 atslib_libats_libc_fputs
+#define atslib_libats_libc_fputs0_exn atslib_libats_libc_fputs_exn
+#define atslib_libats_libc_fputs1_exn atslib_libats_libc_fputs_exn
+
+/* ****** ****** */
+
+#define atslib_libats_libc_puts puts
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fread fread
+#define atslib_libats_libc_fread0 atslib_libats_libc_fread
+#define atslib_libats_libc_fread1 atslib_libats_libc_fread
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fwrite fwrite
+#define atslib_libats_libc_fwrite0 atslib_libats_libc_fwrite
+#define atslib_libats_libc_fwrite1 atslib_libats_libc_fwrite
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fseek fseek
+#define atslib_libats_libc_fseek0 atslib_libats_libc_fseek
+#define atslib_libats_libc_fseek1 atslib_libats_libc_fseek
+
+/* ****** ****** */
+
+#define atslib_libats_libc_ftell ftell
+#define atslib_libats_libc_ftell0 atslib_libats_libc_ftell
+#define atslib_libats_libc_ftell1 atslib_libats_libc_ftell
+
+/* ****** ****** */
+
+#define atslib_libats_libc_perror perror
+
+/* ****** ****** */
+
+#define atslib_libats_libc_popen popen
+
+/* ****** ****** */
+
+#define atslib_libats_libc_pclose0_exn atslib_libats_libc_pclose_exn
+#define atslib_libats_libc_pclose1_exn atslib_libats_libc_pclose_exn
+
+/* ****** ****** */
+
+#define atslib_libats_libc_remove remove
+#define atslib_libats_libc_rename rename
+
+/* ****** ****** */
+
+#define atslib_libats_libc_rewind rewind
+#define atslib_libats_libc_rewind0 atslib_libats_libc_rewind
+#define atslib_libats_libc_rewind1 atslib_libats_libc_rewind
+
+/* ****** ****** */
+
+#define atslib_libats_libc_tmpfile tmpfile
+#define atslib_libats_libc_tmpfile_ref_exn atslib_libats_libc_tmpfile_exn
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_STDIO
+
+/* ****** ****** */
+
+/* end of [stdio.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/stdlib.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/stdlib.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/stdlib.cats
@@ -0,0 +1,206 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef \
+ATSLIB_LIBATS_LIBC_CATS_STDLIB
+#define \
+ATSLIB_LIBATS_LIBC_CATS_STDLIB
+
+/* ****** ****** */
+
+#include <stdlib.h>
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_abort abort
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc__Exit _Exit
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_atexit atexit
+
+/* ****** ****** */
+
+#define atslib_libats_libc_abs abs
+#define atslib_libats_libc_labs labs
+#define atslib_libats_libc_llabs llabs
+
+/* ****** ****** */
+
+#define atslib_libats_libc_div div
+#define atslib_libats_libc_ldiv ldiv
+#define atslib_libats_libc_lldiv lldiv
+
+/* ****** ****** */
+
+#define atslib_libats_libc_a64l a64l
+#define atslib_libats_libc_l64a l64a
+
+/* ****** ****** */
+
+#define atslib_libats_libc_atoi atoi
+#define atslib_libats_libc_atol atol
+#define atslib_libats_libc_atoll atoll
+
+/* ****** ****** */
+
+#define atslib_libats_libc_atof atof
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_strtol0(nptr, base) \
+atslib_libats_libc_strtol_unsafe(nptr, 0, base)
+#define \
+atslib_libats_libc_strtol1(nptr, endptr, base) \
+atslib_libats_libc_strtol_unsafe(nptr, endptr, base)
+#define \
+atslib_libats_libc_strtol_unsafe(nptr, endptr, base) \
+strtol((char*)(nptr), (char**)(endptr), base)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_strtoll0(nptr, base) \
+atslib_libats_libc_strtoll_unsafe(nptr, 0, base)
+#define \
+atslib_libats_libc_strtoll1(nptr, endptr, base) \
+atslib_libats_libc_strtoll_unsafe(nptr, endptr, base)
+#define \
+atslib_libats_libc_strtoll_unsafe(nptr, endptr, base) \
+strtoll((char*)(nptr), (char**)(endptr), base)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_strtof0(nptr) \
+atslib_libats_libc_strtof_unsafe(nptr, 0)
+#define \
+atslib_libats_libc_strtof1(nptr, endptr) \
+atslib_libats_libc_strtof_unsafe(nptr, endptr)
+#define \
+atslib_libats_libc_strtof_unsafe(nptr, endptr) \
+strtof((char*)(nptr), (char**)(endptr))
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_strtod0(nptr) \
+atslib_libats_libc_strtod_unsafe(nptr, 0)
+#define \
+atslib_libats_libc_strtod1(nptr, endptr) \
+atslib_libats_libc_strtod_unsafe(nptr, endptr)
+#define \
+atslib_libats_libc_strtod_unsafe(nptr, endptr) \
+strtod((char*)(nptr), (char**)(endptr))
+
+/* ****** ****** */
+
+#define atslib_libats_libc_getenv getenv
+#define atslib_libats_libc_putenv putenv
+#define atslib_libats_libc_setenv setenv
+#define atslib_libats_libc_unsetenv unsetenv
+
+/* ****** ****** */
+
+#define atslib_libats_libc_rand rand
+#define atslib_libats_libc_srand srand
+#define atslib_libats_libc_rand_r rand_r
+
+/* ****** ****** */
+
+#define atslib_libats_libc_random random
+#define atslib_libats_libc_srandom srandom
+
+/* ****** ****** */
+//
+#define atslib_libats_libc_seed48 seed48
+#define atslib_libats_libc_srand48 srand48
+//
+#define atslib_libats_libc_drand48 drand48
+#define atslib_libats_libc_erand48 erand48
+#define atslib_libats_libc_lrand48 lrand48
+#define atslib_libats_libc_nrand48 nrand48
+#define atslib_libats_libc_mrand48 mrand48
+#define atslib_libats_libc_jrand48 jrand48
+#define atslib_libats_libc_lcong48 lcong48
+//
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_qsort\
+(base, nmemb, size, compar) \
+qsort(base, nmemb, size, (void*)compar)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_bsearch\
+(key, base, nmemb, size, compar) \
+bsearch(key, base, nmemb, size, (void*)compar)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_mkstemp mkstemp
+#define \
+atslib_libats_libc_mkostemp mkostemp
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_mfree_libc free
+#define \
+atslib_libats_libc_malloc_libc malloc
+
+/* ****** ****** */
+
+#define atslib_libats_libc_system system
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_STDLIB
+
+/* ****** ****** */
+
+/* end of [stdlib.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/string.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/string.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/string.cats
@@ -0,0 +1,139 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_STRING
+#define ATSLIB_LIBATS_LIBC_CATS_STRING
+
+/* ****** ****** */
+
+#include <errno.h>
+#include <string.h>
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strcmp strcmp
+#define atslib_libats_libc_strncmp strncmp
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strcoll strcoll
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strspn strspn
+#define atslib_libats_libc_strcspn strcspn
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strlen strlen
+#define atslib_libats_libc_strnlen strnlen
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strcat strcat
+#define atslib_libats_libc_strcat_unsafe strcat
+#define atslib_libats_libc_strncat_unsafe strncat
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strcpy strcpy
+#define atslib_libats_libc_strcpy_unsafe strcpy
+#define atslib_libats_libc_strncpy_unsafe strncpy
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strdup strdup
+#define atslib_libats_libc_strndup strndup
+#define atslib_libats_libc_strdup_free atsruntime_mfree_libc
+
+#define atslib_libats_libc_strdupa strdupa
+#define atslib_libats_libc_strndupa strndupa
+#define atslib_libats_libc_strdupa_free atsruntime_afree_libc
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strfry strfry
+
+/* ****** ****** */
+
+#define atslib_libats_libc_memcpy memcpy
+#define atslib_libats_libc_memcpy_unsafe memcpy
+
+/* ****** ****** */
+
+#define atslib_libats_libc_memccpy_unsafe memccpy
+
+/* ****** ****** */
+
+#define atslib_libats_libc_mempcpy mempcpy
+#define atslib_libats_libc_mempcpy_unsafe mempcpy
+
+/* ****** ****** */
+
+#define atslib_libats_libc_memset_unsafe memset
+
+/* ****** ****** */
+
+#define atslib_libats_libc_memmove_unsafe memmove
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strerror strerror
+#define atslib_libats_libc_strerror_r strerror_r
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atslib_libats_libc_strdup_gc
+  (atstype_string src)
+{
+  char *dst ;
+  size_t len, len1 ;
+  len = atslib_libats_libc_strlen((char*)src) ;
+  len1 = len + 1;
+  dst = atspre_malloc_gc(len1) ;
+  return atslib_libats_libc_memcpy(dst, src, len1) ;
+} // end of [atslib_libats_libc_strdup_gc]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_STRING
+
+/* ****** ****** */
+
+/* end of [string.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/strings.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/strings.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/strings.cats
@@ -0,0 +1,64 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: February, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_STRINGS
+#define ATSLIB_LIBATS_LIBC_CATS_STRINGS
+
+/* ****** ****** */
+
+#include <strings.h>
+
+/* ****** ****** */
+
+#define atslib_libats_libc_index_int index
+#define atslib_libats_libc_index_char(c) index((int)c)
+
+#define atslib_libats_libc_rindex_int rindex
+#define atslib_libats_libc_rindex_char(c) rindex((int)c)
+
+/* ****** ****** */
+
+#define atslib_libats_libc_strcasecmp strcasecmp
+#define atslib_libats_libc_strncasecmp strncasecmp
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_STRINGS
+
+/* ****** ****** */
+
+/* end of [strings.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/mman.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/mman.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/mman.cats
@@ -0,0 +1,59 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: October, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_MMAN
+#define ATSLIB_LIBATS_LIBC_CATS_SYS_MMAN
+
+/* ****** ****** */
+//
+#include <fcntl.h>
+#include <sys/types.h>
+//
+#include <sys/mman.h>
+//
+/* ****** ****** */
+
+#define atslib_libats_libc_shm_open shm_open
+#define atslib_libats_libc_shm_unlink shm_unlink
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_MMAN
+
+/* ****** ****** */
+
+/* end of [mman.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/socket.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/socket.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/socket.cats
@@ -0,0 +1,135 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: November, 2014 *)
+*/
+
+/* ****** ****** */
+
+#ifndef \
+ATSLIB_LIBATS_LIBC_CATS_SYS_SOCKET
+#define \
+ATSLIB_LIBATS_LIBC_CATS_SYS_SOCKET
+
+/* ****** ****** */
+//
+#include <unistd.h>
+#include <sys/socket.h>
+//
+/* ****** ****** */
+//
+/*
+//
+// socket address family
+//
+typedef
+unsigned short int sa_family_t;
+*/
+//
+// socket protocol family
+//
+typedef
+unsigned short int sp_family_t;
+//
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_socket_AF_type socket_AF_type
+#define \
+atslib_libats_libc_socket_PF_type socket_PF_type
+
+/* ****** ****** */
+//
+#define \
+atslib_libats_libc_bind_err(fd, sa, len) \
+  bind(fd, (const struct sockaddr*)sa, len)
+//
+extern
+void
+atslib_libats_libc_bind_exn
+(
+  int sockfd, atstype_ptr sa, socklen_t salen
+); // end of [atslib_libats_libc_bind_exn]
+//
+/* ****** ****** */
+//
+#define \
+atslib_libats_libc_listen_err(fd, qsz) listen(fd, qsz)
+//
+extern
+void
+atslib_libats_libc_listen_exn(int sockfd, int listenqsz);
+//
+/* ****** ****** */
+//
+#define \
+atslib_libats_libc_connect_err(fd, sa, len) \
+  connect(fd, (const struct sockaddr*)sa, len)
+//
+extern
+void
+atslib_libats_libc_connect_exn
+(
+  int sockfd, atstype_ptr sa, socklen_t salen
+); // end of [atslib_libats_libc_connect_exn]
+//
+/* ****** ****** */
+//
+#define \
+atslib_libats_libc_accept_err(fd, sa, len) \
+  accept(fd, (struct sockaddr*)sa, (socklen_t*)len)
+//
+#define \
+atslib_libats_libc_accept_null_err(fd) atslib_libats_libc_accept_err(fd, 0, 0)
+//
+/* ****** ****** */
+
+#define atslib_libats_libc_socket_close(fd) close(fd)
+
+/* ****** ****** */
+
+#define atslib_libats_libc_shutdown(fd, how) shutdown(fd, how)
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_socket_read(fd, bufp, bsz) read(fd, (char*)bufp, bsz)
+#define \
+atslib_libats_libc_socket_write(fd, bufp, bsz) write(fd, (const char*)bufp, bsz)
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_SOCKET
+
+/* ****** ****** */
+
+/* end of [socket.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/socket_in.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/socket_in.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/socket_in.cats
@@ -0,0 +1,78 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: November, 2014 *)
+*/
+
+/* ****** ****** */
+
+#ifndef \
+ATSLIB_LIBATS_LIBC_CATS_SYS_SOCKET_IN
+#define \
+ATSLIB_LIBATS_LIBC_CATS_SYS_SOCKET_IN
+
+/* ****** ****** */
+//
+#include <sys/socket.h>
+#include <netinet/in.h>
+//
+/* ****** ****** */
+//
+#ifdef memset
+#else
+extern
+void *memset (void *p, int c, size_t n) ;
+#endif // ifdef(memset)
+//
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atslib_libats_libc_sockaddr_in_init
+(
+  atstype_ptr sa
+, sa_family_t af, in_addr_t inp, in_port_t port
+) {
+  struct sockaddr_in *sa2 = sa ;
+  (void)memset(sa2, 0, sizeof(struct sockaddr_in)) ;
+  sa2->sin_family = af ;
+  sa2->sin_addr.s_addr = inp ;
+  sa2->sin_port = port ;
+} // end of [atslib_libats_libc_sockaddr_in_init]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_SOCKET_IN
+
+/* ****** ****** */
+
+/* end of [socket_in.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/stat.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/stat.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/stat.cats
@@ -0,0 +1,82 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef \
+ATSLIB_LIBATS_LIBC_CATS_SYS_STAT
+#define \
+ATSLIB_LIBATS_LIBC_CATS_SYS_STAT
+
+/* ****** ****** */
+
+#include <sys/stat.h>
+
+/* ****** ****** */
+
+typedef
+struct stat
+atslib_libats_libc_stat_struct ;
+
+/* ****** ****** */
+
+#define atslib_libats_libc_umask umask
+
+/* ****** ****** */
+
+#define atslib_libats_libc_chmod chmod
+
+/* ****** ****** */
+
+#define atslib_libats_libc_mkdir mkdir
+#define atslib_libats_libc_mkdirat mkdirat
+
+/* ****** ****** */
+
+#define atslib_libats_libc_mkfifo mkfifo
+
+/* ****** ****** */
+
+#define atslib_libats_libc_stat stat
+#define atslib_libats_libc_fstat fstat
+#define atslib_libats_libc_lstat lstat
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_STAT
+
+/* ****** ****** */
+
+/* end of [stat.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/time.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/time.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/time.cats
@@ -0,0 +1,94 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: August, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef \
+ATSLIB_LIBATS_LIBC_CATS_SYS_TIME
+#define \
+ATSLIB_LIBATS_LIBC_CATS_SYS_TIME
+
+/* ****** ****** */
+
+#include <sys/time.h>
+
+/* ****** ****** */
+//
+typedef
+struct timeval
+atslib_libats_libc_timeval_type ;
+typedef
+struct timezone
+atslib_libats_libc_timezone_type ;
+//
+typedef
+struct itimerval
+atslib_libats_libc_itimerval_type ;
+//
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_gettimeofday_tv(tv) gettimeofday(tv, NULL)
+#define \
+atslib_libats_libc_gettimeofday_tz(tz) gettimeofday(NULL, tz)
+
+#define \
+atslib_libats_libc_settimeofday_tv(tv) settimeofday(tv, NULL)
+#define \
+atslib_libats_libc_settimeofday_tz(tz) settimeofday(NULL, tz)
+#define \
+atslib_libats_libc_settimeofday_tvtz(tv, tz) settimeofday(tv, tz)
+
+/* ****** ****** */
+
+#define atslib_libats_libc_utimes utimes
+#define atslib_libats_libc_futimes futimes
+#define atslib_libats_libc_futimesat futimesat
+
+/* ****** ****** */
+//
+#define atslib_libats_libc_getitimer getitimer
+//
+#define atslib_libats_libc_setitimer setitimer
+#define \
+atslib_libats_libc_setitimer_null(which, itval) setitimer(which, itval, NULL)
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_TIME
+
+/* ****** ****** */
+
+/* end of [time.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/types.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/types.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/types.cats
@@ -0,0 +1,166 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef \
+ATSLIB_LIBATS_LIBC_CATS_SYS_TYPES
+#define \
+ATSLIB_LIBATS_LIBC_CATS_SYS_TYPES
+
+/* ****** ****** */
+
+#include <sys/types.h>
+
+/* ****** ****** */
+
+typedef mode_t atslib_libats_libc_mode_type ;
+
+/* ****** ****** */
+//
+// HX-2013-8:
+// [atslib_libats_libc_time_type] is already
+// defined in [libats/libc/CATS/time.cats]
+//
+typedef time_t atslib_libats_libc_types_time_type ;
+//
+/* ****** ****** */
+
+#if(0)
+//
+// HX-2013-05: where are they?
+// HX-2013-06: they are declared in [time.h]
+//
+typedef clock_t atslib_libats_libc_clock_type ;
+typedef clockid_t atslib_libats_libc_clockid_type ;
+#endif
+
+/* ****** ****** */
+
+typedef ino_t atslib_libats_libc_ino_type ;
+typedef off_t atslib_libats_libc_off_type ;
+
+/* ****** ****** */
+
+typedef pid_t atslib_libats_libc_pid_type ;
+typedef uid_t atslib_libats_libc_uid_type ;
+typedef gid_t atslib_libats_libc_gid_type ;
+
+/* ****** ****** */
+
+ATSinline()
+atslib_libats_libc_mode_type
+atslib_libats_libc_lor_mode_mode
+(
+  atslib_libats_libc_mode_type m1
+, atslib_libats_libc_mode_type m2
+) {
+  return (m1 | m2) ;
+} // end of [atslib_libats_libc_lor_mode_mode]
+
+ATSinline()
+atslib_libats_libc_mode_type
+atslib_libats_libc_land_mode_mode
+(
+  atslib_libats_libc_mode_type m1
+, atslib_libats_libc_mode_type m2
+) {
+  return (m1 & m2) ;
+} // end of [atslib_libats_libc_land_mode_mode]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atslib_libats_libc_lt_time_time
+(
+  atslib_libats_libc_types_time_type t1
+, atslib_libats_libc_types_time_type t2
+)
+{
+  return \
+  (t1 < t2 ? atsbool_true : atsbool_false) ;
+} // end of [atslib_libats_libc_lt_time_time]
+ATSinline()
+atstype_bool
+atslib_libats_libc_lte_time_time
+(
+  atslib_libats_libc_types_time_type t1
+, atslib_libats_libc_types_time_type t2
+)
+{
+  return \
+  (t1 <= t2 ? atsbool_true : atsbool_false) ;
+} // end of [atslib_libats_libc_lte_time_time]
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_gt_time_time(t1, t2) \
+  atslib_libats_libc_lt_time_time(t2, t1)
+#define \
+atslib_libats_libc_gte_time_time(t1, t2) \
+  atslib_libats_libc_lte_time_time(t2, t1)
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atslib_libats_libc_eq_time_time
+(
+  atslib_libats_libc_types_time_type t1
+, atslib_libats_libc_types_time_type t2
+)
+{
+  return (t1 == t2 ? atsbool_true : atsbool_false) ;
+} // end of [atslib_libats_libc_eq_time_time]
+ATSinline()
+atstype_bool
+atslib_libats_libc_neq_time_time
+(
+  atslib_libats_libc_types_time_type t1
+, atslib_libats_libc_types_time_type t2
+)
+{
+  return (t1 != t2 ? atsbool_true : atsbool_false) ;
+} // end of [atslib_libats_libc_neq_time_time]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_TYPES
+
+/* ****** ****** */
+
+/* end of [types.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/wait.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/wait.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/wait.cats
@@ -0,0 +1,60 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: October, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef \
+ATSLIB_LIBATS_LIBC_CATS_SYS_WAIT
+#define \
+ATSLIB_LIBATS_LIBC_CATS_SYS_WAIT
+
+/* ****** ****** */
+//
+#include <sys/wait.h>
+//
+/* ****** ****** */
+//
+#define \
+atslib_libats_libc_wait_void() wait((int*)0)
+#define \
+atslib_libats_libc_wait_status(x) wait((int*)x)
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_SYS_WAIT
+
+/* ****** ****** */
+
+/* end of [wait.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/time.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/time.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/time.cats
@@ -0,0 +1,206 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_TIME
+#define ATSLIB_LIBATS_LIBC_CATS_TIME
+
+/* ****** ****** */
+
+#include <time.h>
+
+/* ****** ****** */
+//
+typedef
+time_t
+atslib_libats_libc_time_type ;
+//
+typedef
+struct tm
+atslib_libats_libc_tm_struct_type ;
+//
+/* ****** ****** */
+
+typedef
+clock_t
+atslib_libats_libc_clock_type ;
+
+/* ****** ****** */
+
+typedef
+struct timespec
+atslib_libats_libc_timespec_type ;
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_difftime difftime
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_time_get() time((time_t*)0)
+
+ATSinline()
+atstype_bool
+atslib_libats_libc_time_getset
+(
+  atstype_ref tval
+) {
+  return (time((time_t*)tval) >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atslib_libats_libc_time_getset]
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_ctime ctime
+#define \
+atslib_libats_libc_ctime_r ctime_r
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_sec
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_sec ;
+} // end of [atslib_libats_libc_tm_get_sec]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_min
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_min ;
+} // end of [atslib_libats_libc_tm_get_min]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_hour
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_hour ;
+} // end of [atslib_libats_libc_tm_get_hour]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_mday
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_mday ;
+} // end of [atslib_libats_libc_tm_get_mday]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_mon
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_mon ;
+} // end of [atslib_libats_libc_tm_get_mon]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_year
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_year ;
+} // end of [atslib_libats_libc_tm_get_year]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_wday
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_wday ;
+} // end of [atslib_libats_libc_tm_get_wday]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_yday
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_yday ;
+} // end of [atslib_libats_libc_tm_get_yday]
+
+ATSinline()
+atstype_int
+atslib_libats_libc_tm_get_isdst
+  (atstype_ptr tm) {
+  return ((struct tm*)tm)->tm_isdst ;
+} // end of [atslib_libats_libc_tm_get_isdst]
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_mktime mktime
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_asctime asctime
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_gmtime gmtime
+#define \
+atslib_libats_libc_gmtime_r gmtime_r
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_localtime localtime
+#define \
+atslib_libats_libc_localtime_r localtime_r
+
+/* ****** ****** */
+
+#define atslib_libats_libc_tzset tzset
+
+/* ****** ****** */
+
+#define atslib_libats_libc_clock clock
+
+#define \
+atslib_libats_libc_clock_getres clock_getres
+
+/* ****** ****** */
+
+#define \
+atslib_libats_libc_clock_gettime clock_gettime
+#define \
+atslib_libats_libc_clock_settime clock_settime
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_TIME
+
+/* ****** ****** */
+
+/* end of [time.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/unistd.cats b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/unistd.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/unistd.cats
@@ -0,0 +1,174 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2015 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: April, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_LIBATS_LIBC_CATS_UNISTD
+#define ATSLIB_LIBATS_LIBC_CATS_UNISTD
+
+/* ****** ****** */
+
+#include <unistd.h>
+
+/* ****** ****** */
+
+#define atslib_libats_libc_close close
+#define atslib_libats_libc_close0 atslib_libats_libc_close
+#define atslib_libats_libc_close1 atslib_libats_libc_close
+#define atslib_libats_libc_close0_exn atslib_libats_libc_close_exn
+#define atslib_libats_libc_close1_exn atslib_libats_libc_close_exn
+
+/* ****** ****** */
+
+#define atslib_libats_libc_dup dup
+#define atslib_libats_libc_dup_fildes dup
+#define atslib_libats_libc_dup2 dup2
+#define atslib_libats_libc_dup3 dup3
+
+/* ****** ****** */
+
+#define atslib_libats_libc_execv(path, argv) execv((char*)path, (char**)argv)
+#define atslib_libats_libc_execvp(path, argv) execvp((char*)path, (char**)argv)
+
+/* ****** ****** */
+
+#define atslib_libats_libc_encrypt encrypt
+
+/* ****** ****** */
+
+#define atslib_libats_libc_fork fork
+
+/* ****** ****** */
+
+#define atslib_libats_libc_getcwd getcwd
+
+/* ****** ****** */
+
+#define atslib_libats_libc_getlogin getlogin
+#define atslib_libats_libc_getlogin_r getlogin_r
+
+/* ****** ****** */
+
+#define atslib_libats_libc_getpid getpid
+#define atslib_libats_libc_getppid getppid
+
+/* ****** ****** */
+
+#define atslib_libats_libc_getuid getuid
+#define atslib_libats_libc_setuid setuid
+#define atslib_libats_libc_geteuid geteuid
+#define atslib_libats_libc_seteuid seteuid
+
+/* ****** ****** */
+
+#define atslib_libats_libc_getgid getgid
+#define atslib_libats_libc_setgid setgid
+#define atslib_libats_libc_getegid getegid
+#define atslib_libats_libc_setegid setegid
+
+/* ****** ****** */
+
+#define atslib_libats_libc_setreuid setreuid
+#define atslib_libats_libc_setregid setregid
+#define atslib_libats_libc_setresuid setresuid
+#define atslib_libats_libc_setresgid setresgid
+
+/* ****** ****** */
+
+#define atslib_libats_libc_setfsuid setfsuid
+#define atslib_libats_libc_setfsgid setfsgid
+
+/* ****** ****** */
+
+#define atslib_libats_libc_pause pause
+
+/* ****** ****** */
+
+#define atslib_libats_libc_read_err read
+#define atslib_libats_libc_write_err write
+
+/* ****** ****** */
+
+#define atslib_libats_libc_pread pread
+#define atslib_libats_libc_pwrite pwrite
+
+/* ****** ****** */
+
+#define atslib_libats_libc_alarm alarm
+#define atslib_libats_libc_alarm_set alarm
+#define atslib_libats_libc_alarm_cancel() alarm(0)
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sleep_int sleep
+#define atslib_libats_libc_sleep_uint sleep
+
+/* ****** ****** */
+
+#define atslib_libats_libc_usleep_int usleep
+#define atslib_libats_libc_usleep_uint usleep
+
+/* ****** ****** */
+
+#define atslib_libats_libc_rmdir rmdir
+
+/* ****** ****** */
+
+#define atslib_libats_libc_link link
+#define atslib_libats_libc_unlink unlink
+
+/* ****** ****** */
+
+#define atslib_libats_libc_symlink symlink
+#define atslib_libats_libc_readlink readlink
+
+/* ****** ****** */
+
+#define atslib_libats_libc_sync sync
+#define atslib_libats_libc_fsync fsync
+#define atslib_libats_libc_fdatasync fdatasync
+
+/* ****** ****** */
+
+#define atslib_libats_libc_truncate truncate
+#define atslib_libats_libc_ftruncate ftruncate
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_LIBATS_LIBC_CATS_UNISTD
+
+/* ****** ****** */
+
+/* end of [unistd.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/array.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/array.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/array.cats
@@ -0,0 +1,115 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/array.atxt
+** Time of generation: Thu Mar 22 01:15:18 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_ARRAY
+#define ATSLIB_PRELUDE_CATS_ARRAY
+
+/* ****** ****** */
+//
+// [stdlib.h]
+//
+extern
+void qsort
+(
+  void *base, size_t nmemb, size_t size
+, int(*compar)(const void *, const void *)
+) ; // end of [qsort]
+extern
+void *bsearch
+(
+  const void *key
+, const void *base
+, size_t nmemb, size_t size
+, int (*compar)(const void *, const void *)
+) ; // end of [bsearch]
+//
+#define atspre_array_qsort qsort
+#define atspre_array_bsearch bsearch
+//
+/* ****** ****** */
+//
+// [string.h]
+//
+#ifndef memcpy
+extern
+void *memcpy(void *dst, const void *src, size_t n) ;
+#endif // #ifndef
+#ifndef memmove
+extern
+void *memmove(void *dst, const void *src, size_t n) ;
+#endif // #ifndef
+//
+#define atspre_array_memcpy memcpy
+#define atspre_array_memmove memmove
+//
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_array_foreach_funenv_tsz
+(
+  atstype_ptr A
+, atstype_size n
+, atstype_size tsz
+, atstype_funptr f
+, atstype_boxed env
+) {
+  char *p ;
+  size_t i ;
+  p = (char*)A ;
+  for (i = 0 ; i < n ; i += 1)
+  {
+    ((void(*)(void*, void*))(f))(p, env) ; p += tsz ;
+  }
+  return ;
+} // end of [atspre_array_foreach_funenv_tsz]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_ARRAY
+
+/* ****** ****** */
+
+/* end of [array.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/arrayptr.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/arrayptr.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/arrayptr.cats
@@ -0,0 +1,82 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/arrayptr.atxt
+** Time of generation: Thu Mar 22 01:15:18 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_ARRAYPTR
+#define ATSLIB_PRELUDE_CATS_ARRAYPTR
+
+/* ****** ****** */
+
+ATSinline()
+atstype_arrptr
+atspre_arrpsz_get_ptrsize
+(
+  atstype_arrpsz psz, atstype_ref asz
+) {
+  *(size_t*)asz = psz.size ; return (psz.ptr) ;
+} // en of [atspre_arrpsz_get_ptrsize]
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_arrayptr_free
+  (atstype_arrptr p0) { ATS_MFREE (p0) ; return ; }
+// end of [atspre_arrayptr_free]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_arrptr
+atspre_arrayptr_make_arrpsz
+  (atstype_arrpsz psz) { return (psz).ptr ; }
+// end of [atspre_arrayptr_make_arrpsz]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_ARRAYPTR
+
+/* ****** ****** */
+
+/* end of [arrayptr.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/arrayref.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/arrayref.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/arrayref.cats
@@ -0,0 +1,63 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/arrayref.atxt
+** Time of generation: Thu Mar 22 01:15:19 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_ARRAYREF
+#define ATSLIB_PRELUDE_CATS_ARRAYREF
+
+/* ****** ****** */
+
+ATSinline()
+atstype_arrptr
+atspre_arrayref_make_arrpsz
+  (atstype_arrpsz psz) { return (psz).ptr ; }
+// end of [atspre_arrayref_make_arrpsz]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_ARRAYREF
+
+/* ****** ****** */
+
+/* end of [arrayref.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/basics.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/basics.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/basics.cats
@@ -0,0 +1,251 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/basics.atxt
+** Time of generation: Thu Mar 22 01:15:11 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_BASICS
+#define ATSLIB_PRELUDE_CATS_BASICS
+
+/* ****** ****** */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_lor_int_int
+(
+  atstype_int x1
+, atstype_int x2
+) {
+  return ((x1)|(x2)) ;
+} /* [atspre_lor_int_int] */
+
+ATSinline()
+atstype_int
+atspre_land_int_int
+(
+  atstype_int x1
+, atstype_int x2
+) {
+  return ((x1)&(x2)) ;
+} /* [atspre_land_int_int] */
+
+ATSinline()
+atstype_int
+atspre_lxor_int_int
+(
+  atstype_int x1
+, atstype_int x2
+) {
+  return ((x1)^(x2)) ;
+} /* [atspre_lxor_int_int] */
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_int2sgn
+  (atstype_int x)
+{
+  return ((x < 0) ? -1 : ((x > 0) ? 1 : 0)) ;
+} /* [atspre_int2sgn] */
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_cloptr_free
+(
+  atstype_cloptr pclo
+) {
+  ATS_MFREE (pclo) ; return ;
+} /* [atspre_cloptr_free] */
+
+/* ****** ****** */
+
+ATSinline()
+atstype_string
+atspre_argv_get_at
+(
+  atstype_arrptr argv, atstype_int i
+)
+{
+  return (((atstype_string*)argv)[i]) ;
+} /* end of [atspre_argv_get_at] */
+
+ATSinline()
+atsvoid_t0ype
+atspre_argv_set_at
+(
+  atstype_arrptr argv
+, atstype_int i, atstype_string x
+)
+{
+  ((atstype_string*)argv)[i] = x ; return ;
+} /* end of [atspre_argv_set_at] */
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_exit
+ (atstype_int ecode) { exit(ecode) ; return ; }
+// end of [atspre_exit]
+
+ATSinline()
+atsvoid_t0ype
+atspre_exit_errmsg
+(
+  atstype_int ecode, atstype_string msg
+)
+{
+  fprintf(stderr, "exit(ATS): %s", (char*)msg); exit(ecode); return;
+} // end of [atspre_exit_errmsg]
+
+/* ****** ****** */
+
+#define atspre_exit_void atspre_exit
+#define atspre_exit_errmsg_void atspre_exit_errmsg
+
+/* ****** ****** */
+//
+ATSinline()
+atsvoid_t0ype
+atspre_assert_bool
+  (atstype_bool b)
+{
+  if (!b) exit(1) ; return ;
+} /* endfun */
+//
+#define atspre_assert_bool0 atspre_assert_bool
+#define atspre_assert_bool1 atspre_assert_bool
+//
+/* ****** ****** */
+//
+ATSinline()
+atsvoid_t0ype
+atspre_assert_errmsg_bool
+(
+  atstype_bool b, atstype_string msg
+)
+{
+  if (!b) {
+    fprintf(stderr, "%s", (char*)msg) ; exit(1) ;
+  } // end of [if]
+  return ;
+} /* endfun */
+//
+#define atspre_assert_errmsg_bool0 atspre_assert_errmsg_bool
+#define atspre_assert_errmsg_bool1 atspre_assert_errmsg_bool
+//
+/* ****** ****** */
+//
+ATSinline()
+atsvoid_t0ype
+atspre_assert_errmsg2_bool
+(
+  atstype_bool b
+, atstype_string msg1, atstype_string msg2
+)
+{
+  if (!b) {
+    fprintf(stderr, "%s%s", (char*)msg1, (char*)msg2) ; exit(1) ;
+  } // end of [if]
+  return ;
+} /* endfun */
+//
+#define atspre_assert_errmsg2_bool0 atspre_assert_errmsg2_bool
+#define atspre_assert_errmsg2_bool1 atspre_assert_errmsg2_bool
+//
+/* ****** ****** */
+//
+#if(0)
+//
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_void
+(
+  atstype_ref out
+, atstype_void arg
+)
+{
+  return/*do-nothing*/;
+}
+//
+#define
+atspre_print_void(x) atspre_fprint_void(stdout, x)
+#define
+atspre_prerr_void(x) atspre_fprint_void(stderr, x)
+//
+#endif // end of [if(0)]
+//  
+/* ****** ****** */
+//
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_newline
+  (atstype_ref out)
+{
+  int n ;
+  int err = -1 ;
+  n = fprintf((FILE*)out, "\n") ;
+  if (n > 0) err = fflush((FILE*)out) ;
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_newline] failed.") ; exit(1) ;
+  } // end of [if]
+  return ;
+} /* endfun */
+//
+#define atspre_print_newline() atspre_fprint_newline(stdout)
+#define atspre_prerr_newline() atspre_fprint_newline(stderr)
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_BASICS
+
+/* ****** ****** */
+
+/* end of [basics.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/bool.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/bool.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/bool.cats
@@ -0,0 +1,207 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/bool.atxt
+** Time of generation: Thu Mar 22 01:15:14 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: February, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_BOOL
+#define ATSLIB_PRELUDE_CATS_BOOL
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_int2bool (atstype_int x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+}
+#define atspre_int2bool0 atspre_int2bool
+#define atspre_int2bool1 atspre_int2bool
+
+/* ****** ****** */
+
+#define atspre_bool2int0(x) x
+#define atspre_bool2int1(x) x
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_neg_bool
+  (atstype_bool b) {
+  return (b) ? atsbool_false : atsbool_true ;
+} // end of [atspre_neg_bool]
+#define atspre_neg_bool0 atspre_neg_bool
+#define atspre_neg_bool1 atspre_neg_bool
+
+ATSinline()
+atstype_bool
+atspre_add_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1) ? atsbool_true : (b2) ;
+} // end of [atspre_add_bool_bool]
+#define atspre_add_bool0_bool0 atspre_add_bool_bool
+#define atspre_add_bool0_bool1 atspre_add_bool_bool
+#define atspre_add_bool1_bool0 atspre_add_bool_bool
+#define atspre_add_bool1_bool1 atspre_add_bool_bool
+
+ATSinline()
+atstype_bool
+atspre_mul_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1) ? (b2) : atsbool_false ;
+} // end of [atspre_mul_bool_bool]
+#define atspre_mul_bool0_bool0 atspre_mul_bool_bool
+#define atspre_mul_bool0_bool1 atspre_mul_bool_bool
+#define atspre_mul_bool1_bool0 atspre_mul_bool_bool
+#define atspre_mul_bool1_bool1 atspre_mul_bool_bool
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_xor_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1) ? (!b2) : (b2) ;
+} // end of [atspre_xor_bool_bool]
+#define atspre_xor_bool0_bool0 atspre_xor_bool_bool
+#define atspre_xor_bool1_bool1 atspre_xor_bool_bool
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_lt_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1) ? atsbool_false : (b2) ;
+} // end of [atspre_lt_bool_bool]
+#define atspre_lt_bool0_bool0 atspre_lt_bool_bool
+#define atspre_lt_bool1_bool1 atspre_lt_bool_bool
+ATSinline()
+atstype_bool
+atspre_lte_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1) ? (b2) : atsbool_true ;
+} // end of [atspre_lte_bool_bool]
+#define atspre_lte_bool0_bool0 atspre_lte_bool_bool
+#define atspre_lte_bool1_bool1 atspre_lte_bool_bool
+
+ATSinline()
+atstype_bool
+atspre_gt_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b2) ? atsbool_false : (b1) ;
+} // end of [atspre_gt_bool_bool]
+#define atspre_gt_bool0_bool0 atspre_gt_bool_bool
+#define atspre_gt_bool1_bool1 atspre_gt_bool_bool
+ATSinline()
+atstype_bool
+atspre_gte_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b2) ? (b1) : atsbool_true ;
+} // end of [atspre_gte_bool_bool]
+#define atspre_gte_bool0_bool0 atspre_gte_bool_bool
+#define atspre_gte_bool1_bool1 atspre_gte_bool_bool
+
+ATSinline()
+atstype_bool
+atspre_eq_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1 == b2) ;
+} // end of [atspre_eq_bool_bool]
+#define atspre_eq_bool0_bool0 atspre_eq_bool_bool
+#define atspre_eq_bool1_bool1 atspre_eq_bool_bool
+ATSinline()
+atstype_bool
+atspre_neq_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1 != b2) ;
+} // end of [atspre_neq_bool_bool]
+#define atspre_neq_bool0_bool0 atspre_neq_bool_bool
+#define atspre_neq_bool1_bool1 atspre_neq_bool_bool
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_compare_bool_bool (
+  atstype_bool b1, atstype_bool b2
+) {
+  return (b1 - b2) ;
+} // end of [atspre_compare_bool_bool]
+#define atspre_compare_bool0_bool0 atspre_compare_bool_bool
+#define atspre_compare_bool1_bool1 atspre_compare_bool_bool
+
+/* ****** ****** */
+
+ATSinline()
+atstype_string
+atspre_bool2string (
+  atstype_bool x
+) {
+  return (x) ? "true" : "false" ;
+} // end of [atspre_bool2string]
+
+ATSinline()
+atstype_string
+atspre_bool_tostring (
+  atstype_bool x
+) {
+  return (x) ? "true" : "false" ;
+} // end of [atspre_bool_tostring]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_BOOL
+
+/* ****** ****** */
+
+/* end of [bool.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/char.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/char.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/char.cats
@@ -0,0 +1,529 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/char.atxt
+** Time of generation: Thu Mar 22 01:15:14 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: February, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_CHAR
+#define ATSLIB_PRELUDE_CATS_CHAR
+
+/* ****** ****** */
+
+#include <ctype.h>
+
+/* ****** ****** */
+
+#ifdef __CYGWIN__
+//
+#ifndef isascii
+extern int isascii (int c) ; // _XOPEN_SOURCE
+#endif // end of [isascii]
+
+#ifndef isblank
+extern int isblank (int c) ; // _XOPEN_SOURCE >= 600
+#endif // end of [isblank]
+
+#ifndef toascii
+extern int toascii (int c) ; // _XOPEN_SOURCE
+#endif // end of [toascii]
+//
+#endif // end of [#ifdef(__CYGWIN__)]
+
+/* ****** ****** */
+//
+ATSinline()
+atstype_char
+atspre_int2char
+  (atstype_int i) { return ((atstype_char)i) ; }
+ATSinline()
+atstype_schar
+atspre_int2schar
+  (atstype_int i) { return ((atstype_schar)i) ; }
+ATSinline()
+atstype_uchar
+atspre_int2uchar
+  (atstype_int i) { return ((atstype_uchar)i) ; }
+//
+#define atspre_int2char0 atspre_int2char
+#define atspre_int2schar0 atspre_int2schar
+#define atspre_int2uchar0 atspre_int2uchar
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_int
+atspre_char2int
+  (atstype_char c) { return ((atstype_int)c) ; }
+ATSinline()
+atstype_int
+atspre_schar2int
+  (atstype_schar c) { return ((atstype_int)c) ; }
+ATSinline()
+atstype_int
+atspre_uchar2int
+  (atstype_uchar c) { return ((atstype_int)c) ; }
+//
+#define atspre_char2int0 atspre_char2int
+#define atspre_schar2int0 atspre_schar2int
+#define atspre_uchar2int0 atspre_uchar2int
+//
+#define atspre_char2int1 atspre_char2int
+#define atspre_schar2int1 atspre_schar2int
+#define atspre_uchar2int1 atspre_uchar2int
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_uint
+atspre_char2uint
+  (atstype_char c) { return ((atstype_uint)c) ; }
+ATSinline()
+atstype_uint
+atspre_schar2uint
+  (atstype_schar c) { return ((atstype_uint)c) ; }
+ATSinline()
+atstype_uint
+atspre_uchar2uint
+  (atstype_uchar c) { return ((atstype_uint)c) ; }
+//
+#define atspre_char2uint0 atspre_char2uint
+#define atspre_schar2uint0 atspre_schar2uint
+#define atspre_uchar2uint0 atspre_uchar2uint
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_int
+atspre_char2u2int
+  (atstype_char c)
+  { return ((atstype_int)((atstype_uchar)c)) ; }
+ATSinline()
+atstype_uint
+atspre_char2u2uint
+  (atstype_char c)
+  { return ((atstype_uint)((atstype_uchar)c)) ; }
+//
+#define atspre_char2u2int0 atspre_char2u2int
+#define atspre_char2u2uint0 atspre_char2u2uint
+//
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_char_iseqz
+  (atstype_char c)
+{
+  return ((c == 0) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_char_iseqz]
+#define atspre_char0_iseqz(c) atspre_char_iseqz(c) 
+#define atspre_char1_iseqz(c) atspre_char_iseqz(c) 
+
+ATSinline()
+atstype_bool
+atspre_char_isneqz
+  (atstype_char c)
+{
+  return ((c != 0) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_char_isneqz]
+#define atspre_char0_isneqz(c) atspre_char_isneqz(c) 
+#define atspre_char1_isneqz(c) atspre_char_isneqz(c) 
+
+/* ****** ****** */
+//
+ATSinline()
+atstype_char
+atspre_add_char_int
+(
+  atstype_char c1, atstype_int i2
+) { return (c1 + i2) ; }
+//
+#define atspre_add_char0_int0 atspre_add_char_int
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_char
+atspre_sub_char_int
+(
+  atstype_char c1, atstype_int i2
+) { return (c1 - i2) ; }
+//
+#define atspre_sub_char0_int0 atspre_sub_char_int
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_int
+atspre_sub_char_char
+(
+  atstype_char c1, atstype_char c2
+) { return (c1 - c2) ; }
+//
+#define atspre_sub_char0_char0 atspre_sub_char_char
+//
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_lt_int_int
+  (atstype_int i1, atstype_int i2) {
+  return (i1 < i2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_lt_int_int]
+#define atspre_lt_char0_char0 atspre_lt_int_int
+#define atspre_lt_char1_char1 atspre_lt_int_int
+
+ATSinline()
+atstype_bool
+atspre_lte_int_int
+  (atstype_int i1, atstype_int i2) {
+  return (i1 <= i2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_lte_int_int]
+#define atspre_lte_char0_char0 atspre_lte_int_int
+#define atspre_lte_char1_char1 atspre_lte_int_int
+
+ATSinline()
+atstype_bool
+atspre_gt_int_int
+  (atstype_int i1, atstype_int i2) {
+  return (i1 > i2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_gt_int_int]
+#define atspre_gt_char0_char0 atspre_gt_int_int
+#define atspre_gt_char1_char1 atspre_gt_int_int
+
+ATSinline()
+atstype_bool
+atspre_gte_int_int
+  (atstype_int i1, atstype_int i2) {
+  return (i1 >= i2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_gte_int_int]
+#define atspre_gte_char0_char0 atspre_gte_int_int
+#define atspre_gte_char1_char1 atspre_gte_int_int
+
+ATSinline()
+atstype_bool
+atspre_eq_int_int
+  (atstype_int i1, atstype_int i2) {
+  return (i1 == i2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_eq_int_int]
+#define atspre_eq_char0_char0 atspre_eq_int_int
+#define atspre_eq_char1_char1 atspre_eq_int_int
+
+ATSinline()
+atstype_bool
+atspre_neq_int_int
+  (atstype_int i1, atstype_int i2) {
+  return (i1 != i2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_neq_int_int]
+#define atspre_neq_char0_char0 atspre_neq_int_int
+#define atspre_neq_char1_char1 atspre_neq_int_int
+
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_compare_int_int
+  (atstype_int i1, atstype_int i2)
+{
+  return (i1 - i2) ;
+} // end of [atspre_compare_int_int]
+#define atspre_compare_char0_char0(c1, c2) atspre_compare_int_int(c1, c2)
+#define atspre_compare_char1_char1(c1, c2) atspre_compare_int_int(c1, c2)
+
+/* ****** ****** */
+
+#define atspre_eq_char0_int0(c, i) atspre_eq_int_int(c, i)
+#define atspre_eq_int0_char0(i, c) atspre_eq_int_int(i, c)
+#define atspre_neq_char0_int0(c, i) atspre_neq_int_int(c, i)
+#define atspre_neq_int0_char0(i, c) atspre_neq_int_int(i, c)
+
+/* ****** ****** */
+
+#define atspre_compare_char0_int0(c, i) atspre_compare_int_int(c, i)
+#define atspre_compare_int0_char0(i, c) atspre_compare_int_int(i, c)
+
+/* ****** ****** */
+//
+// unsigned characters
+//
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_lt_uchar_uchar
+  (atstype_uchar c1, atstype_uchar c2) {
+  return (c1 < c2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_lt_uchar_uchar]
+#define atspre_lt_uchar0_uchar0 atspre_lt_uchar_uchar
+#define atspre_lt_uchar1_uchar1 atspre_lt_uchar_uchar
+
+ATSinline()
+atstype_bool
+atspre_lte_uchar_uchar
+  (atstype_uchar c1, atstype_uchar c2) {
+  return (c1 <= c2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_lte_uchar_uchar]
+#define atspre_lte_uchar0_uchar0 atspre_lte_uchar_uchar
+#define atspre_lte_uchar1_uchar1 atspre_lte_uchar_uchar
+
+ATSinline()
+atstype_bool
+atspre_gt_uchar_uchar
+  (atstype_uchar c1, atstype_uchar c2) {
+  return (c1 > c2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_gt_uchar_uchar]
+#define atspre_gt_uchar0_uchar0 atspre_gt_uchar_uchar
+#define atspre_gt_uchar1_uchar1 atspre_gt_uchar_uchar
+
+ATSinline()
+atstype_bool
+atspre_gte_uchar_uchar
+  (atstype_uchar c1, atstype_uchar c2) {
+  return (c1 >= c2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_gte_uchar_uchar]
+#define atspre_gte_uchar0_uchar0 atspre_gte_uchar_uchar
+#define atspre_gte_uchar1_uchar1 atspre_gte_uchar_uchar
+
+ATSinline()
+atstype_bool
+atspre_eq_uchar_uchar
+  (atstype_uchar c1, atstype_uchar c2) {
+  return (c1 == c2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_eq_uchar_uchar]
+#define atspre_eq_uchar0_uchar0 atspre_eq_uchar_uchar
+#define atspre_eq_uchar1_uchar1 atspre_eq_uchar_uchar
+
+ATSinline()
+atstype_bool
+atspre_neq_uchar_uchar
+  (atstype_uchar c1, atstype_uchar c2) {
+  return (c1 != c2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_neq_uchar_uchar]
+#define atspre_neq_uchar0_uchar0 atspre_neq_uchar_uchar
+#define atspre_neq_uchar1_uchar1 atspre_neq_uchar_uchar
+
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_compare_uchar_uchar
+  (atstype_uchar c1, atstype_uchar c2) {
+  return ((atstype_int)c1 - (atstype_int)c2) ;
+} // end of [atspre_compare_uchar_uchar]
+#define atspre_compare_uchar0_uchar0 atspre_compare_uchar_uchar
+#define atspre_compare_uchar1_uchar1 atspre_compare_uchar_uchar
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_isalpha_int
+  (atstype_int c) {
+  return (isalpha(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isalpha_int]
+#define atspre_isalpha_char(c) atspre_isalpha_int((atstype_int)(c))
+ATSinline()
+atstype_bool
+atspre_isalnum_int
+  (atstype_int c) {
+  return (isalnum(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isalnum_int]
+#define atspre_isalnum_char(c) atspre_isalnum_int((atstype_int)(c))
+
+ATSinline()
+atstype_bool
+atspre_isascii_int
+  (atstype_int c) {
+  return (isascii(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isascii_int]
+#define atspre_isascii_char(c) atspre_isascii_int((atstype_int)(c))
+
+ATSinline()
+atstype_bool
+atspre_isblank_int
+  (atstype_int c) {
+  return (isblank(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isblank_int]
+#define atspre_isblank_char(c) atspre_isblank_int((atstype_int)(c))
+ATSinline()
+atstype_bool
+atspre_isspace_int
+  (atstype_int c) {
+  return (isspace(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isspace_int]
+#define atspre_isspace_char(c) atspre_isspace_int((atstype_int)(c))
+
+ATSinline()
+atstype_bool
+atspre_iscntrl_int
+  (atstype_int c) {
+  return (iscntrl(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_iscntrl_int]
+#define atspre_iscntrl_char(c) atspre_iscntrl_int((atstype_int)(c))
+
+ATSinline()
+atstype_bool
+atspre_isdigit_int
+  (atstype_int c) {
+  return (isdigit(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isdigit_int]
+#define atspre_isdigit_char(c) atspre_isdigit_int((atstype_int)(c))
+ATSinline()
+atstype_bool
+atspre_isxdigit_int
+  (atstype_int c) {
+  return (isxdigit(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isxdigit_int]
+#define atspre_isxdigit_char(c) atspre_isxdigit_int((atstype_int)(c))
+
+ATSinline()
+atstype_bool
+atspre_isgraph_int
+  (atstype_int c) {
+  return (isgraph(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isgraph_int]
+#define atspre_isgraph_char(c) atspre_isgraph_int((atstype_int)(c))
+ATSinline()
+atstype_bool
+atspre_isprint_int
+  (atstype_int c) {
+  return (isprint(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isprint_int]
+#define atspre_isprint_char(c) atspre_isprint_int((atstype_int)(c))
+ATSinline()
+atstype_bool
+atspre_ispunct_int
+  (atstype_int c) {
+  return (ispunct(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_ispunct_int]
+#define atspre_ispunct_char(c) atspre_ispunct_int((atstype_int)(c))
+
+ATSinline()
+atstype_bool
+atspre_islower_int
+  (atstype_int c) {
+  return (islower(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_islower_int]
+#define atspre_islower_char(c) atspre_islower_int((atstype_int)(c))
+ATSinline()
+atstype_bool
+atspre_isupper_int
+  (atstype_int c) {
+  return (isupper(c) ? atsbool_true : atsbool_false) ;
+} // end of [atspre_isupper_int]
+#define atspre_isupper_char(c) atspre_isupper_int((atstype_int)(c))
+
+/* ****** ****** */
+
+#define atspre_toascii toascii
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_tolower_int
+  (atstype_int c) { return tolower(c) ; }
+ATSinline()
+atstype_char
+atspre_tolower_char
+  (atstype_char c) { return tolower(c) ; }
+//
+ATSinline()
+atstype_int
+atspre_toupper_int
+  (atstype_int c) { return toupper(c) ; }
+ATSinline()
+atstype_char
+atspre_toupper_char
+  (atstype_char c) { return toupper(c) ; }
+//
+/* ****** ****** */
+
+ATSinline()
+atstype_char
+atspre_int2digit
+  (atstype_int i) { return ('0' + i) ; }
+// end of [atspre_int2digit]
+ATSinline()
+atstype_char
+atspre_int2xdigit
+  (atstype_int i) {
+  return (i < 10) ? ('0' + i) : ('a' + (i - 10)) ;
+} // end of [atspre_int2xdigit]
+ATSinline()
+atstype_char
+atspre_int2xxdigit
+  (atstype_int i) {
+  return (i < 10) ? ('0' + i) : ('A' + (i - 10)) ;
+} // end of [atspre_int2xxdigit]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_byte2int (atstype_byte b) { return ((atstype_int)b) ; }
+ATSinline()
+atstype_byte
+atspre_int2byte (atstype_int i) { return ((atstype_byte)i) ; }
+
+ATSinline()
+atstype_uint
+atspre_byte2uint (atstype_byte b) { return ((atstype_uint)b) ; }
+ATSinline()
+atstype_byte
+atspre_uint2byte (atstype_uint u) { return ((atstype_byte)u) ; }
+
+/* ****** ****** */
+
+#define atspre_byte2int0 atspre_byte2int
+#define atspre_int2byte0 atspre_int2byte
+#define atspre_byte2uint0 atspre_byte2uint
+#define atspre_uint2byte0 atspre_uint2byte
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_CHAR
+
+/* ****** ****** */
+
+/* end of [char.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/filebas.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/filebas.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/filebas.cats
@@ -0,0 +1,385 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Start time: January, 2013 *)
+(* Authoremail: hwxiATcsDOTbuDOTedu *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/filebas.atxt
+** Time of generation: Thu Mar 22 01:15:17 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_FILEBAS
+#define ATSLIB_PRELUDE_CATS_FILEBAS
+
+/* ****** ****** */
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+
+/* ****** ****** */
+
+#define atspre_FILE_stdin stdin
+#define atspre_FILE_stdout stdout
+#define atspre_FILE_stderr stderr
+
+/* ****** ****** */
+
+#define atspre_file_mode_r "r"
+#define atspre_file_mode_rr "r+"
+#define atspre_file_mode_w "w"
+#define atspre_file_mode_ww "w+"
+#define atspre_file_mode_a "a"
+#define atspre_file_mode_aa "a+"
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_test_file_exists
+  (atstype_string path)
+{
+  int err;
+  struct stat st ;
+  err = stat((const char*)path, &st) ;
+  return
+  (err==0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_test_file_exists]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_test_file_mode_fun
+(
+  atstype_string path, atstype_funptr pred
+)
+{
+  int err;
+  struct stat st ;
+  err = stat ((const char*)path, &st) ;
+  if (err < 0) return -1 ;
+  return
+  ((atstype_bool(*)(atstype_uint))(pred))(st.st_mode) ? 1 : 0 ;
+}
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_test_file_isreg
+  (atstype_string path)
+{
+  int err;
+  struct stat st ;
+  err = stat ((const char*)path, &st) ;
+  if (err < 0) return -1 ;
+  return (S_ISREG(st.st_mode)) ? 1 : 0 ;
+} // end of [atspre_test_file_isreg]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_test_file_isdir
+  (atstype_string path)
+{
+  int err;
+  struct stat st ;
+  err = stat ((const char*)path, &st) ;
+  if (err < 0) return -1 ;
+  return (S_ISDIR(st.st_mode)) ? 1 : 0 ;
+} // end of [atspre_test_file_isdir]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_test_file_isblk
+  (atstype_string path)
+{
+  int err;
+  struct stat st ;
+  err = stat ((const char*)path, &st) ;
+  if (err < 0) return -1 ;
+  return (S_ISBLK(st.st_mode)) ? 1 : 0 ;
+} // end of [atspre_test_file_isblk]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_test_file_ischr
+  (atstype_string path)
+{
+  int err;
+  struct stat st ;
+  err = stat ((const char*)path, &st) ;
+  if (err < 0) return -1 ;
+  return (S_ISCHR(st.st_mode)) ? 1 : 0 ;
+} // end of [atspre_test_file_ischr]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_test_file_isfifo
+  (atstype_string path)
+{
+  int err;
+  struct stat st ;
+  err = stat ((const char*)path, &st) ;
+  if (err < 0) return -1 ;
+  return (S_ISFIFO(st.st_mode)) ? 1 : 0 ;
+} // end of [atspre_test_file_isfifo]
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fileref_close
+  (atstype_ref filr)
+{
+  int err ;
+  err = fclose((FILE*)filr) ;
+  if (err < 0) {
+    fprintf(
+      stderr
+    , "exit(ATS): [atspre_fileref_close] failed.\n"
+    ) ;
+    exit(1) ;
+  }
+  return ;
+} // end of [atspre_fileref_close]
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fileref_flush
+  (atstype_ref filr)
+{
+  int err ;
+  err = fflush((FILE*)filr) ;
+  if (err < 0) {
+    fprintf(
+      stderr
+    , "exit(ATS): [atspre_fileref_fflush] failed.\n"
+    ) ;
+    exit(1) ;
+  }
+  return ;
+} // end of [atspre_fileref_flush]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ref
+atspre_fileref_open_exn
+  (atstype_string path, atstype_string fm)
+{
+  FILE* filr ;
+  filr = fopen((char*)path, (char*)fm) ;
+  if (!filr) {
+    fprintf(
+      stderr
+    , "exit(ATS): [atspre_fileref_open_exn(%s, %s)] failed.\n"
+    , (char*)path, (char*)fm
+    ) ;
+    exit(1) ;
+  }
+  return filr ;
+} // end of [atspre_fileref_open]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_fileref_getc
+  (atstype_ref filr)
+  { return fgetc((FILE*)filr) ; }
+// end of [atspre_fileref_getc]
+
+/* ****** ****** */
+//
+ATSinline()
+atsvoid_t0ype
+atspre_fileref_putc
+(
+  atstype_ref filr, atstype_int c
+) {
+  fputc (c, (FILE*)filr) ; return ;
+} // end of [atspre_fileref_putc]
+//
+#define \
+atspre_fileref_putc_int atspre_fileref_putc
+#define \
+atspre_fileref_putc_char atspre_fileref_putc
+//
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fileref_puts
+( atstype_ref fout
+, atstype_ptr data)
+{
+  fputs((char*)data, (FILE*)fout) ; return ;
+} // end of [atspre_fileref_puts]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_fileref_is_eof
+  (atstype_ref filr)
+{
+  int eof ;
+  eof = feof((FILE*)filr) ;
+  return
+  (eof != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_fileref_is_eof]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_fileref_load_int
+(atstype_ref finp, atstype_ref data)
+{
+  int n ;
+  n = fscanf
+      ( (FILE*)finp
+      , "%i"
+      , (atstype_int*)data) ;
+  return
+  (n==1 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_fileref_load_int]
+
+ATSinline()
+atstype_bool
+atspre_fileref_load_uint
+(atstype_ref finp, atstype_ref data)
+{
+  int n ;
+  n = fscanf
+      ( (FILE*)finp
+      , "%u"
+      , (atstype_uint*)data) ;
+  return
+  (n==1 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_fileref_load_uint]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_fileref_load_lint
+(atstype_ref finp, atstype_ref data)
+{
+  int n ;
+  n = fscanf
+      ( (FILE*)finp
+      , "%li"
+      , (atstype_lint*)data) ;
+  return
+  (n==1 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_fileref_load_lint]
+
+ATSinline()
+atstype_bool
+atspre_fileref_load_ulint
+(atstype_ref finp, atstype_ref data)
+{
+  int n ;
+  n = fscanf
+      ( (FILE*)finp
+      , "%lu"
+      , (atstype_ulint*)data) ;
+  return
+  (n==1 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_fileref_load_ulint]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_fileref_load_float
+(atstype_ref finp, atstype_ref data)
+{
+  int n ;
+  n = fscanf
+      ( (FILE*)finp
+      , "%f"
+      , (atstype_float*)data) ;
+  return
+  (n==1 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_fileref_load_float]
+
+ATSinline()
+atstype_bool
+atspre_fileref_load_double
+  (atstype_ref finp, atstype_ref data)
+{
+  int n ;
+  n = fscanf
+      ( (FILE*)finp
+      , "%lf"
+      , (atstype_double*)data) ;
+  return
+  (n==1 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_fileref_load_double]
+
+/* ****** ****** */
+
+extern
+atstype_ptr
+atspre_fileref_get_line_string_main2
+(
+  atstype_int bsz // int bsz
+, atstype_ptr filp // FILE*filp
+, atstype_ref nlen // (int)*nlen
+) ; // endfun
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_FILEBAS
+
+/* ****** ****** */
+
+/* end of [filebas.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/float.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/float.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/float.cats
@@ -0,0 +1,710 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/float.atxt
+** Time of generation: Thu Mar 22 01:15:15 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: April, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_FLOAT
+#define ATSLIB_PRELUDE_CATS_FLOAT
+
+/* ****** ****** */
+
+ATSinline()
+atstype_float
+atspre_g0int2float_int_float
+  (atstype_int x) { return ((atstype_float)x) ; }
+// end of [atspre_g0int2float_int_float]
+
+ATSinline()
+atstype_double
+atspre_g0int2float_int_double
+  (atstype_int x) { return ((atstype_double)x) ; }
+// end of [atspre_g0int2float_int_double]
+
+ATSinline()
+atstype_double
+atspre_g0int2float_lint_double
+  (atstype_lint x) { return ((atstype_double)x) ; }
+// end of [atspre_g0int2float_lint_double]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_g0float2int_float_int
+  (atstype_float x) { return ((atstype_int)x) ; }
+ATSinline()
+atstype_lint
+atspre_g0float2int_float_lint
+  (atstype_float x) { return ((atstype_lint)x) ; }
+ATSinline()
+atstype_llint
+atspre_g0float2int_float_llint
+  (atstype_float x) { return ((atstype_llint)x) ; }
+
+ATSinline()
+atstype_int
+atspre_g0float2int_double_int
+  (atstype_double x) { return ((atstype_int)x) ; }
+ATSinline()
+atstype_lint
+atspre_g0float2int_double_lint
+  (atstype_double x) { return ((atstype_lint)x) ; }
+ATSinline()
+atstype_llint
+atspre_g0float2int_double_llint
+  (atstype_double x) { return ((atstype_llint)x) ; }
+
+/* ****** ****** */
+
+ATSinline()
+atstype_float
+atspre_g0float2float_float_float (atstype_float x) { return (x) ; }
+
+ATSinline()
+atstype_double
+atspre_g0float2float_double_double (atstype_double x) { return (x) ; }
+
+ATSinline()
+atstype_double
+atspre_g0float2float_float_double
+(
+atstype_float x
+)
+{
+ return ((atstype_double)x) ;
+}
+
+ATSinline()
+atstype_float
+atspre_g0float2float_double_float
+(
+atstype_double x
+)
+{
+ return ((atstype_float)x) ;
+}
+
+/* ****** ****** */
+//
+extern double atof (const char *inp) ;
+//
+ATSinline()
+atstype_double
+atspre_g0string2float_double
+  (atstype_string inp) { return atof((char*)inp) ; }
+//
+/* ****** ****** */
+
+ATSinline()
+atstype_float
+atspre_g0float_neg_float (atstype_float f) { return (-f) ; }
+ATSinline()
+atstype_double
+atspre_g0float_neg_double (atstype_double f) { return (-f) ; }
+ATSinline()
+atstype_ldouble
+atspre_g0float_neg_ldouble (atstype_ldouble f) { return (-f) ; }
+
+ATSinline()
+atstype_float
+atspre_g0float_abs_float (atstype_float f) { return (f >= 0 ? f : -f) ; }
+ATSinline()
+atstype_double
+atspre_g0float_abs_double (atstype_double f) { return (f >= 0 ? f : -f) ; }
+ATSinline()
+atstype_ldouble
+atspre_g0float_abs_ldouble (atstype_ldouble f) { return (f >= 0 ? f : -f) ; }
+
+ATSinline()
+atstype_float
+atspre_g0float_succ_float (atstype_float f) { return (f+1) ; }
+ATSinline()
+atstype_double
+atspre_g0float_succ_double (atstype_double f) { return (f+1) ; }
+ATSinline()
+atstype_ldouble
+atspre_g0float_succ_ldouble (atstype_ldouble f) { return (f+1) ; }
+
+ATSinline()
+atstype_float
+atspre_g0float_pred_float (atstype_float f) { return (f-1) ; }
+ATSinline()
+atstype_double
+atspre_g0float_pred_double (atstype_double f) { return (f-1) ; }
+ATSinline()
+atstype_ldouble
+atspre_g0float_pred_ldouble (atstype_ldouble f) { return (f-1) ; }
+
+/* ****** ****** */
+//
+//
+ATSinline()
+atstype_float
+atspre_g0float_add_float
+  (atstype_float f1, atstype_float f2) { return (f1 + f2) ; }
+// end of [atspre_g0float_add_float]
+ATSinline()
+atstype_float
+atspre_g0float_sub_float
+  (atstype_float f1, atstype_float f2) { return (f1 - f2) ; }
+// end of [atspre_g0float_sub_float]
+ATSinline()
+atstype_float
+atspre_g0float_mul_float
+  (atstype_float f1, atstype_float f2) { return (f1 * f2) ; }
+// end of [atspre_g0float_mul_float]
+ATSinline()
+atstype_float
+atspre_g0float_div_float
+  (atstype_float f1, atstype_float f2) { return (f1 / f2) ; }
+// end of [atspre_g0float_div_float]
+//
+ATSinline()
+atstype_double
+atspre_g0float_add_double
+  (atstype_double f1, atstype_double f2) { return (f1 + f2) ; }
+// end of [atspre_g0float_add_double]
+ATSinline()
+atstype_double
+atspre_g0float_sub_double
+  (atstype_double f1, atstype_double f2) { return (f1 - f2) ; }
+// end of [atspre_g0float_sub_double]
+ATSinline()
+atstype_double
+atspre_g0float_mul_double
+  (atstype_double f1, atstype_double f2) { return (f1 * f2) ; }
+// end of [atspre_g0float_mul_double]
+ATSinline()
+atstype_double
+atspre_g0float_div_double
+  (atstype_double f1, atstype_double f2) { return (f1 / f2) ; }
+// end of [atspre_g0float_div_double]
+//
+ATSinline()
+atstype_ldouble
+atspre_g0float_add_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) { return (f1 + f2) ; }
+// end of [atspre_g0float_add_ldouble]
+ATSinline()
+atstype_ldouble
+atspre_g0float_sub_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) { return (f1 - f2) ; }
+// end of [atspre_g0float_sub_ldouble]
+ATSinline()
+atstype_ldouble
+atspre_g0float_mul_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) { return (f1 * f2) ; }
+// end of [atspre_g0float_mul_ldouble]
+ATSinline()
+atstype_ldouble
+atspre_g0float_div_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) { return (f1 / f2) ; }
+// end of [atspre_g0float_div_ldouble]
+//
+extern atstype_float fmodf (atstype_float, atstype_float) ;
+extern atstype_double fmod (atstype_double, atstype_double) ;
+extern atstype_ldouble fmodl (atstype_ldouble, atstype_ldouble) ;
+//
+ATSinline()
+atstype_float
+atspre_g0float_mod_float
+  (atstype_float f1, atstype_float f2) { return fmodf(f1, f2) ; }
+ATSinline()
+atstype_double
+atspre_g0float_mod_double
+  (atstype_double f1, atstype_double f2) { return fmod(f1, f2) ; }
+ATSinline()
+atstype_ldouble
+atspre_g0float_mod_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) { return fmodl(f1, f2) ; }
+//
+/* ****** ****** */
+//
+//
+ATSinline()
+atstype_bool
+atspre_g0float_lt_float
+  (atstype_float f1, atstype_float f2) {
+  return (f1 < f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_lt_float]
+ATSinline()
+atstype_bool
+atspre_g0float_lte_float
+  (atstype_float f1, atstype_float f2) {
+  return (f1 <= f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_lte_float]
+ATSinline()
+atstype_bool
+atspre_g0float_gt_float
+  (atstype_float f1, atstype_float f2) {
+  return (f1 > f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_gt_float]
+ATSinline()
+atstype_bool
+atspre_g0float_gte_float
+  (atstype_float f1, atstype_float f2) {
+  return (f1 >= f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_gte_float]
+ATSinline()
+atstype_bool
+atspre_g0float_eq_float
+  (atstype_float f1, atstype_float f2) {
+  return (f1 == f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_eq_float]
+ATSinline()
+atstype_bool
+atspre_g0float_neq_float
+  (atstype_float f1, atstype_float f2) {
+  return (f1 != f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_neq_float]
+//
+ATSinline()
+atstype_bool
+atspre_g0float_lt_double
+  (atstype_double f1, atstype_double f2) {
+  return (f1 < f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_lt_double]
+ATSinline()
+atstype_bool
+atspre_g0float_lte_double
+  (atstype_double f1, atstype_double f2) {
+  return (f1 <= f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_lte_double]
+ATSinline()
+atstype_bool
+atspre_g0float_gt_double
+  (atstype_double f1, atstype_double f2) {
+  return (f1 > f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_gt_double]
+ATSinline()
+atstype_bool
+atspre_g0float_gte_double
+  (atstype_double f1, atstype_double f2) {
+  return (f1 >= f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_gte_double]
+ATSinline()
+atstype_bool
+atspre_g0float_eq_double
+  (atstype_double f1, atstype_double f2) {
+  return (f1 == f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_eq_double]
+ATSinline()
+atstype_bool
+atspre_g0float_neq_double
+  (atstype_double f1, atstype_double f2) {
+  return (f1 != f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_neq_double]
+//
+ATSinline()
+atstype_bool
+atspre_g0float_lt_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) {
+  return (f1 < f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_lt_ldouble]
+ATSinline()
+atstype_bool
+atspre_g0float_lte_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) {
+  return (f1 <= f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_lte_ldouble]
+ATSinline()
+atstype_bool
+atspre_g0float_gt_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) {
+  return (f1 > f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_gt_ldouble]
+ATSinline()
+atstype_bool
+atspre_g0float_gte_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) {
+  return (f1 >= f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_gte_ldouble]
+ATSinline()
+atstype_bool
+atspre_g0float_eq_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) {
+  return (f1 == f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_eq_ldouble]
+ATSinline()
+atstype_bool
+atspre_g0float_neq_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) {
+  return (f1 != f2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0float_neq_ldouble]
+//
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_g0float_compare_float
+(
+  atstype_float f1, atstype_float f2
+)
+{
+  if (f1 > f2) return 1 ; else if (f1 < f2) return -1 ; else return 0 ;
+} // end of [atspre_g0float_compare_float]
+
+ATSinline()
+atstype_int
+atspre_g0float_compare_double
+(
+  atstype_double f1, atstype_double f2
+)
+{
+  if (f1 > f2) return 1 ; else if (f1 < f2) return -1 ; else return 0 ;
+} // end of [atspre_g0float_compare_double]
+
+ATSinline()
+atstype_int
+atspre_g0float_compare_ldouble
+(
+  atstype_ldouble f1, atstype_ldouble f2
+)
+{
+  if (f1 > f2) return 1 ; else if (f1 < f2) return -1 ; else return 0 ;
+} // end of [atspre_g0float_compare_ldouble]
+
+/* ****** ****** */
+
+ATSinline()
+atstype_float
+atspre_g0float_min_float
+  (atstype_float f1, atstype_float f2) { return (f1 <= f2 ? f1 : f2) ; }
+// end of [atspre_g0float_min_float]
+ATSinline()
+atstype_double
+atspre_g0float_min_double
+  (atstype_double f1, atstype_double f2) { return (f1 <= f2 ? f1 : f2) ; }
+// end of [atspre_g0float_min_double]
+ATSinline()
+atstype_ldouble
+atspre_g0float_min_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) { return (f1 <= f2 ? f1 : f2) ; }
+// end of [atspre_g0float_min_ldouble]
+
+ATSinline()
+atstype_float
+atspre_g0float_max_float
+  (atstype_float f1, atstype_float f2) { return (f1 >= f2 ? f1 : f2) ; }
+// end of [atspre_g0float_max_float]
+ATSinline()
+atstype_double
+atspre_g0float_max_double
+  (atstype_double f1, atstype_double f2) { return (f1 >= f2 ? f1 : f2) ; }
+// end of [atspre_g0float_max_double]
+ATSinline()
+atstype_ldouble
+atspre_g0float_max_ldouble
+  (atstype_ldouble f1, atstype_ldouble f2) { return (f1 >= f2 ? f1 : f2) ; }
+// end of [atspre_g0float_max_ldouble]
+
+/* ****** ****** */
+//
+//
+ATSinline()
+atstype_float
+atspre_add_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) + f2) ; }
+// end of [atspre_add_int_float]
+ATSinline()
+atstype_float
+atspre_sub_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) - f2) ; }
+// end of [atspre_sub_int_float]
+ATSinline()
+atstype_float
+atspre_mul_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) * f2) ; }
+// end of [atspre_mul_int_float]
+ATSinline()
+atstype_float
+atspre_div_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) / f2) ; }
+// end of [atspre_div_int_float]
+//
+ATSinline()
+atstype_double
+atspre_add_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) + f2) ; }
+// end of [atspre_add_int_double]
+ATSinline()
+atstype_double
+atspre_sub_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) - f2) ; }
+// end of [atspre_sub_int_double]
+ATSinline()
+atstype_double
+atspre_mul_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) * f2) ; }
+// end of [atspre_mul_int_double]
+ATSinline()
+atstype_double
+atspre_div_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) / f2) ; }
+// end of [atspre_div_int_double]
+//
+ATSinline()
+atstype_ldouble
+atspre_add_int_ldouble
+  (atstype_int i1, atstype_ldouble f2) { return (((atstype_ldouble)i1) + f2) ; }
+// end of [atspre_add_int_ldouble]
+ATSinline()
+atstype_ldouble
+atspre_sub_int_ldouble
+  (atstype_int i1, atstype_ldouble f2) { return (((atstype_ldouble)i1) - f2) ; }
+// end of [atspre_sub_int_ldouble]
+ATSinline()
+atstype_ldouble
+atspre_mul_int_ldouble
+  (atstype_int i1, atstype_ldouble f2) { return (((atstype_ldouble)i1) * f2) ; }
+// end of [atspre_mul_int_ldouble]
+ATSinline()
+atstype_ldouble
+atspre_div_int_ldouble
+  (atstype_int i1, atstype_ldouble f2) { return (((atstype_ldouble)i1) / f2) ; }
+// end of [atspre_div_int_ldouble]
+//
+/* ****** ****** */
+//
+//
+ATSinline()
+atstype_float
+atspre_add_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 + ((atstype_float)i2)) ; }
+// end of [atspre_add_float_int]
+ATSinline()
+atstype_float
+atspre_sub_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 - ((atstype_float)i2)) ; }
+// end of [atspre_sub_float_int]
+ATSinline()
+atstype_float
+atspre_mul_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 * ((atstype_float)i2)) ; }
+// end of [atspre_mul_float_int]
+ATSinline()
+atstype_float
+atspre_div_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 / ((atstype_float)i2)) ; }
+// end of [atspre_div_float_int]
+//
+ATSinline()
+atstype_double
+atspre_add_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 + ((atstype_double)i2)) ; }
+// end of [atspre_add_double_int]
+ATSinline()
+atstype_double
+atspre_sub_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 - ((atstype_double)i2)) ; }
+// end of [atspre_sub_double_int]
+ATSinline()
+atstype_double
+atspre_mul_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 * ((atstype_double)i2)) ; }
+// end of [atspre_mul_double_int]
+ATSinline()
+atstype_double
+atspre_div_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 / ((atstype_double)i2)) ; }
+// end of [atspre_div_double_int]
+//
+ATSinline()
+atstype_ldouble
+atspre_add_ldouble_int
+  (atstype_ldouble f1, atstype_int i2) { return (f1 + ((atstype_ldouble)i2)) ; }
+// end of [atspre_add_ldouble_int]
+ATSinline()
+atstype_ldouble
+atspre_sub_ldouble_int
+  (atstype_ldouble f1, atstype_int i2) { return (f1 - ((atstype_ldouble)i2)) ; }
+// end of [atspre_sub_ldouble_int]
+ATSinline()
+atstype_ldouble
+atspre_mul_ldouble_int
+  (atstype_ldouble f1, atstype_int i2) { return (f1 * ((atstype_ldouble)i2)) ; }
+// end of [atspre_mul_ldouble_int]
+ATSinline()
+atstype_ldouble
+atspre_div_ldouble_int
+  (atstype_ldouble f1, atstype_int i2) { return (f1 / ((atstype_ldouble)i2)) ; }
+// end of [atspre_div_ldouble_int]
+//
+/* ****** ****** */
+//
+//
+ATSinline()
+atstype_bool
+atspre_lt_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) < f2) ; }
+// end of [atspre_lt_int_float]
+ATSinline()
+atstype_bool
+atspre_lte_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) <= f2) ; }
+// end of [atspre_lte_int_float]
+ATSinline()
+atstype_bool
+atspre_gt_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) > f2) ; }
+// end of [atspre_gt_int_float]
+ATSinline()
+atstype_bool
+atspre_gte_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) >= f2) ; }
+// end of [atspre_gte_int_float]
+ATSinline()
+atstype_bool
+atspre_eq_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) == f2) ; }
+// end of [atspre_eq_int_float]
+ATSinline()
+atstype_bool
+atspre_neq_int_float
+  (atstype_int i1, atstype_float f2) { return (((atstype_float)i1) != f2) ; }
+// end of [atspre_neq_int_float]
+//
+ATSinline()
+atstype_bool
+atspre_lt_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) < f2) ; }
+// end of [atspre_lt_int_double]
+ATSinline()
+atstype_bool
+atspre_lte_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) <= f2) ; }
+// end of [atspre_lte_int_double]
+ATSinline()
+atstype_bool
+atspre_gt_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) > f2) ; }
+// end of [atspre_gt_int_double]
+ATSinline()
+atstype_bool
+atspre_gte_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) >= f2) ; }
+// end of [atspre_gte_int_double]
+ATSinline()
+atstype_bool
+atspre_eq_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) == f2) ; }
+// end of [atspre_eq_int_double]
+ATSinline()
+atstype_bool
+atspre_neq_int_double
+  (atstype_int i1, atstype_double f2) { return (((atstype_double)i1) != f2) ; }
+// end of [atspre_neq_int_double]
+//
+/* ****** ****** */
+//
+//
+ATSinline()
+atstype_bool
+atspre_lt_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 < ((atstype_float)i2)) ; }
+// end of [atspre_lt_float_int]
+ATSinline()
+atstype_bool
+atspre_lte_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 <= ((atstype_float)i2)) ; }
+// end of [atspre_lte_float_int]
+ATSinline()
+atstype_bool
+atspre_gt_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 > ((atstype_float)i2)) ; }
+// end of [atspre_gt_float_int]
+ATSinline()
+atstype_bool
+atspre_gte_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 >= ((atstype_float)i2)) ; }
+// end of [atspre_gte_float_int]
+ATSinline()
+atstype_bool
+atspre_eq_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 == ((atstype_float)i2)) ; }
+// end of [atspre_eq_float_int]
+ATSinline()
+atstype_bool
+atspre_neq_float_int
+  (atstype_float f1, atstype_int i2) { return (f1 != ((atstype_float)i2)) ; }
+// end of [atspre_neq_float_int]
+//
+ATSinline()
+atstype_bool
+atspre_lt_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 < ((atstype_double)i2)) ; }
+// end of [atspre_lt_double_int]
+ATSinline()
+atstype_bool
+atspre_lte_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 <= ((atstype_double)i2)) ; }
+// end of [atspre_lte_double_int]
+ATSinline()
+atstype_bool
+atspre_gt_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 > ((atstype_double)i2)) ; }
+// end of [atspre_gt_double_int]
+ATSinline()
+atstype_bool
+atspre_gte_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 >= ((atstype_double)i2)) ; }
+// end of [atspre_gte_double_int]
+ATSinline()
+atstype_bool
+atspre_eq_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 == ((atstype_double)i2)) ; }
+// end of [atspre_eq_double_int]
+ATSinline()
+atstype_bool
+atspre_neq_double_int
+  (atstype_double f1, atstype_int i2) { return (f1 != ((atstype_double)i2)) ; }
+// end of [atspre_neq_double_int]
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_FLOAT
+
+/* ****** ****** */
+
+/* end of [float.cats] */
+
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/fprintf.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/fprintf.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/fprintf.cats
@@ -0,0 +1,580 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/fprintf.atxt
+** Time of generation: Thu Mar 22 01:15:17 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: September, 2015 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_FPRINTF
+#define ATSLIB_PRELUDE_CATS_FPRINTF
+
+/* ****** ****** */
+//
+// HX-2013-09: declared in [stdio.h]
+//
+#ifndef fprintf
+extern
+int fprintf (FILE *stream, const char *format, ...) ;
+#endif // end of [ifndef]
+//
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_bool (
+  atstype_ref out, atstype_bool x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%s", atspre_bool2string(x)) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_bool] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_bool]
+#define atspre_print_bool(x) atspre_fprint_bool(stdout, (x))
+#define atspre_prerr_bool(x) atspre_fprint_bool(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_char
+(
+  atstype_ref out, atstype_char c
+) {
+  int err = 0 ;
+  err += fprintf ((FILE*)out, "%c", c) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_char] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end of [atspre_fprint_char]
+#define atspre_print_char(c) atspre_fprint_char(stdout, (c))
+#define atspre_prerr_char(c) atspre_fprint_char(stderr, (c))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_uchar
+(
+  atstype_ref out, atstype_uchar c
+) {
+  atspre_fprint_char (out, (atstype_char)c) ; return ;
+} // end of [atspre_fprint_uchar]
+#define atspre_print_uchar(c) atspre_fprint_uchar(stdout, (c))
+#define atspre_prerr_uchar(c) atspre_fprint_uchar(stderr, (c))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_schar
+(
+  atstype_ref out, atstype_schar c
+) {
+  atspre_fprint_char (out, (atstype_char)c) ; return ;
+} // end of [atspre_fprint_schar]
+#define atspre_print_schar(c) atspre_fprint_schar(stdout, (c))
+#define atspre_prerr_schar(c) atspre_fprint_schar(stderr, (c))
+
+/* ****** ****** */
+  
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_int
+(
+  atstype_ref out, atstype_int x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%i", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_int] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_int]
+#define atspre_print_int(x) atspre_fprint_int(stdout, (x))
+#define atspre_prerr_int(x) atspre_fprint_int(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_lint
+(
+  atstype_ref out, atstype_lint x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%li", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_lint] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_lint]
+#define atspre_print_lint(x) atspre_fprint_lint(stdout, (x))
+#define atspre_prerr_lint(x) atspre_fprint_lint(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_llint
+(
+  atstype_ref out, atstype_llint x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%lli", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_llint] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_llint]
+#define atspre_print_llint(x) atspre_fprint_llint(stdout, (x))
+#define atspre_prerr_llint(x) atspre_fprint_llint(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_ssize
+(
+  atstype_ref out, atstype_ssize x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%li", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_ssize] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_ssize]
+#define atspre_print_ssize(x) atspre_fprint_ssize(stdout, (x))
+#define atspre_prerr_ssize(x) atspre_fprint_ssize(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_uint
+(
+  atstype_ref out, atstype_uint x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%u", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_uint] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_uint]
+#define atspre_print_uint(x) atspre_fprint_uint(stdout, (x))
+#define atspre_prerr_uint(x) atspre_fprint_uint(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_ulint
+(
+  atstype_ref out, atstype_ulint x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%lu", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_ulint] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_ulint]
+#define atspre_print_ulint(x) atspre_fprint_ulint(stdout, (x))
+#define atspre_prerr_ulint(x) atspre_fprint_ulint(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_ullint
+(
+  atstype_ref out, atstype_ullint x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%llu", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_ullint] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_ullint]
+#define atspre_print_ullint(x) atspre_fprint_ullint(stdout, (x))
+#define atspre_prerr_ullint(x) atspre_fprint_ullint(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_size
+(
+  atstype_ref out, atstype_size x
+) {
+  int err = 0 ;
+  atstype_ulint x2 = x ;
+  err += fprintf((FILE*)out, "%lu", x2) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_size] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_size]
+#define atspre_print_size(x) atspre_fprint_size(stdout, (x))
+#define atspre_prerr_size(x) atspre_fprint_size(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_ptr (
+  atstype_ref out, atstype_ptr x
+) {
+  int err ;
+  err = fprintf((FILE*)out, "%p", x) ;
+  return ;
+} // end [atspre_fprint_ptr]
+#define atspre_print_ptr(x) atspre_fprint_ptr(stdout, (x))
+#define atspre_prerr_ptr(x) atspre_fprint_ptr(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_float (
+  atstype_ref r, atstype_float x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)r, "%f", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_float] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_float]
+#define atspre_print_float(x) atspre_fprint_float(stdout, (x))
+#define atspre_prerr_float(x) atspre_fprint_float(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_double (
+  atstype_ref r, atstype_double x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)r, "%f", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_double] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_double]
+#define atspre_print_double(x) atspre_fprint_double(stdout, (x))
+#define atspre_prerr_double(x) atspre_fprint_double(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_ldouble (
+  atstype_ref r, atstype_ldouble x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)r, "%Lf", x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_ldouble] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end [atspre_fprint_ldouble]
+#define atspre_print_ldouble(x) atspre_fprint_ldouble(stdout, (x))
+#define atspre_prerr_ldouble(x) atspre_fprint_ldouble(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_intptr
+(
+  atstype_ref r, atstype_intptr x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%lli", (atstype_llint)x) ;
+  return ;
+} // end [atspre_fprint_intptr]
+#define atspre_print_intptr(x) atspre_fprint_intptr(stdout, (x))
+#define atspre_prerr_intptr(x) atspre_fprint_intptr(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_uintptr
+(
+  atstype_ref r, atstype_uintptr x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%llu", (atstype_ullint)x) ;
+  return ;
+} // end [atspre_fprint_uintptr]
+#define atspre_print_uintptr(x) atspre_fprint_uintptr(stdout, (x))
+#define atspre_prerr_uintptr(x) atspre_fprint_uintptr(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_int8
+(
+  atstype_ref r, atstype_int8 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%i", (atstype_int)x) ;
+  return ;
+} // end [atspre_fprint_int8]
+#define atspre_print_int8(x) atspre_fprint_int8(stdout, (x))
+#define atspre_prerr_int8(x) atspre_fprint_int8(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_int16
+(
+  atstype_ref r, atstype_int16 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%i", (atstype_int)x) ;
+  return ;
+} // end [atspre_fprint_int16]
+#define atspre_print_int16(x) atspre_fprint_int16(stdout, (x))
+#define atspre_prerr_int16(x) atspre_fprint_int16(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_int32
+(
+  atstype_ref r, atstype_int32 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%li", (atstype_lint)x) ;
+  return ;
+} // end [atspre_fprint_int32]
+#define atspre_print_int32(x) atspre_fprint_int32(stdout, (x))
+#define atspre_prerr_int32(x) atspre_fprint_int32(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_int64
+(
+  atstype_ref r, atstype_int64 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%lli", (atstype_llint)x) ;
+  return ;
+} // end [atspre_fprint_int64]
+#define atspre_print_int64(x) atspre_fprint_int64(stdout, (x))
+#define atspre_prerr_int64(x) atspre_fprint_int64(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_uint8
+(
+  atstype_ref r, atstype_uint8 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%u", (atstype_uint)x) ;
+  return ;
+} // end [atspre_fprint_uint8]
+#define atspre_print_uint8(x) atspre_fprint_uint8(stdout, (x))
+#define atspre_prerr_uint8(x) atspre_fprint_uint8(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_uint16
+(
+  atstype_ref r, atstype_uint16 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%u", (atstype_uint)x) ;
+  return ;
+} // end [atspre_fprint_uint16]
+#define atspre_print_uint16(x) atspre_fprint_uint16(stdout, (x))
+#define atspre_prerr_uint16(x) atspre_fprint_uint16(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_uint32
+(
+  atstype_ref r, atstype_uint32 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%lu", (atstype_ulint)x) ;
+  return ;
+} // end [atspre_fprint_uint32]
+#define atspre_print_uint32(x) atspre_fprint_uint32(stdout, (x))
+#define atspre_prerr_uint32(x) atspre_fprint_uint32(stderr, (x))
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_uint64
+(
+  atstype_ref r, atstype_uint64 x
+) {
+  int err ;
+  err = fprintf((FILE*)r, "%llu", (atstype_ullint)x) ;
+  return ;
+} // end [atspre_fprint_uint64]
+#define atspre_print_uint64(x) atspre_fprint_uint64(stdout, (x))
+#define atspre_prerr_uint64(x) atspre_fprint_uint64(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_string
+(
+  atstype_ref out, atstype_string x
+) {
+  int err = 0 ;
+  err += fprintf((FILE*)out, "%s", (char*)x) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_string] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end of [atspre_fprint_string]
+#define atspre_print_string(x) atspre_fprint_string(stdout, (x))
+#define atspre_prerr_string(x) atspre_fprint_string(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_substring
+(
+  atstype_ref out
+, atstype_string x
+, atstype_size st, atstype_size ln  
+) {
+  int err = 0 ;
+  err += fwrite(((char*)x)+st, 1, ln, out) ;
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_substring] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end of [atspre_fprint_substring]
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_stropt
+(
+  atstype_ref out, atstype_stropt x
+) {
+  int err = 0 ;
+  if (!x)
+  {
+    err += fprintf((FILE*)out, "strnone()") ;
+  } else {
+    err += fprintf((FILE*)out, "strsome(%s)", (char*)x) ;
+  }
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_stropt] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end of [atspre_fprint_stropt]
+#define atspre_print_stropt(x) atspre_fprint_stropt(stdout, (x))
+#define atspre_prerr_stropt(x) atspre_fprint_stropt(stderr, (x))
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_fprint_strptr
+(
+  atstype_ref out, atstype_strptr x
+) {
+  int err = 0 ;
+  if (x != 0) {
+    err += fprintf((FILE*)out, "%s", (char*)x) ;
+  } else {
+    err += fprintf((FILE*)out, "%s", "(strnull)") ;
+  } // end of [if]
+/*
+  if (err < 0) {
+    fprintf(stderr, "exit(ATS): [fprint_strptr] failed.") ; exit(1) ;
+  } // end of [if]
+*/
+  return ;
+} // end of [atspre_fprint_strptr]
+#define atspre_print_strptr(x) atspre_fprint_strptr(stdout, (x))
+#define atspre_prerr_strptr(x) atspre_fprint_strptr(stderr, (x))
+
+/* ****** ****** */
+
+#define atspre_fprint_strbuf atspre_fprint_strptr
+#define atspre_print_strbuf(x) atspre_fprint_strbuf(stdout, (x))
+#define atspre_prerr_strbuf(x) atspre_fprint_strbuf(stderr, (x))
+
+/* ****** ****** */
+
+#define atspre_fprint_strnptr atspre_fprint_strptr
+#define atspre_print_strnptr(x) atspre_fprint_strbuf(stdout, (x))
+#define atspre_prerr_strnptr(x) atspre_fprint_strbuf(stderr, (x))
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_FPRINTF
+
+/* ****** ****** */
+
+/* end of [fprintf.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer.cats
@@ -0,0 +1,1275 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/integer.atxt
+** Time of generation: Thu Mar 22 01:15:12 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_INTEGER
+#define ATSLIB_PRELUDE_CATS_INTEGER
+
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_int_int(x) ((atstype_int)(x))
+#define \
+atspre_g1int2int_int_int(x) atspre_g0int2int_int_int(x)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2uint_int_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g1int2uint_int_uint(x) atspre_g0int2uint_int_uint(x)
+//
+/* ****** ****** */
+//
+#define atspre_g0uint2int_uint_int(x) ((atstype_int)(x))
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0uint2uint_uint_uint(x) (x)
+#define \
+atspre_g1uint2uint_uint_uint(x) atspre_g0uint2uint_uint_uint(x)
+//
+/* ****** ****** */
+//
+#define atspre_g0uint2uint_ulint_uint(x) ((atstype_uint)(x))
+#define atspre_g0uint2uint_ulint_ulint(x) (x)
+#define atspre_g0uint2uint_ulint_ullint(x) ((atstype_ullint)(x))
+#define atspre_g1uint2uint_ulint_uint atspre_g0uint2uint_ulint_uint
+#define atspre_g1uint2uint_ulint_ulint atspre_g0uint2uint_ulint_ulint
+#define atspre_g1uint2uint_ulint_ullint atspre_g0uint2uint_ulint_ullint
+//
+/* ****** ****** */
+//
+#define atspre_g0uint2uint_usint_uint(x) ((atstype_uint)(x))
+//
+/* ****** ****** */
+//
+extern int atoi (const char *inp) ;
+extern long int atol (const char *inp) ;
+extern long long int atoll (const char *inp) ;
+//
+ATSinline()
+atstype_int
+atspre_g0string2int_int
+  (atstype_string inp) { return atoi((char*)inp) ; }
+ATSinline()
+atstype_lint
+atspre_g0string2int_lint
+  (atstype_string inp) { return atol((char*)inp) ; }
+ATSinline()
+atstype_llint
+atspre_g0string2int_llint
+  (atstype_string inp) { return atoll((char*)inp) ; }
+//
+/* ****** ****** */
+//
+extern
+unsigned long int
+strtoul(const char *nptr, char **endptr, int base);
+extern
+unsigned long long int
+strtoull(const char *nptr, char **endptr, int base);
+//
+ATSinline()
+atstype_uint
+atspre_g0string2uint_uint
+  (atstype_string inp) { return strtoul((char*)inp, NULL, 10) ; }
+ATSinline()
+atstype_ulint
+atspre_g0string2uint_ulint
+  (atstype_string inp) { return strtoul((char*)inp, NULL, 10) ; }
+ATSinline()
+atstype_ullint
+atspre_g0string2uint_ullint
+  (atstype_string inp) { return strtoull((char*)inp, NULL, 10) ; }
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_int
+atspre_g0int_neg_int
+  (atstype_int x) { return (-x) ; }
+// end of [atspre_g0int_neg_int]
+ATSinline()
+atstype_int
+atspre_g0int_abs_int
+  (atstype_int x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_int]
+ATSinline()
+atstype_int
+atspre_g0int_succ_int
+  (atstype_int x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_int]
+ATSinline()
+atstype_int
+atspre_g0int_pred_int
+  (atstype_int x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_int]
+ATSinline()
+atstype_int
+atspre_g0int_half_int
+  (atstype_int x) { return (x / 2) ; }
+// end of [atspre_g0int_half_int]
+ATSinline()
+atstype_int
+atspre_g0int_add_int
+  (atstype_int x1, atstype_int x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_int]
+ATSinline()
+atstype_int
+atspre_g0int_sub_int
+  (atstype_int x1, atstype_int x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_int]
+ATSinline()
+atstype_int
+atspre_g0int_mul_int
+  (atstype_int x1, atstype_int x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_int]
+ATSinline()
+atstype_int
+atspre_g0int_div_int
+  (atstype_int x1, atstype_int x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_int]
+ATSinline()
+atstype_int
+atspre_g0int_mod_int
+  (atstype_int x1, atstype_int x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_int]
+ATSinline()
+atstype_int
+atspre_g0int_nmod_int
+  (atstype_int x1, atstype_int x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_int]
+ATSinline()
+atstype_int
+atspre_g0int_asl_int
+  (atstype_int x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_int]
+ATSinline()
+atstype_int
+atspre_g0int_asr_int
+  (atstype_int x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_int]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_int
+(
+  atstype_int x1, atstype_int x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_int]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_int
+(
+  atstype_int x1, atstype_int x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_int]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_int
+(
+  atstype_int x1, atstype_int x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_int]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_int
+(
+  atstype_int x1, atstype_int x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_int]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_int
+(
+  atstype_int x1, atstype_int x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_int]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_int
+(
+  atstype_int x1, atstype_int x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_int]
+ATSinline()
+atstype_int
+atspre_g0int_compare_int
+(
+  atstype_int x1, atstype_int x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_int]
+ATSinline()
+atstype_int
+atspre_g0int_max_int
+  (atstype_int x1, atstype_int x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_int]
+ATSinline()
+atstype_int
+atspre_g0int_min_int
+  (atstype_int x1, atstype_int x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_int]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_int (atstype_int x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_int]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_int (atstype_int x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_int]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_int (atstype_int x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_int]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_int (atstype_int x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_int]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_int (atstype_int x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_int]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_int (atstype_int x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_int]
+//
+ATSinline()
+atstype_lint
+atspre_g0int_neg_lint
+  (atstype_lint x) { return (-x) ; }
+// end of [atspre_g0int_neg_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_abs_lint
+  (atstype_lint x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_succ_lint
+  (atstype_lint x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_pred_lint
+  (atstype_lint x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_half_lint
+  (atstype_lint x) { return (x / 2) ; }
+// end of [atspre_g0int_half_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_add_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_sub_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_mul_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_div_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_mod_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_nmod_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_asl_lint
+  (atstype_lint x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_asr_lint
+  (atstype_lint x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_lint
+(
+  atstype_lint x1, atstype_lint x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_lint
+(
+  atstype_lint x1, atstype_lint x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_lint
+(
+  atstype_lint x1, atstype_lint x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_lint
+(
+  atstype_lint x1, atstype_lint x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_lint
+(
+  atstype_lint x1, atstype_lint x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_lint
+(
+  atstype_lint x1, atstype_lint x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_lint]
+ATSinline()
+atstype_int
+atspre_g0int_compare_lint
+(
+  atstype_lint x1, atstype_lint x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_max_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_lint]
+ATSinline()
+atstype_lint
+atspre_g0int_min_lint
+  (atstype_lint x1, atstype_lint x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_lint (atstype_lint x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_lint (atstype_lint x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_lint (atstype_lint x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_lint (atstype_lint x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_lint (atstype_lint x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_lint]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_lint (atstype_lint x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_lint]
+//
+ATSinline()
+atstype_llint
+atspre_g0int_neg_llint
+  (atstype_llint x) { return (-x) ; }
+// end of [atspre_g0int_neg_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_abs_llint
+  (atstype_llint x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_succ_llint
+  (atstype_llint x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_pred_llint
+  (atstype_llint x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_half_llint
+  (atstype_llint x) { return (x / 2) ; }
+// end of [atspre_g0int_half_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_add_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_sub_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_mul_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_div_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_mod_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_nmod_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_asl_llint
+  (atstype_llint x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_asr_llint
+  (atstype_llint x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_llint
+(
+  atstype_llint x1, atstype_llint x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_llint
+(
+  atstype_llint x1, atstype_llint x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_llint
+(
+  atstype_llint x1, atstype_llint x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_llint
+(
+  atstype_llint x1, atstype_llint x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_llint
+(
+  atstype_llint x1, atstype_llint x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_llint
+(
+  atstype_llint x1, atstype_llint x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_llint]
+ATSinline()
+atstype_int
+atspre_g0int_compare_llint
+(
+  atstype_llint x1, atstype_llint x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_max_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_llint]
+ATSinline()
+atstype_llint
+atspre_g0int_min_llint
+  (atstype_llint x1, atstype_llint x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_llint (atstype_llint x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_llint (atstype_llint x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_llint (atstype_llint x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_llint (atstype_llint x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_llint (atstype_llint x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_llint]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_llint (atstype_llint x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_llint]
+//
+/* ****** ****** */
+
+#define atspre_g1int_neg_int atspre_g0int_neg_int
+#define atspre_g1int_abs_int atspre_g0int_abs_int
+#define atspre_g1int_succ_int atspre_g0int_succ_int
+#define atspre_g1int_pred_int atspre_g0int_pred_int
+#define atspre_g1int_half_int atspre_g0int_half_int
+#define atspre_g1int_add_int atspre_g0int_add_int
+#define atspre_g1int_sub_int atspre_g0int_sub_int
+#define atspre_g1int_mul_int atspre_g0int_mul_int
+#define atspre_g1int_div_int atspre_g0int_div_int
+#define atspre_g1int_nmod_int atspre_g0int_nmod_int
+#define atspre_g1int_isltz_int atspre_g0int_isltz_int
+#define atspre_g1int_isltez_int atspre_g0int_isltez_int
+#define atspre_g1int_isgtz_int atspre_g0int_isgtz_int
+#define atspre_g1int_isgtez_int atspre_g0int_isgtez_int
+#define atspre_g1int_iseqz_int atspre_g0int_iseqz_int
+#define atspre_g1int_isneqz_int atspre_g0int_isneqz_int
+#define atspre_g1int_lt_int atspre_g0int_lt_int
+#define atspre_g1int_lte_int atspre_g0int_lte_int
+#define atspre_g1int_gt_int atspre_g0int_gt_int
+#define atspre_g1int_gte_int atspre_g0int_gte_int
+#define atspre_g1int_eq_int atspre_g0int_eq_int
+#define atspre_g1int_neq_int atspre_g0int_neq_int
+#define atspre_g1int_compare_int atspre_g0int_compare_int
+#define atspre_g1int_max_int atspre_g0int_max_int
+#define atspre_g1int_min_int atspre_g0int_min_int
+
+/* ****** ****** */
+
+#define atspre_g1int_neg_lint atspre_g0int_neg_lint
+#define atspre_g1int_succ_lint atspre_g0int_succ_lint
+#define atspre_g1int_pred_lint atspre_g0int_pred_lint
+#define atspre_g1int_half_lint atspre_g0int_half_lint
+#define atspre_g1int_add_lint atspre_g0int_add_lint
+#define atspre_g1int_sub_lint atspre_g0int_sub_lint
+#define atspre_g1int_mul_lint atspre_g0int_mul_lint
+#define atspre_g1int_div_lint atspre_g0int_div_lint
+#define atspre_g1int_nmod_lint atspre_g0int_nmod_lint
+#define atspre_g1int_isltz_lint atspre_g0int_isltz_lint
+#define atspre_g1int_isltez_lint atspre_g0int_isltez_lint
+#define atspre_g1int_isgtz_lint atspre_g0int_isgtz_lint
+#define atspre_g1int_isgtez_lint atspre_g0int_isgtez_lint
+#define atspre_g1int_iseqz_lint atspre_g0int_iseqz_lint
+#define atspre_g1int_isneqz_lint atspre_g0int_isneqz_lint
+#define atspre_g1int_lt_lint atspre_g0int_lt_lint
+#define atspre_g1int_lte_lint atspre_g0int_lte_lint
+#define atspre_g1int_gt_lint atspre_g0int_gt_lint
+#define atspre_g1int_gte_lint atspre_g0int_gte_lint
+#define atspre_g1int_eq_lint atspre_g0int_eq_lint
+#define atspre_g1int_neq_lint atspre_g0int_neq_lint
+#define atspre_g1int_compare_lint atspre_g0int_compare_lint
+#define atspre_g1int_max_lint atspre_g0int_max_lint
+#define atspre_g1int_min_lint atspre_g0int_min_lint
+
+/* ****** ****** */
+
+#define atspre_g1int_neg_llint atspre_g0int_neg_llint
+#define atspre_g1int_succ_llint atspre_g0int_succ_llint
+#define atspre_g1int_pred_llint atspre_g0int_pred_llint
+#define atspre_g1int_half_llint atspre_g0int_half_llint
+#define atspre_g1int_add_llint atspre_g0int_add_llint
+#define atspre_g1int_sub_llint atspre_g0int_sub_llint
+#define atspre_g1int_mul_llint atspre_g0int_mul_llint
+#define atspre_g1int_div_llint atspre_g0int_div_llint
+#define atspre_g1int_nmod_llint atspre_g0int_nmod_llint
+#define atspre_g1int_isltz_llint atspre_g0int_isltz_llint
+#define atspre_g1int_isltez_llint atspre_g0int_isltez_llint
+#define atspre_g1int_isgtz_llint atspre_g0int_isgtz_llint
+#define atspre_g1int_isgtez_llint atspre_g0int_isgtez_llint
+#define atspre_g1int_iseqz_llint atspre_g0int_iseqz_llint
+#define atspre_g1int_isneqz_llint atspre_g0int_isneqz_llint
+#define atspre_g1int_lt_llint atspre_g0int_lt_llint
+#define atspre_g1int_lte_llint atspre_g0int_lte_llint
+#define atspre_g1int_gt_llint atspre_g0int_gt_llint
+#define atspre_g1int_gte_llint atspre_g0int_gte_llint
+#define atspre_g1int_eq_llint atspre_g0int_eq_llint
+#define atspre_g1int_neq_llint atspre_g0int_neq_llint
+#define atspre_g1int_compare_llint atspre_g0int_compare_llint
+#define atspre_g1int_max_llint atspre_g0int_max_llint
+#define atspre_g1int_min_llint atspre_g0int_min_llint
+
+/* ****** ****** */
+//
+ATSinline()
+atstype_uint
+atspre_g0uint_succ_uint
+  (atstype_uint x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_pred_uint
+  (atstype_uint x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_half_uint
+  (atstype_uint x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_add_uint
+  (atstype_uint x1, atstype_uint x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_sub_uint
+  (atstype_uint x1, atstype_uint x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_mul_uint
+  (atstype_uint x1, atstype_uint x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_div_uint
+  (atstype_uint x1, atstype_uint x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_mod_uint
+  (atstype_uint x1, atstype_uint x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_lsl_uint
+  (atstype_uint x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_lsr_uint
+  (atstype_uint x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_lnot_uint
+  (atstype_uint x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_lor_uint
+  (atstype_uint x, atstype_uint y) { return (x | y) ; }
+// end of [atspre_g0uint_uint_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_land_uint
+  (atstype_uint x, atstype_uint y) { return (x & y) ; }
+// end of [atspre_g0uint_uint_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_lxor_uint
+  (atstype_uint x, atstype_uint y) { return (x ^ y) ; }
+// end of [atspre_g0uint_uint_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_uint
+(
+  atstype_uint x1, atstype_uint x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_uint
+(
+  atstype_uint x1, atstype_uint x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_uint
+(
+  atstype_uint x1, atstype_uint x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_uint
+(
+  atstype_uint x1, atstype_uint x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_uint
+(
+  atstype_uint x1, atstype_uint x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_uint
+(
+  atstype_uint x1, atstype_uint x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_uint]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_uint
+(
+  atstype_uint x1, atstype_uint x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_max_uint
+  (atstype_uint x1, atstype_uint x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_uint]
+ATSinline()
+atstype_uint
+atspre_g0uint_min_uint
+  (atstype_uint x1, atstype_uint x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_uint (atstype_uint x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_uint (atstype_uint x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_uint (atstype_uint x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_uint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_uint (atstype_uint x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_uint]
+//
+ATSinline()
+atstype_ulint
+atspre_g0uint_succ_ulint
+  (atstype_ulint x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_pred_ulint
+  (atstype_ulint x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_half_ulint
+  (atstype_ulint x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_add_ulint
+  (atstype_ulint x1, atstype_ulint x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_sub_ulint
+  (atstype_ulint x1, atstype_ulint x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_mul_ulint
+  (atstype_ulint x1, atstype_ulint x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_div_ulint
+  (atstype_ulint x1, atstype_ulint x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_mod_ulint
+  (atstype_ulint x1, atstype_ulint x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_lsl_ulint
+  (atstype_ulint x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_lsr_ulint
+  (atstype_ulint x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_lnot_ulint
+  (atstype_ulint x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_lor_ulint
+  (atstype_ulint x, atstype_ulint y) { return (x | y) ; }
+// end of [atspre_g0uint_ulint_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_land_ulint
+  (atstype_ulint x, atstype_ulint y) { return (x & y) ; }
+// end of [atspre_g0uint_ulint_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_lxor_ulint
+  (atstype_ulint x, atstype_ulint y) { return (x ^ y) ; }
+// end of [atspre_g0uint_ulint_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_ulint
+(
+  atstype_ulint x1, atstype_ulint x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_ulint
+(
+  atstype_ulint x1, atstype_ulint x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_ulint
+(
+  atstype_ulint x1, atstype_ulint x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_ulint
+(
+  atstype_ulint x1, atstype_ulint x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_ulint
+(
+  atstype_ulint x1, atstype_ulint x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_ulint
+(
+  atstype_ulint x1, atstype_ulint x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_ulint]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_ulint
+(
+  atstype_ulint x1, atstype_ulint x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_max_ulint
+  (atstype_ulint x1, atstype_ulint x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_ulint]
+ATSinline()
+atstype_ulint
+atspre_g0uint_min_ulint
+  (atstype_ulint x1, atstype_ulint x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_ulint (atstype_ulint x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_ulint (atstype_ulint x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_ulint (atstype_ulint x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_ulint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_ulint (atstype_ulint x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_ulint]
+//
+ATSinline()
+atstype_ullint
+atspre_g0uint_succ_ullint
+  (atstype_ullint x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_pred_ullint
+  (atstype_ullint x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_half_ullint
+  (atstype_ullint x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_add_ullint
+  (atstype_ullint x1, atstype_ullint x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_sub_ullint
+  (atstype_ullint x1, atstype_ullint x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_mul_ullint
+  (atstype_ullint x1, atstype_ullint x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_div_ullint
+  (atstype_ullint x1, atstype_ullint x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_mod_ullint
+  (atstype_ullint x1, atstype_ullint x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_lsl_ullint
+  (atstype_ullint x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_lsr_ullint
+  (atstype_ullint x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_lnot_ullint
+  (atstype_ullint x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_lor_ullint
+  (atstype_ullint x, atstype_ullint y) { return (x | y) ; }
+// end of [atspre_g0uint_ullint_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_land_ullint
+  (atstype_ullint x, atstype_ullint y) { return (x & y) ; }
+// end of [atspre_g0uint_ullint_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_lxor_ullint
+  (atstype_ullint x, atstype_ullint y) { return (x ^ y) ; }
+// end of [atspre_g0uint_ullint_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_ullint
+(
+  atstype_ullint x1, atstype_ullint x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_ullint
+(
+  atstype_ullint x1, atstype_ullint x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_ullint
+(
+  atstype_ullint x1, atstype_ullint x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_ullint
+(
+  atstype_ullint x1, atstype_ullint x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_ullint
+(
+  atstype_ullint x1, atstype_ullint x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_ullint
+(
+  atstype_ullint x1, atstype_ullint x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_ullint]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_ullint
+(
+  atstype_ullint x1, atstype_ullint x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_max_ullint
+  (atstype_ullint x1, atstype_ullint x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_ullint]
+ATSinline()
+atstype_ullint
+atspre_g0uint_min_ullint
+  (atstype_ullint x1, atstype_ullint x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_ullint (atstype_ullint x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_ullint (atstype_ullint x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_ullint (atstype_ullint x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_ullint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_ullint (atstype_ullint x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_ullint]
+//
+/* ****** ****** */
+
+#define atspre_g1uint_succ_uint atspre_g0uint_succ_uint
+#define atspre_g1uint_pred_uint atspre_g0uint_pred_uint
+#define atspre_g1uint_half_uint atspre_g0uint_half_uint
+#define atspre_g1uint_add_uint atspre_g0uint_add_uint
+#define atspre_g1uint_sub_uint atspre_g0uint_sub_uint
+#define atspre_g1uint_mul_uint atspre_g0uint_mul_uint
+#define atspre_g1uint_div_uint atspre_g0uint_div_uint
+#define atspre_g1uint_mod_uint atspre_g0uint_mod_uint
+#define atspre_g1uint_isgtz_uint atspre_g0uint_isgtz_uint
+#define atspre_g1uint_iseqz_uint atspre_g0uint_iseqz_uint
+#define atspre_g1uint_isneqz_uint atspre_g0uint_isneqz_uint
+#define atspre_g1uint_lt_uint atspre_g0uint_lt_uint
+#define atspre_g1uint_lte_uint atspre_g0uint_lte_uint
+#define atspre_g1uint_gt_uint atspre_g0uint_gt_uint
+#define atspre_g1uint_gte_uint atspre_g0uint_gte_uint
+#define atspre_g1uint_eq_uint atspre_g0uint_eq_uint
+#define atspre_g1uint_neq_uint atspre_g0uint_neq_uint
+#define atspre_g1uint_compare_uint atspre_g0uint_compare_uint
+#define atspre_g1uint_max_uint atspre_g0uint_max_uint
+#define atspre_g1uint_min_uint atspre_g0uint_min_uint
+
+/* ****** ****** */
+
+#define atspre_g1uint_succ_ulint atspre_g0uint_succ_ulint
+#define atspre_g1uint_pred_ulint atspre_g0uint_pred_ulint
+#define atspre_g1uint_half_ulint atspre_g0uint_half_ulint
+#define atspre_g1uint_add_ulint atspre_g0uint_add_ulint
+#define atspre_g1uint_sub_ulint atspre_g0uint_sub_ulint
+#define atspre_g1uint_mul_ulint atspre_g0uint_mul_ulint
+#define atspre_g1uint_div_ulint atspre_g0uint_div_ulint
+#define atspre_g1uint_mod_ulint atspre_g0uint_mod_ulint
+#define atspre_g1uint_isgtz_ulint atspre_g0uint_isgtz_ulint
+#define atspre_g1uint_iseqz_ulint atspre_g0uint_iseqz_ulint
+#define atspre_g1uint_isneqz_ulint atspre_g0uint_isneqz_ulint
+#define atspre_g1uint_lt_ulint atspre_g0uint_lt_ulint
+#define atspre_g1uint_lte_ulint atspre_g0uint_lte_ulint
+#define atspre_g1uint_gt_ulint atspre_g0uint_gt_ulint
+#define atspre_g1uint_gte_ulint atspre_g0uint_gte_ulint
+#define atspre_g1uint_eq_ulint atspre_g0uint_eq_ulint
+#define atspre_g1uint_neq_ulint atspre_g0uint_neq_ulint
+#define atspre_g1uint_compare_ulint atspre_g0uint_compare_ulint
+#define atspre_g1uint_max_ulint atspre_g0uint_max_ulint
+#define atspre_g1uint_min_ulint atspre_g0uint_min_ulint
+
+/* ****** ****** */
+
+#define atspre_g1uint_succ_ullint atspre_g0uint_succ_ullint
+#define atspre_g1uint_pred_ullint atspre_g0uint_pred_ullint
+#define atspre_g1uint_half_ullint atspre_g0uint_half_ullint
+#define atspre_g1uint_add_ullint atspre_g0uint_add_ullint
+#define atspre_g1uint_sub_ullint atspre_g0uint_sub_ullint
+#define atspre_g1uint_mul_ullint atspre_g0uint_mul_ullint
+#define atspre_g1uint_div_ullint atspre_g0uint_div_ullint
+#define atspre_g1uint_mod_ullint atspre_g0uint_mod_ullint
+#define atspre_g1uint_isgtz_ullint atspre_g0uint_isgtz_ullint
+#define atspre_g1uint_iseqz_ullint atspre_g0uint_iseqz_ullint
+#define atspre_g1uint_isneqz_ullint atspre_g0uint_isneqz_ullint
+#define atspre_g1uint_lt_ullint atspre_g0uint_lt_ullint
+#define atspre_g1uint_lte_ullint atspre_g0uint_lte_ullint
+#define atspre_g1uint_gt_ullint atspre_g0uint_gt_ullint
+#define atspre_g1uint_gte_ullint atspre_g0uint_gte_ullint
+#define atspre_g1uint_eq_ullint atspre_g0uint_eq_ullint
+#define atspre_g1uint_neq_ullint atspre_g0uint_neq_ullint
+#define atspre_g1uint_compare_ullint atspre_g0uint_compare_ullint
+#define atspre_g1uint_max_ullint atspre_g0uint_max_ullint
+#define atspre_g1uint_min_ullint atspre_g0uint_min_ullint
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_INTEGER
+
+/* ****** ****** */
+
+/* end of [integer.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_fixed.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_fixed.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_fixed.cats
@@ -0,0 +1,1425 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/integer_fixed.atxt
+** Time of generation: Thu Mar 22 01:15:16 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_INTEGER_FIXED
+#define ATSLIB_PRELUDE_CATS_INTEGER_FIXED
+
+/* ****** ****** */
+
+#include <stdint.h>
+
+/* ****** ****** */
+
+typedef int8_t atstype_int8 ;
+typedef int16_t atstype_int16 ;
+typedef int32_t atstype_int32 ;
+typedef int64_t atstype_int64 ;
+
+typedef uint8_t atstype_uint8 ;
+typedef uint16_t atstype_uint16 ;
+typedef uint32_t atstype_uint32 ;
+typedef uint64_t atstype_uint64 ;
+
+/* ****** ****** */
+
+#define \
+atspre_g0int2int_int8_int(x) ((atstype_int)(x))
+#define \
+atspre_g0int2int_int16_int(x) ((atstype_int)(x))
+#define \
+atspre_g0int2int_int32_int(x) ((atstype_int)(x))
+#define \
+atspre_g0int2int_int64_int(x) ((atstype_int)(x))
+
+/* ****** ****** */
+//
+ATSinline()
+atstype_int8
+atspre_g0int_neg_int8
+  (atstype_int8 x) { return (-x) ; }
+// end of [atspre_g0int_neg_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_abs_int8
+  (atstype_int8 x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_succ_int8
+  (atstype_int8 x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_pred_int8
+  (atstype_int8 x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_half_int8
+  (atstype_int8 x) { return (x / 2) ; }
+// end of [atspre_g0int_half_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_add_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_sub_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_mul_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_div_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_mod_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_nmod_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_asl_int8
+  (atstype_int8 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_asr_int8
+  (atstype_int8 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_int8
+(
+  atstype_int8 x1, atstype_int8 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_int8
+(
+  atstype_int8 x1, atstype_int8 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_int8
+(
+  atstype_int8 x1, atstype_int8 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_int8
+(
+  atstype_int8 x1, atstype_int8 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_int8
+(
+  atstype_int8 x1, atstype_int8 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_int8
+(
+  atstype_int8 x1, atstype_int8 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_int8]
+ATSinline()
+atstype_int
+atspre_g0int_compare_int8
+(
+  atstype_int8 x1, atstype_int8 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_max_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_int8]
+ATSinline()
+atstype_int8
+atspre_g0int_min_int8
+  (atstype_int8 x1, atstype_int8 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_int8 (atstype_int8 x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_int8 (atstype_int8 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_int8 (atstype_int8 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_int8 (atstype_int8 x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_int8 (atstype_int8 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_int8]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_int8 (atstype_int8 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_int8]
+ATSinline()
+atstype_int16
+atspre_g0int_neg_int16
+  (atstype_int16 x) { return (-x) ; }
+// end of [atspre_g0int_neg_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_abs_int16
+  (atstype_int16 x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_succ_int16
+  (atstype_int16 x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_pred_int16
+  (atstype_int16 x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_half_int16
+  (atstype_int16 x) { return (x / 2) ; }
+// end of [atspre_g0int_half_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_add_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_sub_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_mul_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_div_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_mod_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_nmod_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_asl_int16
+  (atstype_int16 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_asr_int16
+  (atstype_int16 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_int16
+(
+  atstype_int16 x1, atstype_int16 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_int16
+(
+  atstype_int16 x1, atstype_int16 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_int16
+(
+  atstype_int16 x1, atstype_int16 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_int16
+(
+  atstype_int16 x1, atstype_int16 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_int16
+(
+  atstype_int16 x1, atstype_int16 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_int16
+(
+  atstype_int16 x1, atstype_int16 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_int16]
+ATSinline()
+atstype_int
+atspre_g0int_compare_int16
+(
+  atstype_int16 x1, atstype_int16 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_max_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_int16]
+ATSinline()
+atstype_int16
+atspre_g0int_min_int16
+  (atstype_int16 x1, atstype_int16 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_int16 (atstype_int16 x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_int16 (atstype_int16 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_int16 (atstype_int16 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_int16 (atstype_int16 x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_int16 (atstype_int16 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_int16]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_int16 (atstype_int16 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_int16]
+ATSinline()
+atstype_int32
+atspre_g0int_neg_int32
+  (atstype_int32 x) { return (-x) ; }
+// end of [atspre_g0int_neg_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_abs_int32
+  (atstype_int32 x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_succ_int32
+  (atstype_int32 x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_pred_int32
+  (atstype_int32 x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_half_int32
+  (atstype_int32 x) { return (x / 2) ; }
+// end of [atspre_g0int_half_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_add_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_sub_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_mul_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_div_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_mod_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_nmod_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_asl_int32
+  (atstype_int32 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_asr_int32
+  (atstype_int32 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_int32
+(
+  atstype_int32 x1, atstype_int32 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_int32
+(
+  atstype_int32 x1, atstype_int32 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_int32
+(
+  atstype_int32 x1, atstype_int32 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_int32
+(
+  atstype_int32 x1, atstype_int32 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_int32
+(
+  atstype_int32 x1, atstype_int32 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_int32
+(
+  atstype_int32 x1, atstype_int32 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_int32]
+ATSinline()
+atstype_int
+atspre_g0int_compare_int32
+(
+  atstype_int32 x1, atstype_int32 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_max_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_int32]
+ATSinline()
+atstype_int32
+atspre_g0int_min_int32
+  (atstype_int32 x1, atstype_int32 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_int32 (atstype_int32 x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_int32 (atstype_int32 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_int32 (atstype_int32 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_int32 (atstype_int32 x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_int32 (atstype_int32 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_int32]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_int32 (atstype_int32 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_int32]
+ATSinline()
+atstype_int64
+atspre_g0int_neg_int64
+  (atstype_int64 x) { return (-x) ; }
+// end of [atspre_g0int_neg_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_abs_int64
+  (atstype_int64 x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_succ_int64
+  (atstype_int64 x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_pred_int64
+  (atstype_int64 x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_half_int64
+  (atstype_int64 x) { return (x / 2) ; }
+// end of [atspre_g0int_half_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_add_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_sub_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_mul_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_div_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_mod_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_nmod_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_asl_int64
+  (atstype_int64 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_asr_int64
+  (atstype_int64 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_int64
+(
+  atstype_int64 x1, atstype_int64 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_int64
+(
+  atstype_int64 x1, atstype_int64 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_int64
+(
+  atstype_int64 x1, atstype_int64 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_int64
+(
+  atstype_int64 x1, atstype_int64 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_int64
+(
+  atstype_int64 x1, atstype_int64 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_int64
+(
+  atstype_int64 x1, atstype_int64 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_int64]
+ATSinline()
+atstype_int
+atspre_g0int_compare_int64
+(
+  atstype_int64 x1, atstype_int64 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_max_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_int64]
+ATSinline()
+atstype_int64
+atspre_g0int_min_int64
+  (atstype_int64 x1, atstype_int64 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_int64 (atstype_int64 x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_int64 (atstype_int64 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_int64 (atstype_int64 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_int64 (atstype_int64 x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_int64 (atstype_int64 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_int64]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_int64 (atstype_int64 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_int64]
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2uint_int8_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g0int2uint_int16_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g0int2uint_int32_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g0int2uint_int64_uint(x) ((atstype_uint)(x))
+//
+#define \
+atspre_g0uint2int_uint8_int(x) ((atstype_int)(x))
+#define \
+atspre_g0uint2int_uint16_int(x) ((atstype_int)(x))
+#define \
+atspre_g0uint2int_uint32_int(x) ((atstype_int)(x))
+#define \
+atspre_g0uint2int_uint64_int(x) ((atstype_int)(x))
+//
+#define \
+atspre_g0uint2uint_uint8_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g0uint2uint_uint16_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g0uint2uint_uint32_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g0uint2uint_uint64_uint(x) ((atstype_uint)(x))
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_uint8
+atspre_g0uint_succ_uint8
+  (atstype_uint8 x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_pred_uint8
+  (atstype_uint8 x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_half_uint8
+  (atstype_uint8 x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_add_uint8
+  (atstype_uint8 x1, atstype_uint8 x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_sub_uint8
+  (atstype_uint8 x1, atstype_uint8 x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_mul_uint8
+  (atstype_uint8 x1, atstype_uint8 x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_div_uint8
+  (atstype_uint8 x1, atstype_uint8 x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_mod_uint8
+  (atstype_uint8 x1, atstype_uint8 x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_lsl_uint8
+  (atstype_uint8 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_lsr_uint8
+  (atstype_uint8 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_lnot_uint8
+  (atstype_uint8 x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_lor_uint8
+  (atstype_uint8 x, atstype_uint8 y) { return (x | y) ; }
+// end of [atspre_g0uint_uint8_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_land_uint8
+  (atstype_uint8 x, atstype_uint8 y) { return (x & y) ; }
+// end of [atspre_g0uint_uint8_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_lxor_uint8
+  (atstype_uint8 x, atstype_uint8 y) { return (x ^ y) ; }
+// end of [atspre_g0uint_uint8_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_uint8
+(
+  atstype_uint8 x1, atstype_uint8 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_uint8
+(
+  atstype_uint8 x1, atstype_uint8 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_uint8
+(
+  atstype_uint8 x1, atstype_uint8 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_uint8
+(
+  atstype_uint8 x1, atstype_uint8 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_uint8
+(
+  atstype_uint8 x1, atstype_uint8 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_uint8
+(
+  atstype_uint8 x1, atstype_uint8 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_uint8]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_uint8
+(
+  atstype_uint8 x1, atstype_uint8 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_max_uint8
+  (atstype_uint8 x1, atstype_uint8 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_uint8]
+ATSinline()
+atstype_uint8
+atspre_g0uint_min_uint8
+  (atstype_uint8 x1, atstype_uint8 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_uint8 (atstype_uint8 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_uint8 (atstype_uint8 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_uint8 (atstype_uint8 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_uint8]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_uint8 (atstype_uint8 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_uint8]
+ATSinline()
+atstype_uint16
+atspre_g0uint_succ_uint16
+  (atstype_uint16 x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_pred_uint16
+  (atstype_uint16 x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_half_uint16
+  (atstype_uint16 x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_add_uint16
+  (atstype_uint16 x1, atstype_uint16 x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_sub_uint16
+  (atstype_uint16 x1, atstype_uint16 x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_mul_uint16
+  (atstype_uint16 x1, atstype_uint16 x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_div_uint16
+  (atstype_uint16 x1, atstype_uint16 x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_mod_uint16
+  (atstype_uint16 x1, atstype_uint16 x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_lsl_uint16
+  (atstype_uint16 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_lsr_uint16
+  (atstype_uint16 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_lnot_uint16
+  (atstype_uint16 x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_lor_uint16
+  (atstype_uint16 x, atstype_uint16 y) { return (x | y) ; }
+// end of [atspre_g0uint_uint16_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_land_uint16
+  (atstype_uint16 x, atstype_uint16 y) { return (x & y) ; }
+// end of [atspre_g0uint_uint16_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_lxor_uint16
+  (atstype_uint16 x, atstype_uint16 y) { return (x ^ y) ; }
+// end of [atspre_g0uint_uint16_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_uint16
+(
+  atstype_uint16 x1, atstype_uint16 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_uint16
+(
+  atstype_uint16 x1, atstype_uint16 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_uint16
+(
+  atstype_uint16 x1, atstype_uint16 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_uint16
+(
+  atstype_uint16 x1, atstype_uint16 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_uint16
+(
+  atstype_uint16 x1, atstype_uint16 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_uint16
+(
+  atstype_uint16 x1, atstype_uint16 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_uint16]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_uint16
+(
+  atstype_uint16 x1, atstype_uint16 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_max_uint16
+  (atstype_uint16 x1, atstype_uint16 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_uint16]
+ATSinline()
+atstype_uint16
+atspre_g0uint_min_uint16
+  (atstype_uint16 x1, atstype_uint16 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_uint16 (atstype_uint16 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_uint16 (atstype_uint16 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_uint16 (atstype_uint16 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_uint16]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_uint16 (atstype_uint16 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_uint16]
+ATSinline()
+atstype_uint32
+atspre_g0uint_succ_uint32
+  (atstype_uint32 x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_pred_uint32
+  (atstype_uint32 x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_half_uint32
+  (atstype_uint32 x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_add_uint32
+  (atstype_uint32 x1, atstype_uint32 x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_sub_uint32
+  (atstype_uint32 x1, atstype_uint32 x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_mul_uint32
+  (atstype_uint32 x1, atstype_uint32 x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_div_uint32
+  (atstype_uint32 x1, atstype_uint32 x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_mod_uint32
+  (atstype_uint32 x1, atstype_uint32 x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_lsl_uint32
+  (atstype_uint32 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_lsr_uint32
+  (atstype_uint32 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_lnot_uint32
+  (atstype_uint32 x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_lor_uint32
+  (atstype_uint32 x, atstype_uint32 y) { return (x | y) ; }
+// end of [atspre_g0uint_uint32_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_land_uint32
+  (atstype_uint32 x, atstype_uint32 y) { return (x & y) ; }
+// end of [atspre_g0uint_uint32_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_lxor_uint32
+  (atstype_uint32 x, atstype_uint32 y) { return (x ^ y) ; }
+// end of [atspre_g0uint_uint32_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_uint32
+(
+  atstype_uint32 x1, atstype_uint32 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_uint32
+(
+  atstype_uint32 x1, atstype_uint32 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_uint32
+(
+  atstype_uint32 x1, atstype_uint32 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_uint32
+(
+  atstype_uint32 x1, atstype_uint32 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_uint32
+(
+  atstype_uint32 x1, atstype_uint32 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_uint32
+(
+  atstype_uint32 x1, atstype_uint32 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_uint32]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_uint32
+(
+  atstype_uint32 x1, atstype_uint32 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_max_uint32
+  (atstype_uint32 x1, atstype_uint32 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_uint32]
+ATSinline()
+atstype_uint32
+atspre_g0uint_min_uint32
+  (atstype_uint32 x1, atstype_uint32 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_uint32 (atstype_uint32 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_uint32 (atstype_uint32 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_uint32 (atstype_uint32 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_uint32]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_uint32 (atstype_uint32 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_uint32]
+ATSinline()
+atstype_uint64
+atspre_g0uint_succ_uint64
+  (atstype_uint64 x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_pred_uint64
+  (atstype_uint64 x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_half_uint64
+  (atstype_uint64 x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_add_uint64
+  (atstype_uint64 x1, atstype_uint64 x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_sub_uint64
+  (atstype_uint64 x1, atstype_uint64 x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_mul_uint64
+  (atstype_uint64 x1, atstype_uint64 x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_div_uint64
+  (atstype_uint64 x1, atstype_uint64 x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_mod_uint64
+  (atstype_uint64 x1, atstype_uint64 x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_lsl_uint64
+  (atstype_uint64 x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_lsr_uint64
+  (atstype_uint64 x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_lnot_uint64
+  (atstype_uint64 x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_lor_uint64
+  (atstype_uint64 x, atstype_uint64 y) { return (x | y) ; }
+// end of [atspre_g0uint_uint64_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_land_uint64
+  (atstype_uint64 x, atstype_uint64 y) { return (x & y) ; }
+// end of [atspre_g0uint_uint64_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_lxor_uint64
+  (atstype_uint64 x, atstype_uint64 y) { return (x ^ y) ; }
+// end of [atspre_g0uint_uint64_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_uint64
+(
+  atstype_uint64 x1, atstype_uint64 x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_uint64
+(
+  atstype_uint64 x1, atstype_uint64 x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_uint64
+(
+  atstype_uint64 x1, atstype_uint64 x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_uint64
+(
+  atstype_uint64 x1, atstype_uint64 x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_uint64
+(
+  atstype_uint64 x1, atstype_uint64 x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_uint64
+(
+  atstype_uint64 x1, atstype_uint64 x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_uint64]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_uint64
+(
+  atstype_uint64 x1, atstype_uint64 x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_max_uint64
+  (atstype_uint64 x1, atstype_uint64 x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_uint64]
+ATSinline()
+atstype_uint64
+atspre_g0uint_min_uint64
+  (atstype_uint64 x1, atstype_uint64 x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_uint64 (atstype_uint64 x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_uint64 (atstype_uint64 x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_uint64 (atstype_uint64 x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_uint64]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_uint64 (atstype_uint64 x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_uint64]
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_INTEGER_FIXED
+
+/* ****** ****** */
+
+/* end of [integer_fixed.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_long.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_long.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_long.cats
@@ -0,0 +1,124 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/integer_long.atxt
+** Time of generation: Thu Mar 22 01:15:13 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_INTEGER_LONG
+#define ATSLIB_PRELUDE_CATS_INTEGER_LONG
+
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_int_lint(x) ((atstype_lint)(x))
+#define \
+atspre_g1int2int_int_lint(x) atspre_g0int2int_int_lint(x)
+//
+#define \
+atspre_g0int2int_int_llint(x) ((atstype_llint)(x))
+#define \
+atspre_g1int2int_int_llint(x) atspre_g0int2int_int_llint(x)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_lint_int(x) ((atstype_int)(x))
+#define \
+atspre_g1int2int_lint_int(x) atspre_g0int2int_lint_int(x)
+//
+#define \
+atspre_g0int2int_lint_lint(x) ((atstype_lint)(x))
+#define \
+atspre_g1int2int_lint_lint(x) atspre_g0int2int_lint_lint(x)
+//
+#define \
+atspre_g0int2int_lint_llint(x) ((atstype_llint)(x))
+#define \
+atspre_g1int2int_lint_llint(x) atspre_g0int2int_lint_llint(x)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2uint_int_ulint(x) ((atstype_ulint)(x))
+#define \
+atspre_g1int2uint_int_ulint(x) atspre_g0int2uint_int_ulint(x)
+//
+#define \
+atspre_g0int2uint_int_ullint(x) ((atstype_ullint)(x))
+#define \
+atspre_g1int2uint_int_ullint(x) atspre_g0int2uint_int_ullint(x)
+//
+#define \
+atspre_g0int2uint_lint_ulint(x) ((atstype_ulint)(x))
+#define \
+atspre_g1int2uint_lint_ulint(x) atspre_g0int2uint_lint_ulint(x)
+//
+#define \
+atspre_g0int2uint_lint_ullint(x) ((atstype_ullint)(x))
+#define \
+atspre_g1int2uint_lint_ullint(x) atspre_g0int2uint_lint_ullint(x)
+//
+#define \
+atspre_g0int2uint_llint_ullint(x) ((atstype_ullint)(x))
+#define \
+atspre_g1int2uint_llint_ullint(x) atspre_g0int2uint_llint_ullint(x)
+//
+/* ****** ****** */
+
+#define atspre_g0uint2int_uint_lint(x) ((atstype_lint)(x))
+#define atspre_g0uint2int_uint_llint(x) ((atstype_llint)(x))
+#define atspre_g1uint2int_uint_int atspre_g0uint2int_uint_int
+#define atspre_g1uint2int_uint_lint atspre_g0uint2int_uint_lint
+#define atspre_g1uint2int_uint_llint atspre_g0uint2int_uint_llint
+#define atspre_g0uint2uint_uint_ulint(x) ((atstype_ulint)(x))
+#define atspre_g0uint2uint_uint_ullint(x) ((atstype_ullint)(x))
+#define atspre_g1uint2uint_uint_ulint atspre_g0uint2uint_uint_ulint
+#define atspre_g1uint2uint_uint_ullint atspre_g0uint2uint_uint_ullint
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_INTEGER_LONG
+
+/* ****** ****** */
+
+/* end of [integer_long.cats] */
+
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_ptr.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_ptr.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_ptr.cats
@@ -0,0 +1,475 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/integer_ptr.atxt
+** Time of generation: Thu Mar 22 01:15:16 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_INTEGER_PTR
+#define ATSLIB_PRELUDE_CATS_INTEGER_PTR
+
+/* ****** ****** */
+
+#include <stdint.h>
+
+/* ****** ****** */
+
+typedef intptr_t atstype_intptr ;
+typedef uintptr_t atstype_uintptr ;
+
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_int_intptr(x) ((atstype_intptr)(x))
+#define \
+atspre_g0int2int_lint_intptr(x) ((atstype_intptr)(x))
+//
+#define \
+atspre_g0int2uint_int_uintptr(x) ((atstype_uintptr)(x))
+//
+#define \
+atspre_g0uint2uint_uint_uintptr(x) ((atstype_uintptr)(x))
+#define \
+atspre_g0uint2uint_ulint_uintptr(x) ((atstype_uintptr)(x))
+//
+/* ****** ****** */
+//
+#define \
+atspre_g1int2int_int_intptr atspre_g0int2int_int_intptr
+#define \
+atspre_g1int2int_lint_intptr atspre_g0int2int_lint_intptr
+//
+#define \
+atspre_g1int2uint_int_uintptr atspre_g0int2uint_int_uintptr
+//
+#define \
+atspre_g1uint2uint_uint_uintptr atspre_g0uint2uint_uint_uintptr
+#define \
+atspre_g1uint2uint_ulint_uintptr atspre_g0uint2uint_ulint_uintptr
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_intptr
+atspre_g0int_neg_intptr
+  (atstype_intptr x) { return (-x) ; }
+// end of [atspre_g0int_neg_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_abs_intptr
+  (atstype_intptr x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_succ_intptr
+  (atstype_intptr x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_pred_intptr
+  (atstype_intptr x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_half_intptr
+  (atstype_intptr x) { return (x / 2) ; }
+// end of [atspre_g0int_half_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_add_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_sub_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_mul_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_div_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_mod_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_nmod_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_asl_intptr
+  (atstype_intptr x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_asr_intptr
+  (atstype_intptr x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_intptr
+(
+  atstype_intptr x1, atstype_intptr x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_intptr
+(
+  atstype_intptr x1, atstype_intptr x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_intptr
+(
+  atstype_intptr x1, atstype_intptr x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_intptr
+(
+  atstype_intptr x1, atstype_intptr x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_intptr
+(
+  atstype_intptr x1, atstype_intptr x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_intptr
+(
+  atstype_intptr x1, atstype_intptr x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_intptr]
+ATSinline()
+atstype_int
+atspre_g0int_compare_intptr
+(
+  atstype_intptr x1, atstype_intptr x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_max_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_intptr]
+ATSinline()
+atstype_intptr
+atspre_g0int_min_intptr
+  (atstype_intptr x1, atstype_intptr x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_intptr (atstype_intptr x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_intptr (atstype_intptr x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_intptr (atstype_intptr x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_intptr (atstype_intptr x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_intptr (atstype_intptr x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_intptr]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_intptr (atstype_intptr x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_intptr]
+//
+#define atspre_g1int_abs_intptr atspre_g0int_abs_intptr
+#define atspre_g1int_neg_intptr atspre_g0int_neg_intptr
+#define atspre_g1int_succ_intptr atspre_g0int_succ_intptr
+#define atspre_g1int_pred_intptr atspre_g0int_pred_intptr
+#define atspre_g1int_half_intptr atspre_g0int_half_intptr
+#define atspre_g1int_add_intptr atspre_g0int_add_intptr
+#define atspre_g1int_sub_intptr atspre_g0int_sub_intptr
+#define atspre_g1int_mul_intptr atspre_g0int_mul_intptr
+#define atspre_g1int_div_intptr atspre_g0int_div_intptr
+#define atspre_g1int_nmod_intptr atspre_g0int_nmod_intptr
+#define atspre_g1int_lt_intptr atspre_g0int_lt_intptr
+#define atspre_g1int_lte_intptr atspre_g0int_lte_intptr
+#define atspre_g1int_gt_intptr atspre_g0int_gt_intptr
+#define atspre_g1int_gte_intptr atspre_g0int_gte_intptr
+#define atspre_g1int_eq_intptr atspre_g0int_eq_intptr
+#define atspre_g1int_neq_intptr atspre_g0int_neq_intptr
+#define atspre_g1int_compare_intptr atspre_g0int_compare_intptr
+#define atspre_g1int_max_intptr atspre_g0int_max_intptr
+#define atspre_g1int_min_intptr atspre_g0int_min_intptr
+#define atspre_g1int_isltz_intptr atspre_g0int_isltz_intptr
+#define atspre_g1int_isltez_intptr atspre_g0int_isltez_intptr
+#define atspre_g1int_isgtz_intptr atspre_g0int_isgtz_intptr
+#define atspre_g1int_isgtez_intptr atspre_g0int_isgtez_intptr
+#define atspre_g1int_iseqz_intptr atspre_g0int_iseqz_intptr
+#define atspre_g1int_isneqz_intptr atspre_g0int_isneqz_intptr
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_uintptr
+atspre_g0uint_succ_uintptr
+  (atstype_uintptr x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_pred_uintptr
+  (atstype_uintptr x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_half_uintptr
+  (atstype_uintptr x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_add_uintptr
+  (atstype_uintptr x1, atstype_uintptr x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_sub_uintptr
+  (atstype_uintptr x1, atstype_uintptr x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_mul_uintptr
+  (atstype_uintptr x1, atstype_uintptr x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_div_uintptr
+  (atstype_uintptr x1, atstype_uintptr x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_mod_uintptr
+  (atstype_uintptr x1, atstype_uintptr x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_lsl_uintptr
+  (atstype_uintptr x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_lsr_uintptr
+  (atstype_uintptr x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_lnot_uintptr
+  (atstype_uintptr x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_lor_uintptr
+  (atstype_uintptr x, atstype_uintptr y) { return (x | y) ; }
+// end of [atspre_g0uint_uintptr_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_land_uintptr
+  (atstype_uintptr x, atstype_uintptr y) { return (x & y) ; }
+// end of [atspre_g0uint_uintptr_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_lxor_uintptr
+  (atstype_uintptr x, atstype_uintptr y) { return (x ^ y) ; }
+// end of [atspre_g0uint_uintptr_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_uintptr
+(
+  atstype_uintptr x1, atstype_uintptr x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_uintptr
+(
+  atstype_uintptr x1, atstype_uintptr x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_uintptr
+(
+  atstype_uintptr x1, atstype_uintptr x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_uintptr
+(
+  atstype_uintptr x1, atstype_uintptr x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_uintptr
+(
+  atstype_uintptr x1, atstype_uintptr x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_uintptr
+(
+  atstype_uintptr x1, atstype_uintptr x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_uintptr]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_uintptr
+(
+  atstype_uintptr x1, atstype_uintptr x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_max_uintptr
+  (atstype_uintptr x1, atstype_uintptr x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_uintptr]
+ATSinline()
+atstype_uintptr
+atspre_g0uint_min_uintptr
+  (atstype_uintptr x1, atstype_uintptr x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_uintptr (atstype_uintptr x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_uintptr (atstype_uintptr x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_uintptr (atstype_uintptr x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_uintptr]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_uintptr (atstype_uintptr x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_uintptr]
+//
+#define atspre_g1uint_succ_uintptr atspre_g0uint_succ_uintptr
+#define atspre_g1uint_pred_uintptr atspre_g0uint_pred_uintptr
+#define atspre_g1uint_half_uintptr atspre_g0uint_half_uintptr
+#define atspre_g1uint_add_uintptr atspre_g0uint_add_uintptr
+#define atspre_g1uint_sub_uintptr atspre_g0uint_sub_uintptr
+#define atspre_g1uint_mul_uintptr atspre_g0uint_mul_uintptr
+#define atspre_g1uint_div_uintptr atspre_g0uint_div_uintptr
+#define atspre_g1uint_mod_uintptr atspre_g0uint_mod_uintptr
+#define atspre_g1uint_lt_uintptr atspre_g0uint_lt_uintptr
+#define atspre_g1uint_lte_uintptr atspre_g0uint_lte_uintptr
+#define atspre_g1uint_gt_uintptr atspre_g0uint_gt_uintptr
+#define atspre_g1uint_gte_uintptr atspre_g0uint_gte_uintptr
+#define atspre_g1uint_eq_uintptr atspre_g0uint_eq_uintptr
+#define atspre_g1uint_neq_uintptr atspre_g0uint_neq_uintptr
+#define atspre_g1uint_compare_uintptr atspre_g0uint_compare_uintptr
+#define atspre_g1uint_max_uintptr atspre_g0uint_max_uintptr
+#define atspre_g1uint_min_uintptr atspre_g0uint_min_uintptr
+#define atspre_g1uint_isltez_uintptr atspre_g0uint_isltez_uintptr
+#define atspre_g1uint_isgtz_uintptr atspre_g0uint_isgtz_uintptr
+#define atspre_g1uint_iseqz_uintptr atspre_g0uint_iseqz_uintptr
+#define atspre_g1uint_isneqz_uintptr atspre_g0uint_isneqz_uintptr
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_INTEGER_PTR
+
+/* ****** ****** */
+
+/* end of [integer_ptr.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_short.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_short.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_short.cats
@@ -0,0 +1,479 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/integer_short.atxt
+** Time of generation: Thu Mar 22 01:15:13 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_INTEGER_SHORT
+#define ATSLIB_PRELUDE_CATS_INTEGER_SHORT
+
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_int_sint(x) ((atstype_sint)(x))
+#define \
+atspre_g1int2int_int_sint(x) atspre_g0int2int_int_sint(x)
+#define \
+atspre_g0uint2int_uint_sint(x) ((atstype_sint)(x))
+#define \
+atspre_g1uint2int_uint_sint(x) atspre_g0uint2int_uint_sint(x)
+//
+#define \
+atspre_g0int2uint_int_usint(x) ((atstype_usint)(x))
+#define \
+atspre_g1int2uint_int_usint(x) atspre_g0int2uint_int_usint(x)
+#define \
+atspre_g0uint2uint_uint_usint(x) ((atstype_usint)(x))
+#define \
+atspre_g1uint2uint_uint_usint(x) atspre_g0uint2uint_uint_usint(x)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2uint_sint_usint(x) ((atstype_usint)(x))
+#define \
+atspre_g1int2uint_sint_usint(x) atspre_g0int2uint_sint_usint(x)
+#define \
+atspre_g0uint2int_usint_sint(x) ((atstype_usint)(x))
+#define \
+atspre_g1uint2int_usint_sint(x) atspre_g0uint2int_sint_usint(x)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_sint_int(x) ((atstype_int)(x))
+#define \
+atspre_g1int2int_sint_int(x) atspre_g0int2int_sint_int(x)
+//
+#define \
+atspre_g0uint2uint_usint_uint(x) ((atstype_uint)(x))
+#define \
+atspre_g1uint2uint_usint_uint(x) atspre_g0uint2uint_usint_uint(x)
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_sint
+atspre_g0int_neg_sint
+  (atstype_sint x) { return (-x) ; }
+// end of [atspre_g0int_neg_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_abs_sint
+  (atstype_sint x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_succ_sint
+  (atstype_sint x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_pred_sint
+  (atstype_sint x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_half_sint
+  (atstype_sint x) { return (x / 2) ; }
+// end of [atspre_g0int_half_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_add_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_sub_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_mul_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_div_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_mod_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_nmod_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_asl_sint
+  (atstype_sint x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_asr_sint
+  (atstype_sint x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_sint
+(
+  atstype_sint x1, atstype_sint x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_sint
+(
+  atstype_sint x1, atstype_sint x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_sint
+(
+  atstype_sint x1, atstype_sint x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_sint
+(
+  atstype_sint x1, atstype_sint x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_sint
+(
+  atstype_sint x1, atstype_sint x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_sint
+(
+  atstype_sint x1, atstype_sint x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_sint]
+ATSinline()
+atstype_int
+atspre_g0int_compare_sint
+(
+  atstype_sint x1, atstype_sint x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_max_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_sint]
+ATSinline()
+atstype_sint
+atspre_g0int_min_sint
+  (atstype_sint x1, atstype_sint x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_sint (atstype_sint x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_sint (atstype_sint x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_sint (atstype_sint x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_sint (atstype_sint x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_sint (atstype_sint x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_sint]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_sint (atstype_sint x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_sint]
+//
+#define atspre_g1int_abs_sint atspre_g0int_abs_sint
+#define atspre_g1int_neg_sint atspre_g0int_neg_sint
+#define atspre_g1int_succ_sint atspre_g0int_succ_sint
+#define atspre_g1int_pred_sint atspre_g0int_pred_sint
+#define atspre_g1int_half_sint atspre_g0int_half_sint
+#define atspre_g1int_add_sint atspre_g0int_add_sint
+#define atspre_g1int_sub_sint atspre_g0int_sub_sint
+#define atspre_g1int_mul_sint atspre_g0int_mul_sint
+#define atspre_g1int_div_sint atspre_g0int_div_sint
+#define atspre_g1int_nmod_sint atspre_g0int_nmod_sint
+#define atspre_g1int_lt_sint atspre_g0int_lt_sint
+#define atspre_g1int_lte_sint atspre_g0int_lte_sint
+#define atspre_g1int_gt_sint atspre_g0int_gt_sint
+#define atspre_g1int_gte_sint atspre_g0int_gte_sint
+#define atspre_g1int_eq_sint atspre_g0int_eq_sint
+#define atspre_g1int_neq_sint atspre_g0int_neq_sint
+#define atspre_g1int_compare_sint atspre_g0int_compare_sint
+#define atspre_g1int_max_sint atspre_g0int_max_sint
+#define atspre_g1int_min_sint atspre_g0int_min_sint
+#define atspre_g1int_isltz_sint atspre_g0int_isltz_sint
+#define atspre_g1int_isltez_sint atspre_g0int_isltez_sint
+#define atspre_g1int_isgtz_sint atspre_g0int_isgtz_sint
+#define atspre_g1int_isgtez_sint atspre_g0int_isgtez_sint
+#define atspre_g1int_iseqz_sint atspre_g0int_iseqz_sint
+#define atspre_g1int_isneqz_sint atspre_g0int_isneqz_sint
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_usint
+atspre_g0uint_succ_usint
+  (atstype_usint x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_pred_usint
+  (atstype_usint x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_half_usint
+  (atstype_usint x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_add_usint
+  (atstype_usint x1, atstype_usint x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_sub_usint
+  (atstype_usint x1, atstype_usint x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_mul_usint
+  (atstype_usint x1, atstype_usint x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_div_usint
+  (atstype_usint x1, atstype_usint x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_mod_usint
+  (atstype_usint x1, atstype_usint x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_lsl_usint
+  (atstype_usint x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_lsr_usint
+  (atstype_usint x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_lnot_usint
+  (atstype_usint x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_lor_usint
+  (atstype_usint x, atstype_usint y) { return (x | y) ; }
+// end of [atspre_g0uint_usint_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_land_usint
+  (atstype_usint x, atstype_usint y) { return (x & y) ; }
+// end of [atspre_g0uint_usint_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_lxor_usint
+  (atstype_usint x, atstype_usint y) { return (x ^ y) ; }
+// end of [atspre_g0uint_usint_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_usint
+(
+  atstype_usint x1, atstype_usint x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_usint
+(
+  atstype_usint x1, atstype_usint x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_usint
+(
+  atstype_usint x1, atstype_usint x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_usint
+(
+  atstype_usint x1, atstype_usint x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_usint
+(
+  atstype_usint x1, atstype_usint x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_usint
+(
+  atstype_usint x1, atstype_usint x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_usint]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_usint
+(
+  atstype_usint x1, atstype_usint x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_max_usint
+  (atstype_usint x1, atstype_usint x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_usint]
+ATSinline()
+atstype_usint
+atspre_g0uint_min_usint
+  (atstype_usint x1, atstype_usint x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_usint (atstype_usint x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_usint (atstype_usint x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_usint (atstype_usint x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_usint]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_usint (atstype_usint x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_usint]
+//
+#define atspre_g1uint_succ_usint atspre_g0uint_succ_usint
+#define atspre_g1uint_pred_usint atspre_g0uint_pred_usint
+#define atspre_g1uint_half_usint atspre_g0uint_half_usint
+#define atspre_g1uint_add_usint atspre_g0uint_add_usint
+#define atspre_g1uint_sub_usint atspre_g0uint_sub_usint
+#define atspre_g1uint_mul_usint atspre_g0uint_mul_usint
+#define atspre_g1uint_div_usint atspre_g0uint_div_usint
+#define atspre_g1uint_mod_usint atspre_g0uint_mod_usint
+#define atspre_g1uint_lt_usint atspre_g0uint_lt_usint
+#define atspre_g1uint_lte_usint atspre_g0uint_lte_usint
+#define atspre_g1uint_gt_usint atspre_g0uint_gt_usint
+#define atspre_g1uint_gte_usint atspre_g0uint_gte_usint
+#define atspre_g1uint_eq_usint atspre_g0uint_eq_usint
+#define atspre_g1uint_neq_usint atspre_g0uint_neq_usint
+#define atspre_g1uint_compare_usint atspre_g0uint_compare_usint
+#define atspre_g1uint_max_usint atspre_g0uint_max_usint
+#define atspre_g1uint_min_usint atspre_g0uint_min_usint
+#define atspre_g1uint_isltez_usint atspre_g0uint_isltez_usint
+#define atspre_g1uint_isgtz_usint atspre_g0uint_isgtz_usint
+#define atspre_g1uint_iseqz_usint atspre_g0uint_iseqz_usint
+#define atspre_g1uint_isneqz_usint atspre_g0uint_isneqz_usint
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_INTEGER_SHORT
+
+/* ****** ****** */
+
+/* end of [integer_short.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_size.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_size.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/integer_size.cats
@@ -0,0 +1,533 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/integer_size.atxt
+** Time of generation: Thu Mar 22 01:15:12 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_INTEGER_SIZE
+#define ATSLIB_PRELUDE_CATS_INTEGER_SIZE
+
+/* ****** ****** */
+//
+#define \
+atspre_g0int2uint_int_size(x) ((atstype_size)(x))
+#define \
+atspre_g1int2uint_int_size(x) atspre_g0int2uint_int_size(x)
+#define \
+atspre_g0uint2uint_uint_size(x) ((atstype_size)(x))
+#define \
+atspre_g1uint2uint_uint_size(x) atspre_g0uint2uint_uint_size(x)
+//
+#define \
+atspre_g0int2int_int_ssize(x) ((atstype_ssize)(x))
+#define \
+atspre_g1int2int_int_ssize(x) atspre_g0int2int_int_ssize(x)
+#define \
+atspre_g0uint2int_uint_ssize(x) ((atstype_ssize)(x))
+#define \
+atspre_g1uint2int_uint_ssize(x) atspre_g0uint2int_uint_ssize(x)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2uint_lint_size(x) ((atstype_size)(x))
+#define \
+atspre_g1int2uint_lint_size(x) atspre_g0int2uint_lint_size(x)
+#define \
+atspre_g0uint2uint_ulint_size(x) ((atstype_size)(x))
+#define \
+atspre_g1uint2uint_ulint_size(x) atspre_g0uint2uint_ulint_size(x)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_lint_ssize(ssz) ((atstype_ssize)(ssz))
+#define \
+atspre_g1int2int_lint_ssize(ssz) atspre_g0int2int_lint_ssize(ssz)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0uint2int_size_int(sz) ((atstype_int)(sz))
+#define \
+atspre_g1uint2int_size_int(sz) atspre_g0uint2int_size_int(sz)
+//
+#define \
+atspre_g0uint2uint_size_uint(sz) ((atstype_uint)(sz))
+#define \
+atspre_g1uint2uint_size_uint(sz) atspre_g0uint2uint_size_uint(sz)
+//
+#define \
+atspre_g0uint2uint_size_size(sz) ((atstype_size)(sz))
+#define \
+atspre_g1uint2uint_size_size(sz) atspre_g0uint2uint_size_size(sz)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0int2int_ssize_int(ssz) ((atstype_int)(ssz))
+#define \
+atspre_g1int2int_ssize_int(ssz) atspre_g0int2int_ssize_int(ssz)
+//
+#define \
+atspre_g0int2uint_ssize_uint(ssz) ((atstype_uint)(ssz))
+#define \
+atspre_g1int2uint_ssize_uint(ssz) atspre_g0int2uint_ssize_uint(ssz)
+//
+#define \
+atspre_g0int2int_ssize_ssize(ssz) ((atstype_ssize)(ssz))
+#define \
+atspre_g1int2int_ssize_ssize(ssz) atspre_g0int2int_ssize_ssize(ssz)
+//
+/* ****** ****** */
+//
+#define \
+atspre_g0uint2int_size_ssize(sz) ((atstype_ssize)(sz))
+#define \
+atspre_g1uint2int_size_ssize(sz) atspre_g0uint2int_size_ssize(sz)
+#define \
+atspre_g0int2uint_ssize_size(ssz) ((atstype_size)(ssz))
+#define \
+atspre_g1int2uint_ssize_size(ssz) atspre_g0int2uint_ssize_size(ssz)
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_size
+atspre_g0uint_succ_size
+  (atstype_size x) { return (x + 1) ; }
+// end of [atspre_g0uint_succ_size]
+ATSinline()
+atstype_size
+atspre_g0uint_pred_size
+  (atstype_size x) { return (x - 1) ; }
+// end of [atspre_g0uint_pred_size]
+ATSinline()
+atstype_size
+atspre_g0uint_half_size
+  (atstype_size x) { return (x >> 1) ; }
+// end of [atspre_g0uint_half_size]
+ATSinline()
+atstype_size
+atspre_g0uint_add_size
+  (atstype_size x1, atstype_size x2) { return (x1 + x2) ; }
+// end of [atspre_g0uint_add_size]
+ATSinline()
+atstype_size
+atspre_g0uint_sub_size
+  (atstype_size x1, atstype_size x2) { return (x1 - x2) ; }
+// end of [atspre_g0uint_sub_size]
+ATSinline()
+atstype_size
+atspre_g0uint_mul_size
+  (atstype_size x1, atstype_size x2) { return (x1 * x2) ; }
+// end of [atspre_g0uint_mul_size]
+ATSinline()
+atstype_size
+atspre_g0uint_div_size
+  (atstype_size x1, atstype_size x2) { return (x1 / x2) ; }
+// end of [atspre_g0uint_div_size]
+ATSinline()
+atstype_size
+atspre_g0uint_mod_size
+  (atstype_size x1, atstype_size x2) { return (x1 % x2) ; }
+// end of [atspre_g0uint_mod_size]
+ATSinline()
+atstype_size
+atspre_g0uint_lsl_size
+  (atstype_size x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0uint_lsl_size]
+ATSinline()
+atstype_size
+atspre_g0uint_lsr_size
+  (atstype_size x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0uint_lsr_size]
+ATSinline()
+atstype_size
+atspre_g0uint_lnot_size
+  (atstype_size x) { return ~(x) ; }
+// end of [atspre_g0uint_lnot_size]
+ATSinline()
+atstype_size
+atspre_g0uint_lor_size
+  (atstype_size x, atstype_size y) { return (x | y) ; }
+// end of [atspre_g0uint_size_size]
+ATSinline()
+atstype_size
+atspre_g0uint_land_size
+  (atstype_size x, atstype_size y) { return (x & y) ; }
+// end of [atspre_g0uint_size_size]
+ATSinline()
+atstype_size
+atspre_g0uint_lxor_size
+  (atstype_size x, atstype_size y) { return (x ^ y) ; }
+// end of [atspre_g0uint_size_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_lt_size
+(
+  atstype_size x1, atstype_size x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lt_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_lte_size
+(
+  atstype_size x1, atstype_size x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_lte_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_gt_size
+(
+  atstype_size x1, atstype_size x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gt_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_gte_size
+(
+  atstype_size x1, atstype_size x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_gte_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_eq_size
+(
+  atstype_size x1, atstype_size x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_eq_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_neq_size
+(
+  atstype_size x1, atstype_size x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_neq_size]
+ATSinline()
+atstype_int
+atspre_g0uint_compare_size
+(
+  atstype_size x1, atstype_size x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0uint_compare_size]
+ATSinline()
+atstype_size
+atspre_g0uint_max_size
+  (atstype_size x1, atstype_size x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_max_size]
+ATSinline()
+atstype_size
+atspre_g0uint_min_size
+  (atstype_size x1, atstype_size x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0uint_min_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_isltez_size (atstype_size x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isltez_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_isgtz_size (atstype_size x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isgtz_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_iseqz_size (atstype_size x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_iseqz_size]
+ATSinline()
+atstype_bool
+atspre_g0uint_isneqz_size (atstype_size x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0uint_isneqz_size]
+//
+#define atspre_g1uint_succ_size atspre_g0uint_succ_size
+#define atspre_g1uint_pred_size atspre_g0uint_pred_size
+#define atspre_g1uint_half_size atspre_g0uint_half_size
+#define atspre_g1uint_add_size atspre_g0uint_add_size
+#define atspre_g1uint_sub_size atspre_g0uint_sub_size
+#define atspre_g1uint_mul_size atspre_g0uint_mul_size
+#define atspre_g1uint_div_size atspre_g0uint_div_size
+#define atspre_g1uint_mod_size atspre_g0uint_mod_size
+#define atspre_g1uint_lt_size atspre_g0uint_lt_size
+#define atspre_g1uint_lte_size atspre_g0uint_lte_size
+#define atspre_g1uint_gt_size atspre_g0uint_gt_size
+#define atspre_g1uint_gte_size atspre_g0uint_gte_size
+#define atspre_g1uint_eq_size atspre_g0uint_eq_size
+#define atspre_g1uint_neq_size atspre_g0uint_neq_size
+#define atspre_g1uint_compare_size atspre_g0uint_compare_size
+#define atspre_g1uint_max_size atspre_g0uint_max_size
+#define atspre_g1uint_min_size atspre_g0uint_min_size
+#define atspre_g1uint_isltez_size atspre_g0uint_isltez_size
+#define atspre_g1uint_isgtz_size atspre_g0uint_isgtz_size
+#define atspre_g1uint_iseqz_size atspre_g0uint_iseqz_size
+#define atspre_g1uint_isneqz_size atspre_g0uint_isneqz_size
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_ssize
+atspre_g0int_neg_ssize
+  (atstype_ssize x) { return (-x) ; }
+// end of [atspre_g0int_neg_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_abs_ssize
+  (atstype_ssize x) { return (x >= 0 ? x : -x) ; }
+// end of [atspre_g0int_abs_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_succ_ssize
+  (atstype_ssize x) { return (x + 1) ; }
+// end of [atspre_g0int_succ_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_pred_ssize
+  (atstype_ssize x) { return (x - 1) ; }
+// end of [atspre_g0int_pred_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_half_ssize
+  (atstype_ssize x) { return (x / 2) ; }
+// end of [atspre_g0int_half_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_add_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 + x2) ; }
+// end of [atspre_g0int_add_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_sub_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 - x2) ; }
+// end of [atspre_g0int_sub_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_mul_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 * x2) ; }
+// end of [atspre_g0int_mul_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_div_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 / x2) ; }
+// end of [atspre_g0int_div_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_mod_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_mod_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_nmod_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 % x2) ; }
+// end of [atspre_g0int_nmod_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_asl_ssize
+  (atstype_ssize x, atstype_int n) { return (x << n) ; }
+// end of [atspre_g0int_asl_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_asr_ssize
+  (atstype_ssize x, atstype_int n) { return (x >> n) ; }
+// end of [atspre_g0int_asr_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_lt_ssize
+(
+  atstype_ssize x1, atstype_ssize x2
+) {
+  return (x1 < x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lt_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_lte_ssize
+(
+  atstype_ssize x1, atstype_ssize x2
+) {
+  return (x1 <= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_lte_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_gt_ssize
+(
+  atstype_ssize x1, atstype_ssize x2
+) {
+  return (x1 > x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gt_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_gte_ssize
+(
+  atstype_ssize x1, atstype_ssize x2
+) {
+  return (x1 >= x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_gte_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_eq_ssize
+(
+  atstype_ssize x1, atstype_ssize x2
+) {
+  return (x1 == x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_eq_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_neq_ssize
+(
+  atstype_ssize x1, atstype_ssize x2
+) {
+  return (x1 != x2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_neq_ssize]
+ATSinline()
+atstype_int
+atspre_g0int_compare_ssize
+(
+  atstype_ssize x1, atstype_ssize x2
+) {
+  if (x1 < x2) return -1 ; else if (x1 > x2) return 1 ; else return 0 ;
+} // end of [atspre_g0int_compare_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_max_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 >= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_max_ssize]
+ATSinline()
+atstype_ssize
+atspre_g0int_min_ssize
+  (atstype_ssize x1, atstype_ssize x2) { return (x1 <= x2 ? x1 : x2) ; }
+// end of [atspre_g0int_min_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_isltz_ssize (atstype_ssize x)
+{
+  return (x < 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltz_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_isltez_ssize (atstype_ssize x)
+{
+  return (x <= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isltez_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtz_ssize (atstype_ssize x)
+{
+  return (x > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtz_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_isgtez_ssize (atstype_ssize x)
+{
+  return (x >= 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isgtez_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_iseqz_ssize (atstype_ssize x)
+{
+  return (x == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_iseqz_ssize]
+ATSinline()
+atstype_bool
+atspre_g0int_isneqz_ssize (atstype_ssize x)
+{
+  return (x != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_g0int_isneqz_ssize]
+//
+#define atspre_g1int_abs_ssize atspre_g0int_abs_ssize
+#define atspre_g1int_neg_ssize atspre_g0int_neg_ssize
+#define atspre_g1int_succ_ssize atspre_g0int_succ_ssize
+#define atspre_g1int_pred_ssize atspre_g0int_pred_ssize
+#define atspre_g1int_half_ssize atspre_g0int_half_ssize
+#define atspre_g1int_add_ssize atspre_g0int_add_ssize
+#define atspre_g1int_sub_ssize atspre_g0int_sub_ssize
+#define atspre_g1int_mul_ssize atspre_g0int_mul_ssize
+#define atspre_g1int_div_ssize atspre_g0int_div_ssize
+#define atspre_g1int_nmod_ssize atspre_g0int_nmod_ssize
+#define atspre_g1int_lt_ssize atspre_g0int_lt_ssize
+#define atspre_g1int_lte_ssize atspre_g0int_lte_ssize
+#define atspre_g1int_gt_ssize atspre_g0int_gt_ssize
+#define atspre_g1int_gte_ssize atspre_g0int_gte_ssize
+#define atspre_g1int_eq_ssize atspre_g0int_eq_ssize
+#define atspre_g1int_neq_ssize atspre_g0int_neq_ssize
+#define atspre_g1int_compare_ssize atspre_g0int_compare_ssize
+#define atspre_g1int_max_ssize atspre_g0int_max_ssize
+#define atspre_g1int_min_ssize atspre_g0int_min_ssize
+#define atspre_g1int_isltz_ssize atspre_g0int_isltz_ssize
+#define atspre_g1int_isltez_ssize atspre_g0int_isltez_ssize
+#define atspre_g1int_isgtz_ssize atspre_g0int_isgtz_ssize
+#define atspre_g1int_isgtez_ssize atspre_g0int_isgtez_ssize
+#define atspre_g1int_iseqz_ssize atspre_g0int_iseqz_ssize
+#define atspre_g1int_isneqz_ssize atspre_g0int_isneqz_ssize
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_size
+atspre_g0string2uint_size
+  (atstype_string inp)
+  { return strtoul((char*)inp, NULL, 10) ; }
+//
+ATSinline()
+atstype_ssize
+atspre_g0string2int_ssize
+  (atstype_string inp) { return atol((char*)inp) ; }
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_INTEGER_SIZE
+
+/* ****** ****** */
+
+/* end of [integer_size.cats] */
+
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/list.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/list.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/list.cats
@@ -0,0 +1,55 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/list.atxt
+** Time of generation: Thu Mar 22 01:15:17 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_LIST
+#define ATSLIB_PRELUDE_CATS_LIST
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_LIST
+
+/* ****** ****** */
+
+/* end of [list.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/matrix.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/matrix.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/matrix.cats
@@ -0,0 +1,55 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/matrix.atxt
+** Time of generation: Thu Mar 22 01:15:19 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_MATRIX
+#define ATSLIB_PRELUDE_CATS_MATRIX
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_MATRIX
+
+/* ****** ****** */
+
+/* end of [matrix.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/matrixptr.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/matrixptr.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/matrixptr.cats
@@ -0,0 +1,64 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/matrixptr.atxt
+** Time of generation: Thu Mar 22 01:15:19 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_MATRIXPTR
+#define ATSLIB_PRELUDE_CATS_MATRIXPTR
+
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_matrixptr_free
+  (atstype_arrptr ptr) { ATS_MFREE (ptr) ; return ; }
+// end of [atspre_matrixptr_free]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_MATRIXPTR
+
+/* ****** ****** */
+
+/* end of [matrixptr.cats] */
+
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/memory.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/memory.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/memory.cats
@@ -0,0 +1,72 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/memory.atxt
+** Time of generation: Thu Mar 22 01:15:16 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_MEMORY
+#define ATSLIB_PRELUDE_CATS_MEMORY
+
+/* ****** ****** */
+
+#define atspre_minit_gc ATS_MINIT
+
+/* ****** ****** */
+
+#define atspre_mfree_gc ATS_MFREE
+
+/* ****** ****** */
+
+#define atspre_malloc_gc ATS_MALLOC
+
+/* ****** ****** */
+
+#define atspre_calloc_gc ATS_CALLOC
+#define atspre_realloc_gc ATS_REALLOC
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_MEMORY
+
+/* ****** ****** */
+
+/* end of [memory.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/option.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/option.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/option.cats
@@ -0,0 +1,55 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/option.atxt
+** Time of generation: Thu Mar 22 01:15:18 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: January, 2013 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_OPTION
+#define ATSLIB_PRELUDE_CATS_OPTION
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_OPTION
+
+/* ****** ****** */
+
+/* end of [option.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/pointer.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/pointer.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/pointer.cats
@@ -0,0 +1,254 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/pointer.atxt
+** Time of generation: Thu Mar 22 01:15:12 2018
+*/
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: hwxi AT cs DOT bu DOT edu *)
+(* Start time: February, 2012 *)
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_POINTER
+#define ATSLIB_PRELUDE_CATS_POINTER
+
+/* ****** ****** */
+
+#ifndef memset
+extern
+void *memset(void *bufp, int c, size_t n) ;
+#endif // #ifndef
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atspre_ptr_null () { return (void*)0 ; }
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_ptr_is_null
+  (atstype_ptr p) {
+  return (p == (void*)0) ? atsbool_true : atsbool_false ;
+} // end of [atspre_ptr_is_null]
+#define atspre_ptr0_is_null atspre_ptr_is_null
+#define atspre_ptr1_is_null atspre_ptr_is_null
+
+ATSinline()
+atstype_bool
+atspre_ptr_isnot_null
+  (atstype_ptr p) {
+  return (p != (void*)0) ? atsbool_true : atsbool_false ;
+} // end of [atspre_ptr_isnot_null]
+#define atspre_ptr0_isnot_null atspre_ptr_isnot_null
+#define atspre_ptr1_isnot_null atspre_ptr_isnot_null
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ptr
+atspre_add_ptr_bsz
+  (atstype_ptr p, atstype_size ofs) { return ((char*)p + ofs) ; }
+// end of [atspre_add_ptr_bsz]
+#define atspre_add_ptr0_bsz atspre_add_ptr_bsz
+#define atspre_add_ptr1_bsz atspre_add_ptr_bsz
+
+ATSinline()
+atstype_ptr
+atspre_sub_ptr_bsz
+  (atstype_ptr p, atstype_size ofs) { return ((char*)p - ofs) ; }
+// end of [atspre_sub_ptr_bsz]
+#define atspre_sub_ptr0_bsz atspre_sub_ptr_bsz
+#define atspre_sub_ptr1_bsz atspre_sub_ptr_bsz
+
+/* ****** ****** */
+
+ATSinline()
+atstype_ssize
+atspre_sub_ptr_ptr
+  (atstype_ptr p1, atstype_ptr p2) { return ((char*)p1 - (char*)p2) ; }
+// end of [atspre_sub_ptr_ptr]
+#define atspre_sub_ptr0_ptr0 atspre_sub_ptr_ptr
+#define atspre_sub_ptr1_ptr1 atspre_sub_ptr_ptr
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_lt_ptr_ptr
+  (atstype_ptr p1, atstype_ptr p2) {
+  return (p1 < p2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_lt_ptr_ptr]
+#define atspre_lt_ptr0_ptr0 atspre_lt_ptr_ptr
+#define atspre_lt_ptr1_ptr1 atspre_lt_ptr_ptr
+
+ATSinline()
+atstype_bool
+atspre_lte_ptr_ptr
+  (atstype_ptr p1, atstype_ptr p2) {
+  return (p1 <= p2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_lte_ptr_ptr]
+#define atspre_lte_ptr0_ptr0 atspre_lte_ptr_ptr
+#define atspre_lte_ptr1_ptr1 atspre_lte_ptr_ptr
+
+ATSinline()
+atstype_bool
+atspre_gt_ptr_ptr
+  (atstype_ptr p1, atstype_ptr p2) {
+  return (p1 > p2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_gt_ptr_ptr]
+#define atspre_gt_ptr0_ptr0 atspre_gt_ptr_ptr
+#define atspre_gt_ptr1_ptr1 atspre_gt_ptr_ptr
+
+ATSinline()
+atstype_bool
+atspre_gte_ptr_ptr
+  (atstype_ptr p1, atstype_ptr p2) {
+  return (p1 >= p2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_gte_ptr_ptr]
+#define atspre_gte_ptr0_ptr0 atspre_gte_ptr_ptr
+#define atspre_gte_ptr1_ptr1 atspre_gte_ptr_ptr
+
+ATSinline()
+atstype_bool
+atspre_eq_ptr_ptr
+  (atstype_ptr p1, atstype_ptr p2) {
+  return (p1 == p2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_eq_ptr_ptr]
+#define atspre_eq_ptr0_ptr0 atspre_eq_ptr_ptr
+#define atspre_eq_ptr1_ptr1 atspre_eq_ptr_ptr
+
+ATSinline()
+atstype_bool
+atspre_neq_ptr_ptr
+  (atstype_ptr p1, atstype_ptr p2) {
+  return (p1 != p2 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_neq_ptr_ptr]
+#define atspre_neq_ptr0_ptr0 atspre_neq_ptr_ptr
+#define atspre_neq_ptr1_ptr1 atspre_neq_ptr_ptr
+
+
+ATSinline()
+atstype_int
+atspre_compare_ptr_ptr
+(
+  atstype_ptr p1, atstype_ptr p2
+) {
+  if (p1 >= p2) {
+    if (p1 > p2) return 1 ; else return 0 ;
+  } else return (-1) ;
+} // end of [atspre_compare_ptr_ptr]
+#define atspre_compare_ptr0_ptr0 atspre_compare_ptr_ptr
+#define atspre_compare_ptr1_ptr1 atspre_compare_ptr_ptr
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_gt_ptr_intz
+  (atstype_ptr p, atstype_int _)
+{
+  return (p > 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_gt_ptr_intz]
+#define atspre_gt_ptr0_intz atspre_gt_ptr_intz
+#define atspre_gt_ptr1_intz atspre_gt_ptr_intz
+
+ATSinline()
+atstype_bool
+atspre_eq_ptr_intz
+  (atstype_ptr p, atstype_int _)
+{
+  return (p == 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_eq_ptr_intz]
+#define atspre_eq_ptr0_intz atspre_eq_ptr_intz
+#define atspre_eq_ptr1_intz atspre_eq_ptr_intz
+  
+ATSinline()
+atstype_bool
+atspre_neq_ptr_intz
+  (atstype_ptr p, atstype_int _)
+{
+  return (p != 0 ? atsbool_true : atsbool_false) ;
+} // end of [atspre_neq_ptr_intz]
+#define atspre_neq_ptr0_intz atspre_neq_ptr_intz
+#define atspre_neq_ptr1_intz atspre_neq_ptr_intz
+
+/* ****** ****** */
+//
+#define atspre_aptr_null() atsptr_null
+//
+#define atspre_aptr_is_null atspre_ptr_is_null
+#define atspre_aptr_isnot_null atspre_ptr_isnot_null
+//
+/* ****** ****** */
+//
+#define atspre_cptr_null() atsptr_null
+//
+#define atspre_cptr_is_null atspre_ptr_is_null
+#define atspre_cptr_isnot_null atspre_ptr_isnot_null
+//
+/* ****** ****** */
+
+#define atspre_gt_cptr_intz atspre_gt_ptr_intz
+#define atspre_eq_cptr_intz atspre_eq_ptr_intz
+#define atspre_neq_cptr_intz atspre_neq_ptr_intz
+
+/* ****** ****** */
+//
+#define atspre_ptr_free atspre_mfree_gc
+#define atspre_ptr_alloc_tsz atspre_malloc_gc
+//
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atspre_ptr_nullize_tsz
+(
+  atstype_ptr p, atstype_size tsz
+) {
+  memset (p, 0, tsz) ; return /*void*/ ;
+} // end of [atspre_ptr_nullize_tsz]
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_POINTER
+
+/* ****** ****** */
+
+/* end of [pointer.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/string.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/string.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/string.cats
@@ -0,0 +1,262 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: April, 2012 *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/string.atxt
+** Time of generation: Thu Mar 22 01:15:15 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_STRING
+#define ATSLIB_PRELUDE_CATS_STRING
+
+/* ****** ****** */
+//
+// [string.h]
+//
+extern
+size_t strlen (const char *str) ;
+extern
+int // (sign)
+strcmp (const char *x1, const char *x2) ;
+//
+extern
+char *strchr(const char *str1, int c2) ;
+extern
+char *strrchr(const char *str1, int c2) ;
+extern
+char *strstr(const char *str1, const char *str2) ;
+//
+extern
+size_t strspn(const char *str1, const char *acc2) ;
+extern
+size_t strcspn(const char *str1, const char *rej2) ;
+//
+#ifndef memcpy
+extern
+void *memcpy(void *dest, const void *src, size_t n) ;
+#endif // #ifndef
+//
+/* ****** ****** */
+
+#define atspre_stropt_none() atsptr_null
+
+/* ****** ****** */
+
+ATSinline()
+atstype_bool
+atspre_lt_string_string
+(
+  atstype_string x1, atstype_string x2
+) {
+  int sgn = strcmp((char*)x1, (char*)x2) ;
+  return (sgn < 0 ? atsbool_true : atsbool_false) ;
+} // [atspre_lt_string_string]
+
+ATSinline()
+atstype_bool
+atspre_lte_string_string
+(
+  atstype_string x1, atstype_string x2
+) {
+  int sgn = strcmp((char*)x1, (char*)x2) ;
+  return (sgn <= 0 ? atsbool_true : atsbool_false) ;
+} // [atspre_lte_string_string]
+
+ATSinline()
+atstype_bool
+atspre_gt_string_string
+(
+  atstype_string x1, atstype_string x2
+) {
+  int sgn = strcmp((char*)x1, (char*)x2) ;
+  return (sgn > 0 ? atsbool_true : atsbool_false) ;
+} // [atspre_gt_string_string]
+
+ATSinline()
+atstype_bool
+atspre_gte_string_string
+(
+  atstype_string x1, atstype_string x2
+) {
+  int sgn = strcmp((char*)x1, (char*)x2) ;
+  return (sgn >= 0 ? atsbool_true : atsbool_false) ;
+} // [atspre_gte_string_string]
+
+ATSinline()
+atstype_bool
+atspre_eq_string_string
+(
+  atstype_string x1, atstype_string x2
+) {
+  int sgn = strcmp((char*)x1, (char*)x2) ;
+  return (sgn == 0 ? atsbool_true : atsbool_false) ;
+} // [atspre_eq_string_string]
+
+ATSinline()
+atstype_bool
+atspre_neq_string_string
+(
+  atstype_string x1, atstype_string x2
+) {
+  int sgn = strcmp((char*)x1, (char*)x2) ;
+  return (sgn != 0 ? atsbool_true : atsbool_false) ;
+} // [atspre_neq_string_string]
+
+/* ****** ****** */
+
+#define atspre_string_equal atspre_eq_string_string
+#define atspre_string_noteq atspre_neq_string_string
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_compare_string_string
+(
+  atstype_string x1, atstype_string x2
+) {
+  return atspre_int2sgn(strcmp((char*)x1, (char*)x2)) ;
+} // [atspre_compare_string_string]
+
+/* ****** ****** */
+
+#define atspre_strcmp strcmp
+#define atspre_strlen strlen
+#define atspre_strchr strchr
+#define atspre_strrchr strrchr
+#define atspre_strstr strstr
+#define atspre_strspn strspn
+#define atspre_strcspn strcspn
+
+#define atspre_string_memcpy memcpy
+
+/* ****** ****** */
+//
+// HX-2013-09: declared in [stdio.h]
+//
+#ifndef snprintf
+extern
+int snprintf (char *str, size_t size, const char *format, ...) ;
+#endif // end of [ifndef]
+//
+/* ****** ****** */
+//
+ATSinline()
+atstype_string
+atspre_g0int2string_int
+  (atstype_int x)
+{
+  size_t n0 ;
+  char *res ;
+  size_t ntot ;
+  n0 = 4 ;
+  res = ATS_MALLOC(n0) ;
+  ntot = snprintf(res, n0, "%i", x) ;
+  if (ntot >= n0)
+  {
+    ATS_MFREE(res) ;
+    res = (char*)ATS_MALLOC(ntot+1) ;
+    ntot = snprintf(res, ntot+1, "%i", x) ;
+  }
+  return res ;
+}
+//
+ATSinline()
+atstype_string
+atspre_g0int2string_lint
+  (atstype_lint x)
+{
+  size_t n0 ;
+  char *res ;
+  size_t ntot ;
+  n0 = 4 ;
+  res = ATS_MALLOC(n0) ;
+  ntot = snprintf(res, n0, "%li", x) ;
+  if (ntot >= n0)
+  {
+    ATS_MFREE(res) ;
+    res = (char*)ATS_MALLOC(ntot+1) ;
+    ntot = snprintf(res, ntot+1, "%li", x) ;
+  }
+  return res ;
+}
+//
+ATSinline()
+atstype_string
+atspre_g0int2string_llint
+  (atstype_llint x)
+{
+  size_t n0 ;
+  char *res ;
+  size_t ntot ;
+  n0 = 8 ;
+  res = ATS_MALLOC(n0) ;
+  ntot = snprintf(res, n0, "%lli", x) ;
+  if (ntot >= n0)
+  {
+    ATS_MFREE(res) ;
+    res = (char*)ATS_MALLOC(ntot+1) ;
+    ntot = snprintf(res, ntot+1, "%lli", x) ;
+  }
+  return res ;
+}
+//
+/* ****** ****** */
+//
+#include <stdarg.h>
+//
+// HX-2013-11:
+// these are implemented in [string.dats]
+//
+extern
+atstype_string // Strptr0
+atspre_string_make_snprintf(atstype_string fmt, ...) ;
+extern
+atstype_string // Strptr0
+atspre_string_make_vsnprintf
+  (atstype_size bsz0, atstype_string fmt, va_list ap0) ;
+//
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_STRING
+
+/* ****** ****** */
+
+/* end of [string.cats] */
diff --git a/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/strptr.cats b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/strptr.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/ats-includes-0.3.10/prelude/CATS/strptr.cats
@@ -0,0 +1,94 @@
+/***********************************************************************/
+/*                                                                     */
+/*                         Applied Type System                         */
+/*                                                                     */
+/***********************************************************************/
+
+/* (*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2010-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** ATS is free software;  you can  redistribute it and/or modify it under
+** the terms of  the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
+** Free Software Foundation; either version 3, or (at  your  option)  any
+** later version.
+**
+** ATS is distributed in the hope that it will be useful, but WITHOUT ANY
+** WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
+** FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
+** for more details.
+**
+** You  should  have  received  a  copy of the GNU General Public License
+** along  with  ATS;  see the  file COPYING.  If not, please write to the
+** Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
+** 02110-1301, USA.
+*) */
+
+/* ****** ****** */
+
+/*
+(* Author: Hongwei Xi *)
+(* Authoremail: gmhwxiATgmailDOTcom *)
+(* Start time: March, 2013 *)
+*/
+
+/* ****** ****** */
+
+/*
+** Source:
+** $PATSHOME/prelude/CATS/CODEGEN/strptr.atxt
+** Time of generation: Thu Mar 22 01:15:15 2018
+*/
+
+/* ****** ****** */
+
+#ifndef ATSLIB_PRELUDE_CATS_STRPTR
+#define ATSLIB_PRELUDE_CATS_STRPTR
+
+/* ****** ****** */
+//
+// [string.h]
+//
+extern
+int // (sign)
+strcmp(const char *x1, const char *x2) ;
+
+/* ****** ****** */
+
+#define atspre_strptr_null() atsptr_null
+
+/* ****** ****** */
+
+#define atspre_strptr_free atspre_mfree_gc
+#define atspre_strnptr_free atspre_mfree_gc
+
+/* ****** ****** */
+
+ATSinline()
+atstype_int
+atspre_compare_strptr_strptr
+(
+  atstype_strptr x1, atstype_strptr x2
+) {
+  if(x1==0)
+  {
+    return (x2==0 ? 0 : -1) ;
+  } else {
+    return (x2==0 ? 1 : atspre_compare_string_string(x1, x2)) ;
+  } // end of [if]
+} // end of [atspre_compare_strptr_strptr]
+
+/* ****** ****** */
+
+#define atspre_eq_strptr_string atspre_eq_string_string 
+#define atspre_neq_strptr_string atspre_neq_string_string 
+#define atspre_compare_strptr_string atspre_compare_string_string 
+
+/* ****** ****** */
+
+#endif // ifndef ATSLIB_PRELUDE_CATS_STRPTR
+
+/* ****** ****** */
+
+/* end of [strptr.cats] */
diff --git a/.atspkg/contrib/atscntrb-hx-intinf/mydepies.hats b/.atspkg/contrib/atscntrb-hx-intinf/mydepies.hats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/atscntrb-hx-intinf/mydepies.hats
@@ -0,0 +1,25 @@
+(* ****** ****** *)
+//
+// HX-2017-01-21:
+// For handling dependencies
+//
+(* ****** ****** *)
+//
+local
+//
+#define
+LIBGMP_targetloc
+"\
+$PATSHOME/contrib\
+/atscntrb/atscntrb-hx-libgmp"
+//
+in (*in-of-local*)
+//
+#staload
+GMP = "{$LIBGMP}/SATS/gmp.sats"
+//
+end // end of [local]
+//
+(* ****** ****** *)
+
+(* end of [mydepies.hats] *)
diff --git a/.atspkg/contrib/atscntrb-hx-intinf/mylibies.hats b/.atspkg/contrib/atscntrb-hx-intinf/mylibies.hats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/atscntrb-hx-intinf/mylibies.hats
@@ -0,0 +1,26 @@
+(* ****** ****** *)
+//
+// HX-2017-01-28:
+// For downstream staloading
+//
+(* ****** ****** *)
+//
+#staload
+INTINF = "./SATS/intinf.sats"
+#staload
+INTINF_t = "./SATS/intinf_t.sats"
+#staload
+INTINF_vt = "./SATS/intinf_vt.sats"
+//
+(* ****** ****** *)
+//
+#staload
+_(*INTINF_t*) = "./DATS/intinf_t.dats"
+#staload
+_(*INTINF_vt*) = "./DATS/intinf_vt.dats"
+//
+#staload GINTINF_t = "./DATS/gintinf_t.dats"
+//
+(* ****** ****** *)
+
+(* end of [mylibies.hats] *)
diff --git a/.atspkg/contrib/atscntrb-hx-libgmp/CATS/gmp.cats b/.atspkg/contrib/atscntrb-hx-libgmp/CATS/gmp.cats
new file mode 100644
--- /dev/null
+++ b/.atspkg/contrib/atscntrb-hx-libgmp/CATS/gmp.cats
@@ -0,0 +1,331 @@
+/* ****** ****** */
+//
+// API in ATS for libgmp
+//
+/* ****** ****** */
+
+/*
+(*
+** ATS/Postiats - Unleashing the Potential of Types!
+** Copyright (C) 2011-2013 Hongwei Xi, ATS Trustful Software, Inc.
+** All rights reserved
+**
+** Permission to use, copy, modify, and distribute this software for any
+** purpose with or without fee is hereby granted, provided that the above
+** copyright notice and this permission notice appear in all copies.
+** 
+** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+** WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+** MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+** ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+** WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+** ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+** OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*)
+*/
+
+/* ****** ****** */
+
+/*
+** Author: Hongwei Xi
+** Authoremail: gmhwxiATgmailDOTcom
+*/
+
+/* ****** ****** */
+
+#ifndef ATSCNTRB_LIBGMP_GMP_CATS
+#define ATSCNTRB_LIBGMP_GMP_CATS
+
+/* ****** ****** */
+
+#include <gmp.h>
+
+/* ****** ****** */
+
+typedef
+__mpz_struct atscntrb_gmp_mpz ;
+typedef atscntrb_gmp_mpz *ptrmpz;
+
+/* ****** ****** */
+//
+// init/clear/realloc
+//
+#define atscntrb_gmp_mpz_init mpz_init
+#define atscntrb_gmp_mpz_init2 mpz_init2
+#define atscntrb_gmp_mpz_clear mpz_clear
+#define atscntrb_gmp_mpz_realloc2 mpz_realloc2
+//
+/* ****** ****** */
+//
+// get-functions
+//
+#define atscntrb_gmp_mpz_get_int mpz_get_si
+#define atscntrb_gmp_mpz_get_uint mpz_get_ui
+#define atscntrb_gmp_mpz_get_lint mpz_get_si
+#define atscntrb_gmp_mpz_get_ulint mpz_get_ui
+#define atscntrb_gmp_mpz_get_double mpz_get_d
+#define atscntrb_gmp_mpz_get_str mpz_get_str
+#define atscntrb_gmp_mpz_get_str_null(base, mpz) mpz_get_str((char*)0, base, mpz)
+//
+/* ****** ****** */
+//
+// set-functions
+//
+#define atscntrb_gmp_mpz_set_int mpz_set_si
+#define atscntrb_gmp_mpz_set_uint mpz_set_ui
+#define atscntrb_gmp_mpz_set_lint mpz_set_si
+#define atscntrb_gmp_mpz_set_ulint mpz_set_ui
+#define atscntrb_gmp_mpz_set_mpz mpz_set
+//
+/* ****** ****** */
+//
+// init-set functions
+//
+#define atscntrb_gmp_mpz_init_set_mpz mpz_init_set
+#define atscntrb_gmp_mpz_init_set_int mpz_init_set_si
+#define atscntrb_gmp_mpz_init_set_uint mpz_init_set_ui
+#define atscntrb_gmp_mpz_init_set_lint mpz_init_set_si
+#define atscntrb_gmp_mpz_init_set_ulint mpz_init_set_ui
+//
+/* ****** ****** */
+
+#define atscntrb_gmp_mpz_size mpz_size
+
+/* ****** ****** */
+//
+// input-output-functions
+//
+#define atscntrb_gmp_mpz_inp_str mpz_inp_str
+#define atscntrb_gmp_mpz_out_str mpz_out_str
+//
+/* ****** ****** */
+
+ATSinline()
+atsvoid_t0ype
+atscntrb_gmp_fprint_mpz_base
+(
+  atstype_ref out, atstype_ptr x, atstype_int base
+) {
+  size_t ndigit ;
+  ndigit = mpz_out_str ((FILE*)out, base, (ptrmpz)x) ;
+  return ;
+} // end of [atscntrb_gmp_fprint_mpz_base]
+
+#define atscntrb_gmp_fprint_mpz(out, x) \
+  atscntrb_gmp_fprint_mpz_base(out, x, 10)
+
+/* ****** ****** */
+//
+#define atscntrb_gmp_mpz_inp_raw mpz_inp_raw
+#define atscntrb_gmp_mpz_out_raw mpz_out_raw
+//
+/* ****** ****** */
+
+#define atscntrb_gmp_mpz_odd_p(x) mpz_odd_p((ptrmpz)x)
+#define atscntrb_gmp_mpz_even_p(x) mpz_even_p((ptrmpz)x)
+
+/* ****** ****** */
+
+#define atscntrb_gmp_mpz_neg1(x) mpz_neg(x, x)
+#define atscntrb_gmp_mpz_neg2(x, y) mpz_neg(x, y)
+
+/* ****** ****** */
+
+#define atscntrb_gmp_mpz_abs1(x) mpz_abs(x, x)
+#define atscntrb_gmp_mpz_abs2(x, y) mpz_abs(x, y)
+
+/* ****** ****** */
+//
+// addition-functions
+//
+ATSinline()
+atsvoid_t0ype
+mpz_add_si
+(
+  mpz_t rop
+, mpz_t op1, atstype_lint op2
+)
+{
+  if (op2 >= 0)
+    mpz_add_ui (rop, op1,  op2) ;
+  else
+    mpz_add_ui (rop, op1, -op2) ;
+  // end of [if]
+} /* end of [mpz_add_si] */
+//
+// x := x+y // y+z
+//
+#define atscntrb_gmp_mpz_add2_mpz(x, y) mpz_add(x, x, y)
+#define atscntrb_gmp_mpz_add2_int(x, y) mpz_add_si(x, x, y)
+#define atscntrb_gmp_mpz_add2_uint(x, y) mpz_add_ui(x, x, y)
+#define atscntrb_gmp_mpz_add2_lint(x, y) mpz_add_si(x, x, y)
+#define atscntrb_gmp_mpz_add2_ulint(x, y) mpz_add_ui(x, x, y)
+#define atscntrb_gmp_mpz_add3_mpz(x, y, z) mpz_add(x, y, z)
+#define atscntrb_gmp_mpz_add3_int(x, y, z) mpz_add_si(x, y, z)
+#define atscntrb_gmp_mpz_add3_uint(x, y, z) mpz_add_ui(x, y, z)
+#define atscntrb_gmp_mpz_add3_lint(x, y, z) mpz_add_si(x, y, z)
+#define atscntrb_gmp_mpz_add3_ulint(x, y, z) mpz_add_ui(x, y, z)
+//
+/* ****** ****** */
+//
+// subtraction-functions
+//
+ATSinline()
+atsvoid_t0ype
+mpz_sub_si
+(
+  mpz_t rop
+, mpz_t op1, atstype_lint op2
+)
+{
+  if (op2 >= 0)
+    mpz_sub_ui (rop, op1,  op2) ;
+  else
+    mpz_sub_ui (rop, op1, -op2) ;
+  // end of [if]
+} /* end of [mpz_sub_si] */
+//
+#define atscntrb_gmp_mpz_sub2_mpz(x, y) mpz_sub(x, x, y)
+#define atscntrb_gmp_mpz_sub2_int(x, y) mpz_sub_si(x, x, y)
+#define atscntrb_gmp_mpz_sub2_uint(x, y) mpz_sub_ui(x, x, y)
+#define atscntrb_gmp_mpz_sub2_lint(x, y) mpz_sub_si(x, x, y)
+#define atscntrb_gmp_mpz_sub2_ulint(x, y) mpz_sub_ui(x, x, y)
+#define atscntrb_gmp_mpz_sub3_mpz(x, y, z) mpz_sub(x, y, z)
+#define atscntrb_gmp_mpz_sub3_int(x, y, z) mpz_sub_si(x, y, z)
+#define atscntrb_gmp_mpz_sub3_uint(x, y, z) mpz_sub_ui(x, y, z)
+#define atscntrb_gmp_mpz_sub3_lint(x, y, z) mpz_sub_si(x, y, z)
+#define atscntrb_gmp_mpz_sub3_ulint(x, y, z) mpz_sub_ui(x, y, z)
+//
+/* ****** ****** */
+//
+// multiplication-functions
+//
+// x := x * y // y * z
+//
+#define atscntrb_gmp_mpz_mul2_mpz(x, y) mpz_mul(x, x, y)
+#define atscntrb_gmp_mpz_mul2_int(x, y) mpz_mul_si(x, x, y)
+#define atscntrb_gmp_mpz_mul2_uint(x, y) mpz_mul_ui(x, x, y)
+#define atscntrb_gmp_mpz_mul2_lint(x, y) mpz_mul_si(x, x, y)
+#define atscntrb_gmp_mpz_mul2_ulint(x, y) mpz_mul_ui(x, x, y)
+#define atscntrb_gmp_mpz_mul3_mpz(x, y, z) mpz_mul(x, y, z)
+#define atscntrb_gmp_mpz_mul3_int(x, y, z) mpz_mul_si(x, y, z)
+#define atscntrb_gmp_mpz_mul3_uint(x, y, z) mpz_mul_ui(x, y, z)
+#define atscntrb_gmp_mpz_mul3_lint(x, y, z) mpz_mul_si(x, y, z)
+#define atscntrb_gmp_mpz_mul3_ulint(x, y, z) mpz_mul_ui(x, y, z)
+//
+#define atscntrb_gmp_mpz_mul3_2exp(x, y, z) mpz_mul_2exp(x, y, z)
+//
+/* ****** ****** */
+//
+// trunc-division-functions
+//
+#define atscntrb_gmp_mpz_tdiv2_q_mpz(x, y) mpz_tdiv_q(x, x, y)
+#define atscntrb_gmp_mpz_tdiv2_q_uint(x, y) mpz_tdiv_q_ui(x, x, y)
+#define atscntrb_gmp_mpz_tdiv2_q_ulint(x, y) mpz_tdiv_q_ui(x, x, y)
+#define atscntrb_gmp_mpz_tdiv3_q_mpz(x, y, z) mpz_tdiv_q(x, y, z)
+#define atscntrb_gmp_mpz_tdiv3_q_uint(x, y, z) mpz_tdiv_q_ui(x, y, z)
+#define atscntrb_gmp_mpz_tdiv3_q_ulint(x, y, z) mpz_tdiv_q_ui(x, y, z)
+//
+#define atscntrb_gmp_mpz_tdiv2_r_mpz(x, y) mpz_tdiv_r(x, x, y)
+#define atscntrb_gmp_mpz_tdiv2_r_uint(x, y) mpz_tdiv_r_ui(x, x, y)
+#define atscntrb_gmp_mpz_tdiv2_r_ulint(x, y) mpz_tdiv_r_ui(x, x, y)
+#define atscntrb_gmp_mpz_tdiv3_r_mpz(x, y, z) mpz_tdiv_r(x, y, z)
+#define atscntrb_gmp_mpz_tdiv3_r_uint(x, y, z) mpz_tdiv_r_ui(x, y, z)
+#define atscntrb_gmp_mpz_tdiv3_r_ulint(x, y, z) mpz_tdiv_r_ui(x, y, z)
+//
+#define atscntrb_gmp_mpz_tdiv3_qr_mpz(xq, xr, y) mpz_tdiv_qr(xq, xr, xq, y)
+#define atscntrb_gmp_mpz_tdiv3_qr_uint(xq, xr, y) mpz_tdiv_qr_ui(xq, xr, xq, y)
+#define atscntrb_gmp_mpz_tdiv3_qr_ulint(xq, xr, y) mpz_tdiv_qr_ui(xq, xr, xq, y)
+#define atscntrb_gmp_mpz_tdiv4_qr_mpz(xq, xr, y, z) mpz_tdiv_qr(xq, xr, y, z)
+#define atscntrb_gmp_mpz_tdiv4_qr_uint(xq, xr, y, z) mpz_tdiv_qr_ui(xq, xr, y, z)
+#define atscntrb_gmp_mpz_tdiv4_qr_ulint(xq, xr, y, z) mpz_tdiv_qr_ui(xq, xr, y, z)
+//
+/* ****** ****** */
+//
+// floor-division-functions
+//
+#define atscntrb_gmp_mpz_fdiv_uint(x, y) mpz_fdiv_ui(x, y)
+#define atscntrb_gmp_mpz_fdiv_ulint(x, y) mpz_fdiv_ui(x, y)
+//
+#define atscntrb_gmp_mpz_fdiv2_q_mpz(x, y) mpz_fdiv_q(x, x, y)
+#define atscntrb_gmp_mpz_fdiv2_q_uint(x, y) mpz_fdiv_q_ui(x, x, y)
+#define atscntrb_gmp_mpz_fdiv2_q_ulint(x, y) mpz_fdiv_q_ui(x, x, y)
+#define atscntrb_gmp_mpz_fdiv3_q_mpz(x, y, z) mpz_fdiv_q(x, y, z)
+#define atscntrb_gmp_mpz_fdiv3_q_uint(x, y, z) mpz_fdiv_q_ui(x, y, z)
+#define atscntrb_gmp_mpz_fdiv3_q_ulint(x, y, z) mpz_fdiv_q_ui(x, y, z)
+//
+#define atscntrb_gmp_mpz_fdiv4_qr_mpz(q, r, dd, dr) mpz_fdiv_qr(q, r, dd, dr)
+#define atscntrb_gmp_mpz_fdiv4_qr_ulint(q, r, dd, dr) mpz_fdiv_qr_ui(q, r, dd, dr)
+//
+/* ****** ****** */
+//
+// ceiling-division-functions
+//
+#define atscntrb_gmp_mpz_cdiv_uint(x, y) mpz_cdiv_ui(x, y)
+#define atscntrb_gmp_mpz_cdiv_ulint(x, y) mpz_cdiv_ui(x, y)
+//
+#define atscntrb_gmp_mpz_cdiv2_q_mpz(x, y) mpz_cdiv_q(x, x, y)
+#define atscntrb_gmp_mpz_cdiv2_q_uint(x, y) mpz_cdiv_q_ui(x, x, y)
+#define atscntrb_gmp_mpz_cdiv2_q_ulint(x, y) mpz_cdiv_q_ui(x, x, y)
+#define atscntrb_gmp_mpz_cdiv3_q_mpz(x, y, z) mpz_cdiv_q(x, y, z)
+#define atscntrb_gmp_mpz_cdiv3_q_uint(x, y, z) mpz_cdiv_q_ui(x, y, z)
+#define atscntrb_gmp_mpz_cdiv3_q_ulint(x, y, z) mpz_cdiv_q_ui(x, y, z)
+//
+/* ****** ****** */
+//
+// modulo-functions
+//
+// x := x mod y // y mod z
+//
+#define atscntrb_gmp_mpz_mod2_mpz(x, y) mpz_mod(x, x, y)
+#define atscntrb_gmp_mpz_mod2_uint(x, y) mpz_mod_ui(x, x, y)
+#define atscntrb_gmp_mpz_mod2_ulint(x, y) mpz_mod_ui(x, x, y)
+#define atscntrb_gmp_mpz_mod3_mpz(x, y, z) mpz_mod(x, y, z)
+#define atscntrb_gmp_mpz_mod3_uint(x, y, z) mpz_mod_ui(x, y, z)
+#define atscntrb_gmp_mpz_mod3_ulint(x, y, z) mpz_mod_ui(x, y, z)
+//
+/* ****** ****** */
+//
+#define atscntrb_gmp_mpz_addmul3_mpz(x, y, z) mpz_addmul(x, y, z)
+#define atscntrb_gmp_mpz_addmul3_uint(x, y, z) mpz_addmul_ui(x, y, z)
+#define atscntrb_gmp_mpz_addmul3_ulint(x, y, z) mpz_addmul_ui(x, y, z)
+//
+#define atscntrb_gmp_mpz_submul3_mpz(x, y, z) mpz_submul(x, y, z)
+#define atscntrb_gmp_mpz_submul3_uint(x, y, z) mpz_submul_ui(x, y, z)
+#define atscntrb_gmp_mpz_submul3_ulint(x, y, z) mpz_submul_ui(x, y, z)
+//
+/* ****** ****** */
+//
+// comparison-functions
+//
+#define atscntrb_gmp_mpz_cmp_mpz(x, y) mpz_cmp((ptrmpz)x, y)
+#define atscntrb_gmp_mpz_cmp_int(x, y) mpz_cmp_si((ptrmpz)x, y)
+#define atscntrb_gmp_mpz_cmp_uint(x, y) mpz_cmp_ui((ptrmpz)x, y)
+#define atscntrb_gmp_mpz_cmp_lint(x, y) mpz_cmp_si((ptrmpz)x, y)
+#define atscntrb_gmp_mpz_cmp_ulint(x, y) mpz_cmp_ui((ptrmpz)x, y)
+//
+/* ****** ****** */
+//
+// power-functions
+//
+#define atscntrb_gmp_mpz_pow_uint(pow, base, exp) mpz_pow_ui(pow, base, exp)
+#define atscntrb_gmp_mpz_pow_ulint(pow, base, exp) mpz_pow_ui(pow, base, exp)
+//
+#define atscntrb_gmp_mpz_ui_pow_ui(pow, base, exp) mpz_ui_pow_ui(pow, base, exp)
+//
+/* ****** ****** */
+
+#define atscntrb_gmp_mpz_fac_uint(res, n) mpz_fac_ui(res, n)
+
+/* ****** ****** */  
+//
+#define atscntrb_gmp_mpz_fib_uint(res, n) mpz_fib_ui(res, n)
+#define atscntrb_gmp_mpz_fib2_uint(res1, res2, n) mpz_fib2_ui(res1, res2, n)
+//
+/* ****** ****** */
+
+#endif // ifndef ATSCNTRB_LIBGMP_GMP_CATS
+
+/* ****** ****** */
+
+/* end of [gmp.cats] */
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -39,7 +39,8 @@
 [atspkg](http://hackage.haskell.org/package/ats-pkg), and build with
 
 ```bash
- $ atspkg build
+atspkg build
+cabal new-build
 ```
 
 ## Documentation
diff --git a/ats-src/combinatorics-internal.dats b/ats-src/combinatorics-internal.dats
deleted file mode 100644
--- a/ats-src/combinatorics-internal.dats
+++ /dev/null
@@ -1,115 +0,0 @@
-#include "share/atspre_staload.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mydepies.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mylibies.hats"
-
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-staload UN = "prelude/SATS/unsafe.sats"
-
-// See [here](http://mathworld.wolfram.com/Derangement.html)
-fn derangements {n:nat} .<n>. (n : int(n)) : Intinf =
-  let
-    fnx loop { n : nat | n > 1 }{ i : nat | i <= n } .<n-i>. (n : int(n), i : int(i), n1 : Intinf, n2 : Intinf) : Intinf =
-      if i < n then
-        let
-          var x = add_intinf0_intinf1(n2, n1)
-          var y = mul_intinf0_int(x, i)
-        in
-          loop(n, i + 1, y, n1)
-        end
-      else
-        let
-          var x = add_intinf0_intinf1(n2, n1)
-          val _ = intinf_free(n1)
-          var y = mul_intinf0_int(x, i)
-        in
-          y
-        end
-  in
-    case+ n of
-      | 0 => int2intinf(1)
-      | 1 =>> int2intinf(0)
-      | 2 =>> int2intinf(1)
-      | n =>> loop(n - 1, 2, int2intinf(1), int2intinf(0))
-  end
-
-fnx fact {n:nat} .<n>. (k : int(n)) : intinfGte(1) =
-  case+ k of
-    | 0 => int2intinf(1)
-    | 1 => int2intinf(1)
-    | k =>> $UN.castvwtp0(mul_intinf0_int(fact(k - 1), k))
-
-// Double factorial http://mathworld.wolfram.com/DoubleFactorial.html
-fnx dfact {n:nat} .<n>. (k : int(n)) : Intinf =
-  case+ k of
-    | 0 => int2intinf(1)
-    | 1 => int2intinf(1)
-    | k =>> let
-      var x = dfact(k - 2)
-      var y = mul_intinf0_int(x, k)
-    in
-      y
-    end
-
-// Number of permutations on n objects using k at a time.
-fn permutations {n:nat}{ k : nat | k <= n }(n : int(n), k : int(k)) : Intinf =
-  let
-    var x = fact(n)
-    var y = fact(n - k)
-    var z = div_intinf0_intinf1(x, y)
-    val _ = intinf_free(y)
-  in
-    z
-  end
-
-// Catalan numbers, indexing starting at zero.
-fn catalan {n:nat}(n : int(n)) : Intinf =
-  let
-    fun numerator_loop { i : nat | i > 1 } .<i>. (i : int(i)) : [ n : nat | n > 0 ] intinf(n) =
-      case+ i of
-        | 2 => int2intinf(n + 2)
-        | i =>> let
-          var x = numerator_loop(i - 1)
-          var y = mul_intinf0_int(x, n + i)
-        in
-          $UN.castvwtp0(y)
-        end
-  in
-    case+ n of
-      | 0 => int2intinf(1)
-      | 1 => int2intinf(1)
-      | k =>> let
-        var x = numerator_loop(k)
-        var y = fact(k)
-        var z = div_intinf0_intinf1(x, y)
-        val _ = intinf_free(y)
-      in
-        $UN.castvwtp0(z)
-      end
-  end
-
-// Number of permutations on n objects using k at a time.
-fn choose {n:nat}{ m : nat | m <= n }(n : int(n), k : int(m)) : Intinf =
-  let
-    fun numerator_loop { m : nat | m > 1 } .<m>. (i : int(m)) : [ n : nat | n > 0 ] intinf(n) =
-      case+ i of
-        | 1 => int2intinf(n)
-        | 2 => $UN.castvwtp0(int2intinf((n - 1) * n))
-        | i =>> let
-          var x = numerator_loop(i - 1)
-          var y = mul_intinf0_int(x, n + 1 - i)
-        in
-          $UN.castvwtp0(y)
-        end
-  in
-    case+ k of
-      | 0 => int2intinf(1)
-      | 1 => int2intinf(n)
-      | k =>> let
-        var x = numerator_loop(k)
-        var y = fact(k)
-        var z = div_intinf0_intinf1(x, y)
-        val _ = intinf_free(y)
-      in
-        $UN.castvwtp0(z)
-      end
-  end
diff --git a/ats-src/combinatorics.dats b/ats-src/combinatorics.dats
deleted file mode 100644
--- a/ats-src/combinatorics.dats
+++ /dev/null
@@ -1,39 +0,0 @@
-#define ATS_MAINATSFLAG 1
-
-#include "share/atspre_staload.hats"
-#include "ats-src/combinatorics-internal.dats"
-
-extern
-fun choose_ats {n:nat}{ m : nat | m <= n } : (int(n), int(m)) -> Intinf =
-  "mac#"
-
-extern
-fun permutations_ats {n:nat}{ m : nat | m <= n } : (int(n), int(m)) -> Intinf =
-  "mac#"
-
-extern
-fun double_factorial_ats {n:nat} : int(n) -> Intinf =
-  "mac#"
-
-extern
-fun factorial_ats {n:nat} : int(n) -> Intinf =
-  "mac#"
-
-extern
-fun catalan_ats {n:nat} : int(n) -> Intinf =
-  "mac#"
-
-implement choose_ats (n, k) =
-  choose(n, k)
-
-implement permutations_ats (n, k) =
-  choose(n, k)
-
-implement double_factorial_ats (m) =
-  dfact(m)
-
-implement factorial_ats (m) =
-  fact(m)
-
-implement catalan_ats (n) =
-  catalan(n)
diff --git a/ats-src/number-theory-internal.dats b/ats-src/number-theory-internal.dats
deleted file mode 100644
--- a/ats-src/number-theory-internal.dats
+++ /dev/null
@@ -1,252 +0,0 @@
-#include "share/atspre_staload.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mydepies.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mylibies.hats"
-#include "ats-src/numerics-internal.dats"
-
-staload "prelude/SATS/integer.sats"
-staload UN = "prelude/SATS/unsafe.sats"
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-
-#define ATS_MAINATSFLAG 1
-
-// m | n
-fn divides(m : int, n : int) :<> bool =
-  n % m = 0
-
-fnx gcd {k:nat}{l:nat}(m : int(l), n : int(k)) : int =
-  if n > 0 then
-    gcd(n, witness(m % n))
-  else
-    m
-
-fn lcm {k:nat}{l:nat}(m : int(l), n : int(k)) : int =
-  (m / gcd(m, n)) * n
-
-// stream all divisors of an integer.
-fn divisors(n : intGte(1)) : stream_vt(int) =
-  case+ n of
-    | 1 => $ldelay(stream_vt_cons(1, $ldelay(stream_vt_nil)))
-    | _ => let
-      fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) : stream_vt(int) =
-        if acc >= sqrt_int(n) then
-          if n % acc = 0 then
-            if n / acc != acc then
-              let
-                var x: int = n / acc
-              in
-                $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_cons(x, $ldelay(stream_vt_nil)))))
-              end
-            else
-              let
-                
-              in
-                $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_nil)))
-              end
-          else
-            $ldelay(stream_vt_nil)
-        else
-          if n % acc = 0 then
-            let
-              var x: int = n / acc
-            in
-              $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_cons(x, (loop(n, acc + 1))))))
-            end
-          else
-            loop(n, acc + 1)
-    in
-      loop(n, 1)
-    end
-
-// prime divisors of an integer
-fn prime_divisors(n : intGte(1)) : stream_vt(int) =
-  stream_vt_filter_cloptr(divisors(n), lam x => is_prime($UN.cast(x)))
-
-fn div_gt_zero(n : intGte(0), p : intGt(1)) : intGte(0) =
-  $UN.cast(n / p)
-
-// FIXME require that it be prime.
-fun exp_mod_prime(a : intGte(0), n : intGte(0), p : intGt(1)) : int =
-  let
-    var a1 = a % p
-    var n1 = n % (p - 1)
-  in
-    case+ a of
-      | 0 => 0
-      | x =>> 
-        begin
-          if n > 0 then
-            let
-              var n2: intGte(0) = $UN.cast(half(n1))
-              var i2 = n1 % 2
-              var sq_a: intGte(0) = $UN.cast(a * a % p)
-            in
-              if i2 = 0 then
-                exp_mod_prime(sq_a, n2, p)
-              else
-                let
-                  var y = a * exp_mod_prime(sq_a, n2, p)
-                in
-                  y
-                end
-            end
-          else
-            1
-        end
-  end
-
-// Jacobi symbol for positive integers. See here: http://mathworld.wolfram.com/JacobiSymbol.html
-fun jacobi(a : intGte(0), n : Odd) : int =
-  let
-    fun legendre { p : int | p >= 2 }(a : intGte(0), p : int(p)) : intBtwe(~1, 1) =
-      case+ p % a of
-        | 0 => 0
-        | _ => let
-          var i = exp_mod_prime(a, (p - 1) / 2, p)
-        in
-          case+ i of
-            | i when i % (p - 1) = 0 => ~1
-            | i when i % p = 0 => 0
-            | _ => 1
-        end
-    
-    fun get_multiplicity(n : intGte(0), p : intGt(1)) : intGte(0) =
-      case+ n % p of
-        | 0 => 1 + get_multiplicity(div_gt_zero(n, p), p)
-        | _ => 0
-    
-    fun loop { m : int | m > 1 }(acc : int(m)) : int =
-      if acc > n then
-        1
-      else
-        if a % acc = 0 && is_prime(acc) then
-          loop(acc + 1) * exp(legendre(acc, n), get_multiplicity(a, acc))
-        else
-          loop(acc + 1)
-  in
-    loop(2)
-  end
-
-fn count_divisors(n : intGte(1)) : int =
-  stream_vt_length(divisors(n))
-
-vtypedef pair = @{ first = int, second = int }
-
-fn sum_divisors(n : intGte(1)) : int =
-  let
-    fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) : int =
-      if acc >= sqrt_int(n) then
-        if n % acc = 0 then
-          if n / acc != acc then
-            let
-              var x: int = n / acc
-            in
-              acc + x
-            end
-          else
-            acc
-        else
-          0
-      else
-        if n % acc = 0 then
-          let
-            var x: int = n / acc
-          in
-            acc + x + loop(n, acc + 1)
-          end
-        else
-          loop(n, acc + 1)
-  in
-    loop(n, 1)
-  end
-
-fn is_perfect(n : intGt(1)) : bool =
-  sum_divisors(n) = n
-
-fun rip { n : nat | n > 0 }{ p : nat | p > 0 } .<n>. (n : int(n), p : int(p)) :<> [ r : nat | r <= n && r > 0 ] int(r) =
-  if n % p != 0 then
-    n
-  else
-    if n / p > 0 then
-      let
-        var n1 = n / p
-      in
-        if n1 < n then
-          $UN.cast(rip(n1, p))
-        else
-          1
-      end
-    else
-      1
-
-fun prime_factors(n : intGte(1)) : stream_vt(int) =
-  let
-    fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) : stream_vt(int) =
-      if acc >= n then
-        if is_prime(n) then
-          $ldelay(stream_vt_cons(n, $ldelay(stream_vt_nil)))
-        else
-          $ldelay(stream_vt_nil)
-      else
-        if n % acc = 0 && is_prime(acc) then
-          if n / acc > 0 then
-            $ldelay(stream_vt_cons(acc, loop(rip(n, acc), 1)))
-          else
-            $ldelay(stream_vt_cons(acc, $ldelay(stream_vt_nil)))
-        else
-          loop(n, acc + 1)
-  in
-    loop(n, 1)
-  end
-
-// distinct prime divisors
-fn little_omega(n : intGte(1)) : int =
-  let
-    fun loop { k : nat | k > 0 }{ m : nat | m > 0 }(n : int(k), acc : int(m)) :<!ntm> int =
-      if acc >= n then
-        if is_prime(n) then
-          1
-        else
-          0
-      else
-        if n % acc = 0 && is_prime(acc) then
-          if n / acc > 0 then
-            1 + loop(rip(n, acc), 1)
-          else
-            1
-        else
-          loop(n, acc + 1)
-  in
-    loop(n, 1)
-  end
-
-// Euler's totient function.
-fn totient(n : intGte(1)) : int =
-  case+ n of
-    | 1 => 1
-    | n =>> let
-      fn adjust_contents(x : pair, y : int) : pair =
-        @{ first = g0int_mul(x.first, y - 1), second = g0int_mul(x.second, y) }
-      
-      var x: stream_vt(int) = prime_factors(n)
-      var empty_pair = @{ first = 1, second = 1 } : pair
-      var y = stream_vt_foldleft_cloptr(x, empty_pair, lam (acc, next) => adjust_contents(acc, next)) : pair
-    in
-      g0int_div(g0int_mul(n, y.first), y.second)
-    end
-
-// The sum of all φ(m) for m between 1 and n 
-fn totient_sum(n : intGte(1)) : Intinf =
-  let
-    fnx loop { n : nat | n >= 1 }{ m : nat | m >= n } .<m-n>. (i : int(n), bound : int(m)) : Intinf =
-      if i < bound then
-        let
-          var x = loop(i + 1, bound)
-          var y = add_intinf0_int(x, witness(totient(i)))
-        in
-          y
-        end
-      else
-        int2intinf(witness(totient(i)))
-  in
-    loop(1, n)
-  end
diff --git a/ats-src/number-theory.dats b/ats-src/number-theory.dats
deleted file mode 100644
--- a/ats-src/number-theory.dats
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "ats-src/number-theory-internal.dats"
-
-extern
-fun totient_ats { k : nat | k >= 2 }(int(k)) : int =
-  "mac#"
-
-extern
-fun count_divisors_ats { k : nat | k >= 2 }(int(k)) : int =
-  "mac#"
-
-extern
-fun little_omega_ats { n : nat | n > 0 } : int(n) -> int =
-  "mac#"
-
-extern
-fun sum_divisors_ats : { n : nat | n > 1 } int(n) -> int =
-  "mac#"
-
-extern
-fun jacobi_ats : (intGte(0), Odd) -> int =
-  "mac#"
-
-extern
-fun is_perfect_ats : intGt(1) -> bool =
-  "mac#"
-
-implement sum_divisors_ats (m) =
-  sum_divisors(m)
-
-implement count_divisors_ats (n) =
-  count_divisors(n)
-
-implement totient_ats (n) =
-  totient(n)
-
-implement little_omega_ats (n) =
-  little_omega(n)
-
-implement is_perfect_ats (n) =
-  is_perfect(n)
-
-implement jacobi_ats (m, n) =
-  jacobi(m, $UN.cast(n))
diff --git a/ats-src/numerics-internal.dats b/ats-src/numerics-internal.dats
deleted file mode 100644
--- a/ats-src/numerics-internal.dats
+++ /dev/null
@@ -1,86 +0,0 @@
-#include "share/atspre_staload.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mydepies.hats"
-#include "$PATSHOMELOCS/atscntrb-hx-intinf/mylibies.hats"
-
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-staload "libats/libc/SATS/math.sats"
-staload UN = "prelude/SATS/unsafe.sats"
-
-// Existential types for even and odd numbers. These are only usable with the
-// ATS library.
-typedef Even = [n:nat] int(2*n)
-typedef Odd = [n:nat] int(2*n+1)
-typedef gprime(tk: tk, p: int) = { m, n : nat | m < 1 && m <= n && n < p && m*n != p && p > 1 } g1int(tk, p)
-typedef prime(p: int) = gprime(int_kind, p)
-typedef Prime = [p:nat] prime(p)
-
-fn witness(n : int) :<> [m:nat] int(m) =
-  $UN.cast(n)
-
-// Fast computation of Fibonacci numbers via GMP bindings.
-fun fib_gmp(n : intGte(0)) : Intinf =
-  let
-    var z = ptr_alloc()
-    var x = g0int2uint(n + 1)
-    val () = $GMP.mpz_init(!(z.2))
-    val () = $GMP.mpz_fib_uint(!(z.2), x)
-  in
-    $UN.castvwtp0(z)
-  end
-
-// Fast integer exponentiation.
-fun exp {n:nat} .<n>. (x : int, n : int(n)) : int =
-  case+ x of
-    | 0 => 0
-    | x =>> 
-      begin
-        if n > 0 then
-          let
-            var n2 = half(n)
-            var i2 = n % 2
-          in
-            if i2 = 0 then
-              exp(x * x, n2)
-            else
-              let
-                var y = x * exp(x * x, n2)
-              in
-                y
-              end
-          end
-        else
-          1
-      end
-
-fn sqrt_int(k : intGt(0)) :<> [m:nat] int(m) =
-  let
-    var bound: int = g0float2int(sqrt_float(g0int2float(k)))
-  in
-    witness(bound)
-  end
-
-// function to check primality
-fn is_prime(k : intGt(0)) :<> bool =
-  case+ k of
-    | 1 => false
-    | k => 
-      begin
-        let
-          fnx loop {n:nat}{m:nat} .<max(0,m-n)>. (i : int(n), bound : int(m)) :<> bool =
-            if i < bound then
-              if k % i = 0 then
-                false
-              else
-                loop(i + 1, bound)
-            else
-              if i = bound then
-                if k % i = 0 then
-                  false
-                else
-                  true
-              else
-                true
-        in
-          loop(2, sqrt_int(k))
-        end
-      end
diff --git a/ats-src/numerics.dats b/ats-src/numerics.dats
deleted file mode 100644
--- a/ats-src/numerics.dats
+++ /dev/null
@@ -1,35 +0,0 @@
-#define ATS_DYNLOADFLAG 0
-
-#include "share/atspre_staload.hats"
-#include "ats-src/numerics-internal.dats"
-#include "$PATSHOMELOCS/atscntrb-hx-libgmp/mylibies.hats"
-
-staload "$PATSHOMELOCS/atscntrb-hx-intinf/SATS/intinf_vt.sats"
-staload "$PATSHOMELOCS/atscntrb-hx-libgmp/SATS/gmp.sats"
-
-extern
-fun mpz_free : (&mpz >> mpz?) -> void =
-  "mac#"
-
-extern
-fun is_prime_ats { n : nat | n > 0 } : int(n) -> bool =
-  "mac#"
-
-extern
-fun exp_ats {m:nat} : ([n:nat] int(n), int(m)) -> int =
-  "mac#"
-
-extern
-fun fib_ats : intGte(0) -> Intinf =
-  "mac#"
-
-implement is_prime_ats (n) =
-  is_prime(n)
-
-implement exp_ats (m, n) =
-  exp(m, n)
-
-// implement fib_ats (m) =
-//   fib_gmp(m)
-implement mpz_free (x) =
-  mpz_clear(x)
diff --git a/atspkg.dhall b/atspkg.dhall
deleted file mode 100644
--- a/atspkg.dhall
+++ /dev/null
@@ -1,16 +0,0 @@
-let prelude = https://raw.githubusercontent.com/vmchale/atspkg/master/ats-pkg/dhall/atspkg-prelude.dhall
-in
-
-prelude.default ⫽
-  { libraries =
-    [
-      prelude.lib ⫽ 
-      { name = "storable"
-      , src = [ "ats-src/combinatorics.dats", "ats-src/number-theory.dats", "ats-src/numerics.dats" ]
-      , libTarget = "dist-newstyle/lib/libnumbertheory.a"
-      , static = True
-      }
-    ]
-  , compiler = [0,3,10]
-  , dependencies = prelude.mapPlainDeps [ "atscntrb-hx-intinf" ]
-  }
diff --git a/bench/Bench.hs b/bench/Bench.hs
--- a/bench/Bench.hs
+++ b/bench/Bench.hs
@@ -6,14 +6,24 @@
 import           Numeric.Combinatorics
 import           Numeric.Integer
 import           Numeric.NumberTheory
-import           Numeric.Pure
 
+{-# SPECIALIZE hsIsPrime :: Int -> Bool #-}
+
+hsIsPrime :: (Integral a) => a -> Bool
+hsIsPrime 1 = False
+hsIsPrime x = all ((/=0) . (x `rem`)) [2..up]
+    where up = floor (sqrt (fromIntegral x :: Float))
+
 main :: IO ()
 main =
     defaultMain [ bgroup "primality check"
                       [ bench "isPrime" $ nf isPrime 2017
                       , bench "hsIsPrime" $ nf hsIsPrime (2017 :: Int)
                       ]
+                , bgroup "factorial"
+                      [ bench "factorial" $ nf factorial 160
+                      , bench "Ext.factorial" $ nf Ext.factorial (160 :: Integer)
+                      ]
                 , bgroup "φ"
                       [ bench "totient" $ nf totient 2016
                       , bench "Ext.totient" $ nf Ext.totient (2016 :: Int)
@@ -25,10 +35,6 @@
                 , bgroup "ω"
                       [ bench "littleOmega" $ nf littleOmega 91
                       , bench "Ext.smallOmega" $ nf (Ext.smallOmega :: Int -> Int) 91
-                      ]
-                , bgroup "factorial"
-                      [ bench "factorial" $ nf factorial 160
-                      , bench "Ext.factorial" $ nf Ext.factorial (160 :: Integer)
                       ]
                 , bgroup "σ"
                       [ bench "sumDivisors" $ nf sumDivisors 115
diff --git a/cbits/combinatorics.c b/cbits/combinatorics.c
new file mode 100644
--- /dev/null
+++ b/cbits/combinatorics.c
@@ -0,0 +1,5108 @@
+/*
+**
+** The C code is generated by [ATS/Postiats-0-3-10]
+** The starting compilation time is: 2018-4-13:  1h:38m
+**
+*/
+
+/*
+** include runtime header files
+*/
+#ifndef _ATS_CCOMP_HEADER_NONE_
+#include "pats_ccomp_config.h"
+#include "pats_ccomp_basics.h"
+#include "pats_ccomp_typedefs.h"
+#include "pats_ccomp_instrset.h"
+#include "pats_ccomp_memalloc.h"
+#ifndef _ATS_CCOMP_EXCEPTION_NONE_
+#include "pats_ccomp_memalloca.h"
+#include "pats_ccomp_exception.h"
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+#endif /* _ATS_CCOMP_HEADER_NONE_ */
+
+
+/*
+** include prelude cats files
+*/
+#ifndef _ATS_CCOMP_PRELUDE_NONE_
+//
+#include "prelude/CATS/basics.cats"
+#include "prelude/CATS/integer.cats"
+#include "prelude/CATS/pointer.cats"
+#include "prelude/CATS/integer_long.cats"
+#include "prelude/CATS/integer_size.cats"
+#include "prelude/CATS/integer_short.cats"
+#include "prelude/CATS/bool.cats"
+#include "prelude/CATS/char.cats"
+#include "prelude/CATS/float.cats"
+#include "prelude/CATS/integer_ptr.cats"
+#include "prelude/CATS/integer_fixed.cats"
+#include "prelude/CATS/memory.cats"
+#include "prelude/CATS/string.cats"
+#include "prelude/CATS/strptr.cats"
+//
+#include "prelude/CATS/fprintf.cats"
+//
+#include "prelude/CATS/filebas.cats"
+//
+#include "prelude/CATS/list.cats"
+#include "prelude/CATS/option.cats"
+#include "prelude/CATS/array.cats"
+#include "prelude/CATS/arrayptr.cats"
+#include "prelude/CATS/arrayref.cats"
+#include "prelude/CATS/matrix.cats"
+#include "prelude/CATS/matrixptr.cats"
+//
+#endif /* _ATS_CCOMP_PRELUDE_NONE_ */
+/*
+** for user-supplied prelude
+*/
+#ifdef _ATS_CCOMP_PRELUDE_USER_
+//
+#include _ATS_CCOMP_PRELUDE_USER_
+//
+#endif /* _ATS_CCOMP_PRELUDE_USER_ */
+/*
+** for user2-supplied prelude
+*/
+#ifdef _ATS_CCOMP_PRELUDE_USER2_
+//
+#include _ATS_CCOMP_PRELUDE_USER2_
+//
+#endif /* _ATS_CCOMP_PRELUDE_USER2_ */
+
+/*
+staload-prologues(beg)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/basics.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 1533(line=44, offs=1) -- 1572(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_long.dats: 1602(line=49, offs=1) -- 1641(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_size.dats: 1597(line=49, offs=1) -- 1636(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_short.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/char.dats: 1610(line=48, offs=1) -- 1649(line=48, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/float.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/string.dats: 1631(line=50, offs=1) -- 1670(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/strptr.dats: 1629(line=50, offs=1) -- 1668(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/strptr.dats: 1691(line=54, offs=1) -- 1738(line=54, offs=48)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_ptr.dats: 1601(line=49, offs=1) -- 1640(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_fixed.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/memory.dats: 1410(line=38, offs=1) -- 1449(line=39, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1607(line=49, offs=1) -- 1646(line=50, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1669(line=54, offs=1) -- 1715(line=55, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1738(line=59, offs=1) -- 1783(line=60, offs=38)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/stdio.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1865(line=66, offs=1) -- 1912(line=66, offs=48)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/stat.sats: 1390(line=36, offs=1) -- 1440(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/stat.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/stat.sats: 1756(line=58, offs=1) -- 1805(line=60, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 15937(line=927, offs=1) -- 15974(line=928, offs=30)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/stdio.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list.dats: 1529(line=44, offs=1) -- 1568(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list.dats: 1569(line=46, offs=1) -- 1615(line=47, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list_vt.dats: 1538(line=44, offs=1) -- 1577(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list_vt.dats: 1578(line=46, offs=1) -- 1624(line=47, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/list_vt_mergesort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/list_vt_quicksort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/array.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/array_bsearch.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/array_quicksort.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/arrayptr.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/arrayref.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrix.dats: 1535(line=44, offs=1) -- 1574(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrixptr.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrixref.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/tostring.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/checkast.dats: 1531(line=44, offs=1) -- 1570(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1660(line=37, offs=1) -- 1700(line=38, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1727(line=42, offs=1) -- 1759(line=42, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1833(line=49, offs=1) -- 1867(line=49, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1868(line=50, offs=1) -- 1908(line=50, offs=41)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1656(line=37, offs=1) -- 1696(line=39, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/mydepies.hats: 208(line=18, offs=1) -- 248(line=19, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1813(line=49, offs=1) -- 1845(line=49, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1846(line=50, offs=1) -- 1881(line=50, offs=36)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1657(line=37, offs=1) -- 1689(line=37, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1690(line=38, offs=1) -- 1724(line=38, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+staload-prologues(end)
+*/
+/*
+typedefs-for-tyrecs-and-tysums(beg)
+*/
+/*
+typedefs-for-tyrecs-and-tysums(end)
+*/
+/*
+dynconlst-declaration(beg)
+*/
+/*
+dynconlst-declaration(end)
+*/
+/*
+dyncstlst-declaration(beg)
+*/
+ATSdyncst_mac(atspre_g1int2int_int_int)
+ATSdyncst_mac(atspre_g1int_lt_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_add2_mpz)
+ATSdyncst_mac(atscntrb_gmp_mpz_mul2_int)
+ATSdyncst_mac(atspre_g1int_add_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_clear)
+ATSdyncst_mac(atspre_ptr_free)
+ATSdyncst_mac(atscntrb_gmp_mpz_init_set_int)
+ATSdyncst_mac(atspre_ptr_alloc_tsz)
+ATSdyncst_mac(atspre_g1int_sub_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_tdiv2_q_mpz)
+ATSdyncst_mac(atspre_g1int_mul_int)
+/*
+dyncstlst-declaration(end)
+*/
+/*
+dynvalist-implementation(beg)
+*/
+/*
+dynvalist-implementation(end)
+*/
+/*
+exnconlst-declaration(beg)
+*/
+#ifndef _ATS_CCOMP_EXCEPTION_NONE_
+ATSextern()
+atsvoid_t0ype
+the_atsexncon_initize
+(
+  atstype_exnconptr d2c, atstype_string exnmsg
+) ;
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+/*
+exnconlst-declaration(end)
+*/
+/*
+extypelst-declaration(beg)
+*/
+/*
+extypelst-declaration(end)
+*/
+/*
+assumelst-declaration(beg)
+*/
+#ifndef _ATS_CCOMP_ASSUME_CHECK_NONE_
+#endif // #ifndef(_ATS_CCOMP_ASSUME_CHECK_NONE_)
+/*
+assumelst-declaration(end)
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+derangements_0(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_type(atstype_ptrk), atstkind_type(atstype_ptrk)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__2(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__2__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6(atstkind_type(atstype_ptrk), atsrefarg0_type(atstkind_type(atstype_ptrk))) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__1(atstkind_type(atstype_ptrk), atsrefarg0_type(atstkind_type(atstype_ptrk))) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__1(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__2(atstkind_type(atstype_ptrk), atsrefarg0_type(atstkind_type(atstype_ptrk))) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12(atstkind_type(atstype_ptrk)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__1(atstkind_type(atstype_ptrk)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__2(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__1(atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17() ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__1() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__2(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__2() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__3(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__3() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__4(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__4() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__5(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__5() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+fact_28(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__6(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__6() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__7(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__7() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__3(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+dfact_34(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__8(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__8() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__9(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__9() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__4(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+permutations_40(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41(atstkind_type(atstype_ptrk), atsrefarg0_type(atstkind_type(atstype_ptrk))) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__1(atstkind_type(atstype_ptrk), atsrefarg0_type(atstkind_type(atstype_ptrk))) ;
+
+ATSstatic()
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__2(atstkind_type(atstype_ptrk)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+catalan_44(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+numerator_loop_45(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__10(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__10() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__5(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__11(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__11() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__12(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__12() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__2(atstkind_type(atstype_ptrk), atsrefarg0_type(atstkind_type(atstype_ptrk))) ;
+
+ATSstatic()
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__3(atstkind_type(atstype_ptrk)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+choose_55(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+numerator_loop_56(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__13(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__13() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__14(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__14() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__6(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__15(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__15() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__16(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__16() ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__3(atstkind_type(atstype_ptrk), atsrefarg0_type(atstkind_type(atstype_ptrk))) ;
+
+ATSstatic()
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4(atstkind_type(atstype_ptrk)) ;
+
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+choose_ats(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+permutations_ats(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+double_factorial_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+factorial_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+catalan_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+derangements_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 430(line=11, offs=4) -- 1128(line=35, offs=6)
+*/
+/*
+local: 
+global: derangements_0$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+derangements_0(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret0, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp45, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp46, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp51, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 430(line=11, offs=4) -- 1128(line=35, offs=6)
+*/
+ATSINSflab(__patsflab_derangements_0):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 483(line=12, offs=3) -- 1128(line=35, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 970(line=30, offs=5) -- 1122(line=34, offs=59)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 989(line=31, offs=9) -- 990(line=31, offs=10)
+*/
+ATSINSlab(__atstmplab0):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 458(line=11, offs=32) -- 459(line=11, offs=33)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab2) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 990(line=31, offs=10) -- 990(line=31, offs=10)
+*/
+ATSINSlab(__atstmplab1):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 994(line=31, offs=14) -- 1007(line=31, offs=27)
+*/
+ATSINSmove(tmpret0, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__1(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1016(line=32, offs=9) -- 1017(line=32, offs=10)
+*/
+ATSINSlab(__atstmplab2):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 458(line=11, offs=32) -- 459(line=11, offs=33)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab4) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1017(line=32, offs=10) -- 1017(line=32, offs=10)
+*/
+ATSINSlab(__atstmplab3):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1022(line=32, offs=15) -- 1035(line=32, offs=28)
+*/
+ATSINSmove(tmpret0, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__2(ATSPMVi0nt(0))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1044(line=33, offs=9) -- 1045(line=33, offs=10)
+*/
+ATSINSlab(__atstmplab4):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 458(line=11, offs=32) -- 459(line=11, offs=33)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(2))) { ATSINSgoto(__atstmplab6) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1045(line=33, offs=10) -- 1045(line=33, offs=10)
+*/
+ATSINSlab(__atstmplab5):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1050(line=33, offs=15) -- 1063(line=33, offs=28)
+*/
+ATSINSmove(tmpret0, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__3(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1073(line=34, offs=10) -- 1073(line=34, offs=10)
+*/
+ATSINSlab(__atstmplab6):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1083(line=34, offs=20) -- 1088(line=34, offs=25)
+*/
+ATSINSmove(tmp45, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1093(line=34, offs=30) -- 1106(line=34, offs=43)
+*/
+ATSINSmove(tmp46, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__4(ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1108(line=34, offs=45) -- 1121(line=34, offs=58)
+*/
+ATSINSmove(tmp51, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__5(ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1078(line=34, offs=15) -- 1122(line=34, offs=59)
+*/
+ATSINSmove(tmpret0, loop_1(tmp45, ATSPMVi0nt(2), tmp46, tmp51)) ;
+
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 483(line=12, offs=3) -- 1128(line=35, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret0) ;
+} /* end of [derangements_0] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 495(line=13, offs=9) -- 960(line=28, offs=12)
+*/
+/*
+local: loop_1$0(level=1)
+global: loop_1$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1, atstkind_type(atstype_ptrk) arg2, atstkind_type(atstype_ptrk) arg3)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy2, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(apy3, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpret1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp2, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmpref7, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref12, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp17, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref18, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp21) ;
+ATStmpdec(tmpref26, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 495(line=13, offs=9) -- 960(line=28, offs=12)
+*/
+ATSINSflab(__patsflab_loop_1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 619(line=14, offs=10) -- 624(line=14, offs=15)
+*/
+ATSINSmove(tmp2, ATSLIB_056_prelude__lt_g1int_int__2__1(arg1, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 616(line=14, offs=7) -- 960(line=28, offs=12)
+*/
+ATSif(
+tmp2
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 638(line=15, offs=9) -- 782(line=20, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 656(line=16, offs=15) -- 657(line=16, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref7) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 660(line=16, offs=19) -- 687(line=16, offs=46)
+*/
+ATSINSmove(tmpref7, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__1(arg3, ATSPMVrefarg0(arg2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 702(line=17, offs=15) -- 703(line=17, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref12) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 706(line=17, offs=19) -- 727(line=17, offs=40)
+*/
+ATSINSmove(tmpref12, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__1(tmpref7, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 757(line=19, offs=19) -- 762(line=19, offs=24)
+*/
+ATSINSmove(tmp17, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 749(line=19, offs=11) -- 770(line=19, offs=32)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, arg0) ;
+ATSINSmove_tlcal(apy1, tmp17) ;
+ATSINSmove_tlcal(apy2, tmpref12) ;
+ATSINSmove_tlcal(apy3, arg2) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSargmove_tlcal(arg2, apy2) ;
+ATSINSargmove_tlcal(arg3, apy3) ;
+ATSINSfgoto(__patsflab_loop_1) ;
+ATStailcal_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 638(line=15, offs=9) -- 782(line=20, offs=12)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 802(line=22, offs=9) -- 960(line=28, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 820(line=23, offs=15) -- 821(line=23, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref18) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 824(line=23, offs=19) -- 851(line=23, offs=46)
+*/
+ATSINSmove(tmpref18, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__2(arg3, ATSPMVrefarg0(arg2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 870(line=24, offs=19) -- 884(line=24, offs=33)
+*/
+ATSINSmove_void(tmp21, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__1(arg2)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 900(line=25, offs=15) -- 901(line=25, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref26) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 904(line=25, offs=19) -- 925(line=25, offs=40)
+*/
+ATSINSmove(tmpref26, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__2(tmpref18, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 947(line=27, offs=11) -- 948(line=27, offs=12)
+*/
+ATSINSmove(tmpret1, tmpref26) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 802(line=22, offs=9) -- 960(line=28, offs=12)
+*/
+/*
+INSletpop()
+*/
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret1) ;
+} /* end of [loop_1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$2$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__2(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret3, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp4, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp4, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4626))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret3, PMVtmpltcst(g1int_lt<S2Evar(tk(4626))>)(arg0, tmp4)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret3) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__2] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$2$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = Some(tk(4626) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__2__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret3__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp4__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp4__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret3__1, atspre_g1int_lt_int(arg0, tmp4__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret3__1) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__2__1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5514(line=298, offs=3) -- 5585(line=303, offs=2)
+*/
+/*
+local: 
+global: add_intinf0_intinf1$6$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = 
+tmparg = 
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6(atstkind_type(atstype_ptrk) arg0, atsrefarg0_type(atstkind_type(atstype_ptrk)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret8, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp9) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5492(line=297, offs=1) -- 5585(line=303, offs=2)
+*/
+ATSINSflab(__patsflab_add_intinf0_intinf1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5523(line=298, offs=12) -- 5585(line=303, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5547(line=301, offs=10) -- 5580(line=301, offs=43)
+*/
+ATSINSmove_void(tmp9, atscntrb_gmp_mpz_add2_mpz(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), ATSPMVrefarg1(ATSSELrecsin(arg1, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5524(line=298, offs=13) -- 5525(line=298, offs=14)
+*/
+ATSINSmove(tmpret8, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5523(line=298, offs=12) -- 5585(line=303, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret8) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5514(line=298, offs=3) -- 5585(line=303, offs=2)
+*/
+/*
+local: 
+global: add_intinf0_intinf1$6$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__1(atstkind_type(atstype_ptrk) arg0, atsrefarg0_type(atstkind_type(atstype_ptrk)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret8__1, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp9__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5492(line=297, offs=1) -- 5585(line=303, offs=2)
+*/
+ATSINSflab(__patsflab_add_intinf0_intinf1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5523(line=298, offs=12) -- 5585(line=303, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5547(line=301, offs=10) -- 5580(line=301, offs=43)
+*/
+ATSINSmove_void(tmp9__1, atscntrb_gmp_mpz_add2_mpz(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), ATSPMVrefarg1(ATSSELrecsin(arg1, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5524(line=298, offs=13) -- 5525(line=298, offs=14)
+*/
+ATSINSmove(tmpret8__1, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5523(line=298, offs=12) -- 5585(line=303, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret8__1) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7394(line=413, offs=3) -- 7461(line=418, offs=2)
+*/
+/*
+local: 
+global: mul_intinf0_int$8$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = 
+tmparg = 
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret13, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp14) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7376(line=412, offs=1) -- 7461(line=418, offs=2)
+*/
+ATSINSflab(__patsflab_mul_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7427(line=416, offs=10) -- 7456(line=416, offs=39)
+*/
+ATSINSmove_void(tmp14, atscntrb_gmp_mpz_mul2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7404(line=413, offs=13) -- 7405(line=413, offs=14)
+*/
+ATSINSmove(tmpret13, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret13) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7394(line=413, offs=3) -- 7461(line=418, offs=2)
+*/
+/*
+local: 
+global: mul_intinf0_int$8$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__1(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret13__1, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp14__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7376(line=412, offs=1) -- 7461(line=418, offs=2)
+*/
+ATSINSflab(__patsflab_mul_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7427(line=416, offs=10) -- 7456(line=416, offs=39)
+*/
+ATSINSmove_void(tmp14__1, atscntrb_gmp_mpz_mul2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7404(line=413, offs=13) -- 7405(line=413, offs=14)
+*/
+ATSINSmove(tmpret13__1, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret13__1) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5514(line=298, offs=3) -- 5585(line=303, offs=2)
+*/
+/*
+local: 
+global: add_intinf0_intinf1$6$2(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__2(atstkind_type(atstype_ptrk) arg0, atsrefarg0_type(atstkind_type(atstype_ptrk)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret8__2, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp9__2) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5492(line=297, offs=1) -- 5585(line=303, offs=2)
+*/
+ATSINSflab(__patsflab_add_intinf0_intinf1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5523(line=298, offs=12) -- 5585(line=303, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5547(line=301, offs=10) -- 5580(line=301, offs=43)
+*/
+ATSINSmove_void(tmp9__2, atscntrb_gmp_mpz_add2_mpz(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), ATSPMVrefarg1(ATSSELrecsin(arg1, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5524(line=298, offs=13) -- 5525(line=298, offs=14)
+*/
+ATSINSmove(tmpret8__2, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5523(line=298, offs=12) -- 5585(line=303, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret8__2) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_intinf1__6__2] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2888(line=119, offs=12) -- 2987(line=122, offs=4)
+*/
+/*
+local: 
+global: intinf_free$12$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = 
+tmparg = 
+tmpsub = None()
+*/
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12(atstkind_type(atstype_ptrk) arg0)
+{
+/* tmpvardeclst(beg) */
+// ATStmpdec_void(tmpret22) ;
+// ATStmpdec_void(tmp23) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2877(line=119, offs=1) -- 2987(line=122, offs=4)
+*/
+ATSINSflab(__patsflab_intinf_free):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/* (*nothing*) */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2936(line=121, offs=12) -- 2955(line=121, offs=31)
+*/
+ATSINSmove_void(tmp23, atscntrb_gmp_mpz_clear(ATSPMVrefarg1(arg0))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2959(line=121, offs=35) -- 2983(line=121, offs=59)
+*/
+ATSINSmove_void(tmpret22, atspre_ptr_free(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn_void(tmpret22) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2888(line=119, offs=12) -- 2987(line=122, offs=4)
+*/
+/*
+local: 
+global: intinf_free$12$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__1(atstkind_type(atstype_ptrk) arg0)
+{
+/* tmpvardeclst(beg) */
+// ATStmpdec_void(tmpret22__1) ;
+// ATStmpdec_void(tmp23__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2877(line=119, offs=1) -- 2987(line=122, offs=4)
+*/
+ATSINSflab(__patsflab_intinf_free):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/* (*nothing*) */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2936(line=121, offs=12) -- 2955(line=121, offs=31)
+*/
+ATSINSmove_void(tmp23__1, atscntrb_gmp_mpz_clear(ATSPMVrefarg1(arg0))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2959(line=121, offs=35) -- 2983(line=121, offs=59)
+*/
+ATSINSmove_void(tmpret22__1, atspre_ptr_free(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn_void(tmpret22__1) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7394(line=413, offs=3) -- 7461(line=418, offs=2)
+*/
+/*
+local: 
+global: mul_intinf0_int$8$2(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__2(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret13__2, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp14__2) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7376(line=412, offs=1) -- 7461(line=418, offs=2)
+*/
+ATSINSflab(__patsflab_mul_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7427(line=416, offs=10) -- 7456(line=416, offs=39)
+*/
+ATSINSmove_void(tmp14__2, atscntrb_gmp_mpz_mul2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7404(line=413, offs=13) -- 7405(line=413, offs=14)
+*/
+ATSINSmove(tmpret13__2, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret13__2) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__2] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = 
+tmparg = 
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30, PMVtmpltcst(ptr_alloc<S2Ecst(mpz_vt0ype)>)()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29, tmp30) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__1(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__1, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__1, ATSLIB_056_prelude__ptr_alloc__17__1()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__1, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__1, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__1, tmp30__1) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__1) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35, atspre_ptr_alloc_tsz(ATSPMVsizeof(atstyvar_type(a)))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__1()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__1, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__1, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__1) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$2(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__2(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__2, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__2, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__2) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__2, ATSLIB_056_prelude__ptr_alloc__17__2()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__2, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__2, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__2, tmp30__2) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__2) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$2(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__2()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__2, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__2, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__2) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$3(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__3(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__3, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__3, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__3) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__3, ATSLIB_056_prelude__ptr_alloc__17__3()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__3, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__3, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__3, tmp30__3) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__3) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$3(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__3()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__3, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__3, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__3) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$4(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__4(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__4, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__4, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__4) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__4, ATSLIB_056_prelude__ptr_alloc__17__4()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__4, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__4, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__4, tmp30__4) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__4) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__4] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$4(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__4()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__4, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__4, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__4) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__4] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$5(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__5(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__5, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__5, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__5) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__5, ATSLIB_056_prelude__ptr_alloc__17__5()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__5, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__5, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__5, tmp30__5) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__5) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__5] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$5(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__5()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__5, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__5, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__5) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__5] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1134(line=37, offs=5) -- 1304(line=41, offs=59)
+*/
+/*
+local: fact_28$0(level=0)
+global: fact_28$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+fact_28(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret56, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp65, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp68, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp69, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1134(line=37, offs=5) -- 1304(line=41, offs=59)
+*/
+ATSINSflab(__patsflab_fact_28):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1185(line=38, offs=3) -- 1304(line=41, offs=59)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1202(line=39, offs=7) -- 1203(line=39, offs=8)
+*/
+ATSINSlab(__atstmplab7):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1154(line=37, offs=25) -- 1155(line=37, offs=26)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab9) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1203(line=39, offs=8) -- 1203(line=39, offs=8)
+*/
+ATSINSlab(__atstmplab8):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1207(line=39, offs=12) -- 1220(line=39, offs=25)
+*/
+ATSINSmove(tmpret56, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__6(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1227(line=40, offs=7) -- 1228(line=40, offs=8)
+*/
+ATSINSlab(__atstmplab9):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1154(line=37, offs=25) -- 1155(line=37, offs=26)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab11) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1228(line=40, offs=8) -- 1228(line=40, offs=8)
+*/
+ATSINSlab(__atstmplab10):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1232(line=40, offs=12) -- 1245(line=40, offs=25)
+*/
+ATSINSmove(tmpret56, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__7(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1253(line=41, offs=8) -- 1253(line=41, offs=8)
+*/
+ATSINSlab(__atstmplab11):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1293(line=41, offs=48) -- 1298(line=41, offs=53)
+*/
+ATSINSmove(tmp69, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1288(line=41, offs=43) -- 1299(line=41, offs=54)
+*/
+ATSINSmove(tmp68, fact_28(tmp69)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1272(line=41, offs=27) -- 1303(line=41, offs=58)
+*/
+ATSINSmove(tmp65, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__3(tmp68, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1258(line=41, offs=13) -- 1304(line=41, offs=59)
+*/
+ATSINSmove(tmpret56, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmp65)) ;
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret56) ;
+} /* end of [fact_28] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$6(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__6(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__6, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__6, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__6) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__6, ATSLIB_056_prelude__ptr_alloc__17__6()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__6, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__6, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__6, tmp30__6) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__6) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__6] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$6(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__6()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__6, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__6, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__6) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__6] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$7(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__7(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__7, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__7, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__7) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__7, ATSLIB_056_prelude__ptr_alloc__17__7()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__7, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__7, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__7, tmp30__7) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__7) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__7] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$7(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__7()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__7, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__7, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__7) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__7] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7394(line=413, offs=3) -- 7461(line=418, offs=2)
+*/
+/*
+local: 
+global: mul_intinf0_int$8$3(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__3(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret13__3, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp14__3) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7376(line=412, offs=1) -- 7461(line=418, offs=2)
+*/
+ATSINSflab(__patsflab_mul_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7427(line=416, offs=10) -- 7456(line=416, offs=39)
+*/
+ATSINSmove_void(tmp14__3, atscntrb_gmp_mpz_mul2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7404(line=413, offs=13) -- 7405(line=413, offs=14)
+*/
+ATSINSmove(tmpret13__3, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret13__3) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1380(line=44, offs=5) -- 1588(line=53, offs=8)
+*/
+/*
+local: dfact_34$0(level=0)
+global: dfact_34$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+dfact_34(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret70, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref79, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp80, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref81, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1380(line=44, offs=5) -- 1588(line=53, offs=8)
+*/
+ATSINSflab(__patsflab_dfact_34):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1426(line=45, offs=3) -- 1588(line=53, offs=8)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1443(line=46, offs=7) -- 1444(line=46, offs=8)
+*/
+ATSINSlab(__atstmplab12):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1401(line=44, offs=26) -- 1402(line=44, offs=27)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab14) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1444(line=46, offs=8) -- 1444(line=46, offs=8)
+*/
+ATSINSlab(__atstmplab13):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1448(line=46, offs=12) -- 1461(line=46, offs=25)
+*/
+ATSINSmove(tmpret70, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__8(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1468(line=47, offs=7) -- 1469(line=47, offs=8)
+*/
+ATSINSlab(__atstmplab14):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1401(line=44, offs=26) -- 1402(line=44, offs=27)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab16) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1469(line=47, offs=8) -- 1469(line=47, offs=8)
+*/
+ATSINSlab(__atstmplab15):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1473(line=47, offs=12) -- 1486(line=47, offs=25)
+*/
+ATSINSmove(tmpret70, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__9(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1494(line=48, offs=8) -- 1494(line=48, offs=8)
+*/
+ATSINSlab(__atstmplab16):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1499(line=48, offs=13) -- 1588(line=53, offs=8)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1513(line=49, offs=11) -- 1514(line=49, offs=12)
+*/
+/*
+ATSINStmpdec(tmpref79) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1523(line=49, offs=21) -- 1528(line=49, offs=26)
+*/
+ATSINSmove(tmp80, atspre_g1int_sub_int(arg0, ATSPMVi0nt(2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1517(line=49, offs=15) -- 1529(line=49, offs=27)
+*/
+ATSINSmove(tmpref79, dfact_34(tmp80)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1540(line=50, offs=11) -- 1541(line=50, offs=12)
+*/
+/*
+ATSINStmpdec(tmpref81) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1544(line=50, offs=15) -- 1565(line=50, offs=36)
+*/
+ATSINSmove(tmpref81, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__4(tmpref79, arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1579(line=52, offs=7) -- 1580(line=52, offs=8)
+*/
+ATSINSmove(tmpret70, tmpref81) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1499(line=48, offs=13) -- 1588(line=53, offs=8)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret70) ;
+} /* end of [dfact_34] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$8(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__8(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__8, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__8, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__8) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__8, ATSLIB_056_prelude__ptr_alloc__17__8()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__8, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__8, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__8, tmp30__8) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__8) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__8] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$8(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__8()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__8, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__8, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__8) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__8] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$9(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__9(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__9, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__9, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__9) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__9, ATSLIB_056_prelude__ptr_alloc__17__9()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__9, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__9, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__9, tmp30__9) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__9) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__9] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$9(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__9()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__9, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__9, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__9) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__9] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7394(line=413, offs=3) -- 7461(line=418, offs=2)
+*/
+/*
+local: 
+global: mul_intinf0_int$8$4(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__4(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret13__4, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp14__4) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7376(line=412, offs=1) -- 7461(line=418, offs=2)
+*/
+ATSINSflab(__patsflab_mul_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7427(line=416, offs=10) -- 7456(line=416, offs=39)
+*/
+ATSINSmove_void(tmp14__4, atscntrb_gmp_mpz_mul2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7404(line=413, offs=13) -- 7405(line=413, offs=14)
+*/
+ATSINSmove(tmpret13__4, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret13__4) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__4] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1651(line=56, offs=4) -- 1858(line=64, offs=6)
+*/
+/*
+local: fact_28$0(level=0)
+global: fact_28$0(level=0), permutations_40$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+permutations_40(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret84, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref85, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref86, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp87, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref88, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp93) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1651(line=56, offs=4) -- 1858(line=64, offs=6)
+*/
+ATSINSflab(__patsflab_permutations_40):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1729(line=57, offs=3) -- 1858(line=64, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1741(line=58, offs=9) -- 1742(line=58, offs=10)
+*/
+/*
+ATSINStmpdec(tmpref85) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1745(line=58, offs=13) -- 1751(line=58, offs=19)
+*/
+ATSINSmove(tmpref85, fact_28(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1761(line=59, offs=9) -- 1762(line=59, offs=10)
+*/
+/*
+ATSINStmpdec(tmpref86) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1770(line=59, offs=18) -- 1775(line=59, offs=23)
+*/
+ATSINSmove(tmp87, atspre_g1int_sub_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1765(line=59, offs=13) -- 1776(line=59, offs=24)
+*/
+ATSINSmove(tmpref86, fact_28(tmp87)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1785(line=60, offs=9) -- 1786(line=60, offs=10)
+*/
+/*
+ATSINStmpdec(tmpref88) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1789(line=60, offs=13) -- 1814(line=60, offs=38)
+*/
+ATSINSmove(tmpref88, ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__1(tmpref85, ATSPMVrefarg0(tmpref86))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1827(line=61, offs=13) -- 1840(line=61, offs=26)
+*/
+ATSINSmove_void(tmp93, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__2(tmpref86)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1851(line=63, offs=5) -- 1852(line=63, offs=6)
+*/
+ATSINSmove(tmpret84, tmpref88) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1729(line=57, offs=3) -- 1858(line=64, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret84) ;
+} /* end of [permutations_40] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9009(line=513, offs=3) -- 9083(line=518, offs=2)
+*/
+/*
+local: 
+global: div_intinf0_intinf1$41$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = 
+tmparg = 
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41(atstkind_type(atstype_ptrk) arg0, atsrefarg0_type(atstkind_type(atstype_ptrk)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret89, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp90) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 8987(line=512, offs=1) -- 9083(line=518, offs=2)
+*/
+ATSINSflab(__patsflab_div_intinf0_intinf1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9042(line=516, offs=10) -- 9078(line=516, offs=46)
+*/
+ATSINSmove_void(tmp90, atscntrb_gmp_mpz_tdiv2_q_mpz(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), ATSPMVrefarg1(ATSSELrecsin(arg1, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9019(line=513, offs=13) -- 9020(line=513, offs=14)
+*/
+ATSINSmove(tmpret89, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret89) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9009(line=513, offs=3) -- 9083(line=518, offs=2)
+*/
+/*
+local: 
+global: div_intinf0_intinf1$41$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__1(atstkind_type(atstype_ptrk) arg0, atsrefarg0_type(atstkind_type(atstype_ptrk)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret89__1, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp90__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 8987(line=512, offs=1) -- 9083(line=518, offs=2)
+*/
+ATSINSflab(__patsflab_div_intinf0_intinf1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9042(line=516, offs=10) -- 9078(line=516, offs=46)
+*/
+ATSINSmove_void(tmp90__1, atscntrb_gmp_mpz_tdiv2_q_mpz(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), ATSPMVrefarg1(ATSSELrecsin(arg1, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9019(line=513, offs=13) -- 9020(line=513, offs=14)
+*/
+ATSINSmove(tmpret89__1, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret89__1) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2888(line=119, offs=12) -- 2987(line=122, offs=4)
+*/
+/*
+local: 
+global: intinf_free$12$2(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__2(atstkind_type(atstype_ptrk) arg0)
+{
+/* tmpvardeclst(beg) */
+// ATStmpdec_void(tmpret22__2) ;
+// ATStmpdec_void(tmp23__2) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2877(line=119, offs=1) -- 2987(line=122, offs=4)
+*/
+ATSINSflab(__patsflab_intinf_free):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/* (*nothing*) */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2936(line=121, offs=12) -- 2955(line=121, offs=31)
+*/
+ATSINSmove_void(tmp23__2, atscntrb_gmp_mpz_clear(ATSPMVrefarg1(arg0))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2959(line=121, offs=35) -- 2983(line=121, offs=59)
+*/
+ATSINSmove_void(tmpret22__2, atspre_ptr_free(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn_void(tmpret22__2) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1910(line=67, offs=4) -- 2527(line=90, offs=6)
+*/
+/*
+local: fact_28$0(level=0)
+global: fact_28$0(level=0), catalan_44$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+catalan_44(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret96, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref117, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref118, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref119, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp122) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1910(line=67, offs=4) -- 2527(line=90, offs=6)
+*/
+ATSINSflab(__patsflab_catalan_44):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1951(line=68, offs=3) -- 2527(line=90, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2264(line=79, offs=5) -- 2521(line=89, offs=10)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2283(line=80, offs=9) -- 2284(line=80, offs=10)
+*/
+ATSINSlab(__atstmplab20):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1926(line=67, offs=20) -- 1927(line=67, offs=21)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab22) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2284(line=80, offs=10) -- 2284(line=80, offs=10)
+*/
+ATSINSlab(__atstmplab21):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2288(line=80, offs=14) -- 2301(line=80, offs=27)
+*/
+ATSINSmove(tmpret96, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__11(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2310(line=81, offs=9) -- 2311(line=81, offs=10)
+*/
+ATSINSlab(__atstmplab22):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1926(line=67, offs=20) -- 1927(line=67, offs=21)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab24) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2311(line=81, offs=10) -- 2311(line=81, offs=10)
+*/
+ATSINSlab(__atstmplab23):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2315(line=81, offs=14) -- 2328(line=81, offs=27)
+*/
+ATSINSmove(tmpret96, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__12(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2338(line=82, offs=10) -- 2338(line=82, offs=10)
+*/
+ATSINSlab(__atstmplab24):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2343(line=82, offs=15) -- 2521(line=89, offs=10)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2359(line=83, offs=13) -- 2360(line=83, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref117) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2363(line=83, offs=17) -- 2379(line=83, offs=33)
+*/
+ATSINSmove(tmpref117, numerator_loop_45(arg0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2393(line=84, offs=13) -- 2394(line=84, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref118) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2397(line=84, offs=17) -- 2403(line=84, offs=23)
+*/
+ATSINSmove(tmpref118, fact_28(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2417(line=85, offs=13) -- 2418(line=85, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref119) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2421(line=85, offs=17) -- 2446(line=85, offs=42)
+*/
+ATSINSmove(tmpref119, ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__2(tmpref117, ATSPMVrefarg0(tmpref118))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2463(line=86, offs=17) -- 2476(line=86, offs=30)
+*/
+ATSINSmove_void(tmp122, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__3(tmpref118)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2495(line=88, offs=9) -- 2510(line=88, offs=24)
+*/
+ATSINSmove(tmpret96, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref119)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2343(line=82, offs=15) -- 2521(line=89, offs=10)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1951(line=68, offs=3) -- 2527(line=90, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret96) ;
+} /* end of [catalan_44] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1963(line=69, offs=9) -- 2254(line=77, offs=12)
+*/
+/*
+local: numerator_loop_45$0(level=1)
+global: numerator_loop_45$0(level=1)
+local: n$5100(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: n$5100(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+numerator_loop_45(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret97, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp102, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref103, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp104, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref105, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp108, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 1963(line=69, offs=9) -- 2254(line=77, offs=12)
+*/
+ATSINSflab(__patsflab_numerator_loop_45):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2057(line=70, offs=7) -- 2254(line=77, offs=12)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2078(line=71, offs=11) -- 2079(line=71, offs=12)
+*/
+ATSINSlab(__atstmplab17):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2005(line=69, offs=51) -- 2006(line=69, offs=52)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(2))) { ATSINSgoto(__atstmplab19) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2079(line=71, offs=12) -- 2079(line=71, offs=12)
+*/
+ATSINSlab(__atstmplab18):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2083(line=71, offs=16) -- 2100(line=71, offs=33)
+*/
+ATSINSmove(tmp102, atspre_g1int_add_int(env0, ATSPMVi0nt(2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2083(line=71, offs=16) -- 2100(line=71, offs=33)
+*/
+ATSINSmove(tmpret97, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__10(tmp102)) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2112(line=72, offs=12) -- 2112(line=72, offs=12)
+*/
+ATSINSlab(__atstmplab19):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2117(line=72, offs=17) -- 2254(line=77, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2135(line=73, offs=15) -- 2136(line=73, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref103) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2154(line=73, offs=34) -- 2159(line=73, offs=39)
+*/
+ATSINSmove(tmp104, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2139(line=73, offs=19) -- 2160(line=73, offs=40)
+*/
+ATSINSmove(tmpref103, numerator_loop_45(env0, tmp104)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2175(line=74, offs=15) -- 2176(line=74, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref105) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2198(line=74, offs=38) -- 2203(line=74, offs=43)
+*/
+ATSINSmove(tmp108, atspre_g1int_add_int(env0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2179(line=74, offs=19) -- 2204(line=74, offs=44)
+*/
+ATSINSmove(tmpref105, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__5(tmpref103, tmp108)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2226(line=76, offs=11) -- 2241(line=76, offs=26)
+*/
+ATSINSmove(tmpret97, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref105)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2117(line=72, offs=17) -- 2254(line=77, offs=12)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret97) ;
+} /* end of [numerator_loop_45] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$10(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__10(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__10, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__10, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__10) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__10, ATSLIB_056_prelude__ptr_alloc__17__10()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__10, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__10, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__10, tmp30__10) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__10) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__10] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$10(level=3)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__10()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__10, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__10, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__10) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__10] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7394(line=413, offs=3) -- 7461(line=418, offs=2)
+*/
+/*
+local: 
+global: mul_intinf0_int$8$5(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__5(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret13__5, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp14__5) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7376(line=412, offs=1) -- 7461(line=418, offs=2)
+*/
+ATSINSflab(__patsflab_mul_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7427(line=416, offs=10) -- 7456(line=416, offs=39)
+*/
+ATSINSmove_void(tmp14__5, atscntrb_gmp_mpz_mul2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7404(line=413, offs=13) -- 7405(line=413, offs=14)
+*/
+ATSINSmove(tmpret13__5, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret13__5) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__5] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$11(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__11(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__11, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__11, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__11) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__11, ATSLIB_056_prelude__ptr_alloc__17__11()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__11, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__11, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__11, tmp30__11) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__11) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__11] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$11(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__11()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__11, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__11, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__11) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__11] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$12(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__12(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__12, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__12, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__12) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__12, ATSLIB_056_prelude__ptr_alloc__17__12()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__12, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__12, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__12, tmp30__12) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__12) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__12] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$12(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__12()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__12, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__12, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__12) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__12] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9009(line=513, offs=3) -- 9083(line=518, offs=2)
+*/
+/*
+local: 
+global: div_intinf0_intinf1$41$2(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__2(atstkind_type(atstype_ptrk) arg0, atsrefarg0_type(atstkind_type(atstype_ptrk)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret89__2, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp90__2) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 8987(line=512, offs=1) -- 9083(line=518, offs=2)
+*/
+ATSINSflab(__patsflab_div_intinf0_intinf1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9042(line=516, offs=10) -- 9078(line=516, offs=46)
+*/
+ATSINSmove_void(tmp90__2, atscntrb_gmp_mpz_tdiv2_q_mpz(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), ATSPMVrefarg1(ATSSELrecsin(arg1, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9019(line=513, offs=13) -- 9020(line=513, offs=14)
+*/
+ATSINSmove(tmpret89__2, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret89__2) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2888(line=119, offs=12) -- 2987(line=122, offs=4)
+*/
+/*
+local: 
+global: intinf_free$12$3(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__3(atstkind_type(atstype_ptrk) arg0)
+{
+/* tmpvardeclst(beg) */
+// ATStmpdec_void(tmpret22__3) ;
+// ATStmpdec_void(tmp23__3) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2877(line=119, offs=1) -- 2987(line=122, offs=4)
+*/
+ATSINSflab(__patsflab_intinf_free):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/* (*nothing*) */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2936(line=121, offs=12) -- 2955(line=121, offs=31)
+*/
+ATSINSmove_void(tmp23__3, atscntrb_gmp_mpz_clear(ATSPMVrefarg1(arg0))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2959(line=121, offs=35) -- 2983(line=121, offs=59)
+*/
+ATSINSmove_void(tmpret22__3, atspre_ptr_free(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn_void(tmpret22__3) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2590(line=93, offs=4) -- 3292(line=117, offs=6)
+*/
+/*
+local: fact_28$0(level=0)
+global: fact_28$0(level=0), choose_55$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+choose_55(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret125, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref153, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref154, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref155, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp158) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2590(line=93, offs=4) -- 3292(line=117, offs=6)
+*/
+ATSINSflab(__patsflab_choose_55):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2662(line=94, offs=3) -- 3292(line=117, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3029(line=106, offs=5) -- 3286(line=116, offs=10)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3048(line=107, offs=9) -- 3049(line=107, offs=10)
+*/
+ATSINSlab(__atstmplab30):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2637(line=93, offs=51) -- 2638(line=93, offs=52)
+*/
+ATSifnthen(ATSCKpat_int(arg1, ATSPMVint(0))) { ATSINSgoto(__atstmplab32) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3049(line=107, offs=10) -- 3049(line=107, offs=10)
+*/
+ATSINSlab(__atstmplab31):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3053(line=107, offs=14) -- 3066(line=107, offs=27)
+*/
+ATSINSmove(tmpret125, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__15(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3075(line=108, offs=9) -- 3076(line=108, offs=10)
+*/
+ATSINSlab(__atstmplab32):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2637(line=93, offs=51) -- 2638(line=93, offs=52)
+*/
+ATSifnthen(ATSCKpat_int(arg1, ATSPMVint(1))) { ATSINSgoto(__atstmplab34) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3076(line=108, offs=10) -- 3076(line=108, offs=10)
+*/
+ATSINSlab(__atstmplab33):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3080(line=108, offs=14) -- 3092(line=108, offs=26)
+*/
+ATSINSmove(tmpret125, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__16(arg0)) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3103(line=109, offs=10) -- 3103(line=109, offs=10)
+*/
+ATSINSlab(__atstmplab34):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3108(line=109, offs=15) -- 3286(line=116, offs=10)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3124(line=110, offs=13) -- 3125(line=110, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref153) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3128(line=110, offs=17) -- 3144(line=110, offs=33)
+*/
+ATSINSmove(tmpref153, numerator_loop_56(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3158(line=111, offs=13) -- 3159(line=111, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref154) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3162(line=111, offs=17) -- 3168(line=111, offs=23)
+*/
+ATSINSmove(tmpref154, fact_28(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3182(line=112, offs=13) -- 3183(line=112, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref155) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3186(line=112, offs=17) -- 3211(line=112, offs=42)
+*/
+ATSINSmove(tmpref155, ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__3(tmpref153, ATSPMVrefarg0(tmpref154))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3228(line=113, offs=17) -- 3241(line=113, offs=30)
+*/
+ATSINSmove_void(tmp158, ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4(tmpref154)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3260(line=115, offs=9) -- 3275(line=115, offs=24)
+*/
+ATSINSmove(tmpret125, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref155)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 3108(line=109, offs=15) -- 3286(line=116, offs=10)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2662(line=94, offs=3) -- 3292(line=117, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret125) ;
+} /* end of [choose_55] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2674(line=95, offs=9) -- 3019(line=104, offs=12)
+*/
+/*
+local: numerator_loop_56$0(level=1)
+global: numerator_loop_56$0(level=1)
+local: n$5111(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: n$5111(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+numerator_loop_56(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret126, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp131, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp136, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp137, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref138, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp139, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref140, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp143, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp144, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2674(line=95, offs=9) -- 3019(line=104, offs=12)
+*/
+ATSINSflab(__patsflab_numerator_loop_56):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2768(line=96, offs=7) -- 3019(line=104, offs=12)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2789(line=97, offs=11) -- 2790(line=97, offs=12)
+*/
+ATSINSlab(__atstmplab25):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2716(line=95, offs=51) -- 2717(line=95, offs=52)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab27) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2790(line=97, offs=12) -- 2790(line=97, offs=12)
+*/
+ATSINSlab(__atstmplab26):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2794(line=97, offs=16) -- 2806(line=97, offs=28)
+*/
+ATSINSmove(tmpret126, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__13(env0)) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2818(line=98, offs=11) -- 2819(line=98, offs=12)
+*/
+ATSINSlab(__atstmplab27):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2716(line=95, offs=51) -- 2717(line=95, offs=52)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(2))) { ATSINSgoto(__atstmplab29) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2819(line=98, offs=12) -- 2819(line=98, offs=12)
+*/
+ATSINSlab(__atstmplab28):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2837(line=98, offs=30) -- 2860(line=98, offs=53)
+*/
+ATSINSmove(tmp137, atspre_g1int_sub_int(env0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2837(line=98, offs=30) -- 2860(line=98, offs=53)
+*/
+ATSINSmove(tmp136, atspre_g1int_mul_int(tmp137, env0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2837(line=98, offs=30) -- 2860(line=98, offs=53)
+*/
+ATSINSmove(tmp131, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__14(tmp136)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2823(line=98, offs=16) -- 2861(line=98, offs=54)
+*/
+ATSINSmove(tmpret126, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmp131)) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2873(line=99, offs=12) -- 2873(line=99, offs=12)
+*/
+ATSINSlab(__atstmplab29):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2878(line=99, offs=17) -- 3019(line=104, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2896(line=100, offs=15) -- 2897(line=100, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref138) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2915(line=100, offs=34) -- 2920(line=100, offs=39)
+*/
+ATSINSmove(tmp139, atspre_g1int_sub_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2900(line=100, offs=19) -- 2921(line=100, offs=40)
+*/
+ATSINSmove(tmpref138, numerator_loop_56(env0, tmp139)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2936(line=101, offs=15) -- 2937(line=101, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref140) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2959(line=101, offs=38) -- 2964(line=101, offs=43)
+*/
+ATSINSmove(tmp144, atspre_g1int_add_int(env0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2959(line=101, offs=38) -- 2968(line=101, offs=47)
+*/
+ATSINSmove(tmp143, atspre_g1int_sub_int(tmp144, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2940(line=101, offs=19) -- 2969(line=101, offs=48)
+*/
+ATSINSmove(tmpref140, ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__6(tmpref138, tmp143)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2991(line=103, offs=11) -- 3006(line=103, offs=26)
+*/
+ATSINSmove(tmpret126, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref140)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/combinatorics-internal.dats: 2878(line=99, offs=17) -- 3019(line=104, offs=12)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret126) ;
+} /* end of [numerator_loop_56] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$13(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__13(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__13, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__13, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__13) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__13, ATSLIB_056_prelude__ptr_alloc__17__13()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__13, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__13, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__13, tmp30__13) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__13) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__13] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$13(level=3)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__13()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__13, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__13, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__13) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__13] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$14(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__14(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__14, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__14, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__14) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__14, ATSLIB_056_prelude__ptr_alloc__17__14()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__14, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__14, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__14, tmp30__14) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__14) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__14] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$14(level=3)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__14()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__14, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__14, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__14) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__14] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7394(line=413, offs=3) -- 7461(line=418, offs=2)
+*/
+/*
+local: 
+global: mul_intinf0_int$8$6(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__6(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret13__6, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp14__6) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7376(line=412, offs=1) -- 7461(line=418, offs=2)
+*/
+ATSINSflab(__patsflab_mul_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7427(line=416, offs=10) -- 7456(line=416, offs=39)
+*/
+ATSINSmove_void(tmp14__6, atscntrb_gmp_mpz_mul2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7404(line=413, offs=13) -- 7405(line=413, offs=14)
+*/
+ATSINSmove(tmpret13__6, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 7403(line=413, offs=12) -- 7461(line=418, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret13__6) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__mul_intinf0_int__8__6] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$15(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__15(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__15, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__15, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__15) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__15, ATSLIB_056_prelude__ptr_alloc__17__15()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__15, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__15, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__15, tmp30__15) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__15) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__15] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$15(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__15()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__15, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__15, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__15) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__15] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$15$16(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__16(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret29__16, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp30__16, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp31__16) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp30__16, ATSLIB_056_prelude__ptr_alloc__17__16()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp31__16, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp30__16, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret29__16, tmp30__16) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret29__16) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__15__16] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$17$16(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__17__16()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret35__16, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret35__16, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret35__16) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__17__16] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9009(line=513, offs=3) -- 9083(line=518, offs=2)
+*/
+/*
+local: 
+global: div_intinf0_intinf1$41$3(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__3(atstkind_type(atstype_ptrk) arg0, atsrefarg0_type(atstkind_type(atstype_ptrk)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret89__3, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp90__3) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 8987(line=512, offs=1) -- 9083(line=518, offs=2)
+*/
+ATSINSflab(__patsflab_div_intinf0_intinf1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9042(line=516, offs=10) -- 9078(line=516, offs=46)
+*/
+ATSINSmove_void(tmp90__3, atscntrb_gmp_mpz_tdiv2_q_mpz(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), ATSPMVrefarg1(ATSSELrecsin(arg1, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9019(line=513, offs=13) -- 9020(line=513, offs=14)
+*/
+ATSINSmove(tmpret89__3, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 9018(line=513, offs=12) -- 9083(line=518, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret89__3) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__div_intinf0_intinf1__41__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2888(line=119, offs=12) -- 2987(line=122, offs=4)
+*/
+/*
+local: 
+global: intinf_free$12$4(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atsvoid_t0ype
+ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4(atstkind_type(atstype_ptrk) arg0)
+{
+/* tmpvardeclst(beg) */
+// ATStmpdec_void(tmpret22__4) ;
+// ATStmpdec_void(tmp23__4) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2877(line=119, offs=1) -- 2987(line=122, offs=4)
+*/
+ATSINSflab(__patsflab_intinf_free):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/* (*nothing*) */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2936(line=121, offs=12) -- 2955(line=121, offs=31)
+*/
+ATSINSmove_void(tmp23__4, atscntrb_gmp_mpz_clear(ATSPMVrefarg1(arg0))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2959(line=121, offs=35) -- 2983(line=121, offs=59)
+*/
+ATSINSmove_void(tmpret22__4, atspre_ptr_free(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2894(line=119, offs=18) -- 2987(line=122, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn_void(tmpret22__4) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_free__12__4] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 586(line=30, offs=22) -- 609(line=31, offs=15)
+*/
+/*
+local: choose_55$0(level=0)
+global: fact_28$0(level=0), choose_55$0(level=0), choose_ats$69$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_type(atstype_ptrk)
+choose_ats(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret161, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 575(line=30, offs=11) -- 609(line=31, offs=15)
+*/
+ATSINSflab(__patsflab_choose_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 597(line=31, offs=3) -- 609(line=31, offs=15)
+*/
+ATSINSmove(tmpret161, choose_55(arg0, arg1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret161) ;
+} /* end of [choose_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 638(line=33, offs=28) -- 661(line=34, offs=15)
+*/
+/*
+local: choose_55$0(level=0)
+global: fact_28$0(level=0), choose_55$0(level=0), permutations_ats$70$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_type(atstype_ptrk)
+permutations_ats(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret162, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 621(line=33, offs=11) -- 661(line=34, offs=15)
+*/
+ATSINSflab(__patsflab_permutations_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 649(line=34, offs=3) -- 661(line=34, offs=15)
+*/
+ATSINSmove(tmpret162, choose_55(arg0, arg1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret162) ;
+} /* end of [permutations_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 694(line=36, offs=32) -- 709(line=37, offs=10)
+*/
+/*
+local: dfact_34$0(level=0)
+global: dfact_34$0(level=0), double_factorial_ats$71$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_type(atstype_ptrk)
+double_factorial_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret163, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 673(line=36, offs=11) -- 710(line=37, offs=11)
+*/
+ATSINSflab(__patsflab_double_factorial_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 702(line=37, offs=3) -- 709(line=37, offs=10)
+*/
+ATSINSmove(tmpret163, dfact_34(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret163) ;
+} /* end of [double_factorial_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 736(line=39, offs=25) -- 750(line=40, offs=9)
+*/
+/*
+local: fact_28$0(level=0)
+global: fact_28$0(level=0), factorial_ats$72$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_type(atstype_ptrk)
+factorial_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret164, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 722(line=39, offs=11) -- 751(line=40, offs=10)
+*/
+ATSINSflab(__patsflab_factorial_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 744(line=40, offs=3) -- 750(line=40, offs=9)
+*/
+ATSINSmove(tmpret164, fact_28(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret164) ;
+} /* end of [factorial_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 775(line=42, offs=23) -- 792(line=43, offs=12)
+*/
+/*
+local: catalan_44$0(level=0)
+global: fact_28$0(level=0), catalan_44$0(level=0), catalan_ats$73$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_type(atstype_ptrk)
+catalan_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret165, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 763(line=42, offs=11) -- 793(line=43, offs=13)
+*/
+ATSINSflab(__patsflab_catalan_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 783(line=43, offs=3) -- 792(line=43, offs=12)
+*/
+ATSINSmove(tmpret165, catalan_44(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret165) ;
+} /* end of [catalan_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 822(line=45, offs=28) -- 844(line=46, offs=17)
+*/
+/*
+local: derangements_0$0(level=0)
+global: derangements_0$0(level=0), derangements_ats$74$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_type(atstype_ptrk)
+derangements_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret166, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 805(line=45, offs=11) -- 845(line=46, offs=18)
+*/
+ATSINSflab(__patsflab_derangements_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/combinatorics.dats: 830(line=46, offs=3) -- 844(line=46, offs=17)
+*/
+ATSINSmove(tmpret166, derangements_0(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret166) ;
+} /* end of [derangements_ats] */
+
+/*
+** for initialization(dynloading)
+*/
+ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag) ;
+ATSextern()
+atsvoid_t0ype
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynload()
+{
+ATSfunbody_beg()
+ATSdynload(/*void*/)
+ATSdynloadflag_sta(
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag
+) ;
+ATSif(
+ATSCKiseqz(
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag
+)
+) ATSthen() {
+ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_combinatorics_056_dats__dynloadflag) ;
+/*
+dynexnlst-initize(beg)
+*/
+/*
+dynexnlst-initize(end)
+*/
+/* local */
+/* in of [local] */
+/* local */
+/* in of [local] */
+/* end of [local] */
+/* end of [local] */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn_void(tmpret_void) ;
+} /* end of [*_dynload] */
+
+/* ****** ****** */
+
+/* end-of-compilation-unit */
diff --git a/cbits/number-theory.c b/cbits/number-theory.c
new file mode 100644
--- /dev/null
+++ b/cbits/number-theory.c
@@ -0,0 +1,9623 @@
+/*
+**
+** The C code is generated by [ATS/Postiats-0-3-10]
+** The starting compilation time is: 2018-4-13:  1h:38m
+**
+*/
+
+/*
+** include runtime header files
+*/
+#ifndef _ATS_CCOMP_HEADER_NONE_
+#include "pats_ccomp_config.h"
+#include "pats_ccomp_basics.h"
+#include "pats_ccomp_typedefs.h"
+#include "pats_ccomp_instrset.h"
+#include "pats_ccomp_memalloc.h"
+#ifndef _ATS_CCOMP_EXCEPTION_NONE_
+#include "pats_ccomp_memalloca.h"
+#include "pats_ccomp_exception.h"
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+#endif /* _ATS_CCOMP_HEADER_NONE_ */
+
+
+/*
+** include prelude cats files
+*/
+#ifndef _ATS_CCOMP_PRELUDE_NONE_
+//
+#include "prelude/CATS/basics.cats"
+#include "prelude/CATS/integer.cats"
+#include "prelude/CATS/pointer.cats"
+#include "prelude/CATS/integer_long.cats"
+#include "prelude/CATS/integer_size.cats"
+#include "prelude/CATS/integer_short.cats"
+#include "prelude/CATS/bool.cats"
+#include "prelude/CATS/char.cats"
+#include "prelude/CATS/float.cats"
+#include "prelude/CATS/integer_ptr.cats"
+#include "prelude/CATS/integer_fixed.cats"
+#include "prelude/CATS/memory.cats"
+#include "prelude/CATS/string.cats"
+#include "prelude/CATS/strptr.cats"
+//
+#include "prelude/CATS/fprintf.cats"
+//
+#include "prelude/CATS/filebas.cats"
+//
+#include "prelude/CATS/list.cats"
+#include "prelude/CATS/option.cats"
+#include "prelude/CATS/array.cats"
+#include "prelude/CATS/arrayptr.cats"
+#include "prelude/CATS/arrayref.cats"
+#include "prelude/CATS/matrix.cats"
+#include "prelude/CATS/matrixptr.cats"
+//
+#endif /* _ATS_CCOMP_PRELUDE_NONE_ */
+/*
+** for user-supplied prelude
+*/
+#ifdef _ATS_CCOMP_PRELUDE_USER_
+//
+#include _ATS_CCOMP_PRELUDE_USER_
+//
+#endif /* _ATS_CCOMP_PRELUDE_USER_ */
+/*
+** for user2-supplied prelude
+*/
+#ifdef _ATS_CCOMP_PRELUDE_USER2_
+//
+#include _ATS_CCOMP_PRELUDE_USER2_
+//
+#endif /* _ATS_CCOMP_PRELUDE_USER2_ */
+
+/*
+staload-prologues(beg)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/basics.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 1533(line=44, offs=1) -- 1572(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_long.dats: 1602(line=49, offs=1) -- 1641(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_size.dats: 1597(line=49, offs=1) -- 1636(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_short.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/char.dats: 1610(line=48, offs=1) -- 1649(line=48, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/float.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/string.dats: 1631(line=50, offs=1) -- 1670(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/strptr.dats: 1629(line=50, offs=1) -- 1668(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/strptr.dats: 1691(line=54, offs=1) -- 1738(line=54, offs=48)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_ptr.dats: 1601(line=49, offs=1) -- 1640(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_fixed.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/memory.dats: 1410(line=38, offs=1) -- 1449(line=39, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1607(line=49, offs=1) -- 1646(line=50, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1669(line=54, offs=1) -- 1715(line=55, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1738(line=59, offs=1) -- 1783(line=60, offs=38)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/stdio.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1865(line=66, offs=1) -- 1912(line=66, offs=48)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/stat.sats: 1390(line=36, offs=1) -- 1440(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/stat.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/stat.sats: 1756(line=58, offs=1) -- 1805(line=60, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 15937(line=927, offs=1) -- 15974(line=928, offs=30)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/stdio.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list.dats: 1529(line=44, offs=1) -- 1568(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list.dats: 1569(line=46, offs=1) -- 1615(line=47, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list_vt.dats: 1538(line=44, offs=1) -- 1577(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list_vt.dats: 1578(line=46, offs=1) -- 1624(line=47, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/list_vt_mergesort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/list_vt_quicksort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/array.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/array_bsearch.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/array_quicksort.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/arrayptr.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/arrayref.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrix.dats: 1535(line=44, offs=1) -- 1574(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrixptr.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrixref.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/tostring.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/checkast.dats: 1531(line=44, offs=1) -- 1570(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1660(line=37, offs=1) -- 1700(line=38, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1727(line=42, offs=1) -- 1759(line=42, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1833(line=49, offs=1) -- 1867(line=49, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1868(line=50, offs=1) -- 1908(line=50, offs=41)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1656(line=37, offs=1) -- 1696(line=39, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/mydepies.hats: 208(line=18, offs=1) -- 248(line=19, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1813(line=49, offs=1) -- 1845(line=49, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1846(line=50, offs=1) -- 1881(line=50, offs=36)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1657(line=37, offs=1) -- 1689(line=37, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1690(line=38, offs=1) -- 1724(line=38, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1660(line=37, offs=1) -- 1700(line=38, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1727(line=42, offs=1) -- 1759(line=42, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1833(line=49, offs=1) -- 1867(line=49, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1868(line=50, offs=1) -- 1908(line=50, offs=41)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1656(line=37, offs=1) -- 1696(line=39, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/mydepies.hats: 208(line=18, offs=1) -- 248(line=19, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1813(line=49, offs=1) -- 1845(line=49, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1846(line=50, offs=1) -- 1881(line=50, offs=36)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1657(line=37, offs=1) -- 1689(line=37, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1690(line=38, offs=1) -- 1724(line=38, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/math.sats: 1380(line=35, offs=1) -- 1426(line=38, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/math.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+staload-prologues(end)
+*/
+/*
+typedefs-for-tyrecs-and-tysums(beg)
+*/
+typedef
+ATSstruct {
+atstkind_t0ype(atstype_int) atslab__first ;
+atstkind_t0ype(atstype_int) atslab__second ;
+} postiats_tyrec_0 ;
+typedef
+ATSstruct {
+#if(0)
+int contag ;
+#endif
+atstkind_t0ype(atstype_int) atslab__0 ;
+atstkind_type(atstype_ptrk) atslab__1 ;
+} postiats_tysum_1 ;
+typedef
+ATSstruct {
+#if(0)
+int contag ;
+#endif
+atstyvar_type(a) atslab__0 ;
+atstkind_type(atstype_ptrk) atslab__1 ;
+} postiats_tysum_2 ;
+typedef
+ATSstruct {
+#if(0)
+int contag ;
+#endif
+atstyvar_type(a) atslab__0 ;
+atstkind_type(atstype_ptrk) atslab__1 ;
+} postiats_tysum_3 ;
+typedef
+ATSstruct {
+#if(0)
+int contag ;
+#endif
+atstyvar_type(a) atslab__0 ;
+atstkind_type(atstype_ptrk) atslab__1 ;
+} postiats_tysum_4 ;
+/*
+typedefs-for-tyrecs-and-tysums(end)
+*/
+/*
+dynconlst-declaration(beg)
+*/
+/*
+dynconlst-declaration(end)
+*/
+/*
+dyncstlst-declaration(beg)
+*/
+ATSdyncst_mac(atspre_ptr_alloc_tsz)
+ATSdyncst_mac(atspre_g0int2uint_int_uint)
+ATSdyncst_mac(atspre_g1int_add_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_init)
+ATSdyncst_mac(atscntrb_gmp_mpz_fib_uint)
+ATSdyncst_mac(atspre_g1int2int_int_int)
+ATSdyncst_mac(atspre_g1int_gt_int)
+ATSdyncst_mac(atspre_g1int_half_int)
+ATSdyncst_mac(atspre_g0int_mod_int)
+ATSdyncst_mac(atspre_g0int2int_int_int)
+ATSdyncst_mac(atspre_g0int_eq_int)
+ATSdyncst_mac(atspre_g0int_mul_int)
+ATSdyncst_mac(atspre_g0float2int_float_int)
+ATSdyncst_mac(atslib_libats_libc_sqrt_float)
+ATSdyncst_mac(atspre_g0int2float_int_float)
+ATSdyncst_mac(atspre_g1int_lt_int)
+ATSdyncst_mac(atspre_g1int_eq_int)
+ATSdyncst_mac(atspre_g0int_div_int)
+ATSdyncst_mac(atspre_g1int_gte_int)
+ATSdyncst_mac(atspre_g1int_neq_int)
+ATSdyncst_mac(atspre_g1int_div_int)
+ATSdyncst_mac(atspre_lazy_vt_free)
+ATSdyncst_mac(atspre_cloptr_free)
+ATSdyncst_mac(atspre_g1int_sub_int)
+ATSdyncst_mac(atspre_g0int_half_int)
+ATSdyncst_mac(atspre_g1int_mul_int)
+ATSdyncst_mac(atspre_g1int_neg_int)
+ATSdyncst_mac(atspre_g0int_add_int)
+ATSdyncst_mac(atspre_g0int_neq_int)
+ATSdyncst_mac(atspre_g0int_sub_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_add2_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_init_set_int)
+/*
+dyncstlst-declaration(end)
+*/
+/*
+dynvalist-implementation(beg)
+*/
+/*
+dynvalist-implementation(end)
+*/
+/*
+exnconlst-declaration(beg)
+*/
+#ifndef _ATS_CCOMP_EXCEPTION_NONE_
+ATSextern()
+atsvoid_t0ype
+the_atsexncon_initize
+(
+  atstype_exnconptr d2c, atstype_string exnmsg
+) ;
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+/*
+exnconlst-declaration(end)
+*/
+/*
+extypelst-declaration(beg)
+*/
+/*
+extypelst-declaration(end)
+*/
+/*
+assumelst-declaration(beg)
+*/
+#ifndef _ATS_CCOMP_ASSUME_CHECK_NONE_
+#endif // #ifndef(_ATS_CCOMP_ASSUME_CHECK_NONE_)
+/*
+assumelst-declaration(end)
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+witness_0(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+fib_gmp_1(atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2() ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2__1() ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+exp_6(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+sqrt_int_18(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_prime_21(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+loop_22(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__2(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__3(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+divides_31(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__4(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+gcd_33(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__2(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+lcm_35(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_coprime_37(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__5(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+divisors_39(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_40(atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_41(atstype_bool) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_42(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__6(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g1int_int__47(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g1int_int__47__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_51(atstkind_t0ype(atstype_int), atstkind_type(atstype_ptrk), atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_52(atstkind_type(atstype_ptrk), atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_53(atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_54(atstkind_t0ype(atstype_int), atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_55(atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_56(atstype_bool) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__7(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_58(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_type(atstype_ptrk), atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_59(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_type(atstype_ptrk), atstype_bool) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+prime_divisors_60(atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__stream_vt_filter_cloptr__61(atstkind_type(atstype_ptrk), atstype_cloptr) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+#if(0)
+ATSstatic()
+atstkind_type(atstype_ptrk)
+auxmain_62__62(atstkind_type(atstype_ptrk), atstype_cloptr) ;
+#endif // end of [TEMPLATE]
+
+#if(0)
+ATSstatic()
+atstype_boxed
+auxmain_con_63__63(atstkind_type(atstype_ptrk), atstype_cloptr) ;
+#endif // end of [TEMPLATE]
+
+#if(0)
+ATSstatic()
+atstype_boxed
+__patsfun_64__64(atstkind_type(atstype_ptrk), atstype_cloptr, atstype_bool) ;
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__stream_vt_filter_cloptr__61__1(atstkind_type(atstype_ptrk), atstype_cloptr) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+auxmain_62__62__1(atstkind_type(atstype_ptrk), atstype_cloptr) ;
+
+ATSstatic()
+atstype_boxed
+auxmain_con_63__63__1(atstkind_type(atstype_ptrk), atstype_cloptr) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_64__64__1(atstkind_type(atstype_ptrk), atstype_cloptr, atstype_bool) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+__patsfun_69(atsrefarg1_type(atstkind_t0ype(atstype_int))) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+div_gt_zero_70(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+exp_mod_prime_71(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__3(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__8(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+jacobi_77(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+legendre_78(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__9(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__10(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+get_multiplicity_82(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_83(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__4(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__11(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+count_divisors_86(atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_int)
+ATSLIB_056_prelude__stream_vt_length__87(atstkind_type(atstype_ptrk)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+#if(0)
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_88__88(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+ATSLIB_056_prelude__stream_vt_length__87__1(atstkind_type(atstype_ptrk)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_88__88__1(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+sum_divisors_91(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_92(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__2(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__12(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g1int_int__47__2(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__13(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_perfect_98(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__14(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+rip_100(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g0int_int__101(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g0int_int__101__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__5(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__2(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+prime_factors_106(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_107(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__3(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_109(atstkind_t0ype(atstype_int), atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_110(atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_111(atstype_bool) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__15(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__6(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_114(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_115(atstkind_t0ype(atstype_int), atstype_bool) ;
+
+ATSstatic()
+atstype_boxed
+__patsfun_116(atstype_bool) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+little_omega_117(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_118(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__4(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__16(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__7(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+totient_122(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+postiats_tyrec_0
+adjust_contents_123(postiats_tyrec_0, atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstyvar_type(res)
+ATSLIB_056_prelude__stream_vt_foldleft_cloptr__125(atstkind_type(atstype_ptrk), atstyvar_type(res), atstype_cloptr) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+#if(0)
+ATSstatic()
+atstyvar_type(res)
+loop_126__126(atstkind_type(atstype_ptrk), atstyvar_type(res), atstype_cloptr) ;
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+postiats_tyrec_0
+ATSLIB_056_prelude__stream_vt_foldleft_cloptr__125__1(atstkind_type(atstype_ptrk), postiats_tyrec_0, atstype_cloptr) ;
+
+ATSstatic()
+postiats_tyrec_0
+loop_126__126__1(atstkind_type(atstype_ptrk), postiats_tyrec_0, atstype_cloptr) ;
+
+ATSstatic()
+postiats_tyrec_0
+__patsfun_129(postiats_tyrec_0, atsrefarg1_type(atstkind_t0ype(atstype_int))) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+totient_sum_130(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_131(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__3(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__133(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__133__1(atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__135(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__135__1(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2__2() ;
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_int)
+sum_divisors_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_int)
+count_divisors_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_int)
+totient_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_int)
+little_omega_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+is_perfect_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_int)
+jacobi_ats(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+totient_sum_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+coprime_ats(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+ATSclosurerize_beg(__patsfun_40, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_40__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_40__cfun
+(
+__patsfun_40__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_40(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_40__closureinit
+(
+__patsfun_40__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_40__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_40__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_40__closureinit(ATS_MALLOC(sizeof(__patsfun_40__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_41, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_41__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_41__cfun
+(
+__patsfun_41__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_41(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_41__closureinit
+(
+__patsfun_41__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_41__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_41__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_41__closureinit(ATS_MALLOC(sizeof(__patsfun_41__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_51, (atstkind_t0ype(atstype_int), atstkind_type(atstype_ptrk)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_t0ype(atstype_int) env0 ;
+atstkind_type(atstype_ptrk) env1 ;
+} __patsfun_51__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_51__cfun
+(
+__patsfun_51__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_51(p_cenv->env0, p_cenv->env1, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_51__closureinit
+(
+__patsfun_51__closure_t0ype *p_cenv, atstkind_t0ype(atstype_int) env0, atstkind_type(atstype_ptrk) env1
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->env1 = env1 ;
+p_cenv->cfun = __patsfun_51__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_51__closurerize
+(
+atstkind_t0ype(atstype_int) env0, atstkind_type(atstype_ptrk) env1
+)
+{
+return __patsfun_51__closureinit(ATS_MALLOC(sizeof(__patsfun_51__closure_t0ype)), env0, env1) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_52, (atstkind_type(atstype_ptrk)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_type(atstype_ptrk) env0 ;
+} __patsfun_52__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_52__cfun
+(
+__patsfun_52__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_52(p_cenv->env0, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_52__closureinit
+(
+__patsfun_52__closure_t0ype *p_cenv, atstkind_type(atstype_ptrk) env0
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->cfun = __patsfun_52__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_52__closurerize
+(
+atstkind_type(atstype_ptrk) env0
+)
+{
+return __patsfun_52__closureinit(ATS_MALLOC(sizeof(__patsfun_52__closure_t0ype)), env0) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_53, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_53__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_53__cfun
+(
+__patsfun_53__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_53(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_53__closureinit
+(
+__patsfun_53__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_53__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_53__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_53__closureinit(ATS_MALLOC(sizeof(__patsfun_53__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_54, (atstkind_t0ype(atstype_int)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_t0ype(atstype_int) env0 ;
+} __patsfun_54__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_54__cfun
+(
+__patsfun_54__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_54(p_cenv->env0, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_54__closureinit
+(
+__patsfun_54__closure_t0ype *p_cenv, atstkind_t0ype(atstype_int) env0
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->cfun = __patsfun_54__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_54__closurerize
+(
+atstkind_t0ype(atstype_int) env0
+)
+{
+return __patsfun_54__closureinit(ATS_MALLOC(sizeof(__patsfun_54__closure_t0ype)), env0) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_55, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_55__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_55__cfun
+(
+__patsfun_55__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_55(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_55__closureinit
+(
+__patsfun_55__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_55__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_55__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_55__closureinit(ATS_MALLOC(sizeof(__patsfun_55__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_56, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_56__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_56__cfun
+(
+__patsfun_56__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_56(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_56__closureinit
+(
+__patsfun_56__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_56__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_56__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_56__closureinit(ATS_MALLOC(sizeof(__patsfun_56__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_58, (atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_type(atstype_ptrk)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_t0ype(atstype_int) env0 ;
+atstkind_t0ype(atstype_int) env1 ;
+atstkind_type(atstype_ptrk) env2 ;
+} __patsfun_58__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_58__cfun
+(
+__patsfun_58__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_58(p_cenv->env0, p_cenv->env1, p_cenv->env2, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_58__closureinit
+(
+__patsfun_58__closure_t0ype *p_cenv, atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstkind_type(atstype_ptrk) env2
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->env1 = env1 ;
+p_cenv->env2 = env2 ;
+p_cenv->cfun = __patsfun_58__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_58__closurerize
+(
+atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstkind_type(atstype_ptrk) env2
+)
+{
+return __patsfun_58__closureinit(ATS_MALLOC(sizeof(__patsfun_58__closure_t0ype)), env0, env1, env2) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_59, (atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_type(atstype_ptrk)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_t0ype(atstype_int) env0 ;
+atstkind_t0ype(atstype_int) env1 ;
+atstkind_type(atstype_ptrk) env2 ;
+} __patsfun_59__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_59__cfun
+(
+__patsfun_59__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_59(p_cenv->env0, p_cenv->env1, p_cenv->env2, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_59__closureinit
+(
+__patsfun_59__closure_t0ype *p_cenv, atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstkind_type(atstype_ptrk) env2
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->env1 = env1 ;
+p_cenv->env2 = env2 ;
+p_cenv->cfun = __patsfun_59__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_59__closurerize
+(
+atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstkind_type(atstype_ptrk) env2
+)
+{
+return __patsfun_59__closureinit(ATS_MALLOC(sizeof(__patsfun_59__closure_t0ype)), env0, env1, env2) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_64__64__1, (atstkind_type(atstype_ptrk), atstype_cloptr), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_type(atstype_ptrk) env0 ;
+atstype_cloptr env1 ;
+} __patsfun_64__64__1__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_64__64__1__cfun
+(
+__patsfun_64__64__1__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_64__64__1(p_cenv->env0, p_cenv->env1, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_64__64__1__closureinit
+(
+__patsfun_64__64__1__closure_t0ype *p_cenv, atstkind_type(atstype_ptrk) env0, atstype_cloptr env1
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->env1 = env1 ;
+p_cenv->cfun = __patsfun_64__64__1__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_64__64__1__closurerize
+(
+atstkind_type(atstype_ptrk) env0, atstype_cloptr env1
+)
+{
+return __patsfun_64__64__1__closureinit(ATS_MALLOC(sizeof(__patsfun_64__64__1__closure_t0ype)), env0, env1) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_69, (), (atsrefarg1_type(atstkind_t0ype(atstype_int))), atstkind_t0ype(atstype_bool))
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_69__closure_t0ype ;
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+__patsfun_69__cfun
+(
+__patsfun_69__closure_t0ype *p_cenv, atsrefarg1_type(atstkind_t0ype(atstype_int)) arg0
+)
+{
+ATSFCreturn(__patsfun_69(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_69__closureinit
+(
+__patsfun_69__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_69__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_69__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_69__closureinit(ATS_MALLOC(sizeof(__patsfun_69__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_109, (atstkind_t0ype(atstype_int)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_t0ype(atstype_int) env0 ;
+} __patsfun_109__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_109__cfun
+(
+__patsfun_109__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_109(p_cenv->env0, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_109__closureinit
+(
+__patsfun_109__closure_t0ype *p_cenv, atstkind_t0ype(atstype_int) env0
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->cfun = __patsfun_109__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_109__closurerize
+(
+atstkind_t0ype(atstype_int) env0
+)
+{
+return __patsfun_109__closureinit(ATS_MALLOC(sizeof(__patsfun_109__closure_t0ype)), env0) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_110, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_110__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_110__cfun
+(
+__patsfun_110__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_110(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_110__closureinit
+(
+__patsfun_110__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_110__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_110__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_110__closureinit(ATS_MALLOC(sizeof(__patsfun_110__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_111, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_111__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_111__cfun
+(
+__patsfun_111__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_111(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_111__closureinit
+(
+__patsfun_111__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_111__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_111__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_111__closureinit(ATS_MALLOC(sizeof(__patsfun_111__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_114, (atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_t0ype(atstype_int) env0 ;
+atstkind_t0ype(atstype_int) env1 ;
+} __patsfun_114__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_114__cfun
+(
+__patsfun_114__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_114(p_cenv->env0, p_cenv->env1, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_114__closureinit
+(
+__patsfun_114__closure_t0ype *p_cenv, atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->env1 = env1 ;
+p_cenv->cfun = __patsfun_114__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_114__closurerize
+(
+atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1
+)
+{
+return __patsfun_114__closureinit(ATS_MALLOC(sizeof(__patsfun_114__closure_t0ype)), env0, env1) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_115, (atstkind_t0ype(atstype_int)), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+atstkind_t0ype(atstype_int) env0 ;
+} __patsfun_115__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_115__cfun
+(
+__patsfun_115__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_115(p_cenv->env0, arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_115__closureinit
+(
+__patsfun_115__closure_t0ype *p_cenv, atstkind_t0ype(atstype_int) env0
+)
+{
+p_cenv->env0 = env0 ;
+p_cenv->cfun = __patsfun_115__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_115__closurerize
+(
+atstkind_t0ype(atstype_int) env0
+)
+{
+return __patsfun_115__closureinit(ATS_MALLOC(sizeof(__patsfun_115__closure_t0ype)), env0) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_116, (), (atstype_bool), atstype_boxed)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_116__closure_t0ype ;
+ATSstatic()
+atstype_boxed
+__patsfun_116__cfun
+(
+__patsfun_116__closure_t0ype *p_cenv, atstype_bool arg0
+)
+{
+ATSFCreturn(__patsfun_116(arg0)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_116__closureinit
+(
+__patsfun_116__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_116__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_116__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_116__closureinit(ATS_MALLOC(sizeof(__patsfun_116__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+ATSclosurerize_beg(__patsfun_129, (), (postiats_tyrec_0, atsrefarg1_type(atstkind_t0ype(atstype_int))), postiats_tyrec_0)
+typedef
+ATSstruct {
+atstype_funptr cfun ;
+} __patsfun_129__closure_t0ype ;
+ATSstatic()
+postiats_tyrec_0
+__patsfun_129__cfun
+(
+__patsfun_129__closure_t0ype *p_cenv, postiats_tyrec_0 arg0, atsrefarg1_type(atstkind_t0ype(atstype_int)) arg1
+)
+{
+ATSFCreturn(__patsfun_129(arg0, arg1)) ;
+} /* end of [cfun] */
+ATSstatic()
+atstype_cloptr
+__patsfun_129__closureinit
+(
+__patsfun_129__closure_t0ype *p_cenv
+)
+{
+p_cenv->cfun = __patsfun_129__cfun ;
+return p_cenv ;
+} /* end of [closureinit] */
+ATSstatic()
+atstype_cloptr
+__patsfun_129__closurerize
+(
+// argumentless
+)
+{
+return __patsfun_129__closureinit(ATS_MALLOC(sizeof(__patsfun_129__closure_t0ype))) ;
+} /* end of [closurerize] */
+ATSclosurerize_end()
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 831(line=21, offs=4) -- 882(line=22, offs=14)
+*/
+/*
+local: 
+global: witness_0$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+witness_0(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret0, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 831(line=21, offs=4) -- 882(line=22, offs=14)
+*/
+ATSINSflab(__patsflab_witness_0):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 871(line=22, offs=3) -- 881(line=22, offs=13)
+*/
+ATSINSmove(tmpret0, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), arg0)) ;
+ATSfunbody_end()
+ATSreturn(tmpret0) ;
+} /* end of [witness_0] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 947(line=25, offs=5) -- 1147(line=33, offs=6)
+*/
+/*
+local: 
+global: fib_gmp_1$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+fib_gmp_1(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref2, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref5, atstkind_t0ype(atstype_uint)) ;
+ATStmpdec(tmp6, atstkind_t0ype(atstype_int)) ;
+// ATStmpdec_void(tmp7) ;
+// ATStmpdec_void(tmp8) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 947(line=25, offs=5) -- 1147(line=33, offs=6)
+*/
+ATSINSflab(__patsflab_fib_gmp_1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 983(line=26, offs=3) -- 1147(line=33, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 995(line=27, offs=9) -- 996(line=27, offs=10)
+*/
+/*
+ATSINStmpdec(tmpref2) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 999(line=27, offs=13) -- 1010(line=27, offs=24)
+*/
+ATSINSmove(tmpref2, ATSLIB_056_prelude__ptr_alloc__2__1()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1019(line=28, offs=9) -- 1020(line=28, offs=10)
+*/
+/*
+ATSINStmpdec(tmpref5) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1034(line=28, offs=24) -- 1039(line=28, offs=29)
+*/
+ATSINSmove(tmp6, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1023(line=28, offs=13) -- 1040(line=28, offs=30)
+*/
+ATSINSmove(tmpref5, atspre_g0int2uint_int_uint(tmp6)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1053(line=29, offs=13) -- 1074(line=29, offs=34)
+*/
+ATSINSmove_void(tmp7, atscntrb_gmp_mpz_init(ATSPMVrefarg1(ATSSELrecsin(tmpref2, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1087(line=30, offs=13) -- 1115(line=30, offs=41)
+*/
+ATSINSmove_void(tmp8, atscntrb_gmp_mpz_fib_uint(ATSPMVrefarg1(ATSSELrecsin(tmpref2, atstkind_type(atstype_ptrk), atslab__2)), tmpref5)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1125(line=32, offs=5) -- 1140(line=32, offs=20)
+*/
+ATSINSmove(tmpret1, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref2)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 983(line=26, offs=3) -- 1147(line=33, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret1) ;
+} /* end of [fib_gmp_1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$2$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret3, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret3, atspre_ptr_alloc_tsz(ATSPMVsizeof(atstyvar_type(a)))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret3) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__2] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$2$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2EVar(5561))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2__1()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret3__1, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret3__1, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret3__1) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__2__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1225(line=36, offs=5) -- 1664(line=57, offs=10)
+*/
+/*
+local: exp_6$0(level=0)
+global: exp_6$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+exp_6(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret9, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp10, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmpref15, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref16, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp17, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp22, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref23, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp24, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp25, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1225(line=36, offs=5) -- 1664(line=57, offs=10)
+*/
+ATSINSflab(__patsflab_exp_6):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1275(line=37, offs=3) -- 1664(line=57, offs=10)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1292(line=38, offs=7) -- 1293(line=38, offs=8)
+*/
+ATSINSlab(__atstmplab0):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1244(line=36, offs=24) -- 1245(line=36, offs=25)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab2) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1293(line=38, offs=8) -- 1293(line=38, offs=8)
+*/
+ATSINSlab(__atstmplab1):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1297(line=38, offs=12) -- 1298(line=38, offs=13)
+*/
+ATSINSmove(tmpret9, ATSPMVi0nt(0)) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1306(line=39, offs=8) -- 1306(line=39, offs=8)
+*/
+ATSINSlab(__atstmplab2):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1335(line=41, offs=12) -- 1340(line=41, offs=17)
+*/
+ATSINSmove(tmp10, ATSLIB_056_prelude__gt_g1int_int__7__1(arg1, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1332(line=41, offs=9) -- 1654(line=56, offs=12)
+*/
+ATSif(
+tmp10
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1356(line=42, offs=11) -- 1629(line=54, offs=14)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1376(line=43, offs=17) -- 1378(line=43, offs=19)
+*/
+/*
+ATSINStmpdec(tmpref15) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1381(line=43, offs=22) -- 1387(line=43, offs=28)
+*/
+ATSINSmove(tmpref15, atspre_g1int_half_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1405(line=44, offs=17) -- 1407(line=44, offs=19)
+*/
+/*
+ATSINStmpdec(tmpref16) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1410(line=44, offs=22) -- 1415(line=44, offs=27)
+*/
+ATSINSmove(tmpref16, atspre_g0int_mod_int(arg1, ATSPMVi0nt(2))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1444(line=46, offs=16) -- 1450(line=46, offs=22)
+*/
+ATSINSmove(tmp17, ATSLIB_056_prelude__eq_g0int_int__13__1(tmpref16, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1441(line=46, offs=13) -- 1615(line=53, offs=18)
+*/
+ATSif(
+tmp17
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1474(line=47, offs=19) -- 1479(line=47, offs=24)
+*/
+ATSINSmove(tmp22, atspre_g0int_mul_int(arg0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1470(line=47, offs=15) -- 1484(line=47, offs=29)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp22) ;
+ATSINSmove_tlcal(apy1, tmpref15) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_exp_6) ;
+ATStailcal_end()
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1516(line=49, offs=15) -- 1615(line=53, offs=18)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1540(line=50, offs=21) -- 1541(line=50, offs=22)
+*/
+/*
+ATSINStmpdec(tmpref23) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1552(line=50, offs=33) -- 1557(line=50, offs=38)
+*/
+ATSINSmove(tmp25, atspre_g0int_mul_int(arg0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1548(line=50, offs=29) -- 1562(line=50, offs=43)
+*/
+ATSINSmove(tmp24, exp_6(tmp25, tmpref15)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1544(line=50, offs=25) -- 1562(line=50, offs=43)
+*/
+ATSINSmove(tmpref23, atspre_g0int_mul_int(arg0, tmp24)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1596(line=52, offs=17) -- 1597(line=52, offs=18)
+*/
+ATSINSmove(tmpret9, tmpref23) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1516(line=49, offs=15) -- 1615(line=53, offs=18)
+*/
+/*
+INSletpop()
+*/
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1356(line=42, offs=11) -- 1629(line=54, offs=14)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1653(line=56, offs=11) -- 1654(line=56, offs=12)
+*/
+ATSINSmove(tmpret9, ATSPMVi0nt(1)) ;
+} /* ATSendif */
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret9) ;
+} /* end of [exp_6] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4632))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11, PMVtmpltcst(g1int_gt<S2Evar(tk(4632))>)(arg0, tmp12)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__1, atspre_g1int_gt_int(arg0, tmp12__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__1) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19, PMVtmpltcst(g0int2int<S2Eextkind(atstype_int), S2Evar(tk(4623))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18, PMVtmpltcst(g0int_eq<S2Evar(tk(4623))>)(arg0, tmp19)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__1, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__1, atspre_g0int_eq_int(arg0, tmp19__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__1) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1710(line=60, offs=4) -- 1850(line=65, offs=6)
+*/
+/*
+local: witness_0$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+sqrt_int_18(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret26, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref27, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp28, atstkind_t0ype(atstype_float)) ;
+ATStmpdec(tmp29, atstkind_t0ype(atstype_float)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1710(line=60, offs=4) -- 1850(line=65, offs=6)
+*/
+ATSINSflab(__patsflab_sqrt_int_18):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1756(line=61, offs=3) -- 1850(line=65, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1768(line=62, offs=9) -- 1773(line=62, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref27) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1804(line=62, offs=45) -- 1817(line=62, offs=58)
+*/
+ATSINSmove(tmp29, atspre_g0int2float_int_float(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1793(line=62, offs=34) -- 1819(line=62, offs=60)
+*/
+ATSINSmove(tmp28, atslib_libats_libc_sqrt_float(tmp29)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1781(line=62, offs=22) -- 1820(line=62, offs=61)
+*/
+ATSINSmove(tmpref27, atspre_g0float2int_float_int(tmp28)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1830(line=64, offs=5) -- 1843(line=64, offs=18)
+*/
+ATSINSmove(tmpret26, witness_0(tmpref27)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1756(line=61, offs=3) -- 1850(line=65, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret26) ;
+} /* end of [sqrt_int_18] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1886(line=68, offs=4) -- 2467(line=91, offs=10)
+*/
+/*
+local: sqrt_int_18$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_prime_21(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret30, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp51, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1886(line=68, offs=4) -- 2467(line=91, offs=10)
+*/
+ATSINSflab(__patsflab_is_prime_21):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1922(line=69, offs=3) -- 2467(line=91, offs=10)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1939(line=70, offs=7) -- 1940(line=70, offs=8)
+*/
+ATSINSlab(__atstmplab3):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1895(line=68, offs=13) -- 1896(line=68, offs=14)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab5) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1940(line=70, offs=8) -- 1940(line=70, offs=8)
+*/
+ATSINSlab(__atstmplab4):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1944(line=70, offs=12) -- 1949(line=70, offs=17)
+*/
+ATSINSmove(tmpret30, ATSPMVbool_false()) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1957(line=71, offs=8) -- 1957(line=71, offs=8)
+*/
+ATSINSlab(__atstmplab5):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1982(line=73, offs=9) -- 2457(line=90, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2433(line=89, offs=19) -- 2443(line=89, offs=29)
+*/
+ATSINSmove(tmp51, sqrt_int_18(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2425(line=89, offs=11) -- 2445(line=89, offs=31)
+*/
+ATSINSmove(tmpret30, loop_22(arg0, ATSPMVi0nt(2), tmp51)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1982(line=73, offs=9) -- 2457(line=90, offs=12)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret30) ;
+} /* end of [is_prime_21] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2000(line=74, offs=15) -- 2403(line=87, offs=21)
+*/
+/*
+local: loop_22$0(level=1)
+global: loop_22$0(level=1)
+local: k$5091(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: k$5091(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+loop_22(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret31, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp32, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp37, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp40, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp41, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp42, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp47, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp50, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2000(line=74, offs=15) -- 2403(line=87, offs=21)
+*/
+ATSINSflab(__patsflab_loop_22):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2090(line=75, offs=16) -- 2099(line=75, offs=25)
+*/
+ATSINSmove(tmp32, ATSLIB_056_prelude__lt_g1int_int__23__1(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2087(line=75, offs=13) -- 2403(line=87, offs=21)
+*/
+ATSif(
+tmp32
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2122(line=76, offs=18) -- 2127(line=76, offs=23)
+*/
+ATSINSmove(tmp40, atspre_g0int_mod_int(env0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2122(line=76, offs=18) -- 2131(line=76, offs=27)
+*/
+ATSINSmove(tmp37, ATSLIB_056_prelude__eq_g0int_int__13__2(tmp40, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2119(line=76, offs=15) -- 2212(line=79, offs=35)
+*/
+ATSif(
+tmp37
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2153(line=77, offs=17) -- 2158(line=77, offs=22)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_false()) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2199(line=79, offs=22) -- 2204(line=79, offs=27)
+*/
+ATSINSmove(tmp41, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2194(line=79, offs=17) -- 2212(line=79, offs=35)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp41) ;
+ATSINSmove_tlcal(apy1, arg1) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_22) ;
+ATStailcal_end()
+
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2247(line=81, offs=18) -- 2256(line=81, offs=27)
+*/
+ATSINSmove(tmp42, ATSLIB_056_prelude__eq_g1int_int__27__1(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2244(line=81, offs=15) -- 2403(line=87, offs=21)
+*/
+ATSif(
+tmp42
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2281(line=82, offs=20) -- 2286(line=82, offs=25)
+*/
+ATSINSmove(tmp50, atspre_g0int_mod_int(env0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2281(line=82, offs=20) -- 2290(line=82, offs=29)
+*/
+ATSINSmove(tmp47, ATSLIB_056_prelude__eq_g0int_int__13__3(tmp50, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2278(line=82, offs=17) -- 2363(line=85, offs=23)
+*/
+ATSif(
+tmp47
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2314(line=83, offs=19) -- 2319(line=83, offs=24)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_false()) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2359(line=85, offs=19) -- 2363(line=85, offs=23)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_true()) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2399(line=87, offs=17) -- 2403(line=87, offs=21)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_true()) ;
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret31) ;
+} /* end of [loop_22] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$23$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret33, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp34, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp34, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4626))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret33, PMVtmpltcst(g1int_lt<S2Evar(tk(4626))>)(arg0, tmp34)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret33) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__23] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$23$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = Some(tk(4626) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret33__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp34__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp34__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret33__1, atspre_g1int_lt_int(arg0, tmp34__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret33__1) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__23__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$2(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__2(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__2, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__2, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__2, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__2, atspre_g0int_eq_int(arg0, tmp19__2)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__2) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__2] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12838(line=668, offs=3) -- 12877(line=668, offs=42)
+*/
+/*
+local: 
+global: eq_g1int_int$27$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4638)
+tmparg = S2Evar(tk(4638))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret43, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp44, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12823(line=667, offs=1) -- 12877(line=668, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12864(line=668, offs=29) -- 12875(line=668, offs=40)
+*/
+ATSINSmove(tmp44, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4638))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12847(line=668, offs=12) -- 12877(line=668, offs=42)
+*/
+ATSINSmove(tmpret43, PMVtmpltcst(g1int_eq<S2Evar(tk(4638))>)(arg0, tmp44)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret43) ;
+} /* end of [ATSLIB_056_prelude__eq_g1int_int__27] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12838(line=668, offs=3) -- 12877(line=668, offs=42)
+*/
+/*
+local: 
+global: eq_g1int_int$27$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4638)
+tmparg = S2Evar(tk(4638))
+tmpsub = Some(tk(4638) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret43__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp44__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12823(line=667, offs=1) -- 12877(line=668, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12864(line=668, offs=29) -- 12875(line=668, offs=40)
+*/
+ATSINSmove(tmp44__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12847(line=668, offs=12) -- 12877(line=668, offs=42)
+*/
+ATSINSmove(tmpret43__1, atspre_g1int_eq_int(arg0, tmp44__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret43__1) ;
+} /* end of [ATSLIB_056_prelude__eq_g1int_int__27__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$3(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__3(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__3, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__3, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__3, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__3, atspre_g0int_eq_int(arg0, tmp19__3)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__3) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 376(line=13, offs=4) -- 424(line=14, offs=12)
+*/
+/*
+local: 
+global: divides_31$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+divides_31(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret52, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp55, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 376(line=13, offs=4) -- 424(line=14, offs=12)
+*/
+ATSINSflab(__patsflab_divides_31):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 415(line=14, offs=3) -- 420(line=14, offs=8)
+*/
+ATSINSmove(tmp55, atspre_g0int_mod_int(arg1, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 415(line=14, offs=3) -- 424(line=14, offs=12)
+*/
+ATSINSmove(tmpret52, ATSLIB_056_prelude__eq_g0int_int__13__4(tmp55, ATSPMVi0nt(0))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret52) ;
+} /* end of [divides_31] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$4(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__4(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__4, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__4, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__4, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__4, atspre_g0int_eq_int(arg0, tmp19__4)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__4) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__4] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 452(line=17, offs=5) -- 558(line=21, offs=6)
+*/
+/*
+local: witness_0$0(level=0), gcd_33$0(level=0)
+global: witness_0$0(level=0), gcd_33$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+gcd_33(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret56, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp57, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp60, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp61, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+/*
+emit_funent_fnxdeclst:
+*/
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 452(line=17, offs=5) -- 558(line=21, offs=6)
+*/
+ATSINSflab(__patsflab_gcd_33):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 508(line=18, offs=6) -- 513(line=18, offs=11)
+*/
+ATSINSmove(tmp57, ATSLIB_056_prelude__gt_g1int_int__7__2(arg1, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 505(line=18, offs=3) -- 558(line=21, offs=6)
+*/
+ATSif(
+tmp57
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 538(line=19, offs=20) -- 543(line=19, offs=25)
+*/
+ATSINSmove(tmp61, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 530(line=19, offs=12) -- 544(line=19, offs=26)
+*/
+ATSINSmove(tmp60, witness_0(tmp61)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 523(line=19, offs=5) -- 545(line=19, offs=27)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, arg1) ;
+ATSINSmove_tlcal(apy1, tmp60) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_gcd_33) ;
+ATStailcal_end()
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 557(line=21, offs=5) -- 558(line=21, offs=6)
+*/
+ATSINSmove(tmpret56, arg0) ;
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret56) ;
+/*
+emit_funent_fnxbodylst:
+*/
+} /* end of [gcd_33] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$2(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__2(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__2, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__2, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__2, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__2, atspre_g1int_gt_int(arg0, tmp12__2)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__2) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 563(line=23, offs=4) -- 635(line=24, offs=22)
+*/
+/*
+local: gcd_33$0(level=0)
+global: witness_0$0(level=0), gcd_33$0(level=0), lcm_35$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+lcm_35(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret62, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp63, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp64, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 563(line=23, offs=4) -- 635(line=24, offs=22)
+*/
+ATSINSflab(__patsflab_lcm_35):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 621(line=24, offs=8) -- 630(line=24, offs=17)
+*/
+ATSINSmove(tmp64, gcd_33(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 617(line=24, offs=4) -- 630(line=24, offs=17)
+*/
+ATSINSmove(tmp63, atspre_g0int_div_int(arg0, tmp64)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 616(line=24, offs=3) -- 635(line=24, offs=22)
+*/
+ATSINSmove(tmpret62, atspre_g0int_mul_int(tmp63, arg1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret62) ;
+} /* end of [lcm_35] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 640(line=26, offs=4) -- 714(line=27, offs=16)
+*/
+/*
+local: gcd_33$0(level=0)
+global: witness_0$0(level=0), gcd_33$0(level=0), is_coprime_37$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_coprime_37(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret65, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp68, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 640(line=26, offs=4) -- 714(line=27, offs=16)
+*/
+ATSINSflab(__patsflab_is_coprime_37):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 701(line=27, offs=3) -- 710(line=27, offs=12)
+*/
+ATSINSmove(tmp68, gcd_33(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 701(line=27, offs=3) -- 714(line=27, offs=16)
+*/
+ATSINSmove(tmpret65, ATSLIB_056_prelude__eq_g0int_int__13__5(tmp68, ATSPMVi0nt(1))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret65) ;
+} /* end of [is_coprime_37] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$5(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__5(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__5, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__5, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__5, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__5, atspre_g0int_eq_int(arg0, tmp19__5)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__5) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__5] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 757(line=30, offs=4) -- 1773(line=62, offs=8)
+*/
+/*
+local: sqrt_int_18$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), divisors_39$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+divisors_39(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret69, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 757(line=30, offs=4) -- 1773(line=62, offs=8)
+*/
+ATSINSflab(__patsflab_divisors_39):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 802(line=31, offs=3) -- 1773(line=62, offs=8)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 819(line=32, offs=7) -- 820(line=32, offs=8)
+*/
+ATSINSlab(__atstmplab6):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 766(line=30, offs=13) -- 767(line=30, offs=14)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab8) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 820(line=32, offs=8) -- 820(line=32, offs=8)
+*/
+ATSINSlab(__atstmplab7):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 824(line=32, offs=12) -- 874(line=32, offs=62)
+*/
+ATSINSmove_ldelay(tmpret69, atstype_boxed, ATSPMVcfunlab(1, __patsfun_40, ())) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 882(line=33, offs=8) -- 882(line=33, offs=8)
+*/
+ATSINSlab(__atstmplab8):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 886(line=33, offs=12) -- 1773(line=62, offs=8)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1755(line=61, offs=7) -- 1765(line=61, offs=17)
+*/
+ATSINSmove(tmpret69, loop_42(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 886(line=33, offs=12) -- 1773(line=62, offs=8)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret69) ;
+} /* end of [divisors_39] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 824(line=32, offs=12) -- 874(line=32, offs=62)
+*/
+/*
+local: 
+global: __patsfun_40$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_40(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret70, atstype_boxed) ;
+ATStmpdec(tmp71, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 824(line=32, offs=12) -- 874(line=32, offs=62)
+*/
+ATSINSflab(__patsflab___patsfun_40):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 824(line=32, offs=12) -- 874(line=32, offs=62)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 850(line=32, offs=38) -- 872(line=32, offs=60)
+*/
+ATSINSmove_ldelay(tmp71, atstype_boxed, ATSPMVcfunlab(1, __patsfun_41, ())) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 832(line=32, offs=20) -- 873(line=32, offs=61)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret70, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret70, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret70, postiats_tysum_1, atslab__0, ATSPMVi0nt(1)) ;
+ATSINSstore_con1_ofs(tmpret70, postiats_tysum_1, atslab__1, tmp71) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret70) ;
+} /* end of [__patsfun_40] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 850(line=32, offs=38) -- 872(line=32, offs=60)
+*/
+/*
+local: 
+global: __patsfun_41$0(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_41(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret72, atstype_boxed) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 850(line=32, offs=38) -- 872(line=32, offs=60)
+*/
+ATSINSflab(__patsflab___patsfun_41):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 850(line=32, offs=38) -- 872(line=32, offs=60)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 858(line=32, offs=46) -- 871(line=32, offs=59)
+*/
+
+ATSINSmove_nil(tmpret72) ;
+
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret72) ;
+} /* end of [__patsfun_41] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 900(line=34, offs=11) -- 1741(line=59, offs=29)
+*/
+/*
+local: sqrt_int_18$0(level=0), loop_42$0(level=1)
+global: sqrt_int_18$0(level=0), loop_42$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_42(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret73, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp74, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp79, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp80, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp83, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp84, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp89, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref90, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp100, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp103, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref104, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp110, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 900(line=34, offs=11) -- 1741(line=59, offs=29)
+*/
+ATSINSflab(__patsflab_loop_42):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1007(line=35, offs=19) -- 1017(line=35, offs=29)
+*/
+ATSINSmove(tmp79, sqrt_int_18(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1000(line=35, offs=12) -- 1017(line=35, offs=29)
+*/
+ATSINSmove(tmp74, ATSLIB_056_prelude__gte_g1int_int__43__1(arg1, tmp79)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 997(line=35, offs=9) -- 1741(line=59, offs=29)
+*/
+ATSif(
+tmp74
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1037(line=36, offs=14) -- 1044(line=36, offs=21)
+*/
+ATSINSmove(tmp83, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1037(line=36, offs=14) -- 1048(line=36, offs=25)
+*/
+ATSINSmove(tmp80, ATSLIB_056_prelude__eq_g0int_int__13__6(tmp83, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1034(line=36, offs=11) -- 1481(line=50, offs=35)
+*/
+ATSif(
+tmp80
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1069(line=37, offs=16) -- 1076(line=37, offs=23)
+*/
+ATSINSmove(tmp89, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1069(line=37, offs=16) -- 1083(line=37, offs=30)
+*/
+ATSINSmove(tmp84, ATSLIB_056_prelude__neq_g1int_int__47__1(tmp89, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1066(line=37, offs=13) -- 1431(line=48, offs=18)
+*/
+ATSif(
+tmp84
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1103(line=38, offs=15) -- 1275(line=42, offs=18)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1127(line=39, offs=21) -- 1128(line=39, offs=22)
+*/
+/*
+ATSINStmpdec(tmpref90) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1136(line=39, offs=30) -- 1143(line=39, offs=37)
+*/
+ATSINSmove(tmpref90, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1177(line=41, offs=17) -- 1257(line=41, offs=97)
+*/
+ATSINSmove_ldelay(tmpret73, atstype_boxed, ATSPMVcfunlab(1, __patsfun_51, (arg1, ATSPMVptrof(tmpref90)))) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1103(line=38, offs=15) -- 1275(line=42, offs=18)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1361(line=47, offs=17) -- 1413(line=47, offs=69)
+*/
+ATSINSmove_ldelay(tmpret73, atstype_boxed, ATSPMVcfunlab(1, __patsfun_54, (arg1))) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1459(line=50, offs=13) -- 1481(line=50, offs=35)
+*/
+ATSINSmove_ldelay(tmpret73, atstype_boxed, ATSPMVcfunlab(1, __patsfun_56, ())) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1508(line=52, offs=14) -- 1515(line=52, offs=21)
+*/
+ATSINSmove(tmp103, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1508(line=52, offs=14) -- 1519(line=52, offs=25)
+*/
+ATSINSmove(tmp100, ATSLIB_056_prelude__eq_g0int_int__13__7(tmp103, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1505(line=52, offs=11) -- 1741(line=59, offs=29)
+*/
+ATSif(
+tmp100
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1537(line=53, offs=13) -- 1697(line=57, offs=16)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1559(line=54, offs=19) -- 1560(line=54, offs=20)
+*/
+/*
+ATSINStmpdec(tmpref104) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1568(line=54, offs=28) -- 1575(line=54, offs=35)
+*/
+ATSINSmove(tmpref104, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1605(line=56, offs=15) -- 1681(line=56, offs=91)
+*/
+ATSINSmove_ldelay(tmpret73, atstype_boxed, ATSPMVcfunlab(1, __patsfun_58, (arg0, arg1, ATSPMVptrof(tmpref104)))) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1537(line=53, offs=13) -- 1697(line=57, offs=16)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1733(line=59, offs=21) -- 1740(line=59, offs=28)
+*/
+ATSINSmove(tmp110, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1725(line=59, offs=13) -- 1741(line=59, offs=29)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, arg0) ;
+ATSINSmove_tlcal(apy1, tmp110) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_42) ;
+ATStailcal_end()
+
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret73) ;
+} /* end of [loop_42] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12757(line=663, offs=3) -- 12797(line=663, offs=43)
+*/
+/*
+local: 
+global: gte_g1int_int$43$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4635)
+tmparg = S2Evar(tk(4635))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret75, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp76, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12741(line=662, offs=1) -- 12797(line=663, offs=43)
+*/
+ATSINSflab(__patsflab_gte_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12784(line=663, offs=30) -- 12795(line=663, offs=41)
+*/
+ATSINSmove(tmp76, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4635))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12766(line=663, offs=12) -- 12797(line=663, offs=43)
+*/
+ATSINSmove(tmpret75, PMVtmpltcst(g1int_gte<S2Evar(tk(4635))>)(arg0, tmp76)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret75) ;
+} /* end of [ATSLIB_056_prelude__gte_g1int_int__43] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12757(line=663, offs=3) -- 12797(line=663, offs=43)
+*/
+/*
+local: 
+global: gte_g1int_int$43$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4635)
+tmparg = S2Evar(tk(4635))
+tmpsub = Some(tk(4635) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret75__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp76__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12741(line=662, offs=1) -- 12797(line=663, offs=43)
+*/
+ATSINSflab(__patsflab_gte_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12784(line=663, offs=30) -- 12795(line=663, offs=41)
+*/
+ATSINSmove(tmp76__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12766(line=663, offs=12) -- 12797(line=663, offs=43)
+*/
+ATSINSmove(tmpret75__1, atspre_g1int_gte_int(arg0, tmp76__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret75__1) ;
+} /* end of [ATSLIB_056_prelude__gte_g1int_int__43__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$6(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__6(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__6, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__6, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__6, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__6, atspre_g0int_eq_int(arg0, tmp19__6)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__6) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__6] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12916(line=672, offs=3) -- 12956(line=672, offs=43)
+*/
+/*
+local: 
+global: neq_g1int_int$47$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4641)
+tmparg = S2Evar(tk(4641))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g1int_int__47(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret85, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp86, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12900(line=671, offs=1) -- 12956(line=672, offs=43)
+*/
+ATSINSflab(__patsflab_neq_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12943(line=672, offs=30) -- 12954(line=672, offs=41)
+*/
+ATSINSmove(tmp86, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4641))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12925(line=672, offs=12) -- 12956(line=672, offs=43)
+*/
+ATSINSmove(tmpret85, PMVtmpltcst(g1int_neq<S2Evar(tk(4641))>)(arg0, tmp86)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret85) ;
+} /* end of [ATSLIB_056_prelude__neq_g1int_int__47] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12916(line=672, offs=3) -- 12956(line=672, offs=43)
+*/
+/*
+local: 
+global: neq_g1int_int$47$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4641)
+tmparg = S2Evar(tk(4641))
+tmpsub = Some(tk(4641) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g1int_int__47__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret85__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp86__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12900(line=671, offs=1) -- 12956(line=672, offs=43)
+*/
+ATSINSflab(__patsflab_neq_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12943(line=672, offs=30) -- 12954(line=672, offs=41)
+*/
+ATSINSmove(tmp86__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12925(line=672, offs=12) -- 12956(line=672, offs=43)
+*/
+ATSINSmove(tmpret85__1, atspre_g1int_neq_int(arg0, tmp86__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret85__1) ;
+} /* end of [ATSLIB_056_prelude__neq_g1int_int__47__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1177(line=41, offs=17) -- 1257(line=41, offs=97)
+*/
+/*
+local: 
+global: __patsfun_51$0(level=2)
+local: acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), x$5112(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+global: acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), x$5112(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_51(atstkind_t0ype(atstype_int) env0, atstkind_type(atstype_ptrk) env1, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret91, atstype_boxed) ;
+ATStmpdec(tmp92, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1177(line=41, offs=17) -- 1257(line=41, offs=97)
+*/
+ATSINSflab(__patsflab___patsfun_51):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1177(line=41, offs=17) -- 1257(line=41, offs=97)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1205(line=41, offs=45) -- 1255(line=41, offs=95)
+*/
+ATSINSmove_ldelay(tmp92, atstype_boxed, ATSPMVcfunlab(1, __patsfun_52, (env1))) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1185(line=41, offs=25) -- 1256(line=41, offs=96)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret91, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret91, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret91, postiats_tysum_1, atslab__0, env0) ;
+ATSINSstore_con1_ofs(tmpret91, postiats_tysum_1, atslab__1, tmp92) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret91) ;
+} /* end of [__patsfun_51] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1205(line=41, offs=45) -- 1255(line=41, offs=95)
+*/
+/*
+local: 
+global: __patsfun_52$0(level=3)
+local: x$5112(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+global: x$5112(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_52(atstkind_type(atstype_ptrk) env0, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret93, atstype_boxed) ;
+ATStmpdec(tmp94, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1205(line=41, offs=45) -- 1255(line=41, offs=95)
+*/
+ATSINSflab(__patsflab___patsfun_52):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1205(line=41, offs=45) -- 1255(line=41, offs=95)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1231(line=41, offs=71) -- 1253(line=41, offs=93)
+*/
+ATSINSmove_ldelay(tmp94, atstype_boxed, ATSPMVcfunlab(1, __patsfun_53, ())) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1213(line=41, offs=53) -- 1254(line=41, offs=94)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret93, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret93, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret93, postiats_tysum_1, atslab__0, ATSderef(env0, atstkind_t0ype(atstype_int))) ;
+ATSINSstore_con1_ofs(tmpret93, postiats_tysum_1, atslab__1, tmp94) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret93) ;
+} /* end of [__patsfun_52] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1231(line=41, offs=71) -- 1253(line=41, offs=93)
+*/
+/*
+local: 
+global: __patsfun_53$0(level=4)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_53(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret95, atstype_boxed) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1231(line=41, offs=71) -- 1253(line=41, offs=93)
+*/
+ATSINSflab(__patsflab___patsfun_53):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1231(line=41, offs=71) -- 1253(line=41, offs=93)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1239(line=41, offs=79) -- 1252(line=41, offs=92)
+*/
+
+ATSINSmove_nil(tmpret95) ;
+
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret95) ;
+} /* end of [__patsfun_53] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1361(line=47, offs=17) -- 1413(line=47, offs=69)
+*/
+/*
+local: 
+global: __patsfun_54$0(level=2)
+local: acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_54(atstkind_t0ype(atstype_int) env0, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret96, atstype_boxed) ;
+ATStmpdec(tmp97, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1361(line=47, offs=17) -- 1413(line=47, offs=69)
+*/
+ATSINSflab(__patsflab___patsfun_54):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1361(line=47, offs=17) -- 1413(line=47, offs=69)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1389(line=47, offs=45) -- 1411(line=47, offs=67)
+*/
+ATSINSmove_ldelay(tmp97, atstype_boxed, ATSPMVcfunlab(1, __patsfun_55, ())) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1369(line=47, offs=25) -- 1412(line=47, offs=68)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret96, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret96, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret96, postiats_tysum_1, atslab__0, env0) ;
+ATSINSstore_con1_ofs(tmpret96, postiats_tysum_1, atslab__1, tmp97) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret96) ;
+} /* end of [__patsfun_54] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1389(line=47, offs=45) -- 1411(line=47, offs=67)
+*/
+/*
+local: 
+global: __patsfun_55$0(level=3)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_55(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret98, atstype_boxed) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1389(line=47, offs=45) -- 1411(line=47, offs=67)
+*/
+ATSINSflab(__patsflab___patsfun_55):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1389(line=47, offs=45) -- 1411(line=47, offs=67)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1397(line=47, offs=53) -- 1410(line=47, offs=66)
+*/
+
+ATSINSmove_nil(tmpret98) ;
+
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret98) ;
+} /* end of [__patsfun_55] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1459(line=50, offs=13) -- 1481(line=50, offs=35)
+*/
+/*
+local: 
+global: __patsfun_56$0(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_56(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret99, atstype_boxed) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1459(line=50, offs=13) -- 1481(line=50, offs=35)
+*/
+ATSINSflab(__patsflab___patsfun_56):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1459(line=50, offs=13) -- 1481(line=50, offs=35)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1467(line=50, offs=21) -- 1480(line=50, offs=34)
+*/
+
+ATSINSmove_nil(tmpret99) ;
+
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret99) ;
+} /* end of [__patsfun_56] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$7(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__7(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__7, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__7, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__7, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__7, atspre_g0int_eq_int(arg0, tmp19__7)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__7) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__7] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1605(line=56, offs=15) -- 1681(line=56, offs=91)
+*/
+/*
+local: loop_42$0(level=1)
+global: loop_42$0(level=1), __patsfun_58$0(level=2)
+local: n$5110(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), x$5113(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+global: n$5110(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), x$5113(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_58(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstkind_type(atstype_ptrk) env2, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret105, atstype_boxed) ;
+ATStmpdec(tmp106, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1605(line=56, offs=15) -- 1681(line=56, offs=91)
+*/
+ATSINSflab(__patsflab___patsfun_58):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1605(line=56, offs=15) -- 1681(line=56, offs=91)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1633(line=56, offs=43) -- 1679(line=56, offs=89)
+*/
+ATSINSmove_ldelay(tmp106, atstype_boxed, ATSPMVcfunlab(1, __patsfun_59, (env0, env1, env2))) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1613(line=56, offs=23) -- 1680(line=56, offs=90)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret105, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret105, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret105, postiats_tysum_1, atslab__0, env1) ;
+ATSINSstore_con1_ofs(tmpret105, postiats_tysum_1, atslab__1, tmp106) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret105) ;
+} /* end of [__patsfun_58] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1633(line=56, offs=43) -- 1679(line=56, offs=89)
+*/
+/*
+local: loop_42$0(level=1)
+global: loop_42$0(level=1), __patsfun_59$0(level=3)
+local: n$5110(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), x$5113(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+global: n$5110(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), acc$5111(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), x$5113(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_59(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstkind_type(atstype_ptrk) env2, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret107, atstype_boxed) ;
+ATStmpdec(tmp108, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp109, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1633(line=56, offs=43) -- 1679(line=56, offs=89)
+*/
+ATSINSflab(__patsflab___patsfun_59):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1633(line=56, offs=43) -- 1679(line=56, offs=89)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1668(line=56, offs=78) -- 1675(line=56, offs=85)
+*/
+ATSINSmove(tmp109, atspre_g1int_add_int(env1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1660(line=56, offs=70) -- 1676(line=56, offs=86)
+*/
+ATSINSmove(tmp108, loop_42(env0, tmp109)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1641(line=56, offs=51) -- 1678(line=56, offs=88)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret107, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret107, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret107, postiats_tysum_1, atslab__0, ATSderef(env2, atstkind_t0ype(atstype_int))) ;
+ATSINSstore_con1_ofs(tmpret107, postiats_tysum_1, atslab__1, tmp108) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret107) ;
+} /* end of [__patsfun_59] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1810(line=65, offs=4) -- 1929(line=66, offs=71)
+*/
+/*
+local: is_prime_21$0(level=0), divisors_39$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), divisors_39$0(level=0), prime_divisors_60$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+prime_divisors_60(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret111, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp136, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1810(line=65, offs=4) -- 1929(line=66, offs=71)
+*/
+ATSINSflab(__patsflab_prime_divisors_60):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1885(line=66, offs=27) -- 1895(line=66, offs=37)
+*/
+ATSINSmove(tmp136, divisors_39(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1861(line=66, offs=3) -- 1929(line=66, offs=71)
+*/
+ATSINSmove(tmpret111, ATSLIB_056_prelude__stream_vt_filter_cloptr__61__1(tmp136, ATSPMVcfunlab(1, __patsfun_69, ()))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret111) ;
+} /* end of [prime_divisors_60] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 12936(line=777, offs=1) -- 13966(line=847, offs=2)
+*/
+/*
+local: 
+global: stream_vt_filter_cloptr$61$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = a(8215)
+tmparg = S2Evar(a(8215))
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__stream_vt_filter_cloptr__61(atstkind_type(atstype_ptrk) arg0, atstype_cloptr arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret112, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12912(line=776, offs=1) -- 13966(line=847, offs=2)
+*/
+ATSINSflab(__patsflab_stream_vt_filter_cloptr):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12953(line=779, offs=5) -- 13966(line=847, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12953(line=779, offs=5) -- 12970(line=779, offs=22)
+*/
+ATSINSmove(tmpret112, ATSfunclo_fun(PMVd2vfunlab(d2v=auxmain$4250(1), flab=auxmain_62$0(level=1)), (atstkind_type(atstype_ptrk), atstype_cloptr), atstkind_type(atstype_ptrk))(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12953(line=779, offs=5) -- 13966(line=847, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret112) ;
+} /* end of [ATSLIB_056_prelude__stream_vt_filter_cloptr__61] */
+#endif // end of [TEMPLATE]
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 12986(line=783, offs=1) -- 13161(line=798, offs=2)
+*/
+/*
+local: auxmain_con_63$0(level=1)
+global: auxmain_62$0(level=1), auxmain_con_63$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+auxmain_62__62(atstkind_type(atstype_ptrk) arg0, atstype_cloptr arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret113, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12986(line=783, offs=1) -- 13161(line=798, offs=2)
+*/
+ATSINSflab(__patsflab_auxmain_62):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+ATSINSmove_ldelay(tmpret113, atstype_boxed, ATSPMVcfunlab(1, __patsfun_64__64, (arg0, arg1))) ;
+ATSfunbody_end()
+ATSreturn(tmpret113) ;
+} /* end of [auxmain_62__62] */
+#endif // end of [TEMPLATE]
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 13166(line=800, offs=1) -- 13936(line=845, offs=2)
+*/
+/*
+local: auxmain_62$0(level=1), auxmain_con_63$0(level=1)
+global: auxmain_62$0(level=1), auxmain_con_63$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+auxmain_con_63__63(atstkind_type(atstype_ptrk) arg0, atstype_cloptr arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(apy1, atstype_cloptr) ;
+ATStmpdec(tmpret117, atstype_boxed) ;
+ATStmpdec(tmp118, atstype_boxed) ;
+// ATStmpdec_void(tmp121) ;
+ATStmpdec(tmp122, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp123, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp124, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13166(line=800, offs=1) -- 13936(line=845, offs=2)
+*/
+ATSINSflab(__patsflab_auxmain_con_63):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13259(line=809, offs=1) -- 13915(line=843, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13278(line=810, offs=16) -- 13281(line=810, offs=19)
+*/
+ATSINSmove_llazyeval(tmp118, atstype_boxed, arg0) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13288(line=813, offs=1) -- 13881(line=841, offs=6)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13306(line=814, offs=3) -- 13332(line=815, offs=12)
+*/
+ATSINSlab(__atstmplab9):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13278(line=810, offs=16) -- 13281(line=810, offs=19)
+*/
+ATSifthen(ATSCKptriscons(tmp118)) { ATSINSgoto(__atstmplab12) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13332(line=815, offs=12) -- 13332(line=815, offs=12)
+*/
+ATSINSlab(__atstmplab10):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13336(line=815, offs=16) -- 13462(line=822, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13357(line=817, offs=5) -- 13405(line=818, offs=37)
+*/
+ATSINSmove_void(tmp121, atspre_cloptr_free(ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), arg1))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13435(line=821, offs=5) -- 13448(line=821, offs=18)
+*/
+
+ATSINSmove_nil(tmpret117) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13336(line=815, offs=16) -- 13462(line=822, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13491(line=823, offs=3) -- 13520(line=824, offs=14)
+*/
+ATSINSlab(__atstmplab11):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13278(line=810, offs=16) -- 13281(line=810, offs=19)
+*/
+#if(0)
+ATSifthen(ATSCKptrisnull(tmp118)) { ATSINSdeadcode_fail() ; } ;
+#endif
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13520(line=824, offs=14) -- 13520(line=824, offs=14)
+*/
+ATSINSlab(__atstmplab12):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13524(line=824, offs=18) -- 13881(line=841, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13543(line=825, offs=16) -- 13550(line=825, offs=23)
+*/
+ATSINSmove(tmp122, ATSfunclo_clo(ATSPMVrefarg0(arg1), (atstype_cloptr, atsrefarg1_type(atstyvar_type(a))), atstkind_t0ype(atstype_bool))(ATSPMVrefarg0(arg1), ATSPMVrefarg1(ATSPMVptrof(ATSSELcon(tmp118, postiats_tysum_2, atslab__0))))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13561(line=827, offs=5) -- 13836(line=839, offs=8)
+*/
+ATSif(
+tmp122
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13580(line=828, offs=12) -- 13693(line=833, offs=8)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13633(line=831, offs=16) -- 13651(line=831, offs=34)
+*/
+ATSINSmove(tmp123, ATSfunclo_fun(PMVd2vfunlab(d2v=auxmain$4250(1), flab=auxmain_62$0(level=1)), (atstkind_type(atstype_ptrk), atstype_cloptr), atstkind_type(atstype_ptrk))(ATSSELcon(tmp118, postiats_tysum_2, atslab__1), arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13626(line=831, offs=9) -- 13651(line=831, offs=34)
+*/
+ATSINSstore(ATSSELcon(tmp118, postiats_tysum_2, atslab__1), tmp123) ;
+/* (*nothing*) */
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13580(line=828, offs=12) -- 13586(line=828, offs=18)
+*/
+ATSINSmove(tmpret117, tmp118) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13580(line=828, offs=12) -- 13693(line=833, offs=8)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13731(line=835, offs=7) -- 13836(line=839, offs=8)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13786(line=837, offs=19) -- 13789(line=837, offs=22)
+*/
+ATSINSmove(tmp124, ATSSELcon(tmp118, postiats_tysum_2, atslab__1)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13812(line=838, offs=23) -- 13827(line=838, offs=38)
+*/
+ATSINSfreecon(tmp118) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13731(line=835, offs=7) -- 13753(line=835, offs=29)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp124) ;
+ATSINSmove_tlcal(apy1, arg1) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_auxmain_con_63) ;
+ATStailcal_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13731(line=835, offs=7) -- 13836(line=839, offs=8)
+*/
+/*
+INSletpop()
+*/
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13524(line=824, offs=18) -- 13881(line=841, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13259(line=809, offs=1) -- 13915(line=843, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret117) ;
+} /* end of [auxmain_con_63__63] */
+#endif // end of [TEMPLATE]
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+/*
+local: auxmain_con_63$0(level=1)
+global: auxmain_con_63$0(level=1), __patsfun_64$0(level=2)
+local: xs$4252(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk)))), pred$4253(2)(HSEfun(CLO(1); HSErefarg(1; HSEtyvar(a(8215))); HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_bool)))))
+global: xs$4252(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk)))), pred$4253(2)(HSEfun(CLO(1); HSErefarg(1; HSEtyvar(a(8215))); HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_bool)))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_64__64(atstkind_type(atstype_ptrk) env0, atstype_cloptr env1, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret114, atstype_boxed) ;
+// ATStmpdec_void(tmp115) ;
+// ATStmpdec_void(tmp116) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+ATSINSflab(__patsflab___patsfun_64):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13078(line=791, offs=3) -- 13099(line=791, offs=24)
+*/
+ATSINSmove(tmpret114, ATSfunclo_fun(PMVd2vfunlab(d2v=auxmain_con$4251(1), flab=auxmain_con_63$0(level=1)), (atstkind_type(atstype_ptrk), atstype_cloptr), atstype_boxed)(env0, env1)) ;
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13106(line=794, offs=3) -- 13109(line=794, offs=6)
+*/
+ATSINSmove_void(tmp115, atspre_lazy_vt_free(env0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13113(line=795, offs=3) -- 13157(line=796, offs=33)
+*/
+ATSINSmove_void(tmp116, atspre_cloptr_free(ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), env1))) ;
+
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret114) ;
+} /* end of [__patsfun_64__64] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 12936(line=777, offs=1) -- 13966(line=847, offs=2)
+*/
+/*
+local: 
+global: stream_vt_filter_cloptr$61$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(8215)
+tmparg = S2Evar(a(8215))
+tmpsub = Some(a(8215) -> S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__stream_vt_filter_cloptr__61__1(atstkind_type(atstype_ptrk) arg0, atstype_cloptr arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret112__1, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12912(line=776, offs=1) -- 13966(line=847, offs=2)
+*/
+ATSINSflab(__patsflab_stream_vt_filter_cloptr):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12953(line=779, offs=5) -- 13966(line=847, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12953(line=779, offs=5) -- 12970(line=779, offs=22)
+*/
+ATSINSmove(tmpret112__1, auxmain_62__62__1(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12953(line=779, offs=5) -- 13966(line=847, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret112__1) ;
+} /* end of [ATSLIB_056_prelude__stream_vt_filter_cloptr__61__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 12986(line=783, offs=1) -- 13161(line=798, offs=2)
+*/
+/*
+local: auxmain_con_63$1(level=2)
+global: auxmain_62$1(level=2), auxmain_con_63$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+auxmain_62__62__1(atstkind_type(atstype_ptrk) arg0, atstype_cloptr arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret113__1, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 12986(line=783, offs=1) -- 13161(line=798, offs=2)
+*/
+ATSINSflab(__patsflab_auxmain_62):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+ATSINSmove_ldelay(tmpret113__1, atstype_boxed, ATSPMVcfunlab(1, __patsfun_64__64__1, (arg0, arg1))) ;
+ATSfunbody_end()
+ATSreturn(tmpret113__1) ;
+} /* end of [auxmain_62__62__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 13166(line=800, offs=1) -- 13936(line=845, offs=2)
+*/
+/*
+local: auxmain_62$1(level=2), auxmain_con_63$1(level=2)
+global: auxmain_62$1(level=2), auxmain_con_63$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+auxmain_con_63__63__1(atstkind_type(atstype_ptrk) arg0, atstype_cloptr arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(apy1, atstype_cloptr) ;
+ATStmpdec(tmpret117__1, atstype_boxed) ;
+ATStmpdec(tmp118__1, atstype_boxed) ;
+// ATStmpdec_void(tmp121__1) ;
+ATStmpdec(tmp122__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp123__1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp124__1, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13166(line=800, offs=1) -- 13936(line=845, offs=2)
+*/
+ATSINSflab(__patsflab_auxmain_con_63):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13259(line=809, offs=1) -- 13915(line=843, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13278(line=810, offs=16) -- 13281(line=810, offs=19)
+*/
+ATSINSmove_llazyeval(tmp118__1, atstype_boxed, arg0) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13288(line=813, offs=1) -- 13881(line=841, offs=6)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13306(line=814, offs=3) -- 13332(line=815, offs=12)
+*/
+ATSINSlab(__atstmplab9):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13278(line=810, offs=16) -- 13281(line=810, offs=19)
+*/
+ATSifthen(ATSCKptriscons(tmp118__1)) { ATSINSgoto(__atstmplab12) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13332(line=815, offs=12) -- 13332(line=815, offs=12)
+*/
+ATSINSlab(__atstmplab10):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13336(line=815, offs=16) -- 13462(line=822, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13357(line=817, offs=5) -- 13405(line=818, offs=37)
+*/
+ATSINSmove_void(tmp121__1, atspre_cloptr_free(ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), arg1))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13435(line=821, offs=5) -- 13448(line=821, offs=18)
+*/
+
+ATSINSmove_nil(tmpret117__1) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13336(line=815, offs=16) -- 13462(line=822, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13491(line=823, offs=3) -- 13520(line=824, offs=14)
+*/
+ATSINSlab(__atstmplab11):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13278(line=810, offs=16) -- 13281(line=810, offs=19)
+*/
+#if(0)
+ATSifthen(ATSCKptrisnull(tmp118__1)) { ATSINSdeadcode_fail() ; } ;
+#endif
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13520(line=824, offs=14) -- 13520(line=824, offs=14)
+*/
+ATSINSlab(__atstmplab12):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13524(line=824, offs=18) -- 13881(line=841, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13543(line=825, offs=16) -- 13550(line=825, offs=23)
+*/
+ATSINSmove(tmp122__1, ATSfunclo_clo(ATSPMVrefarg0(arg1), (atstype_cloptr, atsrefarg1_type(atstkind_t0ype(atstype_int))), atstkind_t0ype(atstype_bool))(ATSPMVrefarg0(arg1), ATSPMVrefarg1(ATSPMVptrof(ATSSELcon(tmp118__1, postiats_tysum_1, atslab__0))))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13561(line=827, offs=5) -- 13836(line=839, offs=8)
+*/
+ATSif(
+tmp122__1
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13580(line=828, offs=12) -- 13693(line=833, offs=8)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13633(line=831, offs=16) -- 13651(line=831, offs=34)
+*/
+ATSINSmove(tmp123__1, auxmain_62__62__1(ATSSELcon(tmp118__1, postiats_tysum_1, atslab__1), arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13626(line=831, offs=9) -- 13651(line=831, offs=34)
+*/
+ATSINSstore(ATSSELcon(tmp118__1, postiats_tysum_1, atslab__1), tmp123__1) ;
+/* (*nothing*) */
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13580(line=828, offs=12) -- 13586(line=828, offs=18)
+*/
+ATSINSmove(tmpret117__1, tmp118__1) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13580(line=828, offs=12) -- 13693(line=833, offs=8)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13731(line=835, offs=7) -- 13836(line=839, offs=8)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13786(line=837, offs=19) -- 13789(line=837, offs=22)
+*/
+ATSINSmove(tmp124__1, ATSSELcon(tmp118__1, postiats_tysum_1, atslab__1)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13812(line=838, offs=23) -- 13827(line=838, offs=38)
+*/
+ATSINSfreecon(tmp118__1) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13731(line=835, offs=7) -- 13753(line=835, offs=29)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp124__1) ;
+ATSINSmove_tlcal(apy1, arg1) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_auxmain_con_63) ;
+ATStailcal_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13731(line=835, offs=7) -- 13836(line=839, offs=8)
+*/
+/*
+INSletpop()
+*/
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13524(line=824, offs=18) -- 13881(line=841, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13259(line=809, offs=1) -- 13915(line=843, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret117__1) ;
+} /* end of [auxmain_con_63__63__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+/*
+local: auxmain_con_63$1(level=2)
+global: auxmain_con_63$1(level=2), __patsfun_64$1(level=3)
+local: xs$4252(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk)))), pred$4253(2)(HSEfun(CLO(1); HSErefarg(1; HSEs2exp(S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))); HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_bool)))))
+global: xs$4252(2)(HSEapp(HSEcst(atstkind_type); HSEs2exp(S2Eextkind(atstype_ptrk)))), pred$4253(2)(HSEfun(CLO(1); HSErefarg(1; HSEs2exp(S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))); HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_bool)))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_64__64__1(atstkind_type(atstype_ptrk) env0, atstype_cloptr env1, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret114__1, atstype_boxed) ;
+// ATStmpdec_void(tmp115__1) ;
+// ATStmpdec_void(tmp116__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+ATSINSflab(__patsflab___patsfun_64):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13066(line=789, offs=20) -- 13161(line=798, offs=2)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13078(line=791, offs=3) -- 13099(line=791, offs=24)
+*/
+ATSINSmove(tmpret114__1, auxmain_con_63__63__1(env0, env1)) ;
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13106(line=794, offs=3) -- 13109(line=794, offs=6)
+*/
+ATSINSmove_void(tmp115__1, atspre_lazy_vt_free(env0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 13113(line=795, offs=3) -- 13157(line=796, offs=33)
+*/
+ATSINSmove_void(tmp116__1, atspre_cloptr_free(ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), env1))) ;
+
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret114__1) ;
+} /* end of [__patsfun_64__64__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1898(line=66, offs=40) -- 1928(line=66, offs=70)
+*/
+/*
+local: is_prime_21$0(level=0)
+global: is_prime_21$0(level=0), __patsfun_69$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+__patsfun_69(atsrefarg1_type(atstkind_t0ype(atstype_int)) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret137, atstkind_t0ype(atstype_bool)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1898(line=66, offs=40) -- 1928(line=66, offs=70)
+*/
+ATSINSflab(__patsflab___patsfun_69):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1907(line=66, offs=49) -- 1928(line=66, offs=70)
+*/
+ATSINSmove(tmpret137, is_prime_21(ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), ATSderef(arg0, atstkind_t0ype(atstype_int))))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret137) ;
+} /* end of [__patsfun_69] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1967(line=69, offs=4) -- 2039(line=70, offs=18)
+*/
+/*
+local: 
+global: div_gt_zero_70$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+div_gt_zero_70(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret138, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp139, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 1967(line=69, offs=4) -- 2039(line=70, offs=18)
+*/
+ATSINSflab(__patsflab_div_gt_zero_70):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2033(line=70, offs=12) -- 2038(line=70, offs=17)
+*/
+ATSINSmove(tmp139, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2024(line=70, offs=3) -- 2039(line=70, offs=18)
+*/
+ATSINSmove(tmpret138, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), tmp139)) ;
+ATSfunbody_end()
+ATSreturn(tmpret138) ;
+} /* end of [div_gt_zero_70] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2077(line=73, offs=5) -- 2740(line=100, offs=6)
+*/
+/*
+local: exp_mod_prime_71$0(level=0)
+global: exp_mod_prime_71$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+exp_mod_prime_71(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1, atstkind_t0ype(atstype_int) arg2)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy2, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret140, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref141, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref142, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp143, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp144, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmpref147, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp148, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref149, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref150, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp151, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp152, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp153, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmpref156, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp157, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2077(line=73, offs=5) -- 2740(line=100, offs=6)
+*/
+ATSINSflab(__patsflab_exp_mod_prime_71):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2145(line=74, offs=3) -- 2740(line=100, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2157(line=75, offs=9) -- 2159(line=75, offs=11)
+*/
+/*
+ATSINStmpdec(tmpref141) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2162(line=75, offs=14) -- 2167(line=75, offs=19)
+*/
+ATSINSmove(tmpref141, atspre_g0int_mod_int(arg0, arg2)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2176(line=76, offs=9) -- 2178(line=76, offs=11)
+*/
+/*
+ATSINStmpdec(tmpref142) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2186(line=76, offs=19) -- 2191(line=76, offs=24)
+*/
+ATSINSmove(tmp143, atspre_g1int_sub_int(arg2, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2181(line=76, offs=14) -- 2192(line=76, offs=25)
+*/
+ATSINSmove(tmpref142, atspre_g0int_mod_int(arg1, tmp143)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2202(line=78, offs=5) -- 2734(line=99, offs=12)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2221(line=79, offs=9) -- 2222(line=79, offs=10)
+*/
+ATSINSlab(__atstmplab13):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2091(line=73, offs=19) -- 2092(line=73, offs=20)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab15) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2222(line=79, offs=10) -- 2222(line=79, offs=10)
+*/
+ATSINSlab(__atstmplab14):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2226(line=79, offs=14) -- 2227(line=79, offs=15)
+*/
+ATSINSmove(tmpret140, ATSPMVi0nt(0)) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2237(line=80, offs=10) -- 2237(line=80, offs=10)
+*/
+ATSINSlab(__atstmplab15):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2270(line=82, offs=14) -- 2275(line=82, offs=19)
+*/
+ATSINSmove(tmp144, ATSLIB_056_prelude__gt_g1int_int__7__3(arg1, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2267(line=82, offs=11) -- 2722(line=98, offs=14)
+*/
+ATSif(
+tmp144
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2293(line=83, offs=13) -- 2693(line=96, offs=16)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2315(line=84, offs=19) -- 2317(line=84, offs=21)
+*/
+/*
+ATSINStmpdec(tmpref147) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2340(line=84, offs=44) -- 2347(line=84, offs=51)
+*/
+ATSINSmove(tmp148, atspre_g0int_half_int(tmpref142)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2331(line=84, offs=35) -- 2349(line=84, offs=53)
+*/
+ATSINSmove(tmpref147, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), tmp148)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2368(line=85, offs=19) -- 2370(line=85, offs=21)
+*/
+/*
+ATSINStmpdec(tmpref149) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2373(line=85, offs=24) -- 2379(line=85, offs=30)
+*/
+ATSINSmove(tmpref149, atspre_g0int_mod_int(tmpref142, ATSPMVi0nt(2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2398(line=86, offs=19) -- 2402(line=86, offs=23)
+*/
+/*
+ATSINStmpdec(tmpref150) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2425(line=86, offs=46) -- 2430(line=86, offs=51)
+*/
+ATSINSmove(tmp152, atspre_g1int_mul_int(arg0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2425(line=86, offs=46) -- 2434(line=86, offs=55)
+*/
+ATSINSmove(tmp151, atspre_g0int_mod_int(tmp152, arg2)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2416(line=86, offs=37) -- 2435(line=86, offs=56)
+*/
+ATSINSmove(tmpref150, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), tmp151)) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2468(line=88, offs=18) -- 2474(line=88, offs=24)
+*/
+ATSINSmove(tmp153, ATSLIB_056_prelude__eq_g0int_int__13__8(tmpref149, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2465(line=88, offs=15) -- 2677(line=95, offs=20)
+*/
+ATSif(
+tmp153
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2496(line=89, offs=17) -- 2522(line=89, offs=43)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmpref150) ;
+ATSINSmove_tlcal(apy1, tmpref147) ;
+ATSINSmove_tlcal(apy2, arg2) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSargmove_tlcal(arg2, apy2) ;
+ATSINSfgoto(__patsflab_exp_mod_prime_71) ;
+ATStailcal_end()
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2558(line=91, offs=17) -- 2677(line=95, offs=20)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2584(line=92, offs=23) -- 2585(line=92, offs=24)
+*/
+/*
+ATSINStmpdec(tmpref156) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2592(line=92, offs=31) -- 2618(line=92, offs=57)
+*/
+ATSINSmove(tmp157, exp_mod_prime_71(tmpref150, tmpref147, arg2)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2588(line=92, offs=27) -- 2618(line=92, offs=57)
+*/
+ATSINSmove(tmpref156, atspre_g0int_mul_int(arg0, tmp157)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2656(line=94, offs=19) -- 2657(line=94, offs=20)
+*/
+ATSINSmove(tmpret140, tmpref156) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2558(line=91, offs=17) -- 2677(line=95, offs=20)
+*/
+/*
+INSletpop()
+*/
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2293(line=83, offs=13) -- 2693(line=96, offs=16)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2721(line=98, offs=13) -- 2722(line=98, offs=14)
+*/
+ATSINSmove(tmpret140, ATSPMVi0nt(1)) ;
+} /* ATSendif */
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2145(line=74, offs=3) -- 2740(line=100, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret140) ;
+} /* end of [exp_mod_prime_71] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$3(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__3(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__3, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__3, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__3, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__3, atspre_g1int_gt_int(arg0, tmp12__3)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__3) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$8(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__8(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__8, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__8, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__8, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__8, atspre_g0int_eq_int(arg0, tmp19__8)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__8) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__8] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2918(line=104, offs=5) -- 3749(line=133, offs=6)
+*/
+/*
+local: exp_6$0(level=0), is_prime_21$0(level=0), div_gt_zero_70$0(level=0), exp_mod_prime_71$0(level=0)
+global: witness_0$0(level=0), exp_6$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), div_gt_zero_70$0(level=0), exp_mod_prime_71$0(level=0), jacobi_77$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+jacobi_77(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret158, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2918(line=104, offs=5) -- 3749(line=133, offs=6)
+*/
+ATSINSflab(__patsflab_jacobi_77):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2959(line=105, offs=3) -- 3749(line=133, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3736(line=132, offs=5) -- 3743(line=132, offs=12)
+*/
+ATSINSmove(tmpret158, loop_83(arg0, arg1, ATSPMVi0nt(2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2959(line=105, offs=3) -- 3749(line=133, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret158) ;
+} /* end of [jacobi_77] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2971(line=106, offs=9) -- 3298(line=116, offs=12)
+*/
+/*
+local: exp_mod_prime_71$0(level=0)
+global: exp_mod_prime_71$0(level=0), legendre_78$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+legendre_78(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret159, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp160, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref161, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp162, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp163, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp164, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp165, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp168, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp169, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp170, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp173, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 2971(line=106, offs=9) -- 3298(line=116, offs=12)
+*/
+ATSINSflab(__patsflab_legendre_78):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3059(line=107, offs=13) -- 3064(line=107, offs=18)
+*/
+ATSINSmove(tmp160, atspre_g0int_mod_int(arg1, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3053(line=107, offs=7) -- 3298(line=116, offs=12)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3078(line=108, offs=11) -- 3079(line=108, offs=12)
+*/
+ATSINSlab(__atstmplab16):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3059(line=107, offs=13) -- 3064(line=107, offs=18)
+*/
+ATSifnthen(ATSCKpat_int(tmp160, ATSPMVint(0))) { ATSINSgoto(__atstmplab18) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3079(line=108, offs=12) -- 3079(line=108, offs=12)
+*/
+ATSINSlab(__atstmplab17):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3083(line=108, offs=16) -- 3084(line=108, offs=17)
+*/
+ATSINSmove(tmpret159, ATSPMVi0nt(0)) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3096(line=109, offs=12) -- 3096(line=109, offs=12)
+*/
+ATSINSlab(__atstmplab18):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3100(line=109, offs=16) -- 3298(line=116, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3118(line=110, offs=15) -- 3119(line=110, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref161) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3140(line=110, offs=37) -- 3145(line=110, offs=42)
+*/
+ATSINSmove(tmp163, atspre_g1int_sub_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3139(line=110, offs=36) -- 3150(line=110, offs=47)
+*/
+ATSINSmove(tmp162, atspre_g1int_div_int(tmp163, ATSPMVi0nt(2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3122(line=110, offs=19) -- 3154(line=110, offs=51)
+*/
+ATSINSmove(tmpref161, exp_mod_prime_71(arg0, tmp162, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3182(line=112, offs=17) -- 3183(line=112, offs=18)
+*/
+ATSINSmove(tmp164, tmpref161) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3176(line=112, offs=11) -- 3286(line=115, offs=21)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3202(line=113, offs=16) -- 3202(line=113, offs=16)
+*/
+ATSINSlab(__atstmplab19):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-guard:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3213(line=113, offs=27) -- 3218(line=113, offs=32)
+*/
+ATSINSmove(tmp169, atspre_g1int_sub_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3208(line=113, offs=22) -- 3219(line=113, offs=33)
+*/
+ATSINSmove(tmp168, atspre_g0int_mod_int(tmp164, tmp169)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3208(line=113, offs=22) -- 3223(line=113, offs=37)
+*/
+ATSINSmove(tmp165, ATSLIB_056_prelude__eq_g0int_int__13__9(tmp168, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3208(line=113, offs=22) -- 3223(line=113, offs=37)
+*/
+ATSifnthen(ATSCKpat_bool(tmp165, ATSPMVbool_true())) { ATSINSgoto(__atstmplab20) ; } ;
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3227(line=113, offs=41) -- 3229(line=113, offs=43)
+*/
+ATSINSmove(tmpret159, atspre_g1int_neg_int(ATSPMVi0nt(1))) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3245(line=114, offs=16) -- 3245(line=114, offs=16)
+*/
+ATSINSlab(__atstmplab20):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-guard:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3251(line=114, offs=22) -- 3256(line=114, offs=27)
+*/
+ATSINSmove(tmp173, atspre_g0int_mod_int(tmp164, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3251(line=114, offs=22) -- 3260(line=114, offs=31)
+*/
+ATSINSmove(tmp170, ATSLIB_056_prelude__eq_g0int_int__13__10(tmp173, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3251(line=114, offs=22) -- 3260(line=114, offs=31)
+*/
+ATSifnthen(ATSCKpat_bool(tmp170, ATSPMVbool_true())) { ATSINSgoto(__atstmplab21) ; } ;
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3264(line=114, offs=35) -- 3265(line=114, offs=36)
+*/
+ATSINSmove(tmpret159, ATSPMVi0nt(0)) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3281(line=115, offs=16) -- 3281(line=115, offs=16)
+*/
+ATSINSlab(__atstmplab21):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3285(line=115, offs=20) -- 3286(line=115, offs=21)
+*/
+ATSINSmove(tmpret159, ATSPMVi0nt(1)) ;
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3100(line=109, offs=16) -- 3298(line=116, offs=12)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret159) ;
+} /* end of [legendre_78] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$9(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__9(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__9, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__9, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__9, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__9, atspre_g0int_eq_int(arg0, tmp19__9)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__9) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__9] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$10(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__10(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__10, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__10, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__10, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__10, atspre_g0int_eq_int(arg0, tmp19__10)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__10) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__10] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3312(line=118, offs=9) -- 3467(line=121, offs=17)
+*/
+/*
+local: div_gt_zero_70$0(level=0), get_multiplicity_82$0(level=1)
+global: div_gt_zero_70$0(level=0), get_multiplicity_82$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+get_multiplicity_82(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret174, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp175, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp176, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp177, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3312(line=118, offs=9) -- 3467(line=121, offs=17)
+*/
+ATSINSflab(__patsflab_get_multiplicity_82):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3384(line=119, offs=13) -- 3389(line=119, offs=18)
+*/
+ATSINSmove(tmp175, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3378(line=119, offs=7) -- 3467(line=121, offs=17)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3403(line=120, offs=11) -- 3404(line=120, offs=12)
+*/
+ATSINSlab(__atstmplab22):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3384(line=119, offs=13) -- 3389(line=119, offs=18)
+*/
+ATSifnthen(ATSCKpat_int(tmp175, ATSPMVint(0))) { ATSINSgoto(__atstmplab24) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3404(line=120, offs=12) -- 3404(line=120, offs=12)
+*/
+ATSINSlab(__atstmplab23):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3429(line=120, offs=37) -- 3446(line=120, offs=54)
+*/
+ATSINSmove(tmp177, div_gt_zero_70(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3412(line=120, offs=20) -- 3450(line=120, offs=58)
+*/
+ATSINSmove(tmp176, get_multiplicity_82(tmp177, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3408(line=120, offs=16) -- 3450(line=120, offs=58)
+*/
+ATSINSmove(tmpret174, atspre_g1int_add_int(ATSPMVi0nt(1), tmp176)) ;
+
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3462(line=121, offs=12) -- 3462(line=121, offs=12)
+*/
+ATSINSlab(__atstmplab24):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3466(line=121, offs=16) -- 3467(line=121, offs=17)
+*/
+ATSINSmove(tmpret174, ATSPMVi0nt(0)) ;
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret174) ;
+} /* end of [get_multiplicity_82] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3481(line=123, offs=9) -- 3726(line=130, offs=24)
+*/
+/*
+local: exp_6$0(level=0), is_prime_21$0(level=0), legendre_78$0(level=1), get_multiplicity_82$0(level=1), loop_83$0(level=1)
+global: exp_6$0(level=0), is_prime_21$0(level=0), div_gt_zero_70$0(level=0), exp_mod_prime_71$0(level=0), legendre_78$0(level=1), get_multiplicity_82$0(level=1), loop_83$0(level=1)
+local: a$5132(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), n$5133(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: a$5132(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), n$5133(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_83(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret178, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp179, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp182, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp183, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp186, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp187, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp188, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp189, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp190, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp191, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp192, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3481(line=123, offs=9) -- 3726(line=130, offs=24)
+*/
+ATSINSflab(__patsflab_loop_83):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3537(line=124, offs=10) -- 3544(line=124, offs=17)
+*/
+ATSINSmove(tmp179, ATSLIB_056_prelude__gt_g1int_int__7__4(arg0, env1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3534(line=124, offs=7) -- 3726(line=130, offs=24)
+*/
+ATSif(
+tmp179
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3558(line=125, offs=9) -- 3559(line=125, offs=10)
+*/
+ATSINSmove(tmpret178, ATSPMVi0nt(1)) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3582(line=127, offs=12) -- 3609(line=127, offs=39)
+*/
+ATSINSmove(tmp186, atspre_g0int_mod_int(env0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3582(line=127, offs=12) -- 3609(line=127, offs=39)
+*/
+ATSINSmove(tmp183, ATSLIB_056_prelude__eq_g0int_int__13__11(tmp186, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3582(line=127, offs=12) -- 3609(line=127, offs=39)
+*/
+ATSif(
+tmp183
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3582(line=127, offs=12) -- 3609(line=127, offs=39)
+*/
+ATSINSmove(tmp182, is_prime_21(arg0)) ;
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3582(line=127, offs=12) -- 3609(line=127, offs=39)
+*/
+ATSINSmove(tmp182, ATSPMVbool_false()) ;
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3579(line=127, offs=9) -- 3726(line=130, offs=24)
+*/
+ATSif(
+tmp182
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3631(line=128, offs=16) -- 3638(line=128, offs=23)
+*/
+ATSINSmove(tmp188, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3626(line=128, offs=11) -- 3639(line=128, offs=24)
+*/
+ATSINSmove(tmp187, loop_83(env0, env1, tmp188)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3646(line=128, offs=31) -- 3662(line=128, offs=47)
+*/
+ATSINSmove(tmp190, legendre_78(arg0, env1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3664(line=128, offs=49) -- 3688(line=128, offs=73)
+*/
+ATSINSmove(tmp191, get_multiplicity_82(env0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3642(line=128, offs=27) -- 3689(line=128, offs=74)
+*/
+ATSINSmove(tmp189, exp_6(tmp190, tmp191)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3626(line=128, offs=11) -- 3689(line=128, offs=74)
+*/
+ATSINSmove(tmpret178, atspre_g0int_mul_int(tmp187, tmp189)) ;
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3718(line=130, offs=16) -- 3725(line=130, offs=23)
+*/
+ATSINSmove(tmp192, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3713(line=130, offs=11) -- 3726(line=130, offs=24)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp192) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSfgoto(__patsflab_loop_83) ;
+ATStailcal_end()
+
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret178) ;
+} /* end of [loop_83] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$4(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__4(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__4, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__4, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__4, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__4, atspre_g1int_gt_int(arg0, tmp12__4)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__4) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__4] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$11(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__11(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__11, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__11, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__11, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__11, atspre_g0int_eq_int(arg0, tmp19__11)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__11) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__11] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3754(line=135, offs=4) -- 3823(line=136, offs=32)
+*/
+/*
+local: divisors_39$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), divisors_39$0(level=0), count_divisors_86$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+count_divisors_86(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret193, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp205, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3754(line=135, offs=4) -- 3823(line=136, offs=32)
+*/
+ATSINSflab(__patsflab_count_divisors_86):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3811(line=136, offs=20) -- 3821(line=136, offs=30)
+*/
+ATSINSmove(tmp205, divisors_39(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3794(line=136, offs=3) -- 3823(line=136, offs=32)
+*/
+ATSINSmove(tmpret193, ATSLIB_056_prelude__stream_vt_length__87__1(tmp205)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret193) ;
+} /* end of [count_divisors_86] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 8385(line=480, offs=17) -- 8607(line=495, offs=4)
+*/
+/*
+local: 
+global: stream_vt_length$87$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = a(8177)
+tmparg = S2Evar(a(8177))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_int)
+ATSLIB_056_prelude__stream_vt_length__87(atstkind_type(atstype_ptrk) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret194, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8369(line=480, offs=1) -- 8607(line=495, offs=4)
+*/
+ATSINSflab(__patsflab_stream_vt_length):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8393(line=480, offs=25) -- 8607(line=495, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8590(line=494, offs=16) -- 8602(line=494, offs=28)
+*/
+ATSINSmove(tmpret194, ATSfunclo_fun(PMVd2vfunlab(d2v=loop$4186(1), flab=loop_88$0(level=1)), (atstkind_type(atstype_ptrk), atstkind_t0ype(atstype_int)), atstkind_t0ype(atstype_int))(arg0, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8393(line=480, offs=25) -- 8607(line=495, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret194) ;
+} /* end of [ATSLIB_056_prelude__stream_vt_length__87] */
+#endif // end of [TEMPLATE]
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 8404(line=483, offs=1) -- 8548(line=491, offs=2)
+*/
+/*
+local: loop_88$0(level=1)
+global: loop_88$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_88__88(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret195, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp196, atstype_boxed) ;
+ATStmpdec(tmp198, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp199, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8404(line=483, offs=1) -- 8548(line=491, offs=2)
+*/
+ATSINSflab(__patsflab_loop_88):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8470(line=488, offs=9) -- 8473(line=488, offs=12)
+*/
+ATSINSmove_llazyeval(tmp196, atstype_boxed, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8464(line=488, offs=3) -- 8546(line=490, offs=44)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8481(line=489, offs=5) -- 8497(line=489, offs=21)
+*/
+ATSINSlab(__atstmplab25):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8470(line=488, offs=9) -- 8473(line=488, offs=12)
+*/
+ATSifthen(ATSCKptriscons(tmp196)) { ATSINSgoto(__atstmplab28) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8497(line=489, offs=21) -- 8497(line=489, offs=21)
+*/
+ATSINSlab(__atstmplab26):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8501(line=489, offs=25) -- 8502(line=489, offs=26)
+*/
+ATSINSmove(tmpret195, arg1) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8507(line=490, offs=5) -- 8529(line=490, offs=27)
+*/
+ATSINSlab(__atstmplab27):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8470(line=488, offs=9) -- 8473(line=488, offs=12)
+*/
+#if(0)
+ATSifthen(ATSCKptrisnull(tmp196)) { ATSINSdeadcode_fail() ; } ;
+#endif
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8529(line=490, offs=27) -- 8529(line=490, offs=27)
+*/
+ATSINSlab(__atstmplab28):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8526(line=490, offs=24) -- 8528(line=490, offs=26)
+*/
+ATSINSmove(tmp198, ATSSELcon(tmp196, postiats_tysum_3, atslab__1)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8507(line=490, offs=5) -- 8546(line=490, offs=44)
+*/
+ATSINSfreecon(tmp196) ;
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8542(line=490, offs=40) -- 8545(line=490, offs=43)
+*/
+ATSINSmove(tmp199, PMVtmpltcst(g1int_add<S2Eextkind(atstype_int)>)(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8533(line=490, offs=31) -- 8546(line=490, offs=44)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp198) ;
+ATSINSmove_tlcal(apy1, tmp199) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_88) ;
+ATStailcal_end()
+
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret195) ;
+} /* end of [loop_88__88] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 8385(line=480, offs=17) -- 8607(line=495, offs=4)
+*/
+/*
+local: 
+global: stream_vt_length$87$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(8177)
+tmparg = S2Evar(a(8177))
+tmpsub = Some(a(8177) -> S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))
+*/
+atstkind_t0ype(atstype_int)
+ATSLIB_056_prelude__stream_vt_length__87__1(atstkind_type(atstype_ptrk) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret194__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8369(line=480, offs=1) -- 8607(line=495, offs=4)
+*/
+ATSINSflab(__patsflab_stream_vt_length):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8393(line=480, offs=25) -- 8607(line=495, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8590(line=494, offs=16) -- 8602(line=494, offs=28)
+*/
+ATSINSmove(tmpret194__1, loop_88__88__1(arg0, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8393(line=480, offs=25) -- 8607(line=495, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret194__1) ;
+} /* end of [ATSLIB_056_prelude__stream_vt_length__87__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 8404(line=483, offs=1) -- 8548(line=491, offs=2)
+*/
+/*
+local: loop_88$1(level=2)
+global: loop_88$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_88__88__1(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret195__1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp196__1, atstype_boxed) ;
+ATStmpdec(tmp198__1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp199__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8404(line=483, offs=1) -- 8548(line=491, offs=2)
+*/
+ATSINSflab(__patsflab_loop_88):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8470(line=488, offs=9) -- 8473(line=488, offs=12)
+*/
+ATSINSmove_llazyeval(tmp196__1, atstype_boxed, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8464(line=488, offs=3) -- 8546(line=490, offs=44)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8481(line=489, offs=5) -- 8497(line=489, offs=21)
+*/
+ATSINSlab(__atstmplab25):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8470(line=488, offs=9) -- 8473(line=488, offs=12)
+*/
+ATSifthen(ATSCKptriscons(tmp196__1)) { ATSINSgoto(__atstmplab28) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8497(line=489, offs=21) -- 8497(line=489, offs=21)
+*/
+ATSINSlab(__atstmplab26):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8501(line=489, offs=25) -- 8502(line=489, offs=26)
+*/
+ATSINSmove(tmpret195__1, arg1) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8507(line=490, offs=5) -- 8529(line=490, offs=27)
+*/
+ATSINSlab(__atstmplab27):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8470(line=488, offs=9) -- 8473(line=488, offs=12)
+*/
+#if(0)
+ATSifthen(ATSCKptrisnull(tmp196__1)) { ATSINSdeadcode_fail() ; } ;
+#endif
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8529(line=490, offs=27) -- 8529(line=490, offs=27)
+*/
+ATSINSlab(__atstmplab28):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8526(line=490, offs=24) -- 8528(line=490, offs=26)
+*/
+ATSINSmove(tmp198__1, ATSSELcon(tmp196__1, postiats_tysum_1, atslab__1)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8507(line=490, offs=5) -- 8546(line=490, offs=44)
+*/
+ATSINSfreecon(tmp196__1) ;
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8542(line=490, offs=40) -- 8545(line=490, offs=43)
+*/
+ATSINSmove(tmp199__1, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 8533(line=490, offs=31) -- 8546(line=490, offs=44)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp198__1) ;
+ATSINSmove_tlcal(apy1, tmp199__1) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_88) ;
+ATStailcal_end()
+
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret195__1) ;
+} /* end of [loop_88__88__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3903(line=141, offs=4) -- 4502(line=167, offs=6)
+*/
+/*
+local: sqrt_int_18$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), sum_divisors_91$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+sum_divisors_91(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret206, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3903(line=141, offs=4) -- 4502(line=167, offs=6)
+*/
+ATSINSflab(__patsflab_sum_divisors_91):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3941(line=142, offs=3) -- 4502(line=167, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4486(line=166, offs=5) -- 4496(line=166, offs=15)
+*/
+ATSINSmove(tmpret206, loop_92(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3941(line=142, offs=3) -- 4502(line=167, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret206) ;
+} /* end of [sum_divisors_91] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3953(line=143, offs=9) -- 4476(line=164, offs=27)
+*/
+/*
+local: sqrt_int_18$0(level=0), loop_92$0(level=1)
+global: sqrt_int_18$0(level=0), loop_92$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_92(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret207, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp208, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp211, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp212, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp215, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp216, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp219, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref220, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp221, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp224, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref225, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp226, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp227, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp228, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp229, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 3953(line=143, offs=9) -- 4476(line=164, offs=27)
+*/
+ATSINSflab(__patsflab_loop_92):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4047(line=144, offs=17) -- 4057(line=144, offs=27)
+*/
+ATSINSmove(tmp211, sqrt_int_18(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4040(line=144, offs=10) -- 4057(line=144, offs=27)
+*/
+ATSINSmove(tmp208, ATSLIB_056_prelude__gte_g1int_int__43__2(arg1, tmp211)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4037(line=144, offs=7) -- 4476(line=164, offs=27)
+*/
+ATSif(
+tmp208
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4075(line=145, offs=12) -- 4082(line=145, offs=19)
+*/
+ATSINSmove(tmp215, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4075(line=145, offs=12) -- 4086(line=145, offs=23)
+*/
+ATSINSmove(tmp212, ATSLIB_056_prelude__eq_g0int_int__13__12(tmp215, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4072(line=145, offs=9) -- 4284(line=155, offs=12)
+*/
+ATSif(
+tmp212
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4105(line=146, offs=14) -- 4112(line=146, offs=21)
+*/
+ATSINSmove(tmp219, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4105(line=146, offs=14) -- 4119(line=146, offs=28)
+*/
+ATSINSmove(tmp216, ATSLIB_056_prelude__neq_g1int_int__47__2(tmp219, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4102(line=146, offs=11) -- 4259(line=153, offs=16)
+*/
+ATSif(
+tmp216
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4137(line=147, offs=13) -- 4228(line=151, offs=16)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4159(line=148, offs=19) -- 4160(line=148, offs=20)
+*/
+/*
+ATSINStmpdec(tmpref220) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4168(line=148, offs=28) -- 4175(line=148, offs=35)
+*/
+ATSINSmove(tmpref220, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4205(line=150, offs=15) -- 4212(line=150, offs=22)
+*/
+ATSINSmove(tmpret207, atspre_g1int_add_int(arg1, tmpref220)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4137(line=147, offs=13) -- 4228(line=151, offs=16)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4256(line=153, offs=13) -- 4259(line=153, offs=16)
+*/
+ATSINSmove(tmpret207, arg1) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4283(line=155, offs=11) -- 4284(line=155, offs=12)
+*/
+ATSINSmove(tmpret207, ATSPMVi0nt(0)) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4307(line=157, offs=12) -- 4314(line=157, offs=19)
+*/
+ATSINSmove(tmp224, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4307(line=157, offs=12) -- 4318(line=157, offs=23)
+*/
+ATSINSmove(tmp221, ATSLIB_056_prelude__eq_g0int_int__13__13(tmp224, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4304(line=157, offs=9) -- 4476(line=164, offs=27)
+*/
+ATSif(
+tmp221
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4334(line=158, offs=11) -- 4436(line=162, offs=14)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4354(line=159, offs=17) -- 4355(line=159, offs=18)
+*/
+/*
+ATSINStmpdec(tmpref225) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4363(line=159, offs=26) -- 4370(line=159, offs=33)
+*/
+ATSINSmove(tmpref225, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4396(line=161, offs=13) -- 4403(line=161, offs=20)
+*/
+ATSINSmove(tmp226, atspre_g1int_add_int(arg1, tmpref225)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4414(line=161, offs=31) -- 4421(line=161, offs=38)
+*/
+ATSINSmove(tmp228, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4406(line=161, offs=23) -- 4422(line=161, offs=39)
+*/
+ATSINSmove(tmp227, loop_92(arg0, tmp228)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4396(line=161, offs=13) -- 4422(line=161, offs=39)
+*/
+ATSINSmove(tmpret207, atspre_g0int_add_int(tmp226, tmp227)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4334(line=158, offs=11) -- 4436(line=162, offs=14)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4468(line=164, offs=19) -- 4475(line=164, offs=26)
+*/
+ATSINSmove(tmp229, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4460(line=164, offs=11) -- 4476(line=164, offs=27)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, arg0) ;
+ATSINSmove_tlcal(apy1, tmp229) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_92) ;
+ATStailcal_end()
+
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret207) ;
+} /* end of [loop_92] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12757(line=663, offs=3) -- 12797(line=663, offs=43)
+*/
+/*
+local: 
+global: gte_g1int_int$43$2(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4635)
+tmparg = S2Evar(tk(4635))
+tmpsub = Some(tk(4635) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__2(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret75__2, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp76__2, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12741(line=662, offs=1) -- 12797(line=663, offs=43)
+*/
+ATSINSflab(__patsflab_gte_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12784(line=663, offs=30) -- 12795(line=663, offs=41)
+*/
+ATSINSmove(tmp76__2, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12766(line=663, offs=12) -- 12797(line=663, offs=43)
+*/
+ATSINSmove(tmpret75__2, atspre_g1int_gte_int(arg0, tmp76__2)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret75__2) ;
+} /* end of [ATSLIB_056_prelude__gte_g1int_int__43__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$12(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__12(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__12, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__12, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__12, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__12, atspre_g0int_eq_int(arg0, tmp19__12)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__12) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__12] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12916(line=672, offs=3) -- 12956(line=672, offs=43)
+*/
+/*
+local: 
+global: neq_g1int_int$47$2(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4641)
+tmparg = S2Evar(tk(4641))
+tmpsub = Some(tk(4641) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g1int_int__47__2(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret85__2, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp86__2, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12900(line=671, offs=1) -- 12956(line=672, offs=43)
+*/
+ATSINSflab(__patsflab_neq_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12943(line=672, offs=30) -- 12954(line=672, offs=41)
+*/
+ATSINSmove(tmp86__2, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12925(line=672, offs=12) -- 12956(line=672, offs=43)
+*/
+ATSINSmove(tmpret85__2, atspre_g1int_neq_int(arg0, tmp86__2)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret85__2) ;
+} /* end of [ATSLIB_056_prelude__neq_g1int_int__47__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$13(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__13(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__13, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__13, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__13, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__13, atspre_g0int_eq_int(arg0, tmp19__13)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__13) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__13] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4507(line=169, offs=4) -- 4562(line=170, offs=22)
+*/
+/*
+local: sum_divisors_91$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), sum_divisors_91$0(level=0), is_perfect_98$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_perfect_98(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret230, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp233, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4507(line=169, offs=4) -- 4562(line=170, offs=22)
+*/
+ATSINSflab(__patsflab_is_perfect_98):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4543(line=170, offs=3) -- 4557(line=170, offs=17)
+*/
+ATSINSmove(tmp233, sum_divisors_91(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4543(line=170, offs=3) -- 4562(line=170, offs=22)
+*/
+ATSINSmove(tmpret230, ATSLIB_056_prelude__eq_g0int_int__13__14(tmp233, arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret230) ;
+} /* end of [is_perfect_98] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$14(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__14(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__14, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__14, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__14, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__14, atspre_g0int_eq_int(arg0, tmp19__14)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__14) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__14] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4568(line=172, offs=5) -- 4888(line=186, offs=8)
+*/
+/*
+local: rip_100$0(level=0)
+global: rip_100$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+rip_100(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret234, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp235, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp240, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp241, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp244, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref245, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp246, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp249, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4568(line=172, offs=5) -- 4888(line=186, offs=8)
+*/
+ATSINSflab(__patsflab_rip_100):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4690(line=173, offs=6) -- 4695(line=173, offs=11)
+*/
+ATSINSmove(tmp240, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4690(line=173, offs=6) -- 4700(line=173, offs=16)
+*/
+ATSINSmove(tmp235, ATSLIB_056_prelude__neq_g0int_int__101__1(tmp240, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4687(line=173, offs=3) -- 4888(line=186, offs=8)
+*/
+ATSif(
+tmp235
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4710(line=174, offs=5) -- 4711(line=174, offs=6)
+*/
+ATSINSmove(tmpret234, arg0) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4726(line=176, offs=8) -- 4731(line=176, offs=13)
+*/
+ATSINSmove(tmp244, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4726(line=176, offs=8) -- 4735(line=176, offs=17)
+*/
+ATSINSmove(tmp241, ATSLIB_056_prelude__gt_g1int_int__7__5(tmp244, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4723(line=176, offs=5) -- 4888(line=186, offs=8)
+*/
+ATSif(
+tmp241
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4747(line=177, offs=7) -- 4871(line=184, offs=10)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4763(line=178, offs=13) -- 4765(line=178, offs=15)
+*/
+/*
+ATSINStmpdec(tmpref245) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4768(line=178, offs=18) -- 4773(line=178, offs=23)
+*/
+ATSINSmove(tmpref245, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4794(line=180, offs=12) -- 4800(line=180, offs=18)
+*/
+ATSINSmove(tmp246, ATSLIB_056_prelude__lt_g1int_int__23__2(tmpref245, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4791(line=180, offs=9) -- 4861(line=183, offs=12)
+*/
+ATSif(
+tmp246
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4825(line=181, offs=20) -- 4835(line=181, offs=30)
+*/
+ATSINSmove(tmp249, rip_100(tmpref245, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4816(line=181, offs=11) -- 4836(line=181, offs=31)
+*/
+ATSINSmove(tmpret234, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), tmp249)) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4860(line=183, offs=11) -- 4861(line=183, offs=12)
+*/
+ATSINSmove(tmpret234, ATSPMVi0nt(1)) ;
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4747(line=177, offs=7) -- 4871(line=184, offs=10)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4887(line=186, offs=7) -- 4888(line=186, offs=8)
+*/
+ATSINSmove(tmpret234, ATSPMVi0nt(1)) ;
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret234) ;
+} /* end of [rip_100] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12337(line=639, offs=3) -- 12377(line=639, offs=43)
+*/
+/*
+local: 
+global: neq_g0int_int$101$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4624)
+tmparg = S2Evar(tk(4624))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g0int_int__101(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret236, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp237, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12321(line=638, offs=1) -- 12377(line=639, offs=43)
+*/
+ATSINSflab(__patsflab_neq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12364(line=639, offs=30) -- 12375(line=639, offs=41)
+*/
+ATSINSmove(tmp237, PMVtmpltcst(g0int2int<S2Eextkind(atstype_int), S2Evar(tk(4624))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12346(line=639, offs=12) -- 12377(line=639, offs=43)
+*/
+ATSINSmove(tmpret236, PMVtmpltcst(g0int_neq<S2Evar(tk(4624))>)(arg0, tmp237)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret236) ;
+} /* end of [ATSLIB_056_prelude__neq_g0int_int__101] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12337(line=639, offs=3) -- 12377(line=639, offs=43)
+*/
+/*
+local: 
+global: neq_g0int_int$101$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4624)
+tmparg = S2Evar(tk(4624))
+tmpsub = Some(tk(4624) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__neq_g0int_int__101__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret236__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp237__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12321(line=638, offs=1) -- 12377(line=639, offs=43)
+*/
+ATSINSflab(__patsflab_neq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12364(line=639, offs=30) -- 12375(line=639, offs=41)
+*/
+ATSINSmove(tmp237__1, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12346(line=639, offs=12) -- 12377(line=639, offs=43)
+*/
+ATSINSmove(tmpret236__1, atspre_g0int_neq_int(arg0, tmp237__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret236__1) ;
+} /* end of [ATSLIB_056_prelude__neq_g0int_int__101__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$5(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__5(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__5, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__5, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__5, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__5, atspre_g1int_gt_int(arg0, tmp12__5)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__5) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__5] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$23$2(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = Some(tk(4626) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__2(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret33__2, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp34__2, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp34__2, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret33__2, atspre_g1int_lt_int(arg0, tmp34__2)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret33__2) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__23__2] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4894(line=188, offs=5) -- 5497(line=206, offs=6)
+*/
+/*
+local: is_prime_21$0(level=0), rip_100$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), rip_100$0(level=0), prime_factors_106$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+prime_factors_106(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret250, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4894(line=188, offs=5) -- 5497(line=206, offs=6)
+*/
+ATSINSflab(__patsflab_prime_factors_106):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4944(line=189, offs=3) -- 5497(line=206, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5481(line=205, offs=5) -- 5491(line=205, offs=15)
+*/
+ATSINSmove(tmpret250, loop_107(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4944(line=189, offs=3) -- 5497(line=206, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret250) ;
+} /* end of [prime_factors_106] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4956(line=190, offs=9) -- 5471(line=203, offs=27)
+*/
+/*
+local: is_prime_21$0(level=0), rip_100$0(level=0), loop_107$0(level=1)
+global: is_prime_21$0(level=0), rip_100$0(level=0), loop_107$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_107(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret251, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp252, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp255, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp260, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp261, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp264, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp265, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp268, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp275, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 4956(line=190, offs=9) -- 5471(line=203, offs=27)
+*/
+ATSINSflab(__patsflab_loop_107):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5054(line=191, offs=10) -- 5062(line=191, offs=18)
+*/
+ATSINSmove(tmp252, ATSLIB_056_prelude__gte_g1int_int__43__3(arg1, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5051(line=191, offs=7) -- 5471(line=203, offs=27)
+*/
+ATSif(
+tmp252
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5079(line=192, offs=12) -- 5089(line=192, offs=22)
+*/
+ATSINSmove(tmp255, is_prime_21(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5076(line=192, offs=9) -- 5202(line=195, offs=33)
+*/
+ATSif(
+tmp255
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5106(line=193, offs=11) -- 5156(line=193, offs=61)
+*/
+ATSINSmove_ldelay(tmpret251, atstype_boxed, ATSPMVcfunlab(1, __patsfun_109, (arg0))) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5180(line=195, offs=11) -- 5202(line=195, offs=33)
+*/
+ATSINSmove_ldelay(tmpret251, atstype_boxed, ATSPMVcfunlab(1, __patsfun_111, ())) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5225(line=197, offs=12) -- 5252(line=197, offs=39)
+*/
+ATSINSmove(tmp264, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5225(line=197, offs=12) -- 5252(line=197, offs=39)
+*/
+ATSINSmove(tmp261, ATSLIB_056_prelude__eq_g0int_int__13__15(tmp264, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5225(line=197, offs=12) -- 5252(line=197, offs=39)
+*/
+ATSif(
+tmp261
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5225(line=197, offs=12) -- 5252(line=197, offs=39)
+*/
+ATSINSmove(tmp260, is_prime_21(arg1)) ;
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5225(line=197, offs=12) -- 5252(line=197, offs=39)
+*/
+ATSINSmove(tmp260, ATSPMVbool_false()) ;
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5222(line=197, offs=9) -- 5471(line=203, offs=27)
+*/
+ATSif(
+tmp260
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5272(line=198, offs=14) -- 5279(line=198, offs=21)
+*/
+ATSINSmove(tmp268, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5272(line=198, offs=14) -- 5283(line=198, offs=25)
+*/
+ATSINSmove(tmp265, ATSLIB_056_prelude__gt_g1int_int__7__6(tmp268, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5269(line=198, offs=11) -- 5431(line=201, offs=65)
+*/
+ATSif(
+tmp265
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5301(line=199, offs=13) -- 5351(line=199, offs=63)
+*/
+ATSINSmove_ldelay(tmpret251, atstype_boxed, ATSPMVcfunlab(1, __patsfun_114, (arg0, arg1))) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5379(line=201, offs=13) -- 5431(line=201, offs=65)
+*/
+ATSINSmove_ldelay(tmpret251, atstype_boxed, ATSPMVcfunlab(1, __patsfun_115, (arg1))) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5463(line=203, offs=19) -- 5470(line=203, offs=26)
+*/
+ATSINSmove(tmp275, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5455(line=203, offs=11) -- 5471(line=203, offs=27)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, arg0) ;
+ATSINSmove_tlcal(apy1, tmp275) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_107) ;
+ATStailcal_end()
+
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret251) ;
+} /* end of [loop_107] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12757(line=663, offs=3) -- 12797(line=663, offs=43)
+*/
+/*
+local: 
+global: gte_g1int_int$43$3(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4635)
+tmparg = S2Evar(tk(4635))
+tmpsub = Some(tk(4635) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__3(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret75__3, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp76__3, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12741(line=662, offs=1) -- 12797(line=663, offs=43)
+*/
+ATSINSflab(__patsflab_gte_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12784(line=663, offs=30) -- 12795(line=663, offs=41)
+*/
+ATSINSmove(tmp76__3, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12766(line=663, offs=12) -- 12797(line=663, offs=43)
+*/
+ATSINSmove(tmpret75__3, atspre_g1int_gte_int(arg0, tmp76__3)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret75__3) ;
+} /* end of [ATSLIB_056_prelude__gte_g1int_int__43__3] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5106(line=193, offs=11) -- 5156(line=193, offs=61)
+*/
+/*
+local: 
+global: __patsfun_109$0(level=2)
+local: n$5163(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: n$5163(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_109(atstkind_t0ype(atstype_int) env0, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret256, atstype_boxed) ;
+ATStmpdec(tmp257, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5106(line=193, offs=11) -- 5156(line=193, offs=61)
+*/
+ATSINSflab(__patsflab___patsfun_109):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5106(line=193, offs=11) -- 5156(line=193, offs=61)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5132(line=193, offs=37) -- 5154(line=193, offs=59)
+*/
+ATSINSmove_ldelay(tmp257, atstype_boxed, ATSPMVcfunlab(1, __patsfun_110, ())) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5114(line=193, offs=19) -- 5155(line=193, offs=60)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret256, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret256, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret256, postiats_tysum_1, atslab__0, env0) ;
+ATSINSstore_con1_ofs(tmpret256, postiats_tysum_1, atslab__1, tmp257) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret256) ;
+} /* end of [__patsfun_109] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5132(line=193, offs=37) -- 5154(line=193, offs=59)
+*/
+/*
+local: 
+global: __patsfun_110$0(level=3)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_110(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret258, atstype_boxed) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5132(line=193, offs=37) -- 5154(line=193, offs=59)
+*/
+ATSINSflab(__patsflab___patsfun_110):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5132(line=193, offs=37) -- 5154(line=193, offs=59)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5140(line=193, offs=45) -- 5153(line=193, offs=58)
+*/
+
+ATSINSmove_nil(tmpret258) ;
+
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret258) ;
+} /* end of [__patsfun_110] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5180(line=195, offs=11) -- 5202(line=195, offs=33)
+*/
+/*
+local: 
+global: __patsfun_111$0(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_111(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret259, atstype_boxed) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5180(line=195, offs=11) -- 5202(line=195, offs=33)
+*/
+ATSINSflab(__patsflab___patsfun_111):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5180(line=195, offs=11) -- 5202(line=195, offs=33)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5188(line=195, offs=19) -- 5201(line=195, offs=32)
+*/
+
+ATSINSmove_nil(tmpret259) ;
+
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret259) ;
+} /* end of [__patsfun_111] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$15(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__15(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__15, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__15, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__15, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__15, atspre_g0int_eq_int(arg0, tmp19__15)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__15) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__15] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$6(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__6(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__6, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__6, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__6, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__6, atspre_g1int_gt_int(arg0, tmp12__6)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__6) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__6] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5301(line=199, offs=13) -- 5351(line=199, offs=63)
+*/
+/*
+local: rip_100$0(level=0), loop_107$0(level=1)
+global: rip_100$0(level=0), loop_107$0(level=1), __patsfun_114$0(level=2)
+local: n$5163(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), acc$5164(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: n$5163(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int)))), acc$5164(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_114(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) env1, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret269, atstype_boxed) ;
+ATStmpdec(tmp270, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp271, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5301(line=199, offs=13) -- 5351(line=199, offs=63)
+*/
+ATSINSflab(__patsflab___patsfun_114):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5301(line=199, offs=13) -- 5351(line=199, offs=63)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5334(line=199, offs=46) -- 5345(line=199, offs=57)
+*/
+ATSINSmove(tmp271, rip_100(env0, env1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5329(line=199, offs=41) -- 5349(line=199, offs=61)
+*/
+ATSINSmove(tmp270, loop_107(tmp271, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5309(line=199, offs=21) -- 5350(line=199, offs=62)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret269, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret269, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret269, postiats_tysum_1, atslab__0, env1) ;
+ATSINSstore_con1_ofs(tmpret269, postiats_tysum_1, atslab__1, tmp270) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret269) ;
+} /* end of [__patsfun_114] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5379(line=201, offs=13) -- 5431(line=201, offs=65)
+*/
+/*
+local: 
+global: __patsfun_115$0(level=2)
+local: acc$5164(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: acc$5164(2)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_115(atstkind_t0ype(atstype_int) env0, atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret272, atstype_boxed) ;
+ATStmpdec(tmp273, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5379(line=201, offs=13) -- 5431(line=201, offs=65)
+*/
+ATSINSflab(__patsflab___patsfun_115):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5379(line=201, offs=13) -- 5431(line=201, offs=65)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5407(line=201, offs=41) -- 5429(line=201, offs=63)
+*/
+ATSINSmove_ldelay(tmp273, atstype_boxed, ATSPMVcfunlab(1, __patsfun_116, ())) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5387(line=201, offs=21) -- 5430(line=201, offs=64)
+*/
+
+/*
+#LINCONSTATUS==0
+*/
+ATSINSmove_con1_beg()
+ATSINSmove_con1_new(tmpret272, postiats_tysum_1) ;
+#if(0)
+ATSINSstore_con1_tag(tmpret272, 1) ;
+#endif
+ATSINSstore_con1_ofs(tmpret272, postiats_tysum_1, atslab__0, env0) ;
+ATSINSstore_con1_ofs(tmpret272, postiats_tysum_1, atslab__1, tmp273) ;
+ATSINSmove_con1_end()
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret272) ;
+} /* end of [__patsfun_115] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5407(line=201, offs=41) -- 5429(line=201, offs=63)
+*/
+/*
+local: 
+global: __patsfun_116$0(level=3)
+local: 
+global: 
+*/
+ATSstatic()
+atstype_boxed
+__patsfun_116(atstype_bool arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret274, atstype_boxed) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5407(line=201, offs=41) -- 5429(line=201, offs=63)
+*/
+ATSINSflab(__patsflab___patsfun_116):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5407(line=201, offs=41) -- 5429(line=201, offs=63)
+*/
+ATSif(
+arg0
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5415(line=201, offs=49) -- 5428(line=201, offs=62)
+*/
+
+ATSINSmove_nil(tmpret274) ;
+
+} ATSelse() {
+/* (*nothing*) */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret274) ;
+} /* end of [__patsfun_116] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5529(line=209, offs=4) -- 5968(line=227, offs=6)
+*/
+/*
+local: is_prime_21$0(level=0), rip_100$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), rip_100$0(level=0), little_omega_117$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+little_omega_117(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret276, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5529(line=209, offs=4) -- 5968(line=227, offs=6)
+*/
+ATSINSflab(__patsflab_little_omega_117):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5567(line=210, offs=3) -- 5968(line=227, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5952(line=226, offs=5) -- 5962(line=226, offs=15)
+*/
+ATSINSmove(tmpret276, loop_118(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5567(line=210, offs=3) -- 5968(line=227, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret276) ;
+} /* end of [little_omega_117] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5579(line=211, offs=9) -- 5942(line=224, offs=27)
+*/
+/*
+local: is_prime_21$0(level=0), rip_100$0(level=0), loop_118$0(level=1)
+global: is_prime_21$0(level=0), rip_100$0(level=0), loop_118$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+loop_118(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret277, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp278, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp281, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp282, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp283, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp286, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp287, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp290, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp291, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp292, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp293, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5579(line=211, offs=9) -- 5942(line=224, offs=27)
+*/
+ATSINSflab(__patsflab_loop_118):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5672(line=212, offs=10) -- 5680(line=212, offs=18)
+*/
+ATSINSmove(tmp278, ATSLIB_056_prelude__gte_g1int_int__43__4(arg1, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5669(line=212, offs=7) -- 5942(line=224, offs=27)
+*/
+ATSif(
+tmp278
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5697(line=213, offs=12) -- 5707(line=213, offs=22)
+*/
+ATSINSmove(tmp281, is_prime_21(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5694(line=213, offs=9) -- 5750(line=216, offs=12)
+*/
+ATSif(
+tmp281
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5724(line=214, offs=11) -- 5725(line=214, offs=12)
+*/
+ATSINSmove(tmpret277, ATSPMVi0nt(1)) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5749(line=216, offs=11) -- 5750(line=216, offs=12)
+*/
+ATSINSmove(tmpret277, ATSPMVi0nt(0)) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5773(line=218, offs=12) -- 5800(line=218, offs=39)
+*/
+ATSINSmove(tmp286, atspre_g0int_mod_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5773(line=218, offs=12) -- 5800(line=218, offs=39)
+*/
+ATSINSmove(tmp283, ATSLIB_056_prelude__eq_g0int_int__13__16(tmp286, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5773(line=218, offs=12) -- 5800(line=218, offs=39)
+*/
+ATSif(
+tmp283
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5773(line=218, offs=12) -- 5800(line=218, offs=39)
+*/
+ATSINSmove(tmp282, is_prime_21(arg1)) ;
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5773(line=218, offs=12) -- 5800(line=218, offs=39)
+*/
+ATSINSmove(tmp282, ATSPMVbool_false()) ;
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5770(line=218, offs=9) -- 5942(line=224, offs=27)
+*/
+ATSif(
+tmp282
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5820(line=219, offs=14) -- 5827(line=219, offs=21)
+*/
+ATSINSmove(tmp290, atspre_g1int_div_int(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5820(line=219, offs=14) -- 5831(line=219, offs=25)
+*/
+ATSINSmove(tmp287, ATSLIB_056_prelude__gt_g1int_int__7__7(tmp290, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5817(line=219, offs=11) -- 5902(line=222, offs=14)
+*/
+ATSif(
+tmp287
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5858(line=220, offs=22) -- 5869(line=220, offs=33)
+*/
+ATSINSmove(tmp292, rip_100(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5853(line=220, offs=17) -- 5873(line=220, offs=37)
+*/
+ATSINSmove(tmp291, loop_118(tmp292, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5849(line=220, offs=13) -- 5873(line=220, offs=37)
+*/
+ATSINSmove(tmpret277, atspre_g0int_add_int(ATSPMVi0nt(1), tmp291)) ;
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5901(line=222, offs=13) -- 5902(line=222, offs=14)
+*/
+ATSINSmove(tmpret277, ATSPMVi0nt(1)) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5934(line=224, offs=19) -- 5941(line=224, offs=26)
+*/
+ATSINSmove(tmp293, atspre_g1int_add_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 5926(line=224, offs=11) -- 5942(line=224, offs=27)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, arg0) ;
+ATSINSmove_tlcal(apy1, tmp293) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_118) ;
+ATStailcal_end()
+
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret277) ;
+} /* end of [loop_118] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12757(line=663, offs=3) -- 12797(line=663, offs=43)
+*/
+/*
+local: 
+global: gte_g1int_int$43$4(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4635)
+tmparg = S2Evar(tk(4635))
+tmpsub = Some(tk(4635) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gte_g1int_int__43__4(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret75__4, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp76__4, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12741(line=662, offs=1) -- 12797(line=663, offs=43)
+*/
+ATSINSflab(__patsflab_gte_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12784(line=663, offs=30) -- 12795(line=663, offs=41)
+*/
+ATSINSmove(tmp76__4, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12766(line=663, offs=12) -- 12797(line=663, offs=43)
+*/
+ATSINSmove(tmpret75__4, atspre_g1int_gte_int(arg0, tmp76__4)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret75__4) ;
+} /* end of [ATSLIB_056_prelude__gte_g1int_int__43__4] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$16(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__16(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__16, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__16, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__16, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__16, atspre_g0int_eq_int(arg0, tmp19__16)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__16) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__16] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$7(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__7(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__7, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__7, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__7, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__7, atspre_g1int_gt_int(arg0, tmp12__7)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__7) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__7] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6002(line=230, offs=4) -- 6491(line=242, offs=8)
+*/
+/*
+local: prime_factors_106$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), rip_100$0(level=0), prime_factors_106$0(level=0), totient_122$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+totient_122(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret294, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref299, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref300, postiats_tyrec_0) ;
+ATStmpdec(tmpref301, postiats_tyrec_0) ;
+ATStmpdec(tmp319, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6002(line=230, offs=4) -- 6491(line=242, offs=8)
+*/
+ATSINSflab(__patsflab_totient_122):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6035(line=231, offs=3) -- 6491(line=242, offs=8)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6052(line=232, offs=7) -- 6053(line=232, offs=8)
+*/
+ATSINSlab(__atstmplab29):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6010(line=230, offs=12) -- 6011(line=230, offs=13)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab31) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6053(line=232, offs=8) -- 6053(line=232, offs=8)
+*/
+ATSINSlab(__atstmplab30):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6057(line=232, offs=12) -- 6058(line=232, offs=13)
+*/
+ATSINSmove(tmpret294, ATSPMVi0nt(1)) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6066(line=233, offs=8) -- 6066(line=233, offs=8)
+*/
+ATSINSlab(__atstmplab31):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6071(line=233, offs=13) -- 6491(line=242, offs=8)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6225(line=237, offs=11) -- 6226(line=237, offs=12)
+*/
+/*
+ATSINStmpdec(tmpref299) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6245(line=237, offs=31) -- 6260(line=237, offs=46)
+*/
+ATSINSmove(tmpref299, prime_factors_106(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6272(line=238, offs=11) -- 6282(line=238, offs=21)
+*/
+/*
+ATSINStmpdec(tmpref300) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6285(line=238, offs=24) -- 6311(line=238, offs=50)
+*/
+ATSINSmove_fltrec_beg()
+ATSINSstore_fltrec_ofs(tmpref300, postiats_tyrec_0, atslab__first, ATSPMVi0nt(1)) ;
+ATSINSstore_fltrec_ofs(tmpref300, postiats_tyrec_0, atslab__second, ATSPMVi0nt(1)) ;
+ATSINSmove_fltrec_end()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6329(line=239, offs=11) -- 6330(line=239, offs=12)
+*/
+/*
+ATSINStmpdec(tmpref301) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6333(line=239, offs=15) -- 6420(line=239, offs=102)
+*/
+ATSINSmove(tmpref301, ATSLIB_056_prelude__stream_vt_foldleft_cloptr__125__1(tmpref299, tmpref300, ATSPMVcfunlab(1, __patsfun_129, ()))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6451(line=241, offs=17) -- 6472(line=241, offs=38)
+*/
+ATSINSmove(tmp319, atspre_g0int_mul_int(arg0, ATSSELfltrec(tmpref301, postiats_tyrec_0, atslab__first))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6441(line=241, offs=7) -- 6483(line=241, offs=49)
+*/
+ATSINSmove(tmpret294, atspre_g0int_div_int(tmp319, ATSSELfltrec(tmpref301, postiats_tyrec_0, atslab__second))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6071(line=233, offs=13) -- 6491(line=242, offs=8)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret294) ;
+} /* end of [totient_122] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6084(line=234, offs=10) -- 6207(line=235, offs=80)
+*/
+/*
+local: 
+global: adjust_contents_123$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+postiats_tyrec_0
+adjust_contents_123(postiats_tyrec_0 arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret295, postiats_tyrec_0) ;
+ATStmpdec(tmp296, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp297, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp298, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6084(line=234, offs=10) -- 6207(line=235, offs=80)
+*/
+ATSINSflab(__patsflab_adjust_contents_123):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6166(line=235, offs=39) -- 6171(line=235, offs=44)
+*/
+ATSINSmove(tmp297, atspre_g0int_sub_int(arg1, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6147(line=235, offs=20) -- 6172(line=235, offs=45)
+*/
+ATSINSmove(tmp296, atspre_g0int_mul_int(ATSSELfltrec(arg0, postiats_tyrec_0, atslab__first), tmp297)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6183(line=235, offs=56) -- 6205(line=235, offs=78)
+*/
+ATSINSmove(tmp298, atspre_g0int_mul_int(ATSSELfltrec(arg0, postiats_tyrec_0, atslab__second), arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6136(line=235, offs=9) -- 6207(line=235, offs=80)
+*/
+ATSINSmove_fltrec_beg()
+ATSINSstore_fltrec_ofs(tmpret295, postiats_tyrec_0, atslab__first, tmp296) ;
+ATSINSstore_fltrec_ofs(tmpret295, postiats_tyrec_0, atslab__second, tmp298) ;
+ATSINSmove_fltrec_end()
+ATSfunbody_end()
+ATSreturn(tmpret295) ;
+} /* end of [adjust_contents_123] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 29943(line=1864, offs=3) -- 30423(line=1895, offs=2)
+*/
+/*
+local: 
+global: stream_vt_foldleft_cloptr$125$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = res(8325), a(8326)
+tmparg = S2Evar(res(8325)); S2Evar(a(8326))
+tmpsub = None()
+*/
+atstyvar_type(res)
+ATSLIB_056_prelude__stream_vt_foldleft_cloptr__125(atstkind_type(atstype_ptrk) arg0, atstyvar_type(res) arg1, atstype_cloptr arg2)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret302, atstyvar_type(res)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29915(line=1863, offs=1) -- 30423(line=1895, offs=2)
+*/
+ATSINSflab(__patsflab_stream_vt_foldleft_cloptr):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29964(line=1865, offs=3) -- 30423(line=1895, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29964(line=1865, offs=3) -- 29984(line=1865, offs=23)
+*/
+ATSINSmove(tmpret302, ATSfunclo_fun(PMVd2vfunlab(d2v=loop$4479(1), flab=loop_126$0(level=1)), (atstkind_type(atstype_ptrk), atstyvar_type(res), atstype_cloptr), atstyvar_type(res))(arg0, arg1, arg2)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29964(line=1865, offs=3) -- 30423(line=1895, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret302) ;
+} /* end of [ATSLIB_056_prelude__stream_vt_foldleft_cloptr__125] */
+#endif // end of [TEMPLATE]
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 30000(line=1869, offs=1) -- 30401(line=1893, offs=4)
+*/
+/*
+local: loop_126$0(level=1)
+global: loop_126$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstyvar_type(res)
+loop_126__126(atstkind_type(atstype_ptrk) arg0, atstyvar_type(res) arg1, atstype_cloptr arg2)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(apy1, atstyvar_type(res)) ;
+ATStmpdec(apy2, atstype_cloptr) ;
+ATStmpdec(tmpret303, atstyvar_type(res)) ;
+ATStmpdec(tmpref304, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp305, atstype_boxed) ;
+// ATStmpdec_void(tmp308) ;
+ATStmpdec(tmp309, atstyvar_type(res)) ;
+ATStmpdec(tmp310, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30000(line=1869, offs=1) -- 30401(line=1893, offs=4)
+*/
+ATSINSflab(__patsflab_loop_126):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30078(line=1875, offs=6) -- 30401(line=1893, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30088(line=1876, offs=7) -- 30094(line=1876, offs=13)
+*/
+/*
+ATSINStmpdec(tmpref304) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30097(line=1876, offs=16) -- 30100(line=1876, offs=19)
+*/
+ATSINSmove_llazyeval(tmpref304, atstype_boxed, arg0) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30113(line=1880, offs=1) -- 30119(line=1880, offs=7)
+*/
+ATSINSmove(tmp305, tmpref304) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30107(line=1879, offs=1) -- 30367(line=1891, offs=6)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30134(line=1882, offs=3) -- 30155(line=1883, offs=7)
+*/
+ATSINSlab(__atstmplab32):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30113(line=1880, offs=1) -- 30119(line=1880, offs=7)
+*/
+ATSifthen(ATSCKptriscons(tmp305)) { ATSINSgoto(__atstmplab35) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30155(line=1883, offs=7) -- 30155(line=1883, offs=7)
+*/
+ATSINSlab(__atstmplab33):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30167(line=1885, offs=5) -- 30199(line=1885, offs=37)
+*/
+ATSINSmove_void(tmp308, atspre_cloptr_free(ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), arg2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30201(line=1885, offs=39) -- 30204(line=1885, offs=42)
+*/
+ATSINSmove(tmpret303, arg1) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30240(line=1887, offs=3) -- 30269(line=1888, offs=14)
+*/
+ATSINSlab(__atstmplab34):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30113(line=1880, offs=1) -- 30119(line=1880, offs=7)
+*/
+#if(0)
+ATSifthen(ATSCKptrisnull(tmp305)) { ATSINSdeadcode_fail() ; } ;
+#endif
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30269(line=1888, offs=14) -- 30269(line=1888, offs=14)
+*/
+ATSINSlab(__atstmplab35):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30273(line=1888, offs=18) -- 30367(line=1891, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30291(line=1889, offs=15) -- 30304(line=1889, offs=28)
+*/
+ATSINSmove(tmp309, ATSfunclo_clo(ATSPMVrefarg0(arg2), (atstype_cloptr, atstyvar_type(res), atsrefarg1_type(atstyvar_type(a))), atstyvar_type(res))(ATSPMVrefarg0(arg2), arg1, ATSPMVrefarg1(ATSPMVptrof(ATSSELcon(tmp305, postiats_tysum_4, atslab__0))))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30319(line=1890, offs=15) -- 30322(line=1890, offs=18)
+*/
+ATSINSmove(tmp310, ATSSELcon(tmp305, postiats_tysum_4, atslab__1)) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30326(line=1890, offs=22) -- 30338(line=1890, offs=34)
+*/
+ATSINSfreecon(tmpref304) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30341(line=1890, offs=37) -- 30361(line=1890, offs=57)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp310) ;
+ATSINSmove_tlcal(apy1, tmp309) ;
+ATSINSmove_tlcal(apy2, arg2) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSargmove_tlcal(arg2, apy2) ;
+ATSINSfgoto(__patsflab_loop_126) ;
+ATStailcal_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30273(line=1888, offs=18) -- 30367(line=1891, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30078(line=1875, offs=6) -- 30401(line=1893, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret303) ;
+} /* end of [loop_126__126] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 29943(line=1864, offs=3) -- 30423(line=1895, offs=2)
+*/
+/*
+local: 
+global: stream_vt_foldleft_cloptr$125$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = res(8325), a(8326)
+tmparg = S2Evar(res(8325)); S2Evar(a(8326))
+tmpsub = Some(res(8325) -> S2EVar(5869); a(8326) -> S2Eapp(S2Ecst(g0int_t0ype); S2Eextkind(atstype_int)))
+*/
+postiats_tyrec_0
+ATSLIB_056_prelude__stream_vt_foldleft_cloptr__125__1(atstkind_type(atstype_ptrk) arg0, postiats_tyrec_0 arg1, atstype_cloptr arg2)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret302__1, postiats_tyrec_0) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29915(line=1863, offs=1) -- 30423(line=1895, offs=2)
+*/
+ATSINSflab(__patsflab_stream_vt_foldleft_cloptr):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29964(line=1865, offs=3) -- 30423(line=1895, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29964(line=1865, offs=3) -- 29984(line=1865, offs=23)
+*/
+ATSINSmove(tmpret302__1, loop_126__126__1(arg0, arg1, arg2)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 29964(line=1865, offs=3) -- 30423(line=1895, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret302__1) ;
+} /* end of [ATSLIB_056_prelude__stream_vt_foldleft_cloptr__125__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 30000(line=1869, offs=1) -- 30401(line=1893, offs=4)
+*/
+/*
+local: loop_126$1(level=2)
+global: loop_126$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+postiats_tyrec_0
+loop_126__126__1(atstkind_type(atstype_ptrk) arg0, postiats_tyrec_0 arg1, atstype_cloptr arg2)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(apy1, postiats_tyrec_0) ;
+ATStmpdec(apy2, atstype_cloptr) ;
+ATStmpdec(tmpret303__1, postiats_tyrec_0) ;
+ATStmpdec(tmpref304__1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp305__1, atstype_boxed) ;
+// ATStmpdec_void(tmp308__1) ;
+ATStmpdec(tmp309__1, postiats_tyrec_0) ;
+ATStmpdec(tmp310__1, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30000(line=1869, offs=1) -- 30401(line=1893, offs=4)
+*/
+ATSINSflab(__patsflab_loop_126):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30078(line=1875, offs=6) -- 30401(line=1893, offs=4)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30088(line=1876, offs=7) -- 30094(line=1876, offs=13)
+*/
+/*
+ATSINStmpdec(tmpref304) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30097(line=1876, offs=16) -- 30100(line=1876, offs=19)
+*/
+ATSINSmove_llazyeval(tmpref304__1, atstype_boxed, arg0) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30113(line=1880, offs=1) -- 30119(line=1880, offs=7)
+*/
+ATSINSmove(tmp305__1, tmpref304__1) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30107(line=1879, offs=1) -- 30367(line=1891, offs=6)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30134(line=1882, offs=3) -- 30155(line=1883, offs=7)
+*/
+ATSINSlab(__atstmplab32):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30113(line=1880, offs=1) -- 30119(line=1880, offs=7)
+*/
+ATSifthen(ATSCKptriscons(tmp305__1)) { ATSINSgoto(__atstmplab35) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30155(line=1883, offs=7) -- 30155(line=1883, offs=7)
+*/
+ATSINSlab(__atstmplab33):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30167(line=1885, offs=5) -- 30199(line=1885, offs=37)
+*/
+ATSINSmove_void(tmp308__1, atspre_cloptr_free(ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), arg2))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30201(line=1885, offs=39) -- 30204(line=1885, offs=42)
+*/
+ATSINSmove(tmpret303__1, arg1) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30240(line=1887, offs=3) -- 30269(line=1888, offs=14)
+*/
+ATSINSlab(__atstmplab34):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30113(line=1880, offs=1) -- 30119(line=1880, offs=7)
+*/
+#if(0)
+ATSifthen(ATSCKptrisnull(tmp305__1)) { ATSINSdeadcode_fail() ; } ;
+#endif
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30269(line=1888, offs=14) -- 30269(line=1888, offs=14)
+*/
+ATSINSlab(__atstmplab35):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30273(line=1888, offs=18) -- 30367(line=1891, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30291(line=1889, offs=15) -- 30304(line=1889, offs=28)
+*/
+ATSINSmove(tmp309__1, ATSfunclo_clo(ATSPMVrefarg0(arg2), (atstype_cloptr, postiats_tyrec_0, atsrefarg1_type(atstkind_t0ype(atstype_int))), postiats_tyrec_0)(ATSPMVrefarg0(arg2), arg1, ATSPMVrefarg1(ATSPMVptrof(ATSSELcon(tmp305__1, postiats_tysum_1, atslab__0))))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30319(line=1890, offs=15) -- 30322(line=1890, offs=18)
+*/
+ATSINSmove(tmp310__1, ATSSELcon(tmp305__1, postiats_tysum_1, atslab__1)) ;
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30326(line=1890, offs=22) -- 30338(line=1890, offs=34)
+*/
+ATSINSfreecon(tmpref304__1) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30341(line=1890, offs=37) -- 30361(line=1890, offs=57)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp310__1) ;
+ATSINSmove_tlcal(apy1, tmp309__1) ;
+ATSINSmove_tlcal(apy2, arg2) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSargmove_tlcal(arg2, apy2) ;
+ATSINSfgoto(__patsflab_loop_126) ;
+ATStailcal_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30273(line=1888, offs=18) -- 30367(line=1891, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats({$PATSPRE}/DATS/stream_vt.dats): 30078(line=1875, offs=6) -- 30401(line=1893, offs=4)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret303__1) ;
+} /* end of [loop_126__126__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6374(line=239, offs=56) -- 6419(line=239, offs=101)
+*/
+/*
+local: adjust_contents_123$0(level=1)
+global: adjust_contents_123$0(level=1), __patsfun_129$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+postiats_tyrec_0
+__patsfun_129(postiats_tyrec_0 arg0, atsrefarg1_type(atstkind_t0ype(atstype_int)) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret318, postiats_tyrec_0) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6374(line=239, offs=56) -- 6419(line=239, offs=101)
+*/
+ATSINSflab(__patsflab___patsfun_129):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6393(line=239, offs=75) -- 6419(line=239, offs=101)
+*/
+ATSINSmove(tmpret318, adjust_contents_123(arg0, ATSderef(arg1, atstkind_t0ype(atstype_int)))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret318) ;
+} /* end of [__patsfun_129] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6722(line=247, offs=4) -- 7110(line=261, offs=6)
+*/
+/*
+local: witness_0$0(level=0), totient_122$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), rip_100$0(level=0), prime_factors_106$0(level=0), totient_122$0(level=0), totient_sum_130$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+totient_sum_130(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret320, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6722(line=247, offs=4) -- 7110(line=261, offs=6)
+*/
+ATSINSflab(__patsflab_totient_sum_130):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6762(line=248, offs=3) -- 7110(line=261, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 7094(line=260, offs=5) -- 7104(line=260, offs=15)
+*/
+ATSINSmove(tmpret320, loop_131(ATSPMVi0nt(1), arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6762(line=248, offs=3) -- 7110(line=261, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret320) ;
+} /* end of [totient_sum_130] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6774(line=249, offs=9) -- 7084(line=258, offs=40)
+*/
+/*
+local: witness_0$0(level=0), totient_122$0(level=0), loop_131$0(level=1)
+global: witness_0$0(level=0), totient_122$0(level=0), loop_131$0(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+loop_131(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret321, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp322, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmpref325, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp326, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref327, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp332, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp333, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp341, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp342, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+/*
+emit_funent_fnxdeclst:
+*/
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6774(line=249, offs=9) -- 7084(line=258, offs=40)
+*/
+ATSINSflab(__patsflab_loop_131):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6877(line=250, offs=10) -- 6886(line=250, offs=19)
+*/
+ATSINSmove(tmp322, ATSLIB_056_prelude__lt_g1int_int__23__3(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6874(line=250, offs=7) -- 7084(line=258, offs=40)
+*/
+ATSif(
+tmp322
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6900(line=251, offs=9) -- 7033(line=256, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6918(line=252, offs=15) -- 6919(line=252, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref325) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6927(line=252, offs=24) -- 6932(line=252, offs=29)
+*/
+ATSINSmove(tmp326, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6922(line=252, offs=19) -- 6940(line=252, offs=37)
+*/
+ATSINSmove(tmpref325, loop_131(tmp326, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6955(line=253, offs=15) -- 6956(line=253, offs=16)
+*/
+/*
+ATSINStmpdec(tmpref327) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6986(line=253, offs=46) -- 6995(line=253, offs=55)
+*/
+ATSINSmove(tmp333, totient_122(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6978(line=253, offs=38) -- 6997(line=253, offs=57)
+*/
+ATSINSmove(tmp332, witness_0(tmp333)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6959(line=253, offs=19) -- 6998(line=253, offs=58)
+*/
+ATSINSmove(tmpref327, ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__133__1(tmpref325, tmp332)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 7020(line=255, offs=11) -- 7021(line=255, offs=12)
+*/
+ATSINSmove(tmpret321, tmpref327) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 6900(line=251, offs=9) -- 7033(line=256, offs=12)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 7053(line=258, offs=9) -- 7084(line=258, offs=40)
+*/
+ATSINSmove(tmp342, totient_122(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 7053(line=258, offs=9) -- 7084(line=258, offs=40)
+*/
+ATSINSmove(tmp341, witness_0(tmp342)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/number-theory-internal.dats: 7053(line=258, offs=9) -- 7084(line=258, offs=40)
+*/
+ATSINSmove(tmpret321, ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__135__1(tmp341)) ;
+
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret321) ;
+/*
+emit_funent_fnxbodylst:
+*/
+} /* end of [loop_131] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$23$3(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = Some(tk(4626) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__3(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret33__3, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp34__3, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp34__3, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret33__3, atspre_g1int_lt_int(arg0, tmp34__3)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret33__3) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__23__3] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5151(line=274, offs=3) -- 5217(line=279, offs=2)
+*/
+/*
+local: 
+global: add_intinf0_int$133$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = 
+tmparg = 
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__133(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret328, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp329) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5133(line=273, offs=1) -- 5217(line=279, offs=2)
+*/
+ATSINSflab(__patsflab_add_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5160(line=274, offs=12) -- 5217(line=279, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5184(line=277, offs=10) -- 5212(line=277, offs=38)
+*/
+ATSINSmove_void(tmp329, atscntrb_gmp_mpz_add2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5161(line=274, offs=13) -- 5162(line=274, offs=14)
+*/
+ATSINSmove(tmpret328, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5160(line=274, offs=12) -- 5217(line=279, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret328) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__133] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5151(line=274, offs=3) -- 5217(line=279, offs=2)
+*/
+/*
+local: 
+global: add_intinf0_int$133$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__133__1(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret328__1, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp329__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5133(line=273, offs=1) -- 5217(line=279, offs=2)
+*/
+ATSINSflab(__patsflab_add_intinf0_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5160(line=274, offs=12) -- 5217(line=279, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5184(line=277, offs=10) -- 5212(line=277, offs=38)
+*/
+ATSINSmove_void(tmp329__1, atscntrb_gmp_mpz_add2_int(ATSPMVrefarg1(ATSSELrecsin(arg0, atstkind_type(atstype_ptrk), atslab__2)), arg1)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5161(line=274, offs=13) -- 5162(line=274, offs=14)
+*/
+ATSINSmove(tmpret328__1, arg0) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 5160(line=274, offs=12) -- 5217(line=279, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret328__1) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__add_intinf0_int__133__1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$135$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = 
+tmparg = 
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__135(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret334, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp335, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp336) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp335, PMVtmpltcst(ptr_alloc<S2Ecst(mpz_vt0ype)>)()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp336, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp335, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret334, tmp335) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret334) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__135] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2209(line=74, offs=3) -- 2301(line=80, offs=2)
+*/
+/*
+local: 
+global: intinf_make_int$135$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = 
+tmparg = 
+tmpsub = Some()
+*/
+atstkind_type(atstype_ptrk)
+ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__135__1(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret334__1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmp335__1, atstkind_type(atstype_ptrk)) ;
+// ATStmpdec_void(tmp336__1) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2191(line=73, offs=1) -- 2301(line=80, offs=2)
+*/
+ATSINSflab(__patsflab_intinf_make_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2238(line=77, offs=9) -- 2254(line=77, offs=25)
+*/
+ATSINSmove(tmp335__1, ATSLIB_056_prelude__ptr_alloc__2__2()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2264(line=78, offs=10) -- 2296(line=78, offs=42)
+*/
+ATSINSmove_void(tmp336__1, atscntrb_gmp_mpz_init_set_int(ATSPMVrefarg1(ATSSELrecsin(tmp335__1, atstkind_type(atstype_ptrk), atslab__2)), arg0)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2216(line=74, offs=10) -- 2217(line=74, offs=11)
+*/
+ATSINSmove(tmpret334__1, tmp335__1) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 2215(line=74, offs=9) -- 2301(line=80, offs=2)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret334__1) ;
+} /* end of [ATSCNTRB_056_HX_056_intinf_vt__intinf_make_int__135__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$2$2(level=3)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2Ecst(mpz_vt0ype))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2__2()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret3__2, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret3__2, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret3__2) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__2__2] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 630(line=35, offs=28) -- 652(line=36, offs=17)
+*/
+/*
+local: sum_divisors_91$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), sum_divisors_91$0(level=0), sum_divisors_ats$138$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_int)
+sum_divisors_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret343, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 613(line=35, offs=11) -- 653(line=36, offs=18)
+*/
+ATSINSflab(__patsflab_sum_divisors_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 638(line=36, offs=3) -- 652(line=36, offs=17)
+*/
+ATSINSmove(tmpret343, sum_divisors_91(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret343) ;
+} /* end of [sum_divisors_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 684(line=38, offs=30) -- 708(line=39, offs=19)
+*/
+/*
+local: count_divisors_86$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), divisors_39$0(level=0), count_divisors_86$0(level=0), count_divisors_ats$139$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_int)
+count_divisors_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret344, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 665(line=38, offs=11) -- 709(line=39, offs=20)
+*/
+ATSINSflab(__patsflab_count_divisors_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 692(line=39, offs=3) -- 708(line=39, offs=19)
+*/
+ATSINSmove(tmpret344, count_divisors_86(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret344) ;
+} /* end of [count_divisors_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 733(line=41, offs=23) -- 750(line=42, offs=12)
+*/
+/*
+local: totient_122$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), rip_100$0(level=0), prime_factors_106$0(level=0), totient_122$0(level=0), totient_ats$140$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_int)
+totient_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret345, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 721(line=41, offs=11) -- 751(line=42, offs=13)
+*/
+ATSINSflab(__patsflab_totient_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 741(line=42, offs=3) -- 750(line=42, offs=12)
+*/
+ATSINSmove(tmpret345, totient_122(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret345) ;
+} /* end of [totient_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 780(line=44, offs=28) -- 802(line=45, offs=17)
+*/
+/*
+local: little_omega_117$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), rip_100$0(level=0), little_omega_117$0(level=0), little_omega_ats$141$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_int)
+little_omega_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret346, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 763(line=44, offs=11) -- 803(line=45, offs=18)
+*/
+ATSINSflab(__patsflab_little_omega_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 788(line=45, offs=3) -- 802(line=45, offs=17)
+*/
+ATSINSmove(tmpret346, little_omega_117(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret346) ;
+} /* end of [little_omega_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 830(line=47, offs=26) -- 850(line=48, offs=15)
+*/
+/*
+local: is_perfect_98$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), sum_divisors_91$0(level=0), is_perfect_98$0(level=0), is_perfect_ats$142$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_bool)
+is_perfect_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret347, atstkind_t0ype(atstype_bool)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 815(line=47, offs=11) -- 851(line=48, offs=16)
+*/
+ATSINSflab(__patsflab_is_perfect_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 838(line=48, offs=3) -- 850(line=48, offs=15)
+*/
+ATSINSmove(tmpret347, is_perfect_98(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret347) ;
+} /* end of [is_perfect_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 874(line=50, offs=22) -- 907(line=51, offs=25)
+*/
+/*
+local: jacobi_77$0(level=0)
+global: witness_0$0(level=0), exp_6$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), div_gt_zero_70$0(level=0), exp_mod_prime_71$0(level=0), jacobi_77$0(level=0), jacobi_ats$143$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_int)
+jacobi_ats(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret348, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 863(line=50, offs=11) -- 907(line=51, offs=25)
+*/
+ATSINSflab(__patsflab_jacobi_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 885(line=51, offs=3) -- 907(line=51, offs=25)
+*/
+ATSINSmove(tmpret348, jacobi_77(arg0, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), arg1))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret348) ;
+} /* end of [jacobi_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 935(line=53, offs=27) -- 956(line=54, offs=16)
+*/
+/*
+local: totient_sum_130$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), rip_100$0(level=0), prime_factors_106$0(level=0), totient_122$0(level=0), totient_sum_130$0(level=0), totient_sum_ats$144$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_type(atstype_ptrk)
+totient_sum_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret349, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 919(line=53, offs=11) -- 957(line=54, offs=17)
+*/
+ATSINSflab(__patsflab_totient_sum_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 943(line=54, offs=3) -- 956(line=54, offs=16)
+*/
+ATSINSmove(tmpret349, totient_sum_130(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret349) ;
+} /* end of [totient_sum_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 981(line=56, offs=23) -- 1008(line=57, offs=19)
+*/
+/*
+local: is_coprime_37$0(level=0)
+global: witness_0$0(level=0), gcd_33$0(level=0), is_coprime_37$0(level=0), coprime_ats$145$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_bool)
+coprime_ats(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret350, atstkind_t0ype(atstype_bool)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 969(line=56, offs=11) -- 1008(line=57, offs=19)
+*/
+ATSINSflab(__patsflab_coprime_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/number-theory.dats: 992(line=57, offs=3) -- 1008(line=57, offs=19)
+*/
+ATSINSmove(tmpret350, is_coprime_37(arg0, arg1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret350) ;
+} /* end of [coprime_ats] */
+
+/*
+** for initialization(dynloading)
+*/
+ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag) ;
+ATSextern()
+atsvoid_t0ype
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynload()
+{
+ATSfunbody_beg()
+ATSdynload(/*void*/)
+ATSdynloadflag_sta(
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag
+) ;
+ATSif(
+ATSCKiseqz(
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag
+)
+) ATSthen() {
+ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_number_055_theory_056_dats__dynloadflag) ;
+/*
+dynexnlst-initize(beg)
+*/
+/*
+dynexnlst-initize(end)
+*/
+/* local */
+/* in of [local] */
+/* local */
+/* in of [local] */
+/* end of [local] */
+/* local */
+/* in of [local] */
+/* end of [local] */
+/* end of [local] */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn_void(tmpret_void) ;
+} /* end of [*_dynload] */
+
+/* ****** ****** */
+
+/* end-of-compilation-unit */
diff --git a/cbits/numerics.c b/cbits/numerics.c
new file mode 100644
--- /dev/null
+++ b/cbits/numerics.c
@@ -0,0 +1,1777 @@
+/*
+**
+** The C code is generated by [ATS/Postiats-0-3-10]
+** The starting compilation time is: 2018-4-13:  1h:38m
+**
+*/
+
+/*
+** include runtime header files
+*/
+#ifndef _ATS_CCOMP_HEADER_NONE_
+#include "pats_ccomp_config.h"
+#include "pats_ccomp_basics.h"
+#include "pats_ccomp_typedefs.h"
+#include "pats_ccomp_instrset.h"
+#include "pats_ccomp_memalloc.h"
+#ifndef _ATS_CCOMP_EXCEPTION_NONE_
+#include "pats_ccomp_memalloca.h"
+#include "pats_ccomp_exception.h"
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+#endif /* _ATS_CCOMP_HEADER_NONE_ */
+
+
+/*
+** include prelude cats files
+*/
+#ifndef _ATS_CCOMP_PRELUDE_NONE_
+//
+#include "prelude/CATS/basics.cats"
+#include "prelude/CATS/integer.cats"
+#include "prelude/CATS/pointer.cats"
+#include "prelude/CATS/integer_long.cats"
+#include "prelude/CATS/integer_size.cats"
+#include "prelude/CATS/integer_short.cats"
+#include "prelude/CATS/bool.cats"
+#include "prelude/CATS/char.cats"
+#include "prelude/CATS/float.cats"
+#include "prelude/CATS/integer_ptr.cats"
+#include "prelude/CATS/integer_fixed.cats"
+#include "prelude/CATS/memory.cats"
+#include "prelude/CATS/string.cats"
+#include "prelude/CATS/strptr.cats"
+//
+#include "prelude/CATS/fprintf.cats"
+//
+#include "prelude/CATS/filebas.cats"
+//
+#include "prelude/CATS/list.cats"
+#include "prelude/CATS/option.cats"
+#include "prelude/CATS/array.cats"
+#include "prelude/CATS/arrayptr.cats"
+#include "prelude/CATS/arrayref.cats"
+#include "prelude/CATS/matrix.cats"
+#include "prelude/CATS/matrixptr.cats"
+//
+#endif /* _ATS_CCOMP_PRELUDE_NONE_ */
+/*
+** for user-supplied prelude
+*/
+#ifdef _ATS_CCOMP_PRELUDE_USER_
+//
+#include _ATS_CCOMP_PRELUDE_USER_
+//
+#endif /* _ATS_CCOMP_PRELUDE_USER_ */
+/*
+** for user2-supplied prelude
+*/
+#ifdef _ATS_CCOMP_PRELUDE_USER2_
+//
+#include _ATS_CCOMP_PRELUDE_USER2_
+//
+#endif /* _ATS_CCOMP_PRELUDE_USER2_ */
+
+/*
+staload-prologues(beg)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/basics.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 1533(line=44, offs=1) -- 1572(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_long.dats: 1602(line=49, offs=1) -- 1641(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_size.dats: 1597(line=49, offs=1) -- 1636(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_short.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/char.dats: 1610(line=48, offs=1) -- 1649(line=48, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/float.dats: 1636(line=50, offs=1) -- 1675(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/string.dats: 1631(line=50, offs=1) -- 1670(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/strptr.dats: 1629(line=50, offs=1) -- 1668(line=50, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/strptr.dats: 1691(line=54, offs=1) -- 1738(line=54, offs=48)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_ptr.dats: 1601(line=49, offs=1) -- 1640(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer_fixed.dats: 1603(line=49, offs=1) -- 1642(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/memory.dats: 1410(line=38, offs=1) -- 1449(line=39, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1607(line=49, offs=1) -- 1646(line=50, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1669(line=54, offs=1) -- 1715(line=55, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 1596(line=49, offs=1) -- 1635(line=49, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1738(line=59, offs=1) -- 1783(line=60, offs=38)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/stdio.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 1865(line=66, offs=1) -- 1912(line=66, offs=48)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/stat.sats: 1390(line=36, offs=1) -- 1440(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/stat.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/stat.sats: 1756(line=58, offs=1) -- 1805(line=60, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/filebas.dats: 15937(line=927, offs=1) -- 15974(line=928, offs=30)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1390(line=36, offs=1) -- 1437(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/stdio.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/stdio.sats: 1950(line=69, offs=1) -- 1999(line=71, offs=34)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/sys/types.sats: 1390(line=36, offs=1) -- 1441(line=39, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/sys/types.cats"
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list.dats: 1529(line=44, offs=1) -- 1568(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list.dats: 1569(line=46, offs=1) -- 1615(line=47, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list_vt.dats: 1538(line=44, offs=1) -- 1577(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/list_vt.dats: 1578(line=46, offs=1) -- 1624(line=47, offs=39)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/list_vt_mergesort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/list_vt_quicksort.dats: 1546(line=44, offs=1) -- 1585(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/array.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/array_bsearch.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/SHARE/array_quicksort.dats: 1531(line=44, offs=1) -- 1570(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/arrayptr.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/arrayref.dats: 1532(line=44, offs=1) -- 1571(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrix.dats: 1535(line=44, offs=1) -- 1574(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrixptr.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/matrixref.dats: 1538(line=44, offs=1) -- 1577(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/stream_vt.dats: 1523(line=44, offs=1) -- 1562(line=44, offs=40)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/tostring.dats: 1528(line=44, offs=1) -- 1567(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/unsafe.dats: 1532(line=44, offs=1) -- 1566(line=44, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/checkast.dats: 1531(line=44, offs=1) -- 1570(line=45, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1660(line=37, offs=1) -- 1700(line=38, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1727(line=42, offs=1) -- 1759(line=42, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1833(line=49, offs=1) -- 1867(line=49, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_t.dats: 1868(line=50, offs=1) -- 1908(line=50, offs=41)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1656(line=37, offs=1) -- 1696(line=39, offs=27)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/mydepies.hats: 208(line=18, offs=1) -- 248(line=19, offs=32)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/contrib/atscntrb/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1813(line=49, offs=1) -- 1845(line=49, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/intinf_vt.dats: 1846(line=50, offs=1) -- 1881(line=50, offs=36)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1657(line=37, offs=1) -- 1689(line=37, offs=33)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/DATS/gintinf_t.dats: 1690(line=38, offs=1) -- 1724(line=38, offs=35)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_t.sats: 1805(line=48, offs=1) -- 1828(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/libats/libc/SATS/math.sats: 1380(line=35, offs=1) -- 1426(line=38, offs=3)
+*/
+
+#include \
+"libats/libc/CATS/math.cats"
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/.atspkg/contrib/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/.atspkg/contrib/atscntrb-hx-intinf/SATS/intinf_vt.sats: 1806(line=48, offs=1) -- 1829(line=48, offs=24)
+*/
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/.atspkg/contrib/atscntrb-hx-libgmp/SATS/gmp.sats: 1178(line=38, offs=1) -- 1236(line=43, offs=3)
+*/
+
+//
+#include \
+"atscntrb-hx-libgmp/CATS/gmp.cats"
+//
+/*
+staload-prologues(end)
+*/
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 287(line=10, offs=1) -- 426(line=14, offs=3)
+*/
+ATSextcode_beg()
+#define ATS_MEMALLOC_LIBC
+#include "ccomp/runtime/pats_ccomp_memalloc_libc.h"
+#include "ccomp/runtime/pats_ccomp_runtime_memalloc.c"
+ATSextcode_end()
+/*
+typedefs-for-tyrecs-and-tysums(beg)
+*/
+/*
+typedefs-for-tyrecs-and-tysums(end)
+*/
+/*
+dynconlst-declaration(beg)
+*/
+/*
+dynconlst-declaration(end)
+*/
+/*
+dyncstlst-declaration(beg)
+*/
+ATSdyncst_mac(atspre_ptr_alloc_tsz)
+ATSdyncst_mac(atspre_g0int2uint_int_uint)
+ATSdyncst_mac(atspre_g1int_add_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_init)
+ATSdyncst_mac(atscntrb_gmp_mpz_fib_uint)
+ATSdyncst_mac(atspre_g1int2int_int_int)
+ATSdyncst_mac(atspre_g1int_gt_int)
+ATSdyncst_mac(atspre_g1int_half_int)
+ATSdyncst_mac(atspre_g0int_mod_int)
+ATSdyncst_mac(atspre_g0int2int_int_int)
+ATSdyncst_mac(atspre_g0int_eq_int)
+ATSdyncst_mac(atspre_g0int_mul_int)
+ATSdyncst_mac(atspre_g0float2int_float_int)
+ATSdyncst_mac(atslib_libats_libc_sqrt_float)
+ATSdyncst_mac(atspre_g0int2float_int_float)
+ATSdyncst_mac(atspre_g1int_lt_int)
+ATSdyncst_mac(atspre_g1int_eq_int)
+ATSdyncst_mac(atscntrb_gmp_mpz_clear)
+/*
+dyncstlst-declaration(end)
+*/
+/*
+dynvalist-implementation(beg)
+*/
+/*
+dynvalist-implementation(end)
+*/
+/*
+exnconlst-declaration(beg)
+*/
+#ifndef _ATS_CCOMP_EXCEPTION_NONE_
+ATSextern()
+atsvoid_t0ype
+the_atsexncon_initize
+(
+  atstype_exnconptr d2c, atstype_string exnmsg
+) ;
+#endif // end of [_ATS_CCOMP_EXCEPTION_NONE_]
+/*
+exnconlst-declaration(end)
+*/
+/*
+extypelst-declaration(beg)
+*/
+/*
+extypelst-declaration(end)
+*/
+/*
+assumelst-declaration(beg)
+*/
+#ifndef _ATS_CCOMP_ASSUME_CHECK_NONE_
+#endif // #ifndef(_ATS_CCOMP_ASSUME_CHECK_NONE_)
+/*
+assumelst-declaration(end)
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+witness_0(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+fib_gmp_1(atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2() ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2__1() ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+exp_6(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_int)
+sqrt_int_18(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_prime_21(atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+loop_22(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__2(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27(atstkind_t0ype(atstyvar_type(tk)), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+#endif // end of [TEMPLATE]
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27__1(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__3(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_bool)
+is_prime_ats(atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atstkind_t0ype(atstype_int)
+exp_ats(atstkind_t0ype(atstype_int), atstkind_t0ype(atstype_int)) ;
+#endif // end of [QUALIFIED]
+
+#if(0)
+ATSextern()
+atsvoid_t0ype
+mpz_free(atsrefarg1_type(atscntrb_gmp_mpz)) ;
+#endif // end of [QUALIFIED]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 831(line=21, offs=4) -- 882(line=22, offs=14)
+*/
+/*
+local: 
+global: witness_0$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+witness_0(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret0, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 831(line=21, offs=4) -- 882(line=22, offs=14)
+*/
+ATSINSflab(__patsflab_witness_0):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 871(line=22, offs=3) -- 881(line=22, offs=13)
+*/
+ATSINSmove(tmpret0, ATSPMVcastfn(cast, atstkind_t0ype(atstype_int), arg0)) ;
+ATSfunbody_end()
+ATSreturn(tmpret0) ;
+} /* end of [witness_0] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 947(line=25, offs=5) -- 1147(line=33, offs=6)
+*/
+/*
+local: 
+global: fib_gmp_1$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_type(atstype_ptrk)
+fib_gmp_1(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret1, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref2, atstkind_type(atstype_ptrk)) ;
+ATStmpdec(tmpref5, atstkind_t0ype(atstype_uint)) ;
+ATStmpdec(tmp6, atstkind_t0ype(atstype_int)) ;
+// ATStmpdec_void(tmp7) ;
+// ATStmpdec_void(tmp8) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 947(line=25, offs=5) -- 1147(line=33, offs=6)
+*/
+ATSINSflab(__patsflab_fib_gmp_1):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 983(line=26, offs=3) -- 1147(line=33, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 995(line=27, offs=9) -- 996(line=27, offs=10)
+*/
+/*
+ATSINStmpdec(tmpref2) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 999(line=27, offs=13) -- 1010(line=27, offs=24)
+*/
+ATSINSmove(tmpref2, ATSLIB_056_prelude__ptr_alloc__2__1()) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1019(line=28, offs=9) -- 1020(line=28, offs=10)
+*/
+/*
+ATSINStmpdec(tmpref5) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1034(line=28, offs=24) -- 1039(line=28, offs=29)
+*/
+ATSINSmove(tmp6, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1023(line=28, offs=13) -- 1040(line=28, offs=30)
+*/
+ATSINSmove(tmpref5, atspre_g0int2uint_int_uint(tmp6)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1053(line=29, offs=13) -- 1074(line=29, offs=34)
+*/
+ATSINSmove_void(tmp7, atscntrb_gmp_mpz_init(ATSPMVrefarg1(ATSSELrecsin(tmpref2, atstkind_type(atstype_ptrk), atslab__2)))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1087(line=30, offs=13) -- 1115(line=30, offs=41)
+*/
+ATSINSmove_void(tmp8, atscntrb_gmp_mpz_fib_uint(ATSPMVrefarg1(ATSSELrecsin(tmpref2, atstkind_type(atstype_ptrk), atslab__2)), tmpref5)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1125(line=32, offs=5) -- 1140(line=32, offs=20)
+*/
+ATSINSmove(tmpret1, ATSPMVcastfn(castvwtp0, atstkind_type(atstype_ptrk), tmpref2)) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 983(line=26, offs=3) -- 1147(line=33, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret1) ;
+} /* end of [fib_gmp_1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$2$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = None()
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret3, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret3, atspre_ptr_alloc_tsz(ATSPMVsizeof(atstyvar_type(a)))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret3) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__2] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats: 3717(line=184, offs=10) -- 3749(line=184, offs=42)
+*/
+/*
+local: 
+global: ptr_alloc$2$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = a(4735)
+tmparg = S2Evar(a(4735))
+tmpsub = Some(a(4735) -> S2EVar(5561))
+*/
+atstkind_type(atstype_ptrk)
+ATSLIB_056_prelude__ptr_alloc__2__1()
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret3__1, atstkind_type(atstype_ptrk)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3708(line=184, offs=1) -- 3749(line=184, offs=42)
+*/
+ATSINSflab(__patsflab_ptr_alloc):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/pointer.dats({$PATSPRE}/DATS/pointer.dats): 3722(line=184, offs=15) -- 3749(line=184, offs=42)
+*/
+ATSINSmove(tmpret3__1, atspre_ptr_alloc_tsz(ATSPMVsizeof(atscntrb_gmp_mpz))) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret3__1) ;
+} /* end of [ATSLIB_056_prelude__ptr_alloc__2__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1225(line=36, offs=5) -- 1664(line=57, offs=10)
+*/
+/*
+local: exp_6$0(level=0)
+global: exp_6$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+exp_6(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret9, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp10, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmpref15, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref16, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp17, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp22, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref23, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp24, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp25, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1225(line=36, offs=5) -- 1664(line=57, offs=10)
+*/
+ATSINSflab(__patsflab_exp_6):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1275(line=37, offs=3) -- 1664(line=57, offs=10)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1292(line=38, offs=7) -- 1293(line=38, offs=8)
+*/
+ATSINSlab(__atstmplab0):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1244(line=36, offs=24) -- 1245(line=36, offs=25)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(0))) { ATSINSgoto(__atstmplab2) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1293(line=38, offs=8) -- 1293(line=38, offs=8)
+*/
+ATSINSlab(__atstmplab1):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1297(line=38, offs=12) -- 1298(line=38, offs=13)
+*/
+ATSINSmove(tmpret9, ATSPMVi0nt(0)) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1306(line=39, offs=8) -- 1306(line=39, offs=8)
+*/
+ATSINSlab(__atstmplab2):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1335(line=41, offs=12) -- 1340(line=41, offs=17)
+*/
+ATSINSmove(tmp10, ATSLIB_056_prelude__gt_g1int_int__7__1(arg1, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1332(line=41, offs=9) -- 1654(line=56, offs=12)
+*/
+ATSif(
+tmp10
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1356(line=42, offs=11) -- 1629(line=54, offs=14)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1376(line=43, offs=17) -- 1378(line=43, offs=19)
+*/
+/*
+ATSINStmpdec(tmpref15) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1381(line=43, offs=22) -- 1387(line=43, offs=28)
+*/
+ATSINSmove(tmpref15, atspre_g1int_half_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1405(line=44, offs=17) -- 1407(line=44, offs=19)
+*/
+/*
+ATSINStmpdec(tmpref16) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1410(line=44, offs=22) -- 1415(line=44, offs=27)
+*/
+ATSINSmove(tmpref16, atspre_g0int_mod_int(arg1, ATSPMVi0nt(2))) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1444(line=46, offs=16) -- 1450(line=46, offs=22)
+*/
+ATSINSmove(tmp17, ATSLIB_056_prelude__eq_g0int_int__13__1(tmpref16, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1441(line=46, offs=13) -- 1615(line=53, offs=18)
+*/
+ATSif(
+tmp17
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1474(line=47, offs=19) -- 1479(line=47, offs=24)
+*/
+ATSINSmove(tmp22, atspre_g0int_mul_int(arg0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1470(line=47, offs=15) -- 1484(line=47, offs=29)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp22) ;
+ATSINSmove_tlcal(apy1, tmpref15) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_exp_6) ;
+ATStailcal_end()
+
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1516(line=49, offs=15) -- 1615(line=53, offs=18)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1540(line=50, offs=21) -- 1541(line=50, offs=22)
+*/
+/*
+ATSINStmpdec(tmpref23) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1552(line=50, offs=33) -- 1557(line=50, offs=38)
+*/
+ATSINSmove(tmp25, atspre_g0int_mul_int(arg0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1548(line=50, offs=29) -- 1562(line=50, offs=43)
+*/
+ATSINSmove(tmp24, exp_6(tmp25, tmpref15)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1544(line=50, offs=25) -- 1562(line=50, offs=43)
+*/
+ATSINSmove(tmpref23, atspre_g0int_mul_int(arg0, tmp24)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1596(line=52, offs=17) -- 1597(line=52, offs=18)
+*/
+ATSINSmove(tmpret9, tmpref23) ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1516(line=49, offs=15) -- 1615(line=53, offs=18)
+*/
+/*
+INSletpop()
+*/
+} /* ATSendif */
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1356(line=42, offs=11) -- 1629(line=54, offs=14)
+*/
+/*
+INSletpop()
+*/
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1653(line=56, offs=11) -- 1654(line=56, offs=12)
+*/
+ATSINSmove(tmpret9, ATSPMVi0nt(1)) ;
+} /* ATSendif */
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret9) ;
+} /* end of [exp_6] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4632))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11, PMVtmpltcst(g1int_gt<S2Evar(tk(4632))>)(arg0, tmp12)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12679(line=659, offs=3) -- 12718(line=659, offs=42)
+*/
+/*
+local: 
+global: gt_g1int_int$7$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4632)
+tmparg = S2Evar(tk(4632))
+tmpsub = Some(tk(4632) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__gt_g1int_int__7__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret11__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp12__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12664(line=658, offs=1) -- 12718(line=659, offs=42)
+*/
+ATSINSflab(__patsflab_gt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12705(line=659, offs=29) -- 12716(line=659, offs=40)
+*/
+ATSINSmove(tmp12__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12688(line=659, offs=12) -- 12718(line=659, offs=42)
+*/
+ATSINSmove(tmpret11__1, atspre_g1int_gt_int(arg0, tmp12__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret11__1) ;
+} /* end of [ATSLIB_056_prelude__gt_g1int_int__7__1] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19, PMVtmpltcst(g0int2int<S2Eextkind(atstype_int), S2Evar(tk(4623))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18, PMVtmpltcst(g0int_eq<S2Evar(tk(4623))>)(arg0, tmp19)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$1(level=1)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__1, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__1, atspre_g0int_eq_int(arg0, tmp19__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__1) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1710(line=60, offs=4) -- 1850(line=65, offs=6)
+*/
+/*
+local: witness_0$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_int)
+sqrt_int_18(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret26, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpref27, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp28, atstkind_t0ype(atstype_float)) ;
+ATStmpdec(tmp29, atstkind_t0ype(atstype_float)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1710(line=60, offs=4) -- 1850(line=65, offs=6)
+*/
+ATSINSflab(__patsflab_sqrt_int_18):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1756(line=61, offs=3) -- 1850(line=65, offs=6)
+*/
+/*
+letpush(beg)
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1768(line=62, offs=9) -- 1773(line=62, offs=14)
+*/
+/*
+ATSINStmpdec(tmpref27) ;
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1804(line=62, offs=45) -- 1817(line=62, offs=58)
+*/
+ATSINSmove(tmp29, atspre_g0int2float_int_float(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1793(line=62, offs=34) -- 1819(line=62, offs=60)
+*/
+ATSINSmove(tmp28, atslib_libats_libc_sqrt_float(tmp29)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1781(line=62, offs=22) -- 1820(line=62, offs=61)
+*/
+ATSINSmove(tmpref27, atspre_g0float2int_float_int(tmp28)) ;
+
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1830(line=64, offs=5) -- 1843(line=64, offs=18)
+*/
+ATSINSmove(tmpret26, witness_0(tmpref27)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1756(line=61, offs=3) -- 1850(line=65, offs=6)
+*/
+/*
+INSletpop()
+*/
+ATSfunbody_end()
+ATSreturn(tmpret26) ;
+} /* end of [sqrt_int_18] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1886(line=68, offs=4) -- 2467(line=91, offs=10)
+*/
+/*
+local: sqrt_int_18$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0)
+local: 
+global: 
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+is_prime_21(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret30, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp51, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1886(line=68, offs=4) -- 2467(line=91, offs=10)
+*/
+ATSINSflab(__patsflab_is_prime_21):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1922(line=69, offs=3) -- 2467(line=91, offs=10)
+*/
+ATScaseof_beg()
+/*
+** ibranchlst-beg
+*/
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1939(line=70, offs=7) -- 1940(line=70, offs=8)
+*/
+ATSINSlab(__atstmplab3):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1895(line=68, offs=13) -- 1896(line=68, offs=14)
+*/
+ATSifnthen(ATSCKpat_int(arg0, ATSPMVint(1))) { ATSINSgoto(__atstmplab5) ; } ;
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1940(line=70, offs=8) -- 1940(line=70, offs=8)
+*/
+ATSINSlab(__atstmplab4):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1944(line=70, offs=12) -- 1949(line=70, offs=17)
+*/
+ATSINSmove(tmpret30, ATSPMVbool_false()) ;
+ATSbranch_end()
+
+ATSbranch_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1957(line=71, offs=8) -- 1957(line=71, offs=8)
+*/
+ATSINSlab(__atstmplab5):
+/*
+emit_instr: loc0 = : 0(line=0, offs=0) -- 0(line=0, offs=0)
+*/
+/*
+ibranch-mbody:
+*/
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1982(line=73, offs=9) -- 2457(line=90, offs=12)
+*/
+/*
+letpush(beg)
+*/
+/*
+letpush(end)
+*/
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2433(line=89, offs=19) -- 2443(line=89, offs=29)
+*/
+ATSINSmove(tmp51, sqrt_int_18(arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2425(line=89, offs=11) -- 2445(line=89, offs=31)
+*/
+ATSINSmove(tmpret30, loop_22(arg0, ATSPMVi0nt(2), tmp51)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 1982(line=73, offs=9) -- 2457(line=90, offs=12)
+*/
+/*
+INSletpop()
+*/
+ATSbranch_end()
+
+/*
+** ibranchlst-end
+*/
+ATScaseof_end()
+
+ATSfunbody_end()
+ATSreturn(tmpret30) ;
+} /* end of [is_prime_21] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2000(line=74, offs=15) -- 2403(line=87, offs=21)
+*/
+/*
+local: loop_22$0(level=1)
+global: loop_22$0(level=1)
+local: k$5091(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+global: k$5091(1)(HSEapp(HSEcst(atstkind_t0ype); HSEs2exp(S2Eextkind(atstype_int))))
+*/
+ATSstatic()
+atstkind_t0ype(atstype_bool)
+loop_22(atstkind_t0ype(atstype_int) env0, atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(apy0, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(apy1, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmpret31, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp32, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp37, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp40, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp41, atstkind_t0ype(atstype_int)) ;
+ATStmpdec(tmp42, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp47, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp50, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2000(line=74, offs=15) -- 2403(line=87, offs=21)
+*/
+ATSINSflab(__patsflab_loop_22):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2090(line=75, offs=16) -- 2099(line=75, offs=25)
+*/
+ATSINSmove(tmp32, ATSLIB_056_prelude__lt_g1int_int__23__1(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2087(line=75, offs=13) -- 2403(line=87, offs=21)
+*/
+ATSif(
+tmp32
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2122(line=76, offs=18) -- 2127(line=76, offs=23)
+*/
+ATSINSmove(tmp40, atspre_g0int_mod_int(env0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2122(line=76, offs=18) -- 2131(line=76, offs=27)
+*/
+ATSINSmove(tmp37, ATSLIB_056_prelude__eq_g0int_int__13__2(tmp40, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2119(line=76, offs=15) -- 2212(line=79, offs=35)
+*/
+ATSif(
+tmp37
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2153(line=77, offs=17) -- 2158(line=77, offs=22)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_false()) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2199(line=79, offs=22) -- 2204(line=79, offs=27)
+*/
+ATSINSmove(tmp41, atspre_g1int_add_int(arg0, ATSPMVi0nt(1))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2194(line=79, offs=17) -- 2212(line=79, offs=35)
+*/
+ATStailcal_beg()
+ATSINSmove_tlcal(apy0, tmp41) ;
+ATSINSmove_tlcal(apy1, arg1) ;
+ATSINSargmove_tlcal(arg0, apy0) ;
+ATSINSargmove_tlcal(arg1, apy1) ;
+ATSINSfgoto(__patsflab_loop_22) ;
+ATStailcal_end()
+
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2247(line=81, offs=18) -- 2256(line=81, offs=27)
+*/
+ATSINSmove(tmp42, ATSLIB_056_prelude__eq_g1int_int__27__1(arg0, arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2244(line=81, offs=15) -- 2403(line=87, offs=21)
+*/
+ATSif(
+tmp42
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2281(line=82, offs=20) -- 2286(line=82, offs=25)
+*/
+ATSINSmove(tmp50, atspre_g0int_mod_int(env0, arg0)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2281(line=82, offs=20) -- 2290(line=82, offs=29)
+*/
+ATSINSmove(tmp47, ATSLIB_056_prelude__eq_g0int_int__13__3(tmp50, ATSPMVi0nt(0))) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2278(line=82, offs=17) -- 2363(line=85, offs=23)
+*/
+ATSif(
+tmp47
+) ATSthen() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2314(line=83, offs=19) -- 2319(line=83, offs=24)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_false()) ;
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2359(line=85, offs=19) -- 2363(line=85, offs=23)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_true()) ;
+} /* ATSendif */
+} ATSelse() {
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/ats-src/numerics-internal.dats: 2399(line=87, offs=17) -- 2403(line=87, offs=21)
+*/
+ATSINSmove(tmpret31, ATSPMVbool_true()) ;
+} /* ATSendif */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn(tmpret31) ;
+} /* end of [loop_22] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$23$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret33, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp34, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp34, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4626))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret33, PMVtmpltcst(g1int_lt<S2Evar(tk(4626))>)(arg0, tmp34)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret33) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__23] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12520(line=650, offs=3) -- 12559(line=650, offs=42)
+*/
+/*
+local: 
+global: lt_g1int_int$23$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4626)
+tmparg = S2Evar(tk(4626))
+tmpsub = Some(tk(4626) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__lt_g1int_int__23__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret33__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp34__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12505(line=649, offs=1) -- 12559(line=650, offs=42)
+*/
+ATSINSflab(__patsflab_lt_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12546(line=650, offs=29) -- 12557(line=650, offs=40)
+*/
+ATSINSmove(tmp34__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12529(line=650, offs=12) -- 12559(line=650, offs=42)
+*/
+ATSINSmove(tmpret33__1, atspre_g1int_lt_int(arg0, tmp34__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret33__1) ;
+} /* end of [ATSLIB_056_prelude__lt_g1int_int__23__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$2(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__2(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__2, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__2, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__2, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__2, atspre_g0int_eq_int(arg0, tmp19__2)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__2) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__2] */
+
+#if(0)
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12838(line=668, offs=3) -- 12877(line=668, offs=42)
+*/
+/*
+local: 
+global: eq_g1int_int$27$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+/*
+imparg = tk(4638)
+tmparg = S2Evar(tk(4638))
+tmpsub = None()
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27(atstkind_t0ype(atstyvar_type(tk)) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret43, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp44, atstkind_t0ype(atstyvar_type(tk))) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12823(line=667, offs=1) -- 12877(line=668, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12864(line=668, offs=29) -- 12875(line=668, offs=40)
+*/
+ATSINSmove(tmp44, PMVtmpltcst(g1int2int<S2Eextkind(atstype_int), S2Evar(tk(4638))>)(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12847(line=668, offs=12) -- 12877(line=668, offs=42)
+*/
+ATSINSmove(tmpret43, PMVtmpltcst(g1int_eq<S2Evar(tk(4638))>)(arg0, tmp44)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret43) ;
+} /* end of [ATSLIB_056_prelude__eq_g1int_int__27] */
+#endif // end of [TEMPLATE]
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12838(line=668, offs=3) -- 12877(line=668, offs=42)
+*/
+/*
+local: 
+global: eq_g1int_int$27$1(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4638)
+tmparg = S2Evar(tk(4638))
+tmpsub = Some(tk(4638) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g1int_int__27__1(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret43__1, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp44__1, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12823(line=667, offs=1) -- 12877(line=668, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g1int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12864(line=668, offs=29) -- 12875(line=668, offs=40)
+*/
+ATSINSmove(tmp44__1, atspre_g1int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12847(line=668, offs=12) -- 12877(line=668, offs=42)
+*/
+ATSINSmove(tmpret43__1, atspre_g1int_eq_int(arg0, tmp44__1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret43__1) ;
+} /* end of [ATSLIB_056_prelude__eq_g1int_int__27__1] */
+
+/*
+/home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats: 12259(line=635, offs=3) -- 12298(line=635, offs=42)
+*/
+/*
+local: 
+global: eq_g0int_int$13$3(level=2)
+local: 
+global: 
+*/
+ATSstatic()
+/*
+imparg = tk(4623)
+tmparg = S2Evar(tk(4623))
+tmpsub = Some(tk(4623) -> S2Eextkind(atstype_int))
+*/
+atstkind_t0ype(atstype_bool)
+ATSLIB_056_prelude__eq_g0int_int__13__3(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret18__3, atstkind_t0ype(atstype_bool)) ;
+ATStmpdec(tmp19__3, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12244(line=634, offs=1) -- 12298(line=635, offs=42)
+*/
+ATSINSflab(__patsflab_eq_g0int_int):
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12285(line=635, offs=29) -- 12296(line=635, offs=40)
+*/
+ATSINSmove(tmp19__3, atspre_g0int2int_int_int(arg1)) ;
+
+/*
+emit_instr: loc0 = /home/vanessa/.atspkg/0.3.10/lib/ats2-postiats-0.3.9/prelude/DATS/integer.dats({$PATSPRE}/DATS/integer.dats): 12268(line=635, offs=12) -- 12298(line=635, offs=42)
+*/
+ATSINSmove(tmpret18__3, atspre_g0int_eq_int(arg0, tmp19__3)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret18__3) ;
+} /* end of [ATSLIB_056_prelude__eq_g0int_int__13__3] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 707(line=32, offs=24) -- 725(line=33, offs=13)
+*/
+/*
+local: is_prime_21$0(level=0)
+global: witness_0$0(level=0), sqrt_int_18$0(level=0), is_prime_21$0(level=0), is_prime_ats$31$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_bool)
+is_prime_ats(atstkind_t0ype(atstype_int) arg0)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret52, atstkind_t0ype(atstype_bool)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 694(line=32, offs=11) -- 726(line=33, offs=14)
+*/
+ATSINSflab(__patsflab_is_prime_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 715(line=33, offs=3) -- 725(line=33, offs=13)
+*/
+ATSINSmove(tmpret52, is_prime_21(arg0)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret52) ;
+} /* end of [is_prime_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 746(line=35, offs=19) -- 766(line=36, offs=12)
+*/
+/*
+local: exp_6$0(level=0)
+global: exp_6$0(level=0), exp_ats$32$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atstkind_t0ype(atstype_int)
+exp_ats(atstkind_t0ype(atstype_int) arg0, atstkind_t0ype(atstype_int) arg1)
+{
+/* tmpvardeclst(beg) */
+ATStmpdec(tmpret53, atstkind_t0ype(atstype_int)) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 738(line=35, offs=11) -- 766(line=36, offs=12)
+*/
+ATSINSflab(__patsflab_exp_ats):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 757(line=36, offs=3) -- 766(line=36, offs=12)
+*/
+ATSINSmove(tmpret53, exp_6(arg0, arg1)) ;
+
+ATSfunbody_end()
+ATSreturn(tmpret53) ;
+} /* end of [exp_ats] */
+
+/*
+/home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 830(line=40, offs=20) -- 849(line=41, offs=14)
+*/
+/*
+local: 
+global: mpz_free$33$0(level=0)
+local: 
+global: 
+*/
+ATSextern()
+atsvoid_t0ype
+mpz_free(atsrefarg1_type(atscntrb_gmp_mpz) arg0)
+{
+/* tmpvardeclst(beg) */
+// ATStmpdec_void(tmpret54) ;
+/* tmpvardeclst(end) */
+ATSfunbody_beg()
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 821(line=40, offs=11) -- 850(line=41, offs=15)
+*/
+ATSINSflab(__patsflab_mpz_free):
+/*
+emit_instr: loc0 = /home/vanessa/programming/haskell/done/hs-ats/fast-arithmetic/ats-src/numerics.dats: 838(line=41, offs=3) -- 849(line=41, offs=14)
+*/
+ATSINSmove_void(tmpret54, atscntrb_gmp_mpz_clear(ATSPMVrefarg1(arg0))) ;
+
+ATSfunbody_end()
+ATSreturn_void(tmpret54) ;
+} /* end of [mpz_free] */
+
+#if(0)
+/*
+** for initialization(dynloading)
+*/
+ATSdynloadflag_minit(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag) ;
+ATSextern()
+atsvoid_t0ype
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynload()
+{
+ATSfunbody_beg()
+ATSdynload(/*void*/)
+ATSdynloadflag_sta(
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag
+) ;
+ATSif(
+ATSCKiseqz(
+_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag
+)
+) ATSthen() {
+ATSdynloadset(_057_home_057_vanessa_057_programming_057_haskell_057_done_057_hs_055_ats_057_fast_055_arithmetic_057_ats_055_src_057_numerics_056_dats__dynloadflag) ;
+/*
+dynexnlst-initize(beg)
+*/
+/*
+dynexnlst-initize(end)
+*/
+/* local */
+/* in of [local] */
+/* local */
+/* in of [local] */
+/* end of [local] */
+/* end of [local] */
+} /* ATSendif */
+ATSfunbody_end()
+ATSreturn_void(tmpret_void) ;
+} /* end of [*_dynload] */
+#endif // end of [#if(0)]
+
+/* ****** ****** */
+
+/* end-of-compilation-unit */
diff --git a/dist-newstyle/lib/empty b/dist-newstyle/lib/empty
deleted file mode 100644
--- a/dist-newstyle/lib/empty
+++ /dev/null
diff --git a/fast-arithmetic.cabal b/fast-arithmetic.cabal
--- a/fast-arithmetic.cabal
+++ b/fast-arithmetic.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: fast-arithmetic
-version: 0.3.3.7
+version: 0.4.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -11,22 +11,21 @@
 description:
     Fast functions for number theory and combinatorics with a high level of safety guaranteed by [ATS](http://www.ats-lang.org/).
 category: Numerics, Math, Algorithms, Number Theory, Combinatorics, FFI, ATS
-build-type: Custom
+build-type: Simple
 extra-source-files:
-    ats-src/*.dats
-    atspkg.dhall
-    dist-newstyle/lib/empty
+    .atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/*.h
+    .atspkg/contrib/ats-includes-0.3.10/ccomp/runtime/*.c
+    .atspkg/contrib/ats-includes-0.3.10/prelude/CATS/*.cats
+    .atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/*.cats
+    .atspkg/contrib/ats-includes-0.3.10/libats/libc/CATS/sys/*.cats
+    .atspkg/contrib/atscntrb-hx-intinf/*.hats
+    .atspkg/contrib/atscntrb-hx-libgmp/CATS/*.cats
 extra-doc-files: README.md
 
 source-repository head
     type: git
     location: git@github.com:vmchale/hs-ats.git
 
-custom-setup
-    setup-depends: base -any,
-                   Cabal -any,
-                   ats-pkg >=2.10.0.0
-
 flag development
     description:
         Enable `-Werror` and don't clean ATS libraries between builds.
@@ -39,14 +38,16 @@
         Numeric.Integer
         Numeric.NumberTheory
         Numeric.Combinatorics
+    c-sources:
+        cbits/combinatorics.c
+        cbits/number-theory.c
+        cbits/numerics.c
     hs-source-dirs: src
     other-modules:
         Numeric.Common
     default-language: Haskell2010
-    extra-lib-dirs:
-      dist-newstyle/lib
-    extra-libraries:
-        numbertheory
+    include-dirs: .atspkg/contrib/ats-includes-0.3.10/ccomp/runtime
+                  .atspkg/contrib/ats-includes-0.3.10/ .atspkg/contrib
     ghc-options: -Wall -optc-mtune=native -optc-flto -optc-O3
     build-depends:
         base >=4.10 && <5,
diff --git a/src/Numeric/Combinatorics.hs b/src/Numeric/Combinatorics.hs
--- a/src/Numeric/Combinatorics.hs
+++ b/src/Numeric/Combinatorics.hs
@@ -10,6 +10,7 @@
                              , doubleFactorial
                              , catalan
                              , factorial
+                             , derangement
                              ) where
 
 import           Control.Composition
@@ -24,11 +25,16 @@
 foreign import ccall unsafe factorial_ats :: CInt -> Ptr GMPInt
 foreign import ccall unsafe choose_ats :: CInt -> CInt -> Ptr GMPInt
 foreign import ccall unsafe catalan_ats :: CInt -> Ptr GMPInt
+foreign import ccall unsafe derangements_ats :: CInt -> Ptr GMPInt
 
+-- | \\( !n \\). See [here](http://mathworld.wolfram.com/Derangement.html)
+derangement :: Int -> Integer
+derangement = unsafePerformIO . conjugateGMP derangements_ats
+
 -- | The @n@th Catalan number, with indexing beginning at @0@. See
 -- [here](http://mathworld.wolfram.com/CatalanNumber.html).
 --
--- > λ:> mapM catalan [0..9]
+-- > λ:> catalan <$> [0..9]
 -- > [1,1,2,5,14,42,132,429,1430,4862]
 catalan :: Int -> Integer
 catalan = unsafePerformIO . conjugateGMP catalan_ats
diff --git a/src/Numeric/NumberTheory.hs b/src/Numeric/NumberTheory.hs
--- a/src/Numeric/NumberTheory.hs
+++ b/src/Numeric/NumberTheory.hs
@@ -37,6 +37,6 @@
 tau :: Int -> Int
 tau = conjugate count_divisors_ats
 
--- | Euler totient function. Experimental.
+-- | Euler totient function.
 totient :: Int -> Int
 totient = conjugate totient_ats
diff --git a/src/Numeric/Pure.hs b/src/Numeric/Pure.hs
--- a/src/Numeric/Pure.hs
+++ b/src/Numeric/Pure.hs
@@ -1,33 +1,15 @@
--- | Pure Haskell functions. These tend to be more general than the equivalents
--- in ATS.
-module Numeric.Pure ( -- * Useful functions
-                      derangement
-                    -- * Functions exported for testing and benchmarking
-                    , hsIsPrime
-                    , hsFibonacci
+-- | Pure Haskell functions.
+module Numeric.Pure ( hsDerangement
                     ) where
 
-{-# SPECIALIZE hsIsPrime :: Int -> Bool #-}
-
 -- | See [here](http://mathworld.wolfram.com/Derangement.html).
 --
 -- > λ:> fmap derangement [0..10] :: [Integer]
 -- > [1,0,1,2,9,44,265,1854,14833,133496,1334961]
-derangement :: (Integral a) => Int -> a
-derangement n = derangements !! n
+hsDerangement :: (Integral a) => Int -> a
+hsDerangement n = derangements !! n
 
 derangements :: (Integral a) => [a]
 derangements = fmap snd g
     where g = (0, 1) : (1, 0) : zipWith step g (tail g)
           step (_, n) (i, m) = (i + 1, i * (n + m))
-
-hsIsPrime :: (Integral a) => a -> Bool
-hsIsPrime 1 = False
-hsIsPrime x = all ((/=0) . (x `mod`)) [2..up]
-    where up = floor (sqrt (fromIntegral x :: Float))
-
-fibs :: (Integral a) => [a]
-fibs = 1 : 1 : zipWith (+) fibs (tail fibs)
-
-hsFibonacci :: (Integral a) => Int -> a
-hsFibonacci = (fibs !!)
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1,4 +1,3 @@
-import           Data.List                             (zipWith4)
 import qualified Math.Combinat.Numbers                 as Ext
 import qualified Math.NumberTheory.ArithmeticFunctions as Ext
 import           Math.NumberTheory.Moduli.Jacobi       (JacobiSymbol (..))
@@ -11,6 +10,13 @@
 import           Test.Hspec.QuickCheck
 import           Test.QuickCheck                       hiding (choose)
 
+{-# SPECIALIZE hsIsPrime :: Int -> Bool #-}
+
+hsIsPrime :: (Integral a) => a -> Bool
+hsIsPrime 1 = False
+hsIsPrime x = all ((/=0) . (x `mod`)) [2..up]
+    where up = floor (sqrt (fromIntegral x :: Float))
+
 toInt :: JacobiSymbol -> Int
 toInt MinusOne = -1
 toInt Zero     = 0
@@ -27,11 +33,6 @@
     prop "should agree with the pure Haskell function" $
         \n -> n < 1 || f n == g n
 
-check :: (Eq a, Show a) => String -> (Int -> a) -> (Integer -> a) -> Int -> SpecWith ()
-check s f g n = describe s $
-    it ("should work for n=" ++ show n) $
-        f n `shouldBe` g (fromIntegral n)
-
 main :: IO ()
 main = hspec $ parallel $ do
 
@@ -57,9 +58,18 @@
     describe "totient" $
         prop "should satisfy Fermat's little theorem" $
             \a m -> a < 1 || m < 2 || gcd a m /= 1 || tooBig a m || (a ^ totient m) `mod` m == 1
-
-    sequence_ $ zipWith4 check
-        ["choose 101", "doubleFactorial", "catalan", "fibonacci", "factorial", "jacobi"]
-        [choose 101, doubleFactorial, catalan, factorial]
-        [Ext.binomial 101, Ext.doubleFactorial, Ext.catalan, Ext.factorial]
-        [16, 79, 300, 121, 231]
+    describe "doubleFactorial" $
+        prop "should agree" $
+            \a -> a < 0 || doubleFactorial a == Ext.doubleFactorial a
+    describe "catalan" $
+        prop "should agree" $
+            \a -> a < 0 || catalan a == Ext.catalan a
+    describe "factorial" $
+        prop "should agree" $
+            \a -> a < 0 || factorial a == Ext.factorial a
+    describe "choose" $
+        prop "should agree" $
+            \a b -> a < 0 || b < 0 || choose b a == Ext.binomial b a
+    describe "derangement" $
+        prop "should agree" $
+            \a -> a < 1 || derangement a == hsDerangement a
