/*
**
** The C code is generated by ATS/Anairiats
** The compilation time is: 2020-11-6:  1h:52m
**
*/

/* include some .h files */
#ifndef _ATS_HEADER_NONE
#include "ats_config.h"
#include "ats_basics.h"
#include "ats_types.h"
#include "ats_exception.h"
#include "ats_memory.h"
#endif /* _ATS_HEADER_NONE */

/* include some .cats files */
#ifndef _ATS_PRELUDE_NONE
#include "prelude/CATS/basics.cats"
#include "prelude/CATS/bool.cats"
#include "prelude/CATS/char.cats"
#include "prelude/CATS/byte.cats"
#include "prelude/CATS/float.cats"
#include "prelude/CATS/integer.cats"
#include "prelude/CATS/integer_ptr.cats"
#include "prelude/CATS/integer_fixed.cats"
#include "prelude/CATS/sizetype.cats"
#include "prelude/CATS/pointer.cats"
#include "prelude/CATS/reference.cats"
#include "prelude/CATS/string.cats"
#include "prelude/CATS/lazy.cats"
#include "prelude/CATS/lazy_vt.cats"
#include "prelude/CATS/printf.cats"
#include "prelude/CATS/list.cats"
#include "prelude/CATS/option.cats"
#include "prelude/CATS/array.cats"
#include "prelude/CATS/matrix.cats"
#endif /* _ATS_PRELUDE_NONE */
/* prologues from statically loaded files */

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_lexbuf.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_lexbuf.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_lexbuf.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_lexbuf.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_location.cats"

#include "pats_lexbuf.cats"

#include "pats_location.cats"

#include "pats_location.cats"
/* external codes at top */
/* type definitions */
typedef
struct {
ats_ptr_type atslab_3 ;
ats_ptr_type atslab_4 ;
} anairiats_rec_0 ;

typedef struct {
int tag ;
ats_ptr_type atslab_0 ;
} anairiats_sum_1 ;

typedef struct {
int tag ;
ats_int_type atslab_0 ;
ats_ptr_type atslab_1 ;
} anairiats_sum_2 ;

typedef struct {
ats_int_type atslab_0 ;
} anairiats_sum_3 ;

typedef struct {
ats_ptr_type atslab_0 ;
ats_ptr_type atslab_1 ;
} anairiats_sum_4 ;

typedef struct {
ats_ptr_type atslab_0 ;
ats_ptr_type atslab_1 ;
ats_ptr_type atslab_2 ;
} anairiats_sum_5 ;

typedef
struct {
ats_ptr_type atslab_s2exp_srt ;
ats_ptr_type atslab_s2exp_node ;
} anairiats_rec_6 ;

typedef
struct {
ats_ptr_type atslab_0 ;
ats_ptr_type atslab_1 ;
} anairiats_rec_7 ;

typedef struct {
anairiats_rec_7 atslab_0 ;
ats_ptr_type atslab_1 ;
} anairiats_sum_8 ;

typedef struct {
int tag ;
ats_ptr_type atslab_0 ;
ats_ptr_type atslab_1 ;
} anairiats_sum_9 ;

typedef struct {
int tag ;
ats_ptr_type atslab_0 ;
ats_ptr_type atslab_1 ;
ats_ptr_type atslab_2 ;
} anairiats_sum_10 ;

typedef struct {
int tag ;
ats_ptr_type atslab_0 ;
ats_int_type atslab_1 ;
ats_ptr_type atslab_2 ;
} anairiats_sum_11 ;

typedef struct {
int tag ;
ats_uint_type atslab_0 ;
} anairiats_sum_12 ;

typedef struct {
ats_ptr_type atslab_0 ;
} anairiats_sum_13 ;

typedef struct {
int tag ;
ats_ptr_type atslab_0 ;
ats_int_type atslab_1 ;
ats_ptr_type atslab_2 ;
ats_int_type atslab_3 ;
ats_ptr_type atslab_4 ;
ats_ptr_type atslab_5 ;
} anairiats_sum_14 ;

typedef struct {
int tag ;
ats_int_type atslab_0 ;
ats_ptr_type atslab_1 ;
ats_ptr_type atslab_2 ;
} anairiats_sum_15 ;

/* external typedefs */
/* external dynamic constructor declarations */
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__list_cons_0) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__list_nil_1) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__None_0) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__Some_1) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__list_vt_cons_0) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__list_vt_nil_1) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__None_vt_0) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2prelude_2basics_sta_2esats__Some_vt_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__FUNCLOfun_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__FUNCLOclo_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2RTBASimp_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2RTbas_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2RTfun_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__TYRECKINDbox_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__TYRECKINDbox_lin_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__TYRECKINDflt0_2) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__WTHS2EXPLSTnil_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__WTHS2EXPLSTcons_none_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__WTHS2EXPLSTcons_invar_2) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__WTHS2EXPLSTcons_trans_3) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__SLABELED_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2EFFset_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2EFFexp_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2EFFadd_2) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2LABlab_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2LABind_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eint_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eintinf_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Efloat_2) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Estring_3) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Ecst_4) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eextype_5) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eextkind_6) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Evar_7) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2EVar_8) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Ehole_9) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Edatcontyp_10) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Edatconptr_11) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eat_12) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Esizeof_13) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eeff_14) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eeqeq_15) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eproj_16) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eapp_17) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Elam_18) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Efun_19) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Emetfun_20) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Emetdec_21) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Etop_22) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Ewithout_23) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Etyarr_24) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Etyrec_25) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Einvar_26) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eexi_27) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Euni_28) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Erefarg_29) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Evararg_30) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Ewthtype_31) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2Eerrexp_32) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__SZLABELED_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEprf_0) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEptr_1) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEcst_2) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEvar_3) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEVar_4) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEextype_5) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEextkind_6) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEapp_7) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEtyarr_8) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEtyrec_9) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEclo_10) ;
ATSextern_val(ats_sum_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__S2ZEbot_11) ;

/* external dynamic constant declarations */
ATSextern_fun(ats_void_type, atspre_vbox_make_view_ptr) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, atspre_prerr_newline) () ;
ATSextern_fun(ats_bool_type, atspre_neg_bool) (ats_bool_type) ;
ATSextern_fun(ats_int_type, atspre_add_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_int_type, atspre_sub_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_lte_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_gt_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_gte_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_eq_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_int_type, atspre_isucc) (ats_int_type) ;
ATSextern_fun(ats_int_type, atspre_iadd) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_int_type, atspre_isub) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_int_type, atspre_idiv) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_ilt) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_igt) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_igte) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_size_type, atspre_size1_of_int1) (ats_int_type) ;
ATSextern_fun(ats_size_type, atspre_add_size1_int1) (ats_size_type, ats_int_type) ;
ATSextern_fun(ats_size_type, atspre_sub_size1_int1) (ats_size_type, ats_int_type) ;
ATSextern_fun(ats_size_type, atspre_mul2_size1_size1) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_bool_type, atspre_lt_size1_size1) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_bool_type, atspre_gt_size1_int1) (ats_size_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_neq_size1_size1) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_ptr_type, atspre_ptr_alloc_tsz) (ats_size_type) ;
ATSextern_fun(ats_void_type, atspre_ptr_zero_tsz) (ats_ref_type, ats_size_type) ;
ATSextern_fun(ats_ptr_type, atspre_ref_make_elt_tsz) (ats_ref_type, ats_size_type) ;
ATSextern_fun(ats_void_type, atspre_fprint_string) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_void_type, atspre_prerr_string) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, ListSubscriptException_make) () ;
ATSextern_fun(ats_ptr_type, atspre_array_ptr_alloc_tsz) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_void_type, atspre_array_ptr_free) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, atspre_array_ptr_initialize_funenv_tsz) (ats_ref_type, ats_size_type, ats_ptr_type, ats_size_type, ats_ptr_type) ;
ATSextern_fun(ats_void_type, atspre_array_ptr_initialize_cloenv_tsz) (ats_ref_type, ats_size_type, ats_ref_type, ats_size_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, atspre_array_ptr_split_tsz) (ats_ptr_type, ats_size_type, ats_size_type) ;
ATSextern_fun(ats_ptr_type, atspre_array_ptr_takeout_tsz) (ats_ptr_type, ats_size_type, ats_size_type) ;
ATSextern_fun(anairiats_rec_0, atspre_array_ptr_takeout2_tsz) (ats_ptr_type, ats_size_type, ats_size_type, ats_size_type) ;
ATSextern_fun(ats_void_type, atspre_array_ptr_foreach_funenv_tsz) (ats_ref_type, ats_ptr_type, ats_size_type, ats_size_type, ats_ptr_type) ;
ATSextern_fun(ats_void_type, atspre_array_ptr_iforeach_funenv_tsz) (ats_ref_type, ats_ptr_type, ats_size_type, ats_size_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, atspre_array2_ptr_takeout_tsz) (ats_ptr_type, ats_size_type, ats_size_type, ats_size_type) ;
ATSextern_fun(ats_void_type, atslib_qsort) (ats_ref_type, ats_size_type, ats_size_type, ats_ptr_type) ;
ATSextern_fun(ats_int_type, _2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__impkind_linearize) (ats_int_type) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_PROP) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_TYPE) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_T0YPE) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_VIEW) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_VIEWTYPE) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_VIEWT0YPE) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__eq_symbol_symbol) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_label_2esats__label_make_int) (ats_int_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__effset_isnil) (ats_uint_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__effset_isall) (ats_uint_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__effset_supset) (ats_uint_type, ats_uint_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_location_2esats__prerr_location) (ats_ptr_type) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_prop) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_t0ype) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_view) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vt0ype) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_err) () ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_is_fun) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_is_prf) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_is_lin) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_ltmat0) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__tyreckind_is_boxed) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_get_srt) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_get_iscon) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_is_abstr) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_is_tkind) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2var_dup) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2var_get_sVarset) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__eq_s2var_s2var) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__fprint_s2var) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_link) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Varset_ismem) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_var) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_extype_srt) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_extkind_srt) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_at) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_sizeof) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_eff) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_eqeq) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_proj) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_app_srt) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_lam_srt) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_fun_srt) (ats_ptr_type, ats_ptr_type, ats_int_type, ats_ptr_type, ats_int_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_metfun) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_metdec) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_datcontyp) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_datconptr) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_top_srt) (ats_ptr_type, ats_int_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_without) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyarr) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec) (ats_int_type, ats_int_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec_srt) (ats_ptr_type, ats_ptr_type, ats_int_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_invar) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_refarg) (ats_int_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_vararg) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_exiuni) (ats_int_type, ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_wthtype) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_errexp) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__fprint_s2exp) (ats_ptr_type, ats_ptr_type) ;
ATSextern_val(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2eff_all) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2eff_effset) (ats_uint_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2eff_add) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_is_lin) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_szexp) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2zexp_make_s2exp) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_linearize) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_boxed) (ats_int_type, ats_int_type, ats_int_type, ats_int_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_prgm_boxed_labs2explst) (ats_int_type, ats_int_type, ats_int_type, ats_int_type, ats_int_type, ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_wthtype) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_without) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_lin2) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_set) (ats_ptr_type, ats_uint_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_exp) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_make_nil) () ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_free) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_copy) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_add) (ats_ref_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_find) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_occurcheck) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_extend_svarlst) (ats_ref_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_vt) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_alpha) (ats_ptr_type, ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_hnfize) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp2hnf) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp2hnf_cast) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf2exp) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_syneq) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_without) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_lin2) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lab_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lablst_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2zexplst_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2zexplst_subst_flag) (ats_ptr_type, ats_ptr_type, ats_ref_type) ;

/* external dynamic terminating constant declarations */
#ifdef _ATS_PROOFCHECK
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2SATS_2list_2esats__list_length_is_nonnegative_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2SATS_2list_vt_2esats__list_vt_length_is_nonnegative_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2SATS_2array_2esats__array_v_takeout2_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____copy_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____free_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____assert_prfck () ;
#endif /* _ATS_PROOFCHECK */

/* assuming abstract types */
int _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__sasp__stasub_vtype = 0 ;

/* sum constructor declarations */
/* exn constructor declarations */
/* global dynamic (non-functional) constant declarations */
/* internal function declarations */
static
ats_void_type prerr_error2_loc_0 (ats_ptr_type arg0) ;
static
ats_ptr_type impname_linearize_1 (ats_ptr_type arg0) ;
static
ats_ptr_type aux_6 (ats_int_type arg0, ats_int_type arg1, ats_ptr_type arg2) ;
static
ats_ptr_type aux_8 (ats_int_type arg0, ats_ptr_type arg1) ;
static
ats_void_type aux01_10 (ats_int_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) ;
static
ats_bool_type test1_12 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_bool_type test2_13 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type filter_14 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_bool_type list_is_sing_01298_ats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type loop_23 (ats_ptr_type arg0) ;
static
ats_bool_type loop_25 (ats_ptr_type arg0) ;
static
ats_bool_type aux_28 (ats_ptr_type arg0, ats_uint_type arg1) ;
static
ats_void_type loop_34 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_ptr_type list_copy_01322_anairiats_rec_7 (ats_ptr_type arg0) ;
static
ats_ptr_type list_vt_copy_01498_anairiats_rec_7 (ats_ptr_type arg0) ;
static
ats_void_type loop_37 (ats_ptr_type arg0) ;
static
ats_void_type list_vt_free_01499_anairiats_rec_7 (ats_ptr_type arg0) ;
static
ats_void_type loop_39 (ats_ptr_type arg0, ats_ptr_type arg1, ats_int_type arg2) ;
static
ats_int_type loop_42 (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) ;
static
ats_ptr_type loop_46 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ptr_type arg3) ;
static
ats_ptr_type list_assoc_funenv_01315_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ptr_type arg3) ;
static
ats_ptr_type list_assoc_fun_01316_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) ;
static
ats_ptr_type loop_49 (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) ;
static
ats_ptr_type revapp_52 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type list_vt_reverse_append_01507_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type list_vt_reverse_01506_ats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type s2var_subst_flag_53 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ptr_type arg3) ;
static
ats_ptr_type s2Var_subst_flag_54 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ptr_type arg3) ;
static
ats_void_type loop_57 (ats_ptr_type arg0) ;
static
ats_void_type list_vt_free_01499_ats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type s2exp_subst_flag_exiuni_55 (ats_int_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ref_type arg3, ats_ptr_type arg4, ats_ptr_type arg5, ats_ptr_type arg6) ;
static
ats_ptr_type aux_76 (ats_ptr_type env0, ats_ptr_type env1, ats_ptr_type arg0) ;
static
ats_clo_ptr_type aux_76_closure_make (ats_ptr_type env0, ats_ptr_type env1) ;
static
ats_ptr_type aux_76_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0) ;

/* partial value template declarations */
/* static temporary variable declarations */
/* external value variable declarations */

/* function implementations */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 1895(line=69, offs=4) -- 1987(line=72, offs=2)
*/
ATSstaticdec()
ats_void_type
prerr_error2_loc_0 (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp0) ;
// ATSlocal_void (tmp1) ;

__ats_lab_prerr_error2_loc_0:
/* tmp1 = */ _2tmp_2ATS_2dPostiats_2src_2pats_location_2esats__prerr_location (arg0) ;
/* tmp0 = */ atspre_prerr_string (ATSstrcst(": error(2)")) ;
return /* (tmp0) */ ;
} /* end of [prerr_error2_loc_0] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 2049(line=78, offs=4) -- 2312(line=88, offs=4)
*/
ATSstaticdec()
ats_ptr_type
impname_linearize_1 (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp2) ;
ATSlocal (ats_bool_type, tmp3) ;
ATSlocal (ats_bool_type, tmp4) ;
ATSlocal (ats_bool_type, tmp5) ;

__ats_lab_impname_linearize_1:
do {
/* branch: __ats_lab_0 */
__ats_lab_0_0:
__ats_lab_0_1:
tmp3 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__eq_symbol_symbol (arg0, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_PROP) ;
if (!tmp3) { goto __ats_lab_1_1 ; }
tmp2 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_VIEW ;
break ;

/* branch: __ats_lab_1 */
__ats_lab_1_0:
__ats_lab_1_1:
tmp4 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__eq_symbol_symbol (arg0, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_TYPE) ;
if (!tmp4) { goto __ats_lab_2_1 ; }
tmp2 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_VIEWTYPE ;
break ;

/* branch: __ats_lab_2 */
__ats_lab_2_0:
__ats_lab_2_1:
tmp5 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__eq_symbol_symbol (arg0, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_T0YPE) ;
if (!tmp5) { goto __ats_lab_3_1 ; }
tmp2 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_VIEWT0YPE ;
break ;

/* branch: __ats_lab_3 */
__ats_lab_3_0:
__ats_lab_3_1:
tmp2 = arg0 ;
break ;
} while (0) ;
return (tmp2) ;
} /* end of [impname_linearize_1] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 2395(line=94, offs=3) -- 2941(line=117, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_linearize (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp6) ;
ATSlocal (ats_int_type, tmp7) ;
ATSlocal (ats_ptr_type, tmp8) ;
ATSlocal (ats_ptr_type, tmp10) ;
ATSlocal (ats_int_type, tmp11) ;
ATSlocal (ats_ptr_type, tmp12) ;
ATSlocal (ats_int_type, tmp13) ;
ATSlocal (ats_ptr_type, tmp14) ;
ATSlocal (ats_ptr_type, tmp15) ;
ATSlocal (ats_ptr_type, tmp16) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_linearize:
/* ats_int_type tmp7 ; */
tmp7 = 0 ;
/* ats_ptr_type tmp8 ; */
tmp8 = arg0 ;
do {
/* branch: __ats_lab_4 */
__ats_lab_4_0:
if (((ats_sum_ptr_type)tmp8)->tag != 0) { goto __ats_lab_7_0 ; }
__ats_lab_4_1:
tmp10 = ats_caselptrlab_mac(anairiats_sum_1, tmp8, atslab_0) ;
do {
/* branch: __ats_lab_5 */
__ats_lab_5_0:
if (((ats_sum_ptr_type)tmp10)->tag != 1) { goto __ats_lab_6_0 ; }
__ats_lab_5_1:
tmp11 = ats_caselptrlab_mac(anairiats_sum_2, tmp10, atslab_0) ;
tmp12 = ats_caselptrlab_mac(anairiats_sum_2, tmp10, atslab_1) ;
tmp13 = _2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__impkind_linearize (tmp11) ;
tmp14 = impname_linearize_1 (tmp12) ;
tmp16 = ATS_MALLOC(sizeof(anairiats_sum_2)) ;
((ats_sum_ptr_type)tmp16)->tag = 1 ;
ats_selptrset_mac(anairiats_sum_2, tmp16, atslab_0, tmp13) ;
ats_selptrset_mac(anairiats_sum_2, tmp16, atslab_1, tmp14) ;
tmp15 = ATS_MALLOC(sizeof(anairiats_sum_1)) ;
((ats_sum_ptr_type)tmp15)->tag = 0 ;
ats_selptrset_mac(anairiats_sum_1, tmp15, atslab_0, tmp16) ;
tmp8 = tmp15 ;
break ;

/* branch: __ats_lab_6 */
__ats_lab_6_0:
__ats_lab_6_1:
tmp7 = 1 ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_7 */
__ats_lab_7_0:
__ats_lab_7_1:
tmp7 = 1 ;
break ;
} while (0) ;
tmp6 = tmp8 ;
return (tmp6) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_linearize] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 3121(line=133, offs=1) -- 4145(line=174, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_prf_lin_fc (ats_ptr_type arg0, ats_bool_type arg1, ats_bool_type arg2, ats_ptr_type arg3) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp17) ;
ATSlocal (ats_int_type, tmp18) ;
// ATSlocal_void (tmp19) ;
// ATSlocal_void (tmp20) ;
// ATSlocal_void (tmp21) ;
ATSlocal (ats_int_type, tmp22) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_prf_lin_fc:
if (arg1) {
if (arg2) {
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_view ;
} else {
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_prop ;
} /* end of [if] */
} else {
do {
/* branch: __ats_lab_8 */
__ats_lab_8_0:
__ats_lab_8_1:
if (!arg2) { goto __ats_lab_14_1 ; }
do {
/* branch: __ats_lab_9 */
__ats_lab_9_0:
if (arg3 == (ats_sum_ptr_type)0) { goto __ats_lab_13_0 ; }
__ats_lab_9_1:
tmp18 = ats_caselptrlab_mac(anairiats_sum_3, arg3, atslab_0) ;
do {
/* branch: __ats_lab_10 */
__ats_lab_10_0:
if (tmp18 != 0) { goto __ats_lab_11_0 ; }
__ats_lab_10_1:
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vt0ype ;
break ;

/* branch: __ats_lab_11 */
__ats_lab_11_0:
if (tmp18 != 1) { goto __ats_lab_12_0 ; }
__ats_lab_11_1:
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
break ;

/* branch: __ats_lab_12 */
__ats_lab_12_0:
__ats_lab_12_1:
/* tmp19 = */ prerr_error2_loc_0 (arg0) ;
/* tmp20 = */ atspre_prerr_string (ATSstrcst(": a closure reference cannot be linear.")) ;
/* tmp21 = */ atspre_prerr_newline () ;
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_err () ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_13 */
__ats_lab_13_0:
// if (arg3 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_13_1:
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_14 */
__ats_lab_14_0:
__ats_lab_14_1:
do {
/* branch: __ats_lab_15 */
__ats_lab_15_0:
if (arg3 == (ats_sum_ptr_type)0) { goto __ats_lab_19_0 ; }
__ats_lab_15_1:
tmp22 = ats_caselptrlab_mac(anairiats_sum_3, arg3, atslab_0) ;
do {
/* branch: __ats_lab_16 */
__ats_lab_16_0:
if (tmp22 != 0) { goto __ats_lab_17_0 ; }
__ats_lab_16_1:
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_t0ype ;
break ;

/* branch: __ats_lab_17 */
__ats_lab_17_0:
if (tmp22 != 1) { goto __ats_lab_18_0 ; }
__ats_lab_17_1:
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
break ;

/* branch: __ats_lab_18 */
__ats_lab_18_0:
__ats_lab_18_1:
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_19 */
__ats_lab_19_0:
// if (arg3 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_19_1:
tmp17 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type ;
break ;
} while (0) ;
break ;
} while (0) ;
} /* end of [if] */
return (tmp17) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_prf_lin_fc] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 4310(line=185, offs=3) -- 4821(line=219, offs=2)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_boxed (ats_int_type arg0, ats_int_type arg1, ats_int_type arg2, ats_int_type arg3) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp23) ;
ATSlocal (ats_bool_type, tmp24) ;
ATSlocal (ats_bool_type, tmp25) ;
ATSlocal (ats_bool_type, tmp26) ;
ATSlocal (ats_bool_type, tmp27) ;
ATSlocal (ats_bool_type, tmp28) ;
ATSlocal (ats_bool_type, tmp29) ;
ATSlocal (ats_bool_type, tmp30) ;
ATSlocal (ats_bool_type, tmp31) ;
ATSlocal (ats_bool_type, tmp32) ;
ATSlocal (ats_bool_type, tmp33) ;
ATSlocal (ats_bool_type, tmp34) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_boxed:
tmp24 = atspre_gte_int_int (arg0, 0) ;
if (tmp24) {
tmp25 = atspre_eq_int_int (arg1, 0) ;
if (tmp25) {
tmp26 = atspre_gt_int_int (arg3, 0) ;
if (tmp26) {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type ;
} else {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_t0ype ;
} /* end of [if] */
} else {
tmp27 = atspre_gt_int_int (arg3, 0) ;
if (tmp27) {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
} else {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vt0ype ;
} /* end of [if] */
} /* end of [if] */
} else {
tmp28 = atspre_eq_int_int (arg2, 0) ;
if (tmp28) {
tmp29 = atspre_eq_int_int (arg1, 0) ;
if (tmp29) {
tmp30 = atspre_gt_int_int (arg3, 0) ;
if (tmp30) {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type ;
} else {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_t0ype ;
} /* end of [if] */
} else {
tmp31 = atspre_gt_int_int (arg3, 0) ;
if (tmp31) {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
} else {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vt0ype ;
} /* end of [if] */
} /* end of [if] */
} else {
tmp32 = atspre_eq_int_int (arg1, 0) ;
if (tmp32) {
tmp33 = atspre_gt_int_int (arg3, 0) ;
if (tmp33) {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type ;
} else {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_prop ;
} /* end of [if] */
} else {
tmp34 = atspre_gt_int_int (arg3, 0) ;
if (tmp34) {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
} else {
tmp23 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_view ;
} /* end of [if] */
} /* end of [if] */
} /* end of [if] */
} /* end of [if] */
return (tmp23) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_boxed] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 5847(line=250, offs=5) -- 6353(line=282, offs=4)
*/
ATSstaticdec()
ats_ptr_type
aux_6 (ats_int_type arg0, ats_int_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp36) ;
ATSlocal (ats_bool_type, tmp37) ;
ATSlocal (ats_ptr_type, tmp38) ;
ATSlocal (ats_int_type, tmp39) ;
ATSlocal (ats_ptr_type, tmp40) ;
ATSlocal (ats_ptr_type, tmp41) ;
ATSlocal (ats_ptr_type, tmp42) ;
ATSlocal (ats_ptr_type, tmp43) ;
ATSlocal (ats_bool_type, tmp44) ;
ATSlocal (ats_bool_type, tmp45) ;

__ats_lab_aux_6:
tmp37 = atspre_gt_int_int (arg0, 0) ;
if (tmp37) {
if (arg2 == (ats_sum_ptr_type)0) { ats_caseof_failure_handle ("/tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 5966(line=259, offs=7) -- 5988(line=259, offs=29)") ; }
tmp38 = ats_caselptrlab_mac(anairiats_sum_4, arg2, atslab_1) ;
tmp39 = atspre_sub_int_int (arg0, 1) ;
arg0 = tmp39 ;
arg1 = arg1 ;
arg2 = tmp38 ;
goto __ats_lab_aux_6 ; // tail call
} else {
if (arg2 == (ats_sum_ptr_type)0) { ats_caseof_failure_handle ("/tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 6037(line=264, offs=3) -- 6058(line=264, offs=24)") ; }
tmp40 = ats_caselptrlab_mac(anairiats_sum_4, arg2, atslab_0) ;
tmp41 = ats_caselptrlab_mac(anairiats_sum_4, arg2, atslab_1) ;

tmp42 = ats_caselptrlab_mac(anairiats_sum_5, tmp40, atslab_2) ;
tmp43 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, tmp42), atslab_s2exp_srt) ;
tmp44 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_is_prf (tmp43) ;
if (tmp44) {
arg0 = 0 ;
arg1 = arg1 ;
arg2 = tmp41 ;
goto __ats_lab_aux_6 ; // tail call
} else {
tmp45 = atspre_eq_int_int (arg1, 0) ;
if (tmp45) {
tmp36 = tmp43 ;
} else {
tmp36 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_linearize (tmp43) ;
} /* end of [if] */
} /* end of [if] */
} /* end of [if] */
return (tmp36) ;
} /* end of [aux_6] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 4955(line=227, offs=3) -- 6790(line=308, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_prgm_boxed_labs2explst (ats_int_type arg0, ats_int_type arg1, ats_int_type arg2, ats_int_type arg3, ats_int_type arg4, ats_ptr_type arg5) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp35) ;
ATSlocal (ats_bool_type, tmp46) ;
ATSlocal (ats_bool_type, tmp47) ;
ATSlocal (ats_bool_type, tmp48) ;
ATSlocal (ats_bool_type, tmp49) ;
ATSlocal (ats_bool_type, tmp50) ;
ATSlocal (ats_bool_type, tmp51) ;
ATSlocal (ats_bool_type, tmp52) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_prgm_boxed_labs2explst:
tmp46 = atspre_eq_int_int (arg3, 0) ;
if (tmp46) {
tmp35 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_boxed (arg0, arg1, arg2, arg4) ;
} else {
tmp47 = atspre_eq_int_int (arg3, 1) ;
if (tmp47) {
tmp48 = atspre_gt_int_int (arg4, 0) ;
if (tmp48) {
tmp49 = atspre_eq_int_int (arg1, 0) ;
if (tmp49) {
tmp35 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type ;
} else {
tmp35 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
} /* end of [if] */
} else {
tmp35 = aux_6 (arg0, arg1, arg5) ;
} /* end of [if] */
} else {
tmp50 = atspre_eq_int_int (arg1, 0) ;
if (tmp50) {
tmp51 = atspre_gt_int_int (arg4, 0) ;
if (tmp51) {
tmp35 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_type ;
} else {
tmp35 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_t0ype ;
} /* end of [if] */
} else {
tmp52 = atspre_gt_int_int (arg4, 0) ;
if (tmp52) {
tmp35 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
} else {
tmp35 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vt0ype ;
} /* end of [if] */
} /* end of [if] */
} /* end of [if] */
} /* end of [if] */
return (tmp35) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_prgm_boxed_labs2explst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 6923(line=318, offs=5) -- 7299(line=341, offs=4)
*/
ATSstaticdec()
ats_ptr_type
aux_8 (ats_int_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp54) ;
ATSlocal (ats_ptr_type, tmp55) ;
ATSlocal (ats_ptr_type, tmp56) ;
ATSlocal (ats_ptr_type, tmp57) ;
ATSlocal (ats_ptr_type, tmp58) ;
ATSlocal (ats_ptr_type, tmp59) ;
ATSlocal (ats_ptr_type, tmp60) ;
ATSlocal (ats_int_type, tmp61) ;

__ats_lab_aux_8:
do {
/* branch: __ats_lab_20 */
__ats_lab_20_0:
if (arg1 != (ats_sum_ptr_type)0) { goto __ats_lab_21_0 ; }
__ats_lab_20_1:
tmp54 = (ats_sum_ptr_type)0 ;
break ;

/* branch: __ats_lab_21 */
__ats_lab_21_0:
// if (arg1 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_21_1:
tmp55 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp56 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp57 = _2tmp_2ATS_2dPostiats_2src_2pats_label_2esats__label_make_int (arg0) ;
tmp59 = (ats_sum_ptr_type)0 ;
tmp58 = ATS_MALLOC(sizeof(anairiats_sum_5)) ;
ats_selptrset_mac(anairiats_sum_5, tmp58, atslab_0, tmp57) ;
ats_selptrset_mac(anairiats_sum_5, tmp58, atslab_1, tmp59) ;
ats_selptrset_mac(anairiats_sum_5, tmp58, atslab_2, tmp55) ;
tmp61 = atspre_add_int_int (arg0, 1) ;
tmp60 = aux_8 (tmp61, tmp56) ;
tmp54 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp54, atslab_0, tmp58) ;
ats_selptrset_mac(anairiats_sum_4, tmp54, atslab_1, tmp60) ;
break ;
} while (0) ;
return (tmp54) ;
} /* end of [aux_8] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 6889(line=314, offs=1) -- 7384(line=347, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tytup (ats_int_type arg0, ats_int_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp53) ;
ATSlocal (ats_ptr_type, tmp62) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tytup:
tmp62 = aux_8 (0, arg2) ;
tmp53 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec (arg0, arg1, tmp62) ;
return (tmp53) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tytup] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 7488(line=357, offs=5) -- 8073(line=390, offs=4)
*/
ATSstaticdec()
ats_void_type
aux01_10 (ats_int_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp64) ;
ATSlocal (ats_ptr_type, tmp65) ;
ATSlocal (ats_ptr_type, tmp66) ;
ATSlocal (ats_ptr_type, tmp67) ;
ATSlocal (ats_ptr_type, tmp68) ;
ATSlocal (ats_bool_type, tmp70) ;
ATSlocal (ats_int_type, tmp71) ;
ATSlocal (ats_bool_type, tmp73) ;
ATSlocal (ats_int_type, tmp74) ;
ATSlocal (ats_bool_type, tmp75) ;
ATSlocal (ats_int_type, tmp76) ;
ATSlocal (ats_int_type, tmp77) ;

__ats_lab_aux01_10:
do {
/* branch: __ats_lab_22 */
__ats_lab_22_0:
if (arg2 != (ats_sum_ptr_type)0) { goto __ats_lab_23_0 ; }
__ats_lab_22_1:
break ;

/* branch: __ats_lab_23 */
__ats_lab_23_0:
// if (arg2 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_23_1:
tmp65 = ats_caselptrlab_mac(anairiats_sum_4, arg2, atslab_0) ;
tmp66 = ats_caselptrlab_mac(anairiats_sum_4, arg2, atslab_1) ;

tmp67 = ats_caselptrlab_mac(anairiats_sum_5, tmp65, atslab_2) ;
tmp68 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, tmp67), atslab_s2exp_srt) ;
tmp70 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_is_lin (tmp68) ;
if (tmp70) {
tmp71 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg3), 1) ;
ats_ptrget_mac(ats_int_type, arg3) = tmp71 ;
} else {
/* empty */
} /* end of [if] */
tmp73 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_is_prf (tmp68) ;
if (tmp73) {
tmp74 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg4), 1) ;
ats_ptrget_mac(ats_int_type, arg4) = tmp74 ;
} else {
tmp75 = atspre_gte_int_int (arg0, arg1) ;
if (tmp75) {
tmp76 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg5), 1) ;
ats_ptrget_mac(ats_int_type, arg5) = tmp76 ;
} else {
/* empty */
} /* end of [if] */
} /* end of [if] */
tmp77 = atspre_add_int_int (arg0, 1) ;
arg0 = tmp77 ;
arg1 = arg1 ;
arg2 = tmp66 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab_aux01_10 ; // tail call
break ;
} while (0) ;
return /* (tmp64) */ ;
} /* end of [aux01_10] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 7453(line=353, offs=1) -- 8607(line=414, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec (ats_int_type arg0, ats_int_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp63) ;
ATSlocal (ats_int_type, tmp78) ;
ATSlocal (ats_int_type, tmp79) ;
ATSlocal (ats_int_type, tmp80) ;
// ATSlocal_void (tmp81) ;
ATSlocal (ats_ptr_type, tmp82) ;
ATSlocal (ats_ptr_type, tmp83) ;
ATSlocal (ats_bool_type, tmp84) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec:
/* ats_int_type tmp78 ; */
tmp78 = 0 ;
/* ats_int_type tmp79 ; */
tmp79 = 0 ;
/* ats_int_type tmp80 ; */
tmp80 = 0 ;
/* tmp81 = */ aux01_10 (0, arg1, arg2, (&tmp78), (&tmp79), (&tmp80)) ;
do {
/* branch: __ats_lab_24 */
__ats_lab_24_0:
if (arg0 != 0) { goto __ats_lab_25_0 ; }
__ats_lab_24_1:
tmp82 = (ats_sum_ptr_type)(&_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__TYRECKINDflt0_2) ;
break ;

/* branch: __ats_lab_25 */
__ats_lab_25_0:
if (arg0 != 1) { goto __ats_lab_26_0 ; }
__ats_lab_25_1:
tmp82 = (ats_sum_ptr_type)(&_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__TYRECKINDbox_0) ;
break ;

/* branch: __ats_lab_26 */
__ats_lab_26_0:
if (arg0 != 2) { goto __ats_lab_27_0 ; }
__ats_lab_26_1:
tmp82 = (ats_sum_ptr_type)(&_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__TYRECKINDbox_0) ;
break ;

/* branch: __ats_lab_27 */
__ats_lab_27_0:
__ats_lab_27_1:
tmp82 = (ats_sum_ptr_type)(&_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__TYRECKINDbox_lin_1) ;
break ;
} while (0) ;
tmp84 = atspre_gte_int_int (arg0, 3) ;
if (tmp84) {
tmp83 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_vtype ;
} else {
tmp83 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2rt_npf_lin_prf_prgm_boxed_labs2explst (arg1, tmp78, tmp79, tmp80, arg0, arg2) ;
} /* end of [if] */
tmp63 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec_srt (tmp83, tmp82, arg1, arg2) ;
return (tmp63) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 8721(line=422, offs=7) -- 9165(line=435, offs=8)
*/
ATSstaticdec()
ats_bool_type
test1_12 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp86) ;
ATSlocal (anairiats_rec_7, tmp87) ;
ATSlocal (ats_ptr_type, tmp88) ;
ATSlocal (ats_ptr_type, tmp89) ;
ATSlocal (ats_ptr_type, tmp90) ;
ATSlocal (ats_ptr_type, tmp91) ;
ATSlocal (ats_bool_type, tmp92) ;
ATSlocal (ats_ptr_type, tmp93) ;

__ats_lab_test1_12:
do {
/* branch: __ats_lab_28 */
__ats_lab_28_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_31_0 ; }
__ats_lab_28_1:
tmp87 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp88 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
do {
/* branch: __ats_lab_29 */
__ats_lab_29_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_30_0 ; }
__ats_lab_29_1:
tmp89 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp90 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp91 = ats_select_mac(tmp87, atslab_1) ;
tmp93 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, tmp91), atslab_s2exp_srt) ;
tmp92 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_ltmat0 (tmp93, tmp89) ;
if (tmp92) {
arg0 = tmp88 ;
arg1 = tmp90 ;
goto __ats_lab_test1_12 ; // tail call
} else {
tmp86 = ats_false_bool ;
} /* end of [if] */
break ;

/* branch: __ats_lab_30 */
__ats_lab_30_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_30_1:
tmp86 = ats_false_bool ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_31 */
__ats_lab_31_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_31_1:
do {
/* branch: __ats_lab_32 */
__ats_lab_32_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_33_0 ; }
__ats_lab_32_1:
tmp86 = ats_false_bool ;
break ;

/* branch: __ats_lab_33 */
__ats_lab_33_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_33_1:
tmp86 = ats_true_bool ;
break ;
} while (0) ;
break ;
} while (0) ;
return (tmp86) ;
} /* end of [test1_12] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 9219(line=438, offs=7) -- 9581(line=450, offs=26)
*/
ATSstaticdec()
ats_bool_type
test2_13 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp94) ;
ATSlocal (ats_ptr_type, tmp95) ;
ATSlocal (ats_ptr_type, tmp96) ;
ATSlocal (ats_bool_type, tmp97) ;
ATSlocal (ats_ptr_type, tmp98) ;
ATSlocal (ats_ptr_type, tmp99) ;
ATSlocal (ats_bool_type, tmp100) ;

__ats_lab_test2_13:
do {
/* branch: __ats_lab_34 */
__ats_lab_34_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_35_0 ; }
__ats_lab_34_1:
tmp95 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp96 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp97 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2rt_is_fun (arg0) ;
if (tmp97) {
if (((ats_sum_ptr_type)arg0)->tag != 1) { ats_caseof_failure_handle ("/tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 9387(line=445, offs=15) -- 9420(line=445, offs=48)") ; }
tmp98 = ats_caselptrlab_mac(anairiats_sum_9, arg0, atslab_0) ;
tmp99 = ats_caselptrlab_mac(anairiats_sum_9, arg0, atslab_1) ;
tmp100 = test1_12 (tmp95, tmp98) ;
if (tmp100) {
arg0 = tmp99 ;
arg1 = tmp96 ;
goto __ats_lab_test2_13 ; // tail call
} else {
tmp94 = ats_false_bool ;
} /* end of [if] */
} else {
tmp94 = ats_false_bool ;
} /* end of [if] */
break ;

/* branch: __ats_lab_35 */
__ats_lab_35_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_35_1:
tmp94 = ats_true_bool ;
break ;
} while (0) ;
return (tmp94) ;
} /* end of [test2_13] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 9614(line=453, offs=7) -- 10265(line=474, offs=33)
*/
ATSstaticdec()
ats_ptr_type
filter_14 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp101) ;
ATSlocal (ats_ptr_type, tmp102) ;
ATSlocal (ats_ptr_type, tmp103) ;
ATSlocal (ats_ptr_type, tmp104) ;
ATSlocal (ats_bool_type, tmp105) ;
ATSlocal (ats_ptr_type, tmp106) ;

__ats_lab_filter_14:
do {
/* branch: __ats_lab_36 */
__ats_lab_36_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_37_0 ; }
__ats_lab_36_1:
tmp102 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_0) ;
tmp103 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;
tmp104 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_get_srt (tmp102) ;
tmp105 = test2_13 (tmp104, arg1) ;
if (tmp105) {
tmp106 = filter_14 (tmp103, arg1) ;
tmp101 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp101, atslab_0, tmp102) ;
ats_selptrset_mac(anairiats_sum_4, tmp101, atslab_1, tmp106) ;
} else {
arg0 = tmp103 ;
arg1 = arg1 ;
goto __ats_lab_filter_14 ; // tail call
} /* end of [if] */
break ;

/* branch: __ats_lab_37 */
__ats_lab_37_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_37_1:
tmp101 = (ats_sum_ptr_type)0 ;
break ;
} while (0) ;
return (tmp101) ;
} /* end of [filter_14] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list.dats: 50922(line=1801, offs=14) -- 50991(line=1803, offs=4)
*/
ATSstaticdec()
ats_bool_type
list_is_sing_01298_ats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp108) ;
ATSlocal (ats_ptr_type, tmp109) ;

__ats_lab_list_is_sing_01298_ats_ptr_type:
do {
/* branch: __ats_lab_38 */
__ats_lab_38_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_39_0 ; }
tmp109 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;
if (tmp109 != (ats_sum_ptr_type)0) { goto __ats_lab_39_0 ; }
__ats_lab_38_1:
tmp108 = ats_true_bool ;
break ;

/* branch: __ats_lab_39 */
__ats_lab_39_0:
__ats_lab_39_1:
tmp108 = ats_false_bool ;
break ;
} while (0) ;
return (tmp108) ;
} /* end of [list_is_sing_01298_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 8694(line=420, offs=3) -- 10379(line=481, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2cst_select_locs2explstlst (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp85) ;
ATSlocal (ats_bool_type, tmp107) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2cst_select_locs2explstlst:
tmp107 = list_is_sing_01298_ats_ptr_type (arg0) ;
if (tmp107) {
tmp85 = arg0 ;
} else {
tmp85 = filter_14 (arg0, arg1) ;
} /* end of [if] */
return (tmp85) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2cst_select_locs2explstlst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 10467(line=486, offs=16) -- 10555(line=491, offs=46)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_nonvar (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp110) ;
ATSlocal (ats_ptr_type, tmp111) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_nonvar:
tmp111 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_40 */
__ats_lab_40_0:
if (((ats_sum_ptr_type)tmp111)->tag != 7) { goto __ats_lab_41_0 ; }
__ats_lab_40_1:
tmp110 = ats_false_bool ;
break ;

/* branch: __ats_lab_41 */
__ats_lab_41_0:
__ats_lab_41_1:
tmp110 = ats_true_bool ;
break ;
} while (0) ;
return (tmp110) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_nonvar] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 10637(line=497, offs=17) -- 10786(line=504, offs=31)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_wthtype (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp112) ;
ATSlocal (ats_ptr_type, tmp113) ;
ATSlocal (ats_ptr_type, tmp114) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_wthtype:
tmp113 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_42 */
__ats_lab_42_0:
if (((ats_sum_ptr_type)tmp113)->tag != 31) { goto __ats_lab_43_0 ; }
__ats_lab_42_1:
tmp112 = ats_true_bool ;
break ;

/* branch: __ats_lab_43 */
__ats_lab_43_0:
if (((ats_sum_ptr_type)tmp113)->tag != 27) { goto __ats_lab_44_0 ; }
__ats_lab_43_1:
tmp114 = ats_caselptrlab_mac(anairiats_sum_10, tmp113, atslab_2) ;
arg0 = tmp114 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_wthtype ; // tail call
break ;

/* branch: __ats_lab_44 */
__ats_lab_44_0:
__ats_lab_44_1:
tmp112 = ats_false_bool ;
break ;
} while (0) ;
return (tmp112) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_wthtype] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 10936(line=515, offs=17) -- 11094(line=522, offs=31)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_without (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp115) ;
ATSlocal (ats_ptr_type, tmp116) ;
ATSlocal (ats_ptr_type, tmp117) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_without:
tmp116 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_45 */
__ats_lab_45_0:
if (((ats_sum_ptr_type)tmp116)->tag != 23) { goto __ats_lab_46_0 ; }
__ats_lab_45_1:
tmp115 = ats_true_bool ;
break ;

/* branch: __ats_lab_46 */
__ats_lab_46_0:
if (((ats_sum_ptr_type)tmp116)->tag != 25) { goto __ats_lab_47_0 ; }
__ats_lab_46_1:
tmp117 = ats_caselptrlab_mac(anairiats_sum_11, tmp116, atslab_2) ;
tmp115 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_without (tmp117) ;
break ;

/* branch: __ats_lab_47 */
__ats_lab_47_0:
__ats_lab_47_1:
tmp115 = ats_false_bool ;
break ;
} while (0) ;
return (tmp115) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_without] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 11167(line=527, offs=3) -- 11381(line=538, offs=6)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_without (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp118) ;
ATSlocal (ats_ptr_type, tmp119) ;
ATSlocal (ats_ptr_type, tmp120) ;
ATSlocal (ats_ptr_type, tmp121) ;
ATSlocal (ats_bool_type, tmp122) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_without:
do {
/* branch: __ats_lab_48 */
__ats_lab_48_0:
if (arg0 != (ats_sum_ptr_type)0) { goto __ats_lab_49_0 ; }
__ats_lab_48_1:
tmp118 = ats_true_bool ;
break ;

/* branch: __ats_lab_49 */
__ats_lab_49_0:
// if (arg0 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_49_1:
tmp119 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_0) ;
tmp120 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;

tmp121 = ats_caselptrlab_mac(anairiats_sum_5, tmp119, atslab_2) ;
tmp122 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_without (tmp121) ;
if (tmp122) {
arg0 = tmp120 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_without ; // tail call
} else {
tmp118 = ats_false_bool ;
} /* end of [if] */
break ;
} while (0) ;
return (tmp118) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_without] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 11556(line=550, offs=3) -- 11963(line=571, offs=4)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_lin2 (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp123) ;
ATSlocal (ats_ptr_type, tmp124) ;
ATSlocal (ats_bool_type, tmp125) ;
ATSlocal (ats_ptr_type, tmp126) ;
ATSlocal (ats_ptr_type, tmp127) ;
ATSlocal (ats_bool_type, tmp128) ;
ATSlocal (ats_ptr_type, tmp129) ;
ATSlocal (ats_ptr_type, tmp130) ;
ATSlocal (ats_bool_type, tmp131) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_lin2:
tmp124 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_hnfize (arg0) ;
tmp125 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_is_lin (tmp124) ;
if (tmp125) {
tmp126 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, tmp124), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_50 */
__ats_lab_50_0:
if (((ats_sum_ptr_type)tmp126)->tag != 12) { goto __ats_lab_51_0 ; }
__ats_lab_50_1:
tmp127 = ats_caselptrlab_mac(anairiats_sum_9, tmp126, atslab_0) ;
tmp128 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_without (tmp127) ;
if (tmp128) {
tmp123 = ats_false_bool ;
} else {
tmp123 = ats_true_bool ;
} /* end of [if] */
break ;

/* branch: __ats_lab_51 */
__ats_lab_51_0:
if (((ats_sum_ptr_type)tmp126)->tag != 25) { goto __ats_lab_52_0 ; }
__ats_lab_51_1:
tmp129 = ats_caselptrlab_mac(anairiats_sum_11, tmp126, atslab_0) ;
tmp130 = ats_caselptrlab_mac(anairiats_sum_11, tmp126, atslab_2) ;
tmp131 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__tyreckind_is_boxed (tmp129) ;
if (tmp131) {
tmp123 = ats_true_bool ;
} else {
tmp123 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_lin2 (tmp130) ;
} /* end of [if] */
break ;

/* branch: __ats_lab_52 */
__ats_lab_52_0:
__ats_lab_52_1:
tmp123 = ats_true_bool ;
break ;
} while (0) ;
} else {
tmp123 = ats_false_bool ;
} /* end of [if] */
return (tmp123) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_lin2] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 12025(line=575, offs=3) -- 12211(line=584, offs=6)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_lin2 (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp132) ;
ATSlocal (ats_ptr_type, tmp133) ;
ATSlocal (ats_ptr_type, tmp134) ;
ATSlocal (ats_ptr_type, tmp135) ;
ATSlocal (ats_bool_type, tmp136) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_lin2:
do {
/* branch: __ats_lab_53 */
__ats_lab_53_0:
if (arg0 != (ats_sum_ptr_type)0) { goto __ats_lab_54_0 ; }
__ats_lab_53_1:
tmp132 = ats_false_bool ;
break ;

/* branch: __ats_lab_54 */
__ats_lab_54_0:
// if (arg0 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_54_1:
tmp133 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_0) ;
tmp134 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;

tmp135 = ats_caselptrlab_mac(anairiats_sum_5, tmp133, atslab_2) ;
tmp136 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_is_lin2 (tmp135) ;
if (tmp136) {
tmp132 = ats_true_bool ;
} else {
arg0 = tmp134 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_lin2 ; // tail call
} /* end of [if] */
break ;
} while (0) ;
return (tmp132) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_is_lin2] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 12341(line=594, offs=1) -- 12446(line=600, offs=2)
*/
ATSstaticdec()
ats_ptr_type
loop_23 (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp138) ;
ATSlocal (ats_ptr_type, tmp139) ;
ATSlocal (ats_ptr_type, tmp140) ;

__ats_lab_loop_23:
tmp139 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_55 */
__ats_lab_55_0:
if (((ats_sum_ptr_type)tmp139)->tag != 17) { goto __ats_lab_56_0 ; }
__ats_lab_55_1:
tmp140 = ats_caselptrlab_mac(anairiats_sum_9, tmp139, atslab_0) ;
arg0 = tmp140 ;
goto __ats_lab_loop_23 ; // tail call
break ;

/* branch: __ats_lab_56 */
__ats_lab_56_0:
__ats_lab_56_1:
tmp138 = arg0 ;
break ;
} while (0) ;
return (tmp138) ;
} /* end of [loop_23] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 12322(line=591, offs=3) -- 12532(line=606, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf_get_head (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp137) ;
ATSlocal (ats_ptr_type, tmp141) ;
ATSlocal (ats_ptr_type, tmp142) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf_get_head:
tmp141 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf2exp (arg0) ;
tmp142 = loop_23 (tmp141) ;
tmp137 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp2hnf_cast (tmp142) ;
return (tmp137) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf_get_head] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 12629(line=614, offs=5) -- 12897(line=624, offs=15)
*/
ATSstaticdec()
ats_bool_type
loop_25 (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp144) ;
ATSlocal (ats_ptr_type, tmp145) ;
ATSlocal (ats_ptr_type, tmp146) ;
ATSlocal (ats_bool_type, tmp147) ;
ATSlocal (ats_bool_type, tmp148) ;
ATSlocal (ats_ptr_type, tmp149) ;

__ats_lab_loop_25:
tmp145 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_57 */
__ats_lab_57_0:
if (((ats_sum_ptr_type)tmp145)->tag != 4) { goto __ats_lab_58_0 ; }
__ats_lab_57_1:
tmp146 = ats_caselptrlab_mac(anairiats_sum_1, tmp145, atslab_0) ;
tmp147 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_is_abstr (tmp146) ;
if (tmp147) {
tmp144 = ats_true_bool ;
} else {
tmp148 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_is_tkind (tmp146) ;
if (tmp148) {
tmp144 = ats_true_bool ;
} else {
tmp144 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_get_iscon (tmp146) ;
} /* end of [if] */
} /* end of [if] */
break ;

/* branch: __ats_lab_58 */
__ats_lab_58_0:
if (((ats_sum_ptr_type)tmp145)->tag != 17) { goto __ats_lab_59_0 ; }
__ats_lab_58_1:
tmp149 = ats_caselptrlab_mac(anairiats_sum_9, tmp145, atslab_0) ;
arg0 = tmp149 ;
goto __ats_lab_loop_25 ; // tail call
break ;

/* branch: __ats_lab_59 */
__ats_lab_59_0:
__ats_lab_59_1:
tmp144 = ats_false_bool ;
break ;
} while (0) ;
return (tmp144) ;
} /* end of [loop_25] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 12610(line=612, offs=3) -- 12960(line=629, offs=4)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf_is_abscon (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp143) ;
ATSlocal (ats_ptr_type, tmp150) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf_is_abscon:
tmp150 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf2exp (arg0) ;
tmp143 = loop_25 (tmp150) ;
return (tmp143) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf_is_abscon] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 13037(line=635, offs=3) -- 13241(line=641, offs=8)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_add_set (ats_ptr_type arg0, ats_uint_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp151) ;
ATSlocal (ats_bool_type, tmp152) ;
ATSlocal (ats_bool_type, tmp153) ;
ATSlocal (ats_ptr_type, tmp154) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_add_set:
do {
/* branch: __ats_lab_60 */
__ats_lab_60_0:
__ats_lab_60_1:
tmp152 = _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__effset_isnil (arg1) ;
if (!tmp152) { goto __ats_lab_61_1 ; }
tmp151 = arg0 ;
break ;

/* branch: __ats_lab_61 */
__ats_lab_61_0:
__ats_lab_61_1:
tmp153 = _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__effset_isall (arg1) ;
if (!tmp153) { goto __ats_lab_62_1 ; }
tmp151 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2eff_all ;
break ;

/* branch: __ats_lab_62 */
__ats_lab_62_0:
__ats_lab_62_1:
tmp154 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2eff_effset (arg1) ;
tmp151 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2eff_add (arg0, tmp154) ;
break ;
} while (0) ;
return (tmp151) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_add_set] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 13362(line=650, offs=5) -- 13513(line=658, offs=4)
*/
ATSstaticdec()
ats_bool_type
aux_28 (ats_ptr_type arg0, ats_uint_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp156) ;
ATSlocal (ats_ptr_type, tmp157) ;
ATSlocal (ats_ptr_type, tmp158) ;
ATSlocal (ats_ptr_type, tmp159) ;

__ats_lab_aux_28:
tmp157 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp2hnf (arg0) ;
tmp158 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2hnf2exp (tmp157) ;
tmp159 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, tmp158), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_63 */
__ats_lab_63_0:
__ats_lab_63_1:
tmp156 = ats_false_bool ;
break ;
} while (0) ;
return (tmp156) ;
} /* end of [aux_28] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 13336(line=648, offs=3) -- 13819(line=672, offs=4)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_set (ats_ptr_type arg0, ats_uint_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp155) ;
ATSlocal (ats_uint_type, tmp160) ;
ATSlocal (ats_ptr_type, tmp161) ;
ATSlocal (ats_ptr_type, tmp162) ;
ATSlocal (ats_ptr_type, tmp163) ;
ATSlocal (ats_bool_type, tmp164) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_set:
do {
/* branch: __ats_lab_64 */
__ats_lab_64_0:
if (((ats_sum_ptr_type)arg0)->tag != 0) { goto __ats_lab_65_0 ; }
__ats_lab_64_1:
tmp160 = ats_caselptrlab_mac(anairiats_sum_12, arg0, atslab_0) ;
tmp155 = _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__effset_supset (tmp160, arg1) ;
break ;

/* branch: __ats_lab_65 */
__ats_lab_65_0:
if (((ats_sum_ptr_type)arg0)->tag != 1) { goto __ats_lab_66_0 ; }
__ats_lab_65_1:
tmp161 = ats_caselptrlab_mac(anairiats_sum_1, arg0, atslab_0) ;
tmp155 = aux_28 (tmp161, arg1) ;
break ;

/* branch: __ats_lab_66 */
__ats_lab_66_0:
// if (((ats_sum_ptr_type)arg0)->tag != 2) { ats_deadcode_failure_handle () ; }
__ats_lab_66_1:
tmp162 = ats_caselptrlab_mac(anairiats_sum_9, arg0, atslab_0) ;
tmp163 = ats_caselptrlab_mac(anairiats_sum_9, arg0, atslab_1) ;
tmp164 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_set (tmp162, arg1) ;
if (tmp164) {
tmp155 = ats_true_bool ;
} else {
arg0 = tmp163 ;
arg1 = arg1 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_set ; // tail call
} /* end of [if] */
break ;
} while (0) ;
return (tmp155) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_set] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 13902(line=678, offs=3) -- 14232(line=691, offs=4)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_exp (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp165) ;
ATSlocal (ats_uint_type, tmp166) ;
ATSlocal (ats_bool_type, tmp167) ;
ATSlocal (ats_ptr_type, tmp168) ;
ATSlocal (ats_ptr_type, tmp169) ;
ATSlocal (ats_ptr_type, tmp170) ;
ATSlocal (ats_bool_type, tmp171) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_exp:
do {
/* branch: __ats_lab_67 */
__ats_lab_67_0:
if (((ats_sum_ptr_type)arg0)->tag != 0) { goto __ats_lab_68_0 ; }
__ats_lab_67_1:
tmp166 = ats_caselptrlab_mac(anairiats_sum_12, arg0, atslab_0) ;
tmp167 = _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__effset_isall (tmp166) ;
if (tmp167) {
tmp165 = ats_true_bool ;
} else {
tmp165 = ats_false_bool ;
} /* end of [if] */
break ;

/* branch: __ats_lab_68 */
__ats_lab_68_0:
if (((ats_sum_ptr_type)arg0)->tag != 1) { goto __ats_lab_69_0 ; }
__ats_lab_68_1:
tmp168 = ats_caselptrlab_mac(anairiats_sum_1, arg0, atslab_0) ;
tmp165 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_syneq (arg1, tmp168) ;
break ;

/* branch: __ats_lab_69 */
__ats_lab_69_0:
// if (((ats_sum_ptr_type)arg0)->tag != 2) { ats_deadcode_failure_handle () ; }
__ats_lab_69_1:
tmp169 = ats_caselptrlab_mac(anairiats_sum_9, arg0, atslab_0) ;
tmp170 = ats_caselptrlab_mac(anairiats_sum_9, arg0, atslab_1) ;
tmp171 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_exp (tmp169, arg1) ;
if (tmp171) {
tmp165 = ats_true_bool ;
} else {
arg0 = tmp170 ;
arg1 = arg1 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_exp ; // tail call
} /* end of [if] */
break ;
} while (0) ;
return (tmp165) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2eff_contain_exp] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 14413(line=703, offs=17) -- 14432(line=703, offs=36)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_make_nil () {
/* local vardec */
ATSlocal (ats_ptr_type, tmp172) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_make_nil:
tmp172 = (ats_sum_ptr_type)0 ;
return (tmp172) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_make_nil] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list.dats: 12687(line=466, offs=7) -- 13058(line=477, offs=43)
*/
ATSstaticdec()
ats_void_type
loop_34 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp176) ;
ATSlocal (anairiats_rec_7, tmp177) ;
ATSlocal (ats_ptr_type, tmp178) ;
ATSlocal (ats_ptr_type, tmp179) ;
ATSlocal (ats_ptr_type, tmp180) ;
ATSlocal (ats_ptr_type, tmp181) ;

__ats_lab_loop_34:
do {
/* branch: __ats_lab_70 */
__ats_lab_70_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_71_0 ; }
__ats_lab_70_1:
tmp177 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp178 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
tmp179 = ATS_MALLOC(sizeof(anairiats_sum_8)) ;
ats_selptrset_mac(anairiats_sum_8, tmp179, atslab_0, tmp177) ;
ats_ptrget_mac(ats_ptr_type, arg1) = tmp179 ;
// if (ats_ptrget_mac(ats_ptr_type, arg1) == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp180 = &ats_caselptrlab_mac(anairiats_sum_8, ats_ptrget_mac(ats_ptr_type, arg1), atslab_1) ;
arg0 = tmp178 ;
arg1 = tmp180 ;
goto __ats_lab_loop_34 ; // tail call
break ;

/* branch: __ats_lab_71 */
__ats_lab_71_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_71_1:
tmp181 = (ats_sum_ptr_type)0 ;
ats_ptrget_mac(ats_ptr_type, arg1) = tmp181 ;
break ;
} while (0) ;
return /* (tmp176) */ ;
} /* end of [loop_34] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list.dats: 12658(line=464, offs=3) -- 13177(line=483, offs=2)
*/
ATSstaticdec()
ats_ptr_type
list_copy_01322_anairiats_rec_7 (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp175) ;
ATSlocal (ats_ptr_type, tmp182) ;
// ATSlocal_void (tmp183) ;

__ats_lab_list_copy_01322_anairiats_rec_7:
/* ats_ptr_type tmp182 ; */
/* tmp183 = */ loop_34 (arg0, (&tmp182)) ;
tmp175 = tmp182 ;
return (tmp175) ;
} /* end of [list_copy_01322_anairiats_rec_7] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 4725(line=167, offs=18) -- 4776(line=168, offs=44)
*/
ATSstaticdec()
ats_ptr_type
list_vt_copy_01498_anairiats_rec_7 (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp174) ;

__ats_lab_list_vt_copy_01498_anairiats_rec_7:
tmp174 = list_copy_01322_anairiats_rec_7 (ats_castfn_mac(ats_ptr_type, arg0)) ;
return (tmp174) ;
} /* end of [list_vt_copy_01498_anairiats_rec_7] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 14455(line=705, offs=13) -- 14480(line=705, offs=38)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_copy (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp173) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_copy:
tmp173 = list_vt_copy_01498_anairiats_rec_7 (arg0) ;
return (tmp173) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_copy] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 4893(line=177, offs=7) -- 5015(line=178, offs=73)
*/
ATSstaticdec()
ats_void_type
loop_37 (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp186) ;
ATSlocal (ats_ptr_type, tmp187) ;

__ats_lab_loop_37:
do {
/* branch: __ats_lab_72 */
__ats_lab_72_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_73_0 ; }
__ats_lab_72_1:
tmp187 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
ATS_FREE(arg0) ;
arg0 = tmp187 ;
goto __ats_lab_loop_37 ; // tail call
break ;

/* branch: __ats_lab_73 */
__ats_lab_73_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_73_1:
break ;
} while (0) ;
return /* (tmp186) */ ;
} /* end of [loop_37] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 4875(line=176, offs=14) -- 5054(line=182, offs=4)
*/
ATSstaticdec()
ats_void_type
list_vt_free_01499_anairiats_rec_7 (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp185) ;

__ats_lab_list_vt_free_01499_anairiats_rec_7:
/* tmp185 = */ loop_37 (arg0) ;
return /* (tmp185) */ ;
} /* end of [list_vt_free_01499_anairiats_rec_7] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 14504(line=707, offs=13) -- 14529(line=707, offs=38)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_free (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp184) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_free:
/* tmp184 = */ list_vt_free_01499_anairiats_rec_7 (arg0) ;
return /* (tmp184) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_free] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 14603(line=715, offs=5) -- 15062(line=738, offs=4)
*/
ATSstaticdec()
ats_void_type
loop_39 (ats_ptr_type arg0, ats_ptr_type arg1, ats_int_type arg2) {
/* local vardec */
// ATSlocal_void (tmp189) ;
ATSlocal (anairiats_rec_7, tmp190) ;
ATSlocal (ats_ptr_type, tmp191) ;
// ATSlocal_void (tmp192) ;
ATSlocal (ats_bool_type, tmp193) ;
// ATSlocal_void (tmp194) ;
ATSlocal (ats_ptr_type, tmp195) ;
// ATSlocal_void (tmp196) ;
// ATSlocal_void (tmp197) ;
ATSlocal (ats_ptr_type, tmp198) ;
ATSlocal (ats_ptr_type, tmp199) ;
ATSlocal (ats_int_type, tmp200) ;

__ats_lab_loop_39:
do {
/* branch: __ats_lab_74 */
__ats_lab_74_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_75_0 ; }
__ats_lab_74_1:
tmp190 = ats_caselptrlab_mac(anairiats_sum_8, arg1, atslab_0) ;
tmp191 = &ats_caselptrlab_mac(anairiats_sum_8, arg1, atslab_1) ;
tmp193 = atspre_gt_int_int (arg2, 0) ;
if (tmp193) {
/* tmp192 = */ atspre_fprint_string (arg0, ATSstrcst(", ")) ;
} else {
/* empty */
} /* end of [if] */
tmp195 = ats_select_mac(tmp190, atslab_0) ;
/* tmp194 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__fprint_s2var (arg0, tmp195) ;
/* tmp196 = */ atspre_fprint_string (arg0, ATSstrcst("->")) ;
tmp198 = ats_select_mac(tmp190, atslab_1) ;
/* tmp197 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__fprint_s2exp (arg0, tmp198) ;
tmp199 = ats_ptrget_mac(ats_ptr_type, tmp191) ;
tmp200 = atspre_add_int_int (arg2, 1) ;
arg0 = arg0 ;
arg1 = tmp199 ;
arg2 = tmp200 ;
goto __ats_lab_loop_39 ; // tail call
break ;

/* branch: __ats_lab_75 */
__ats_lab_75_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_75_1:
break ;
} while (0) ;
return /* (tmp189) */ ;
} /* end of [loop_39] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 14579(line=713, offs=3) -- 15110(line=742, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__fprint_stasub (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
// ATSlocal_void (tmp188) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__fprint_stasub:
/* tmp188 = */ loop_39 (arg0, arg1, 0) ;
return /* (tmp188) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__fprint_stasub] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 15182(line=748, offs=3) -- 15224(line=748, offs=45)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_add (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
// ATSlocal_void (tmp201) ;
ATSlocal (ats_ptr_type, tmp202) ;
ATSlocal (anairiats_rec_7, tmp203) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_add:
tmp203.atslab_0 = arg1 ;
tmp203.atslab_1 = arg2 ;

tmp202 = ATS_MALLOC(sizeof(anairiats_sum_8)) ;
ats_selptrset_mac(anairiats_sum_8, tmp202, atslab_0, tmp203) ;
ats_selptrset_mac(anairiats_sum_8, tmp202, atslab_1, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp202 ;
return /* (tmp201) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_add] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 15305(line=754, offs=7) -- 15737(line=768, offs=8)
*/
ATSstaticdec()
ats_int_type
loop_42 (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_int_type, tmp205) ;
ATSlocal (ats_ptr_type, tmp206) ;
ATSlocal (ats_ptr_type, tmp207) ;
ATSlocal (ats_ptr_type, tmp208) ;
ATSlocal (ats_ptr_type, tmp209) ;
// ATSlocal_void (tmp210) ;

__ats_lab_loop_42:
do {
/* branch: __ats_lab_76 */
__ats_lab_76_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_79_0 ; }
__ats_lab_76_1:
tmp206 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp207 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
do {
/* branch: __ats_lab_77 */
__ats_lab_77_0:
if (arg2 == (ats_sum_ptr_type)0) { goto __ats_lab_78_0 ; }
__ats_lab_77_1:
tmp208 = ats_caselptrlab_mac(anairiats_sum_4, arg2, atslab_0) ;
tmp209 = ats_caselptrlab_mac(anairiats_sum_4, arg2, atslab_1) ;
/* tmp210 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_add (arg0, tmp206, tmp208) ;
arg0 = arg0 ;
arg1 = tmp207 ;
arg2 = tmp209 ;
goto __ats_lab_loop_42 ; // tail call
break ;

/* branch: __ats_lab_78 */
__ats_lab_78_0:
// if (arg2 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_78_1:
tmp205 = 1 ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_79 */
__ats_lab_79_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_79_1:
do {
/* branch: __ats_lab_80 */
__ats_lab_80_0:
if (arg2 == (ats_sum_ptr_type)0) { goto __ats_lab_81_0 ; }
__ats_lab_80_1:
tmp205 = -1 ;
break ;

/* branch: __ats_lab_81 */
__ats_lab_81_0:
// if (arg2 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_81_1:
tmp205 = 0 ;
break ;
} while (0) ;
break ;
} while (0) ;
return (tmp205) ;
} /* end of [loop_42] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 15275(line=753, offs=3) -- 15809(line=772, offs=4)
*/
ATSglobaldec()
ats_int_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_addlst (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_int_type, tmp204) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_addlst:
tmp204 = loop_42 (arg0, arg1, arg2) ;
return (tmp204) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_addlst] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list.dats: 9577(line=358, offs=7) -- 9950(line=371, offs=27)
*/
ATSstaticdec()
ats_ptr_type
loop_46 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ptr_type arg3) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp214) ;
ATSlocal (anairiats_rec_7, tmp215) ;
ATSlocal (ats_ptr_type, tmp216) ;
ATSlocal (ats_bool_type, tmp217) ;
ATSlocal (ats_ptr_type, tmp218) ;
ATSlocal (ats_ptr_type, tmp219) ;

__ats_lab_loop_46:
do {
/* branch: __ats_lab_82 */
__ats_lab_82_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_83_0 ; }
__ats_lab_82_1:
tmp215 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp216 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
tmp218 = ats_select_mac(tmp215, atslab_0) ;
tmp217 = ((ats_bool_type(*)(ats_ptr_type, ats_ptr_type, ats_ptr_type))arg1) (arg2, tmp218, arg3) ;
if (tmp217) {
tmp219 = ats_select_mac(tmp215, atslab_1) ;
tmp214 = ATS_MALLOC(sizeof(anairiats_sum_13)) ;
ats_selptrset_mac(anairiats_sum_13, tmp214, atslab_0, tmp219) ;
} else {
arg0 = tmp216 ;
arg1 = arg1 ;
arg2 = arg2 ;
arg3 = arg3 ;
goto __ats_lab_loop_46 ; // tail call
} /* end of [if] */
break ;

/* branch: __ats_lab_83 */
__ats_lab_83_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_83_1:
tmp214 = (ats_sum_ptr_type)0 ;
break ;
} while (0) ;
return (tmp214) ;
} /* end of [loop_46] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list.dats: 9541(line=357, offs=21) -- 9988(line=374, offs=4)
*/
ATSstaticdec()
ats_ptr_type
list_assoc_funenv_01315_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ptr_type arg3) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp213) ;

__ats_lab_list_assoc_funenv_01315_ats_ptr_type_2cats_ptr_type:
tmp213 = loop_46 (arg0, arg1, arg2, arg3) ;
return (tmp213) ;
} /* end of [list_assoc_funenv_01315_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list.dats: 10063(line=378, offs=12) -- 10354(line=385, offs=2)
*/
ATSstaticdec()
ats_ptr_type
list_assoc_fun_01316_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp212) ;

__ats_lab_list_assoc_fun_01316_ats_ptr_type_2cats_ptr_type:
tmp212 = list_assoc_funenv_01315_ats_ptr_type_2cats_ptr_type (arg0, ats_castfn_mac(ats_ptr_type, arg1), arg2, atspre_null_ptr) ;
return (tmp212) ;
} /* end of [list_assoc_fun_01316_ats_ptr_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 15880(line=777, offs=13) -- 16067(line=783, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_find (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp211) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_find:
tmp211 = list_assoc_fun_01316_ats_ptr_type_2cats_ptr_type (ats_castfn_mac(ats_ptr_type, arg0), &_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__eq_s2var_s2var, arg1) ;
return (tmp211) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_find] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 16363(line=800, offs=3) -- 16832(line=816, offs=8)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_occurcheck (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp220) ;
ATSlocal (anairiats_rec_7, tmp221) ;
ATSlocal (ats_ptr_type, tmp222) ;
ATSlocal (ats_ptr_type, tmp223) ;
ATSlocal (ats_ptr_type, tmp224) ;
ATSlocal (ats_bool_type, tmp225) ;
ATSlocal (ats_ptr_type, tmp226) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_occurcheck:
do {
/* branch: __ats_lab_84 */
__ats_lab_84_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_85_0 ; }
__ats_lab_84_1:
tmp221 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp222 = &ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
tmp224 = ats_select_mac(tmp221, atslab_0) ;
tmp223 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2var_get_sVarset (tmp224) ;
tmp225 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Varset_ismem (tmp223, arg1) ;
if (tmp225) {
tmp220 = ats_true_bool ;
} else {
tmp226 = ats_ptrget_mac(ats_ptr_type, tmp222) ;
arg0 = tmp226 ;
arg1 = arg1 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_occurcheck ; // tail call
} /* end of [if] */
break ;

/* branch: __ats_lab_85 */
__ats_lab_85_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_85_1:
tmp220 = ats_false_bool ;
break ;
} while (0) ;
return (tmp220) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_occurcheck] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 16989(line=826, offs=5) -- 17360(line=838, offs=25)
*/
ATSstaticdec()
ats_ptr_type
loop_49 (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp228) ;
ATSlocal (ats_ptr_type, tmp229) ;
ATSlocal (ats_ptr_type, tmp230) ;
ATSlocal (ats_ptr_type, tmp231) ;
ATSlocal (ats_ptr_type, tmp232) ;
// ATSlocal_void (tmp233) ;
ATSlocal (ats_ptr_type, tmp234) ;

__ats_lab_loop_49:
do {
/* branch: __ats_lab_86 */
__ats_lab_86_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_87_0 ; }
__ats_lab_86_1:
tmp229 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp230 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp231 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2var_dup (tmp229) ;
tmp232 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_var (tmp231) ;
/* tmp233 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_add (arg0, tmp229, tmp232) ;
tmp234 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp234, atslab_0, tmp231) ;
ats_selptrset_mac(anairiats_sum_4, tmp234, atslab_1, arg2) ;
arg0 = arg0 ;
arg1 = tmp230 ;
arg2 = tmp234 ;
goto __ats_lab_loop_49 ; // tail call
break ;

/* branch: __ats_lab_87 */
__ats_lab_87_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_87_1:
tmp228 = arg2 ;
break ;
} while (0) ;
return (tmp228) ;
} /* end of [loop_49] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 7889(line=308, offs=7) -- 8174(line=317, offs=28)
*/
ATSstaticdec()
ats_ptr_type
revapp_52 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp239) ;
ATSlocal (ats_ptr_type, tmp240) ;
ATSlocal (ats_ptr_type, tmp241) ;
ATSlocal (ats_ptr_type, tmp242) ;

__ats_lab_revapp_52:
do {
/* branch: __ats_lab_88 */
__ats_lab_88_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_89_0 ; }
__ats_lab_88_1:
tmp240 = &ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;
tmp241 = ats_ptrget_mac(ats_ptr_type, tmp240) ;
ats_ptrget_mac(ats_ptr_type, tmp240) = arg1 ;
tmp242 = arg0 ;
arg0 = tmp241 ;
arg1 = tmp242 ;
goto __ats_lab_revapp_52 ; // tail call
break ;

/* branch: __ats_lab_89 */
__ats_lab_89_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_89_1:
tmp239 = arg1 ;
break ;
} while (0) ;
return (tmp239) ;
} /* end of [revapp_52] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 7770(line=303, offs=24) -- 8220(line=321, offs=4)
*/
ATSstaticdec()
ats_ptr_type
list_vt_reverse_append_01507_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp238) ;

__ats_lab_list_vt_reverse_append_01507_ats_ptr_type:
tmp238 = revapp_52 (arg0, arg1) ;
return (tmp238) ;
} /* end of [list_vt_reverse_append_01507_ats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 7652(line=298, offs=17) -- 7704(line=299, offs=46)
*/
ATSstaticdec()
ats_ptr_type
list_vt_reverse_01506_ats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp237) ;
ATSlocal (ats_ptr_type, tmp243) ;

__ats_lab_list_vt_reverse_01506_ats_ptr_type:
tmp243 = (ats_sum_ptr_type)0 ;
tmp237 = list_vt_reverse_append_01507_ats_ptr_type (arg0, tmp243) ;
return (tmp237) ;
} /* end of [list_vt_reverse_01506_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 16964(line=824, offs=23) -- 17465(line=847, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_extend_svarlst (ats_ref_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp227) ;
ATSlocal (ats_ptr_type, tmp235) ;
ATSlocal (ats_ptr_type, tmp236) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_extend_svarlst:
tmp236 = (ats_sum_ptr_type)0 ;
tmp235 = loop_49 (arg0, arg1, tmp236) ;
tmp227 = list_vt_reverse_01506_ats_ptr_type (tmp235) ;
return (tmp227) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_extend_svarlst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 18565(line=894, offs=1) -- 18826(line=905, offs=4)
*/
ATSstaticdec()
ats_ptr_type
s2var_subst_flag_53 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ptr_type arg3) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp244) ;
ATSlocal (ats_ptr_type, tmp245) ;
ATSlocal (ats_ptr_type, tmp246) ;
ATSlocal (ats_int_type, tmp247) ;

__ats_lab_s2var_subst_flag_53:
tmp245 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_find (arg0, arg3) ;
do {
/* branch: __ats_lab_90 */
__ats_lab_90_0:
if (tmp245 == (ats_sum_ptr_type)0) { goto __ats_lab_91_0 ; }
__ats_lab_90_1:
tmp246 = ats_caselptrlab_mac(anairiats_sum_13, tmp245, atslab_0) ;
ATS_FREE(tmp245) ;
tmp247 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg2), 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp247 ;
tmp244 = tmp246 ;
break ;

/* branch: __ats_lab_91 */
__ats_lab_91_0:
// if (tmp245 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_91_1:
tmp244 = arg1 ;
break ;
} while (0) ;
return (tmp244) ;
} /* end of [s2var_subst_flag_53] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 18861(line=908, offs=1) -- 19372(line=932, offs=4)
*/
ATSstaticdec()
ats_ptr_type
s2Var_subst_flag_54 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ptr_type arg3) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp248) ;
ATSlocal (ats_ptr_type, tmp249) ;
ATSlocal (ats_ptr_type, tmp250) ;
ATSlocal (ats_int_type, tmp251) ;
ATSlocal (ats_bool_type, tmp252) ;
ATSlocal (ats_int_type, tmp254) ;
ATSlocal (ats_bool_type, tmp255) ;
ATSlocal (ats_ptr_type, tmp256) ;

__ats_lab_s2Var_subst_flag_54:
tmp249 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_link (arg3) ;
do {
/* branch: __ats_lab_92 */
__ats_lab_92_0:
if (tmp249 == (ats_sum_ptr_type)0) { goto __ats_lab_93_0 ; }
__ats_lab_92_1:
tmp250 = ats_caselptrlab_mac(anairiats_sum_13, tmp249, atslab_0) ;
tmp251 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg2), 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp251 ;
tmp248 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp250, arg2) ;
break ;

/* branch: __ats_lab_93 */
__ats_lab_93_0:
// if (tmp249 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_93_1:
tmp252 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_occurcheck (arg0, arg3) ;
if (tmp252) {
tmp254 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg2), 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp254 ;
} else {
/* empty */
} /* end of [if] */
tmp255 = atspre_neg_bool (tmp252) ;
if (tmp255) {
tmp248 = arg1 ;
} else {
tmp256 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg1), atslab_s2exp_srt) ;
tmp248 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_errexp (tmp256) ;
} /* end of [if] */
break ;
} while (0) ;
return (tmp248) ;
} /* end of [s2Var_subst_flag_54] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 4893(line=177, offs=7) -- 5015(line=178, offs=73)
*/
ATSstaticdec()
ats_void_type
loop_57 (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp267) ;
ATSlocal (ats_ptr_type, tmp268) ;

__ats_lab_loop_57:
do {
/* branch: __ats_lab_94 */
__ats_lab_94_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_95_0 ; }
__ats_lab_94_1:
tmp268 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;
ATS_FREE(arg0) ;
arg0 = tmp268 ;
goto __ats_lab_loop_57 ; // tail call
break ;

/* branch: __ats_lab_95 */
__ats_lab_95_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_95_1:
break ;
} while (0) ;
return /* (tmp267) */ ;
} /* end of [loop_57] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list_vt.dats: 4875(line=176, offs=14) -- 5054(line=182, offs=4)
*/
ATSstaticdec()
ats_void_type
list_vt_free_01499_ats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp266) ;

__ats_lab_list_vt_free_01499_ats_ptr_type:
/* tmp266 = */ loop_57 (arg0) ;
return /* (tmp266) */ ;
} /* end of [list_vt_free_01499_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 19407(line=935, offs=1) -- 19976(line=955, offs=4)
*/
ATSstaticdec()
ats_ptr_type
s2exp_subst_flag_exiuni_55 (ats_int_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ref_type arg3, ats_ptr_type arg4, ats_ptr_type arg5, ats_ptr_type arg6) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp257) ;
ATSlocal (ats_int_type, tmp258) ;
ATSlocal (ats_ptr_type, tmp259) ;
ATSlocal (ats_ptr_type, tmp260) ;
ATSlocal (ats_ptr_type, tmp261) ;
ATSlocal (ats_ptr_type, tmp262) ;
// ATSlocal_void (tmp263) ;
ATSlocal (ats_bool_type, tmp264) ;
// ATSlocal_void (tmp265) ;

__ats_lab_s2exp_subst_flag_exiuni_55:
tmp258 = ats_ptrget_mac(ats_int_type, arg3) ;
/* ats_ptr_type tmp259 ; */
tmp259 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_copy (arg1) ;
tmp260 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_extend_svarlst ((&tmp259), arg4) ;
tmp261 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (tmp259, arg5, arg3) ;
tmp262 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (tmp259, arg6, arg3) ;
/* tmp263 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_free (tmp259) ;
tmp264 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg3), tmp258) ;
if (tmp264) {
tmp257 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_exiuni (arg0, ats_castfn_mac(ats_ptr_type, tmp260), tmp261, tmp262) ;
} else {
/* tmp265 = */ list_vt_free_01499_ats_ptr_type (tmp260) ;
tmp257 = arg2 ;
} /* end of [if] */
return (tmp257) ;
} /* end of [s2exp_subst_flag_exiuni_55] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 20064(line=961, offs=3) -- 26626(line=1188, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp269) ;
ATSlocal (ats_ptr_type, tmp270) ;
ATSlocal (ats_ptr_type, tmp271) ;
ATSlocal (ats_ptr_type, tmp272) ;
ATSlocal (ats_ptr_type, tmp273) ;
ATSlocal (ats_int_type, tmp274) ;
ATSlocal (ats_ptr_type, tmp275) ;
ATSlocal (ats_bool_type, tmp276) ;
ATSlocal (ats_ptr_type, tmp277) ;
ATSlocal (ats_ptr_type, tmp278) ;
ATSlocal (ats_int_type, tmp279) ;
ATSlocal (ats_ptr_type, tmp280) ;
ATSlocal (ats_bool_type, tmp281) ;
ATSlocal (ats_ptr_type, tmp282) ;
ATSlocal (ats_ptr_type, tmp283) ;
ATSlocal (ats_ptr_type, tmp284) ;
ATSlocal (ats_ptr_type, tmp285) ;
ATSlocal (ats_int_type, tmp286) ;
ATSlocal (ats_ptr_type, tmp287) ;
ATSlocal (ats_bool_type, tmp288) ;
ATSlocal (ats_ptr_type, tmp289) ;
ATSlocal (ats_ptr_type, tmp290) ;
ATSlocal (ats_ptr_type, tmp291) ;
ATSlocal (ats_int_type, tmp292) ;
ATSlocal (ats_ptr_type, tmp293) ;
ATSlocal (ats_ptr_type, tmp294) ;
ATSlocal (ats_bool_type, tmp295) ;
ATSlocal (ats_ptr_type, tmp296) ;
ATSlocal (ats_ptr_type, tmp297) ;
ATSlocal (ats_int_type, tmp298) ;
ATSlocal (ats_ptr_type, tmp299) ;
ATSlocal (ats_ptr_type, tmp300) ;
ATSlocal (ats_bool_type, tmp301) ;
ATSlocal (ats_ptr_type, tmp302) ;
ATSlocal (ats_int_type, tmp303) ;
ATSlocal (ats_ptr_type, tmp304) ;
ATSlocal (ats_bool_type, tmp305) ;
ATSlocal (ats_ptr_type, tmp306) ;
ATSlocal (ats_int_type, tmp307) ;
ATSlocal (ats_ptr_type, tmp308) ;
ATSlocal (ats_bool_type, tmp309) ;
ATSlocal (ats_ptr_type, tmp310) ;
ATSlocal (ats_ptr_type, tmp311) ;
ATSlocal (ats_int_type, tmp312) ;
ATSlocal (ats_ptr_type, tmp313) ;
ATSlocal (ats_ptr_type, tmp314) ;
ATSlocal (ats_bool_type, tmp315) ;
ATSlocal (ats_ptr_type, tmp316) ;
ATSlocal (ats_ptr_type, tmp317) ;
ATSlocal (ats_ptr_type, tmp318) ;
ATSlocal (ats_int_type, tmp319) ;
ATSlocal (ats_ptr_type, tmp320) ;
ATSlocal (ats_ptr_type, tmp321) ;
ATSlocal (ats_ptr_type, tmp322) ;
ATSlocal (ats_bool_type, tmp323) ;
ATSlocal (ats_ptr_type, tmp324) ;
ATSlocal (ats_ptr_type, tmp325) ;
ATSlocal (ats_int_type, tmp326) ;
ATSlocal (ats_ptr_type, tmp327) ;
ATSlocal (ats_ptr_type, tmp328) ;
ATSlocal (ats_bool_type, tmp329) ;
ATSlocal (ats_ptr_type, tmp330) ;
ATSlocal (ats_ptr_type, tmp331) ;
ATSlocal (ats_int_type, tmp332) ;
ATSlocal (ats_ptr_type, tmp333) ;
ATSlocal (ats_ptr_type, tmp334) ;
ATSlocal (ats_ptr_type, tmp335) ;
// ATSlocal_void (tmp336) ;
ATSlocal (ats_bool_type, tmp337) ;
// ATSlocal_void (tmp338) ;
ATSlocal (ats_ptr_type, tmp339) ;
ATSlocal (ats_int_type, tmp340) ;
ATSlocal (ats_ptr_type, tmp341) ;
ATSlocal (ats_int_type, tmp342) ;
ATSlocal (ats_ptr_type, tmp343) ;
ATSlocal (ats_ptr_type, tmp344) ;
ATSlocal (ats_int_type, tmp345) ;
ATSlocal (ats_ptr_type, tmp346) ;
ATSlocal (ats_ptr_type, tmp347) ;
ATSlocal (ats_ptr_type, tmp348) ;
ATSlocal (ats_bool_type, tmp349) ;
ATSlocal (ats_ptr_type, tmp350) ;
ATSlocal (ats_ptr_type, tmp351) ;
ATSlocal (ats_ptr_type, tmp352) ;
ATSlocal (ats_int_type, tmp353) ;
ATSlocal (ats_ptr_type, tmp354) ;
ATSlocal (ats_ptr_type, tmp355) ;
ATSlocal (ats_bool_type, tmp356) ;
ATSlocal (ats_ptr_type, tmp357) ;
ATSlocal (ats_ptr_type, tmp358) ;
ATSlocal (ats_int_type, tmp359) ;
ATSlocal (ats_ptr_type, tmp360) ;
ATSlocal (ats_ptr_type, tmp361) ;
ATSlocal (ats_bool_type, tmp362) ;
ATSlocal (ats_int_type, tmp363) ;
ATSlocal (ats_ptr_type, tmp364) ;
ATSlocal (ats_int_type, tmp365) ;
ATSlocal (ats_ptr_type, tmp366) ;
ATSlocal (ats_bool_type, tmp367) ;
ATSlocal (ats_ptr_type, tmp368) ;
ATSlocal (ats_int_type, tmp369) ;
ATSlocal (ats_ptr_type, tmp370) ;
ATSlocal (ats_bool_type, tmp371) ;
ATSlocal (ats_ptr_type, tmp372) ;
ATSlocal (ats_ptr_type, tmp373) ;
ATSlocal (ats_int_type, tmp374) ;
ATSlocal (ats_ptr_type, tmp375) ;
ATSlocal (ats_ptr_type, tmp376) ;
ATSlocal (ats_bool_type, tmp377) ;
ATSlocal (ats_ptr_type, tmp378) ;
ATSlocal (ats_int_type, tmp379) ;
ATSlocal (ats_ptr_type, tmp380) ;
ATSlocal (ats_int_type, tmp381) ;
ATSlocal (ats_ptr_type, tmp382) ;
ATSlocal (ats_bool_type, tmp383) ;
ATSlocal (ats_ptr_type, tmp384) ;
ATSlocal (ats_int_type, tmp385) ;
ATSlocal (ats_ptr_type, tmp386) ;
ATSlocal (ats_bool_type, tmp387) ;
ATSlocal (ats_int_type, tmp388) ;
ATSlocal (ats_ptr_type, tmp389) ;
ATSlocal (ats_int_type, tmp390) ;
ATSlocal (ats_ptr_type, tmp391) ;
ATSlocal (ats_bool_type, tmp392) ;
ATSlocal (ats_ptr_type, tmp393) ;
ATSlocal (ats_ptr_type, tmp394) ;
ATSlocal (ats_ptr_type, tmp395) ;
ATSlocal (ats_ptr_type, tmp396) ;
ATSlocal (ats_ptr_type, tmp397) ;
ATSlocal (ats_ptr_type, tmp398) ;
ATSlocal (ats_ptr_type, tmp399) ;
ATSlocal (ats_int_type, tmp400) ;
ATSlocal (ats_ptr_type, tmp401) ;
ATSlocal (ats_bool_type, tmp402) ;
ATSlocal (ats_ptr_type, tmp403) ;
ATSlocal (ats_ptr_type, tmp404) ;
ATSlocal (ats_int_type, tmp405) ;
ATSlocal (ats_ptr_type, tmp406) ;
ATSlocal (ats_ptr_type, tmp407) ;
ATSlocal (ats_bool_type, tmp408) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag:
tmp270 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg1), atslab_s2exp_srt) ;
tmp271 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_6, arg1), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_96 */
__ats_lab_96_0:
if (((ats_sum_ptr_type)tmp271)->tag != 0) { goto __ats_lab_97_0 ; }
__ats_lab_96_1:
tmp269 = arg1 ;
break ;

/* branch: __ats_lab_97 */
__ats_lab_97_0:
if (((ats_sum_ptr_type)tmp271)->tag != 1) { goto __ats_lab_98_0 ; }
__ats_lab_97_1:
tmp269 = arg1 ;
break ;

/* branch: __ats_lab_98 */
__ats_lab_98_0:
if (((ats_sum_ptr_type)tmp271)->tag != 2) { goto __ats_lab_99_0 ; }
__ats_lab_98_1:
tmp269 = arg1 ;
break ;

/* branch: __ats_lab_99 */
__ats_lab_99_0:
if (((ats_sum_ptr_type)tmp271)->tag != 3) { goto __ats_lab_100_0 ; }
__ats_lab_99_1:
tmp269 = arg1 ;
break ;

/* branch: __ats_lab_100 */
__ats_lab_100_0:
if (((ats_sum_ptr_type)tmp271)->tag != 4) { goto __ats_lab_101_0 ; }
__ats_lab_100_1:
tmp269 = arg1 ;
break ;

/* branch: __ats_lab_101 */
__ats_lab_101_0:
if (((ats_sum_ptr_type)tmp271)->tag != 5) { goto __ats_lab_102_0 ; }
__ats_lab_101_1:
tmp272 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp273 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp274 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp275 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag (arg0, tmp273, arg2) ;
tmp276 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp274) ;
if (tmp276) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_extype_srt (tmp270, tmp272, tmp275) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_102 */
__ats_lab_102_0:
if (((ats_sum_ptr_type)tmp271)->tag != 6) { goto __ats_lab_103_0 ; }
__ats_lab_102_1:
tmp277 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp278 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp279 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp280 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag (arg0, tmp278, arg2) ;
tmp281 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp279) ;
if (tmp281) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_extkind_srt (tmp270, tmp277, tmp280) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_103 */
__ats_lab_103_0:
if (((ats_sum_ptr_type)tmp271)->tag != 7) { goto __ats_lab_104_0 ; }
__ats_lab_103_1:
tmp282 = ats_caselptrlab_mac(anairiats_sum_1, tmp271, atslab_0) ;
tmp269 = s2var_subst_flag_53 (arg0, arg1, arg2, tmp282) ;
break ;

/* branch: __ats_lab_104 */
__ats_lab_104_0:
if (((ats_sum_ptr_type)tmp271)->tag != 8) { goto __ats_lab_105_0 ; }
__ats_lab_104_1:
tmp283 = ats_caselptrlab_mac(anairiats_sum_1, tmp271, atslab_0) ;
tmp269 = s2Var_subst_flag_54 (arg0, arg1, arg2, tmp283) ;
break ;

/* branch: __ats_lab_105 */
__ats_lab_105_0:
if (((ats_sum_ptr_type)tmp271)->tag != 9) { goto __ats_lab_106_0 ; }
__ats_lab_105_1:
tmp269 = arg1 ;
break ;

/* branch: __ats_lab_106 */
__ats_lab_106_0:
if (((ats_sum_ptr_type)tmp271)->tag != 10) { goto __ats_lab_107_0 ; }
__ats_lab_106_1:
tmp284 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp285 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp286 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp287 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp285, arg2) ;
tmp288 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp286) ;
if (tmp288) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_datcontyp (tmp284, tmp287) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_107 */
__ats_lab_107_0:
if (((ats_sum_ptr_type)tmp271)->tag != 11) { goto __ats_lab_108_0 ; }
__ats_lab_107_1:
tmp289 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_0) ;
tmp290 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_1) ;
tmp291 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_2) ;
tmp292 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp293 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp290, arg2) ;
tmp294 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp291, arg2) ;
tmp295 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp292) ;
if (tmp295) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_datconptr (tmp289, tmp293, tmp294) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_108 */
__ats_lab_108_0:
if (((ats_sum_ptr_type)tmp271)->tag != 12) { goto __ats_lab_109_0 ; }
__ats_lab_108_1:
tmp296 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp297 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp298 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp299 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp296, arg2) ;
tmp300 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp297, arg2) ;
tmp301 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp298) ;
if (tmp301) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_at (tmp299, tmp300) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_109 */
__ats_lab_109_0:
if (((ats_sum_ptr_type)tmp271)->tag != 13) { goto __ats_lab_110_0 ; }
__ats_lab_109_1:
tmp302 = ats_caselptrlab_mac(anairiats_sum_1, tmp271, atslab_0) ;
tmp303 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp304 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp302, arg2) ;
tmp305 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp303) ;
if (tmp305) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_sizeof (tmp304) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_110 */
__ats_lab_110_0:
if (((ats_sum_ptr_type)tmp271)->tag != 14) { goto __ats_lab_111_0 ; }
__ats_lab_110_1:
tmp306 = ats_caselptrlab_mac(anairiats_sum_1, tmp271, atslab_0) ;
tmp307 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp308 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag (arg0, tmp306, arg2) ;
tmp309 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp307) ;
if (tmp309) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_eff (tmp308) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_111 */
__ats_lab_111_0:
if (((ats_sum_ptr_type)tmp271)->tag != 15) { goto __ats_lab_112_0 ; }
__ats_lab_111_1:
tmp310 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp311 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp312 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp313 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp310, arg2) ;
tmp314 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp311, arg2) ;
tmp315 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp312) ;
if (tmp315) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_eqeq (tmp313, tmp314) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_112 */
__ats_lab_112_0:
if (((ats_sum_ptr_type)tmp271)->tag != 16) { goto __ats_lab_113_0 ; }
__ats_lab_112_1:
tmp316 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_0) ;
tmp317 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_1) ;
tmp318 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_2) ;
tmp319 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp320 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp316, arg2) ;
tmp321 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp317, arg2) ;
tmp322 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lablst_subst_flag (arg0, tmp318, arg2) ;
tmp323 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp319) ;
if (tmp323) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_proj (tmp320, tmp321, tmp322) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_113 */
__ats_lab_113_0:
if (((ats_sum_ptr_type)tmp271)->tag != 17) { goto __ats_lab_114_0 ; }
__ats_lab_113_1:
tmp324 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp325 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp326 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp327 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp324, arg2) ;
tmp328 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp325, arg2) ;
tmp329 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp326) ;
if (tmp329) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_app_srt (tmp270, tmp327, tmp328) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_114 */
__ats_lab_114_0:
if (((ats_sum_ptr_type)tmp271)->tag != 18) { goto __ats_lab_115_0 ; }
__ats_lab_114_1:
tmp330 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp331 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp332 = ats_ptrget_mac(ats_int_type, arg2) ;
/* ats_ptr_type tmp333 ; */
tmp333 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_copy (arg0) ;
tmp334 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_extend_svarlst ((&tmp333), tmp330) ;
tmp335 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (tmp333, tmp331, arg2) ;
/* tmp336 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_free (tmp333) ;
tmp337 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp332) ;
if (tmp337) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_lam_srt (tmp270, ats_castfn_mac(ats_ptr_type, tmp334), tmp335) ;
} else {
/* tmp338 = */ list_vt_free_01499_ats_ptr_type (tmp334) ;
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_115 */
__ats_lab_115_0:
if (((ats_sum_ptr_type)tmp271)->tag != 19) { goto __ats_lab_116_0 ; }
__ats_lab_115_1:
tmp339 = ats_caselptrlab_mac(anairiats_sum_14, tmp271, atslab_0) ;
tmp340 = ats_caselptrlab_mac(anairiats_sum_14, tmp271, atslab_1) ;
tmp341 = ats_caselptrlab_mac(anairiats_sum_14, tmp271, atslab_2) ;
tmp342 = ats_caselptrlab_mac(anairiats_sum_14, tmp271, atslab_3) ;
tmp343 = ats_caselptrlab_mac(anairiats_sum_14, tmp271, atslab_4) ;
tmp344 = ats_caselptrlab_mac(anairiats_sum_14, tmp271, atslab_5) ;
tmp345 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp346 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag (arg0, tmp341, arg2) ;
tmp347 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp343, arg2) ;
tmp348 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp344, arg2) ;
tmp349 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp345) ;
if (tmp349) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_fun_srt (tmp270, tmp339, tmp340, tmp346, tmp342, tmp347, tmp348) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_116 */
__ats_lab_116_0:
if (((ats_sum_ptr_type)tmp271)->tag != 20) { goto __ats_lab_117_0 ; }
__ats_lab_116_1:
tmp350 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_0) ;
tmp351 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_1) ;
tmp352 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_2) ;
tmp353 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp354 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp351, arg2) ;
tmp355 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp352, arg2) ;
tmp356 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp353) ;
if (tmp356) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_metfun (tmp350, tmp354, tmp355) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_117 */
__ats_lab_117_0:
if (((ats_sum_ptr_type)tmp271)->tag != 21) { goto __ats_lab_118_0 ; }
__ats_lab_117_1:
tmp357 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp358 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp359 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp360 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp357, arg2) ;
tmp361 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp358, arg2) ;
tmp362 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp359) ;
if (tmp362) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_metdec (tmp360, tmp361) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_118 */
__ats_lab_118_0:
if (((ats_sum_ptr_type)tmp271)->tag != 22) { goto __ats_lab_119_0 ; }
__ats_lab_118_1:
tmp363 = ats_caselptrlab_mac(anairiats_sum_2, tmp271, atslab_0) ;
tmp364 = ats_caselptrlab_mac(anairiats_sum_2, tmp271, atslab_1) ;
tmp365 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp366 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp364, arg2) ;
tmp367 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp365) ;
if (tmp367) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_top_srt (tmp270, tmp363, tmp366) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_119 */
__ats_lab_119_0:
if (((ats_sum_ptr_type)tmp271)->tag != 23) { goto __ats_lab_120_0 ; }
__ats_lab_119_1:
tmp368 = ats_caselptrlab_mac(anairiats_sum_1, tmp271, atslab_0) ;
tmp369 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp370 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp368, arg2) ;
tmp371 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp369) ;
if (tmp371) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_without (tmp370) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_120 */
__ats_lab_120_0:
if (((ats_sum_ptr_type)tmp271)->tag != 24) { goto __ats_lab_121_0 ; }
__ats_lab_120_1:
tmp372 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp373 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp374 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp375 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp372, arg2) ;
tmp376 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp373, arg2) ;
tmp377 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp374) ;
if (tmp377) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyarr (tmp375, tmp376) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_121 */
__ats_lab_121_0:
if (((ats_sum_ptr_type)tmp271)->tag != 25) { goto __ats_lab_122_0 ; }
__ats_lab_121_1:
tmp378 = ats_caselptrlab_mac(anairiats_sum_11, tmp271, atslab_0) ;
tmp379 = ats_caselptrlab_mac(anairiats_sum_11, tmp271, atslab_1) ;
tmp380 = ats_caselptrlab_mac(anairiats_sum_11, tmp271, atslab_2) ;
tmp381 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp382 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_subst_flag (arg0, tmp380, arg2) ;
tmp383 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp381) ;
if (tmp383) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_tyrec_srt (tmp270, tmp378, tmp379, tmp382) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_122 */
__ats_lab_122_0:
if (((ats_sum_ptr_type)tmp271)->tag != 26) { goto __ats_lab_123_0 ; }
__ats_lab_122_1:
tmp384 = ats_caselptrlab_mac(anairiats_sum_1, tmp271, atslab_0) ;
tmp385 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp386 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp384, arg2) ;
tmp387 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp385) ;
if (tmp387) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_invar (tmp386) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_123 */
__ats_lab_123_0:
if (((ats_sum_ptr_type)tmp271)->tag != 29) { goto __ats_lab_124_0 ; }
__ats_lab_123_1:
tmp388 = ats_caselptrlab_mac(anairiats_sum_2, tmp271, atslab_0) ;
tmp389 = ats_caselptrlab_mac(anairiats_sum_2, tmp271, atslab_1) ;
tmp390 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp391 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp389, arg2) ;
tmp392 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp390) ;
if (tmp392) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_refarg (tmp388, tmp391) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_124 */
__ats_lab_124_0:
if (((ats_sum_ptr_type)tmp271)->tag != 27) { goto __ats_lab_125_0 ; }
__ats_lab_124_1:
tmp393 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_0) ;
tmp394 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_1) ;
tmp395 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_2) ;
tmp269 = s2exp_subst_flag_exiuni_55 (0, arg0, arg1, arg2, tmp393, tmp394, tmp395) ;
break ;

/* branch: __ats_lab_125 */
__ats_lab_125_0:
if (((ats_sum_ptr_type)tmp271)->tag != 28) { goto __ats_lab_126_0 ; }
__ats_lab_125_1:
tmp396 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_0) ;
tmp397 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_1) ;
tmp398 = ats_caselptrlab_mac(anairiats_sum_10, tmp271, atslab_2) ;
tmp269 = s2exp_subst_flag_exiuni_55 (1, arg0, arg1, arg2, tmp396, tmp397, tmp398) ;
break ;

/* branch: __ats_lab_126 */
__ats_lab_126_0:
if (((ats_sum_ptr_type)tmp271)->tag != 30) { goto __ats_lab_127_0 ; }
__ats_lab_126_1:
tmp399 = ats_caselptrlab_mac(anairiats_sum_1, tmp271, atslab_0) ;
tmp400 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp401 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp399, arg2) ;
tmp402 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp400) ;
if (tmp402) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_vararg (tmp401) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_127 */
__ats_lab_127_0:
if (((ats_sum_ptr_type)tmp271)->tag != 31) { goto __ats_lab_128_0 ; }
__ats_lab_127_1:
tmp403 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_0) ;
tmp404 = ats_caselptrlab_mac(anairiats_sum_9, tmp271, atslab_1) ;
tmp405 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp406 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp403, arg2) ;
tmp407 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag (arg0, tmp404, arg2) ;
tmp408 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp405) ;
if (tmp408) {
tmp269 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_wthtype (tmp406, tmp407) ;
} else {
tmp269 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_128 */
__ats_lab_128_0:
// if (((ats_sum_ptr_type)tmp271)->tag != 32) { ats_deadcode_failure_handle () ; }
__ats_lab_128_1:
tmp269 = arg1 ;
break ;
} while (0) ;
return (tmp269) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 26710(line=1194, offs=3) -- 27033(line=1203, offs=31)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp409) ;
ATSlocal (ats_ptr_type, tmp410) ;
ATSlocal (ats_ptr_type, tmp411) ;
ATSlocal (ats_int_type, tmp412) ;
ATSlocal (ats_ptr_type, tmp413) ;
ATSlocal (ats_ptr_type, tmp414) ;
ATSlocal (ats_bool_type, tmp415) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag:
do {
/* branch: __ats_lab_129 */
__ats_lab_129_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_130_0 ; }
__ats_lab_129_1:
tmp410 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp411 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp412 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp413 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp410, arg2) ;
tmp414 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp411, arg2) ;
tmp415 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp412) ;
if (tmp415) {
tmp409 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp409, atslab_0, tmp413) ;
ats_selptrset_mac(anairiats_sum_4, tmp409, atslab_1, tmp414) ;
} else {
tmp409 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_130 */
__ats_lab_130_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_130_1:
tmp409 = (ats_sum_ptr_type)0 ;
break ;
} while (0) ;
return (tmp409) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 27102(line=1208, offs=3) -- 27440(line=1217, offs=31)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp416) ;
ATSlocal (ats_ptr_type, tmp417) ;
ATSlocal (ats_ptr_type, tmp418) ;
ATSlocal (ats_int_type, tmp419) ;
ATSlocal (ats_ptr_type, tmp420) ;
ATSlocal (ats_ptr_type, tmp421) ;
ATSlocal (ats_bool_type, tmp422) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag:
do {
/* branch: __ats_lab_131 */
__ats_lab_131_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_132_0 ; }
__ats_lab_131_1:
tmp417 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp418 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp419 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp420 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp417, arg2) ;
tmp421 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag (arg0, tmp418, arg2) ;
tmp422 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp419) ;
if (tmp422) {
tmp416 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp416, atslab_0, tmp420) ;
ats_selptrset_mac(anairiats_sum_4, tmp416, atslab_1, tmp421) ;
} else {
tmp416 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_132 */
__ats_lab_132_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_132_1:
tmp416 = (ats_sum_ptr_type)0 ;
break ;
} while (0) ;
return (tmp416) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 27533(line=1224, offs=3) -- 28001(line=1240, offs=8)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp423) ;
ATSlocal (ats_ptr_type, tmp424) ;
ATSlocal (ats_ptr_type, tmp425) ;
ATSlocal (ats_ptr_type, tmp426) ;
ATSlocal (ats_ptr_type, tmp427) ;
ATSlocal (ats_ptr_type, tmp428) ;
ATSlocal (ats_int_type, tmp429) ;
ATSlocal (ats_ptr_type, tmp430) ;
ATSlocal (ats_ptr_type, tmp431) ;
ATSlocal (ats_bool_type, tmp432) ;
ATSlocal (ats_ptr_type, tmp433) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_subst_flag:
do {
/* branch: __ats_lab_133 */
__ats_lab_133_0:
if (arg1 != (ats_sum_ptr_type)0) { goto __ats_lab_134_0 ; }
__ats_lab_133_1:
tmp423 = (ats_sum_ptr_type)0 ;
break ;

/* branch: __ats_lab_134 */
__ats_lab_134_0:
// if (arg1 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_134_1:
tmp424 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp425 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;

tmp426 = ats_caselptrlab_mac(anairiats_sum_5, tmp424, atslab_0) ;
tmp427 = ats_caselptrlab_mac(anairiats_sum_5, tmp424, atslab_1) ;
tmp428 = ats_caselptrlab_mac(anairiats_sum_5, tmp424, atslab_2) ;
tmp429 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp430 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp428, arg2) ;
tmp431 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_subst_flag (arg0, tmp425, arg2) ;
tmp432 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp429) ;
if (tmp432) {
tmp433 = ATS_MALLOC(sizeof(anairiats_sum_5)) ;
ats_selptrset_mac(anairiats_sum_5, tmp433, atslab_0, tmp426) ;
ats_selptrset_mac(anairiats_sum_5, tmp433, atslab_1, tmp427) ;
ats_selptrset_mac(anairiats_sum_5, tmp433, atslab_2, tmp430) ;
tmp423 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp423, atslab_0, tmp433) ;
ats_selptrset_mac(anairiats_sum_4, tmp423, atslab_1, tmp431) ;
} else {
tmp423 = arg1 ;
} /* end of [if] */
break ;
} while (0) ;
return (tmp423) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2explst_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 28127(line=1247, offs=3) -- 29122(line=1285, offs=6)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp434) ;
ATSlocal (ats_int_type, tmp435) ;
ATSlocal (ats_ptr_type, tmp436) ;
ATSlocal (ats_ptr_type, tmp437) ;
ATSlocal (ats_int_type, tmp438) ;
ATSlocal (ats_ptr_type, tmp439) ;
ATSlocal (ats_ptr_type, tmp440) ;
ATSlocal (ats_bool_type, tmp441) ;
ATSlocal (ats_int_type, tmp442) ;
ATSlocal (ats_ptr_type, tmp443) ;
ATSlocal (ats_ptr_type, tmp444) ;
ATSlocal (ats_int_type, tmp445) ;
ATSlocal (ats_ptr_type, tmp446) ;
ATSlocal (ats_ptr_type, tmp447) ;
ATSlocal (ats_bool_type, tmp448) ;
ATSlocal (ats_ptr_type, tmp449) ;
ATSlocal (ats_int_type, tmp450) ;
ATSlocal (ats_ptr_type, tmp451) ;
ATSlocal (ats_bool_type, tmp452) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag:
do {
/* branch: __ats_lab_135 */
__ats_lab_135_0:
if (((ats_sum_ptr_type)arg1)->tag != 0) { goto __ats_lab_136_0 ; }
__ats_lab_135_1:
tmp434 = (ats_sum_ptr_type)(&_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__WTHS2EXPLSTnil_0) ;
break ;

/* branch: __ats_lab_136 */
__ats_lab_136_0:
if (((ats_sum_ptr_type)arg1)->tag != 2) { goto __ats_lab_137_0 ; }
__ats_lab_136_1:
tmp435 = ats_caselptrlab_mac(anairiats_sum_15, arg1, atslab_0) ;
tmp436 = ats_caselptrlab_mac(anairiats_sum_15, arg1, atslab_1) ;
tmp437 = ats_caselptrlab_mac(anairiats_sum_15, arg1, atslab_2) ;
tmp438 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp439 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp436, arg2) ;
tmp440 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag (arg0, tmp437, arg2) ;
tmp441 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp438) ;
if (tmp441) {
tmp434 = ATS_MALLOC(sizeof(anairiats_sum_15)) ;
((ats_sum_ptr_type)tmp434)->tag = 2 ;
ats_selptrset_mac(anairiats_sum_15, tmp434, atslab_0, tmp435) ;
ats_selptrset_mac(anairiats_sum_15, tmp434, atslab_1, tmp439) ;
ats_selptrset_mac(anairiats_sum_15, tmp434, atslab_2, tmp440) ;
} else {
tmp434 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_137 */
__ats_lab_137_0:
if (((ats_sum_ptr_type)arg1)->tag != 3) { goto __ats_lab_138_0 ; }
__ats_lab_137_1:
tmp442 = ats_caselptrlab_mac(anairiats_sum_15, arg1, atslab_0) ;
tmp443 = ats_caselptrlab_mac(anairiats_sum_15, arg1, atslab_1) ;
tmp444 = ats_caselptrlab_mac(anairiats_sum_15, arg1, atslab_2) ;
tmp445 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp446 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp443, arg2) ;
tmp447 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag (arg0, tmp444, arg2) ;
tmp448 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp445) ;
if (tmp448) {
tmp434 = ATS_MALLOC(sizeof(anairiats_sum_15)) ;
((ats_sum_ptr_type)tmp434)->tag = 3 ;
ats_selptrset_mac(anairiats_sum_15, tmp434, atslab_0, tmp442) ;
ats_selptrset_mac(anairiats_sum_15, tmp434, atslab_1, tmp446) ;
ats_selptrset_mac(anairiats_sum_15, tmp434, atslab_2, tmp447) ;
} else {
tmp434 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_138 */
__ats_lab_138_0:
// if (((ats_sum_ptr_type)arg1)->tag != 1) { ats_deadcode_failure_handle () ; }
__ats_lab_138_1:
tmp449 = ats_caselptrlab_mac(anairiats_sum_1, arg1, atslab_0) ;
tmp450 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp451 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag (arg0, tmp449, arg2) ;
tmp452 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp450) ;
if (tmp452) {
tmp434 = ATS_MALLOC(sizeof(anairiats_sum_1)) ;
((ats_sum_ptr_type)tmp434)->tag = 1 ;
ats_selptrset_mac(anairiats_sum_1, tmp434, atslab_0, tmp451) ;
} else {
tmp434 = arg1 ;
} /* end of [if] */
break ;
} while (0) ;
return (tmp434) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__wths2explst_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 29248(line=1293, offs=1) -- 29491(line=1306, offs=6)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lab_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp453) ;
ATSlocal (ats_ptr_type, tmp454) ;
ATSlocal (ats_int_type, tmp455) ;
ATSlocal (ats_ptr_type, tmp456) ;
ATSlocal (ats_bool_type, tmp457) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lab_subst_flag:
do {
/* branch: __ats_lab_139 */
__ats_lab_139_0:
if (((ats_sum_ptr_type)arg1)->tag != 0) { goto __ats_lab_140_0 ; }
__ats_lab_139_1:
tmp453 = arg1 ;
break ;

/* branch: __ats_lab_140 */
__ats_lab_140_0:
// if (((ats_sum_ptr_type)arg1)->tag != 1) { ats_deadcode_failure_handle () ; }
__ats_lab_140_1:
tmp454 = ats_caselptrlab_mac(anairiats_sum_1, arg1, atslab_0) ;
tmp455 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp456 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp454, arg2) ;
tmp457 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp455) ;
if (tmp457) {
tmp453 = ATS_MALLOC(sizeof(anairiats_sum_1)) ;
((ats_sum_ptr_type)tmp453)->tag = 1 ;
ats_selptrset_mac(anairiats_sum_1, tmp453, atslab_0, tmp456) ;
} else {
tmp453 = arg1 ;
} /* end of [if] */
break ;
} while (0) ;
return (tmp453) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lab_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 29581(line=1312, offs=1) -- 29917(line=1329, offs=6)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lablst_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp458) ;
ATSlocal (ats_ptr_type, tmp459) ;
ATSlocal (ats_ptr_type, tmp460) ;
ATSlocal (ats_int_type, tmp461) ;
ATSlocal (ats_ptr_type, tmp462) ;
ATSlocal (ats_ptr_type, tmp463) ;
ATSlocal (ats_bool_type, tmp464) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lablst_subst_flag:
do {
/* branch: __ats_lab_141 */
__ats_lab_141_0:
if (arg1 != (ats_sum_ptr_type)0) { goto __ats_lab_142_0 ; }
__ats_lab_141_1:
tmp458 = (ats_sum_ptr_type)0 ;
break ;

/* branch: __ats_lab_142 */
__ats_lab_142_0:
// if (arg1 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_142_1:
tmp459 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp460 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp461 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp462 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lab_subst_flag (arg0, tmp459, arg2) ;
tmp463 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lablst_subst_flag (arg0, tmp460, arg2) ;
tmp464 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp461) ;
if (tmp464) {
tmp458 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp458, atslab_0, tmp462) ;
ats_selptrset_mac(anairiats_sum_4, tmp458, atslab_1, tmp463) ;
} else {
tmp458 = arg1 ;
} /* end of [if] */
break ;
} while (0) ;
return (tmp458) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2lablst_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 30031(line=1337, offs=3) -- 30517(line=1352, offs=8)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp465) ;
ATSlocal (ats_ptr_type, tmp466) ;
ATSlocal (ats_int_type, tmp467) ;
ATSlocal (ats_ptr_type, tmp468) ;
ATSlocal (ats_bool_type, tmp469) ;
ATSlocal (ats_ptr_type, tmp470) ;
ATSlocal (ats_ptr_type, tmp471) ;
ATSlocal (ats_int_type, tmp472) ;
ATSlocal (ats_ptr_type, tmp473) ;
ATSlocal (ats_ptr_type, tmp474) ;
ATSlocal (ats_bool_type, tmp475) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag:
do {
/* branch: __ats_lab_143 */
__ats_lab_143_0:
if (((ats_sum_ptr_type)arg1)->tag != 0) { goto __ats_lab_144_0 ; }
__ats_lab_143_1:
tmp465 = arg1 ;
break ;

/* branch: __ats_lab_144 */
__ats_lab_144_0:
if (((ats_sum_ptr_type)arg1)->tag != 1) { goto __ats_lab_145_0 ; }
__ats_lab_144_1:
tmp466 = ats_caselptrlab_mac(anairiats_sum_1, arg1, atslab_0) ;
tmp467 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp468 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp466, arg2) ;
tmp469 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp467) ;
if (tmp469) {
tmp465 = ATS_MALLOC(sizeof(anairiats_sum_1)) ;
((ats_sum_ptr_type)tmp465)->tag = 1 ;
ats_selptrset_mac(anairiats_sum_1, tmp465, atslab_0, tmp468) ;
} else {
tmp465 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_145 */
__ats_lab_145_0:
// if (((ats_sum_ptr_type)arg1)->tag != 2) { ats_deadcode_failure_handle () ; }
__ats_lab_145_1:
tmp470 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_0) ;
tmp471 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_1) ;
tmp472 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp473 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag (arg0, tmp470, arg2) ;
tmp474 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag (arg0, tmp471, arg2) ;
tmp475 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp472) ;
if (tmp475) {
tmp465 = ATS_MALLOC(sizeof(anairiats_sum_9)) ;
((ats_sum_ptr_type)tmp465)->tag = 2 ;
ats_selptrset_mac(anairiats_sum_9, tmp465, atslab_0, tmp473) ;
ats_selptrset_mac(anairiats_sum_9, tmp465, atslab_1, tmp474) ;
} else {
tmp465 = arg1 ;
} /* end of [if] */
break ;
} while (0) ;
return (tmp465) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2eff_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 30620(line=1359, offs=3) -- 32168(line=1431, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp476) ;
ATSlocal (ats_ptr_type, tmp477) ;
ATSlocal (ats_int_type, tmp478) ;
ATSlocal (ats_ptr_type, tmp479) ;
ATSlocal (ats_ptr_type, tmp480) ;
ATSlocal (ats_int_type, tmp481) ;
ATSlocal (ats_ptr_type, tmp482) ;
ATSlocal (ats_int_type, tmp483) ;
ATSlocal (ats_ptr_type, tmp484) ;
ATSlocal (ats_ptr_type, tmp485) ;
ATSlocal (ats_int_type, tmp486) ;
ATSlocal (ats_ptr_type, tmp487) ;
ATSlocal (ats_ptr_type, tmp488) ;
ATSlocal (ats_int_type, tmp489) ;
ATSlocal (ats_ptr_type, tmp490) ;
ATSlocal (ats_ptr_type, tmp491) ;
ATSlocal (ats_bool_type, tmp492) ;
ATSlocal (ats_ptr_type, tmp493) ;
ATSlocal (ats_ptr_type, tmp494) ;
ATSlocal (ats_int_type, tmp495) ;
ATSlocal (ats_ptr_type, tmp496) ;
ATSlocal (ats_ptr_type, tmp497) ;
ATSlocal (ats_bool_type, tmp498) ;
ATSlocal (ats_ptr_type, tmp499) ;
ATSlocal (ats_ptr_type, tmp500) ;
ATSlocal (ats_int_type, tmp501) ;
ATSlocal (ats_ptr_type, tmp502) ;
ATSlocal (ats_bool_type, tmp503) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag:
do {
/* branch: __ats_lab_146 */
__ats_lab_146_0:
if (((ats_sum_ptr_type)arg1)->tag != 0) { goto __ats_lab_147_0 ; }
__ats_lab_146_1:
tmp476 = arg1 ;
break ;

/* branch: __ats_lab_147 */
__ats_lab_147_0:
if (((ats_sum_ptr_type)arg1)->tag != 1) { goto __ats_lab_148_0 ; }
__ats_lab_147_1:
tmp476 = arg1 ;
break ;

/* branch: __ats_lab_148 */
__ats_lab_148_0:
if (((ats_sum_ptr_type)arg1)->tag != 2) { goto __ats_lab_149_0 ; }
__ats_lab_148_1:
tmp476 = arg1 ;
break ;

/* branch: __ats_lab_149 */
__ats_lab_149_0:
if (((ats_sum_ptr_type)arg1)->tag != 3) { goto __ats_lab_152_0 ; }
__ats_lab_149_1:
tmp477 = ats_caselptrlab_mac(anairiats_sum_1, arg1, atslab_0) ;
tmp478 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp479 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_find (arg0, tmp477) ;
do {
/* branch: __ats_lab_150 */
__ats_lab_150_0:
if (tmp479 == (ats_sum_ptr_type)0) { goto __ats_lab_151_0 ; }
__ats_lab_150_1:
tmp480 = ats_caselptrlab_mac(anairiats_sum_13, tmp479, atslab_0) ;
ATS_FREE(tmp479) ;
tmp481 = atspre_add_int_int (tmp478, 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp481 ;
tmp476 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2zexp_make_s2exp (tmp480) ;
break ;

/* branch: __ats_lab_151 */
__ats_lab_151_0:
// if (tmp479 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_151_1:
tmp476 = arg1 ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_152 */
__ats_lab_152_0:
if (((ats_sum_ptr_type)arg1)->tag != 4) { goto __ats_lab_153_0 ; }
__ats_lab_152_1:
tmp482 = ats_caselptrlab_mac(anairiats_sum_1, arg1, atslab_0) ;
tmp483 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp484 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_szexp (tmp482) ;
tmp485 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag (arg0, tmp484, arg2) ;
tmp486 = atspre_add_int_int (tmp483, 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp486 ;
tmp476 = tmp485 ;
break ;

/* branch: __ats_lab_153 */
__ats_lab_153_0:
if (((ats_sum_ptr_type)arg1)->tag != 5) { goto __ats_lab_154_0 ; }
__ats_lab_153_1:
tmp476 = arg1 ;
break ;

/* branch: __ats_lab_154 */
__ats_lab_154_0:
if (((ats_sum_ptr_type)arg1)->tag != 6) { goto __ats_lab_155_0 ; }
__ats_lab_154_1:
tmp476 = arg1 ;
break ;

/* branch: __ats_lab_155 */
__ats_lab_155_0:
if (((ats_sum_ptr_type)arg1)->tag != 7) { goto __ats_lab_156_0 ; }
__ats_lab_155_1:
tmp487 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_0) ;
tmp488 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_1) ;
tmp489 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp490 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag (arg0, tmp487, arg2) ;
tmp491 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2zexplst_subst_flag (arg0, tmp488, arg2) ;
tmp492 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp489) ;
if (tmp492) {
tmp476 = ATS_MALLOC(sizeof(anairiats_sum_9)) ;
((ats_sum_ptr_type)tmp476)->tag = 7 ;
ats_selptrset_mac(anairiats_sum_9, tmp476, atslab_0, tmp490) ;
ats_selptrset_mac(anairiats_sum_9, tmp476, atslab_1, tmp491) ;
} else {
tmp476 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_156 */
__ats_lab_156_0:
if (((ats_sum_ptr_type)arg1)->tag != 8) { goto __ats_lab_157_0 ; }
__ats_lab_156_1:
tmp493 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_0) ;
tmp494 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_1) ;
tmp495 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp496 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag (arg0, tmp493, arg2) ;
tmp497 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, tmp494, arg2) ;
tmp498 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp495) ;
if (tmp498) {
tmp476 = ATS_MALLOC(sizeof(anairiats_sum_9)) ;
((ats_sum_ptr_type)tmp476)->tag = 8 ;
ats_selptrset_mac(anairiats_sum_9, tmp476, atslab_0, tmp496) ;
ats_selptrset_mac(anairiats_sum_9, tmp476, atslab_1, tmp497) ;
} else {
tmp476 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_157 */
__ats_lab_157_0:
if (((ats_sum_ptr_type)arg1)->tag != 9) { goto __ats_lab_158_0 ; }
__ats_lab_157_1:
tmp499 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_0) ;
tmp500 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_1) ;
tmp501 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp502 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2zexplst_subst_flag (arg0, tmp500, arg2) ;
tmp503 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp501) ;
if (tmp503) {
tmp476 = ATS_MALLOC(sizeof(anairiats_sum_9)) ;
((ats_sum_ptr_type)tmp476)->tag = 9 ;
ats_selptrset_mac(anairiats_sum_9, tmp476, atslab_0, tmp499) ;
ats_selptrset_mac(anairiats_sum_9, tmp476, atslab_1, tmp502) ;
} else {
tmp476 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_158 */
__ats_lab_158_0:
if (((ats_sum_ptr_type)arg1)->tag != 10) { goto __ats_lab_159_0 ; }
__ats_lab_158_1:
tmp476 = arg1 ;
break ;

/* branch: __ats_lab_159 */
__ats_lab_159_0:
// if (((ats_sum_ptr_type)arg1)->tag != 11) { ats_deadcode_failure_handle () ; }
__ats_lab_159_1:
tmp476 = arg1 ;
break ;
} while (0) ;
return (tmp476) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 32254(line=1437, offs=3) -- 32588(line=1446, offs=31)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2zexplst_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp504) ;
ATSlocal (ats_ptr_type, tmp505) ;
ATSlocal (ats_ptr_type, tmp506) ;
ATSlocal (ats_int_type, tmp507) ;
ATSlocal (ats_ptr_type, tmp508) ;
ATSlocal (ats_ptr_type, tmp509) ;
ATSlocal (ats_bool_type, tmp510) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2zexplst_subst_flag:
do {
/* branch: __ats_lab_160 */
__ats_lab_160_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_161_0 ; }
__ats_lab_160_1:
tmp505 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp506 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp507 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp508 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag (arg0, tmp505, arg2) ;
tmp509 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2zexplst_subst_flag (arg0, tmp506, arg2) ;
tmp510 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp507) ;
if (tmp510) {
tmp504 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp504, atslab_0, tmp505) ;
ats_selptrset_mac(anairiats_sum_4, tmp504, atslab_1, tmp506) ;
} else {
tmp504 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_161 */
__ats_lab_161_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_161_1:
tmp504 = (ats_sum_ptr_type)0 ;
break ;
} while (0) ;
return (tmp504) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2zexplst_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 32682(line=1453, offs=3) -- 33158(line=1466, offs=39)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2zexplst_subst_flag (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp511) ;
ATSlocal (ats_ptr_type, tmp512) ;
ATSlocal (ats_ptr_type, tmp513) ;
ATSlocal (ats_ptr_type, tmp514) ;
ATSlocal (ats_ptr_type, tmp515) ;
ATSlocal (ats_int_type, tmp516) ;
ATSlocal (ats_ptr_type, tmp517) ;
ATSlocal (ats_ptr_type, tmp518) ;
ATSlocal (ats_bool_type, tmp519) ;
ATSlocal (ats_ptr_type, tmp520) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2zexplst_subst_flag:
do {
/* branch: __ats_lab_162 */
__ats_lab_162_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_163_0 ; }
__ats_lab_162_1:
tmp512 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp513 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;

tmp514 = ats_caselptrlab_mac(anairiats_sum_4, tmp512, atslab_0) ;
tmp515 = ats_caselptrlab_mac(anairiats_sum_4, tmp512, atslab_1) ;
tmp516 = ats_ptrget_mac(ats_int_type, arg2) ;
tmp517 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2zexp_subst_flag (arg0, tmp515, arg2) ;
tmp518 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2zexplst_subst_flag (arg0, tmp513, arg2) ;
tmp519 = atspre_gt_int_int (ats_ptrget_mac(ats_int_type, arg2), tmp516) ;
if (tmp519) {
tmp520 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp520, atslab_0, tmp514) ;
ats_selptrset_mac(anairiats_sum_4, tmp520, atslab_1, tmp517) ;
tmp511 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp511, atslab_0, tmp520) ;
ats_selptrset_mac(anairiats_sum_4, tmp511, atslab_1, tmp518) ;
} else {
tmp511 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_163 */
__ats_lab_163_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_163_1:
tmp511 = (ats_sum_ptr_type)0 ;
break ;
} while (0) ;
return (tmp511) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__labs2zexplst_subst_flag] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 33239(line=1472, offs=13) -- 33316(line=1474, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp521) ;
ATSlocal (ats_int_type, tmp522) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst:
/* ats_int_type tmp522 ; */
tmp522 = 0 ;
tmp521 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, arg1, (&tmp522)) ;
return (tmp521) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 33388(line=1479, offs=16) -- 33470(line=1481, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp523) ;
ATSlocal (ats_int_type, tmp524) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst:
/* ats_int_type tmp524 ; */
tmp524 = 0 ;
tmp523 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_flag (arg0, arg1, (&tmp524)) ;
return (tmp523) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 33529(line=1485, offs=3) -- 33777(line=1492, offs=34)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_vt (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp525) ;
ATSlocal (ats_ptr_type, tmp526) ;
ATSlocal (ats_ptr_type, tmp527) ;
ATSlocal (ats_ptr_type, tmp528) ;
ATSlocal (ats_ptr_type, tmp529) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_vt:
do {
/* branch: __ats_lab_164 */
__ats_lab_164_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_165_0 ; }
__ats_lab_164_1:
tmp526 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_0) ;
tmp527 = ats_caselptrlab_mac(anairiats_sum_4, arg1, atslab_1) ;
tmp528 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst (arg0, tmp526) ;
tmp529 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_vt (arg0, tmp527) ;
tmp525 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp525, atslab_0, tmp528) ;
ats_selptrset_mac(anairiats_sum_4, tmp525, atslab_1, tmp529) ;
break ;

/* branch: __ats_lab_165 */
__ats_lab_165_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_165_1:
tmp525 = (ats_sum_ptr_type)0 ;
break ;
} while (0) ;
return (tmp525) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_subst_vt] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 33839(line=1497, offs=3) -- 33926(line=1499, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explstlst_subst (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp530) ;
ATSlocal (ats_int_type, tmp531) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explstlst_subst:
/* ats_int_type tmp531 ; */
tmp531 = 0 ;
tmp530 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__s2explstlst_subst_flag (arg0, arg1, (&tmp531)) ;
return (tmp530) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explstlst_subst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 34006(line=1505, offs=3) -- 34221(line=1513, offs=19)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2expopt_subst (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp532) ;
ATSlocal (ats_ptr_type, tmp533) ;
ATSlocal (ats_int_type, tmp534) ;
ATSlocal (ats_ptr_type, tmp535) ;
ATSlocal (ats_bool_type, tmp536) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2expopt_subst:
do {
/* branch: __ats_lab_166 */
__ats_lab_166_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_167_0 ; }
__ats_lab_166_1:
tmp533 = ats_caselptrlab_mac(anairiats_sum_13, arg1, atslab_0) ;
/* ats_int_type tmp534 ; */
tmp534 = 0 ;
tmp535 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst_flag (arg0, tmp533, (&tmp534)) ;
tmp536 = atspre_gt_int_int (tmp534, 0) ;
if (tmp536) {
tmp532 = ATS_MALLOC(sizeof(anairiats_sum_13)) ;
ats_selptrset_mac(anairiats_sum_13, tmp532, atslab_0, tmp535) ;
} else {
tmp532 = arg1 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_167 */
__ats_lab_167_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_167_1:
tmp532 = arg1 ;
break ;
} while (0) ;
return (tmp532) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2expopt_subst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 34295(line=1520, offs=3) -- 34490(line=1527, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_alpha (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp537) ;
ATSlocal (ats_ptr_type, tmp538) ;
// ATSlocal_void (tmp539) ;
ATSlocal (ats_ptr_type, tmp540) ;
ATSlocal (ats_ptr_type, tmp541) ;
// ATSlocal_void (tmp542) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_alpha:
/* ats_ptr_type tmp538 ; */
tmp538 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_make_nil () ;
tmp540 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_var (arg1) ;
/* tmp539 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_add ((&tmp538), arg0, tmp540) ;
tmp541 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_subst (tmp538, arg2) ;
/* tmp542 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__stasub_free (tmp538) ;
tmp537 = tmp541 ;
return (tmp537) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_alpha] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 34576(line=1532, offs=7) -- 35126(line=1546, offs=27)
*/
ATSstaticdec()
ats_ptr_type
aux_76 (ats_ptr_type env0, ats_ptr_type env1, ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp544) ;
ATSlocal (ats_ptr_type, tmp545) ;
ATSlocal (ats_ptr_type, tmp546) ;
ATSlocal (ats_int_type, tmp547) ;
ATSlocal (ats_ptr_type, tmp548) ;
ATSlocal (ats_bool_type, tmp550) ;
ATSlocal (ats_int_type, tmp551) ;
ATSlocal (ats_ptr_type, tmp552) ;
ATSlocal (ats_bool_type, tmp554) ;
ATSlocal (ats_int_type, tmp555) ;
ATSlocal (ats_bool_type, tmp556) ;

__ats_lab_aux_76:
do {
/* branch: __ats_lab_168 */
__ats_lab_168_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_169_0 ; }
__ats_lab_168_1:
tmp545 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_0) ;
tmp546 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;
/* ats_int_type tmp547 ; */
tmp547 = 0 ;
tmp548 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_alpha (env0, env1, tmp545) ;
tmp550 = atspre_pneq (ats_castfn_mac(ats_ptr_type, tmp545), ats_castfn_mac(ats_ptr_type, tmp548)) ;
if (tmp550) {
tmp551 = atspre_iadd (tmp547, 1) ;
tmp547 = tmp551 ;
} else {
/* empty */
} /* end of [if] */
tmp552 = aux_76 (env0, env1, tmp546) ;
tmp554 = atspre_pneq (ats_castfn_mac(ats_ptr_type, tmp546), ats_castfn_mac(ats_ptr_type, tmp552)) ;
if (tmp554) {
tmp555 = atspre_add_int_int (tmp547, 1) ;
tmp547 = tmp555 ;
} else {
/* empty */
} /* end of [if] */
tmp556 = atspre_gt_int_int (tmp547, 0) ;
if (tmp556) {
tmp544 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp544, atslab_0, tmp548) ;
ats_selptrset_mac(anairiats_sum_4, tmp544, atslab_1, tmp552) ;
} else {
tmp544 = arg0 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_169 */
__ats_lab_169_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_169_1:
tmp544 = arg0 ;
break ;
} while (0) ;
return (tmp544) ;
} /* end of [aux_76] */

typedef struct {
ats_fun_ptr_type closure_fun ;
ats_ptr_type closure_env_0 ;
ats_ptr_type closure_env_1 ;
} aux_76_closure_type ;

ats_ptr_type
aux_76_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0) {
return aux_76 (((aux_76_closure_type*)cloptr)->closure_env_0, ((aux_76_closure_type*)cloptr)->closure_env_1, arg0) ;
} /* end of function */

ATSinline()
ats_void_type
aux_76_closure_init (aux_76_closure_type *p_clo, ats_ptr_type env0, ats_ptr_type env1) {
p_clo->closure_fun = (ats_fun_ptr_type)&aux_76_clofun ;
p_clo->closure_env_0 = env0 ;
p_clo->closure_env_1 = env1 ;
return ;
} /* end of function */

ats_clo_ptr_type
aux_76_closure_make (ats_ptr_type env0, ats_ptr_type env1) {
aux_76_closure_type *p_clo = ATS_MALLOC(sizeof(aux_76_closure_type)) ;
aux_76_closure_init (p_clo, env0, env1) ;
return (ats_clo_ptr_type)p_clo ;
} /* end of function */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util1.dats: 34543(line=1531, offs=3) -- 35164(line=1550, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_alpha (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp543) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_alpha:
tmp543 = aux_76 (arg0, arg1, arg2) ;
return (tmp543) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2explst_alpha] */

/* static load function */

// extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_atspre_2edats__staload (void) ;
// extern ats_void_type ATS_2d0_2e2_2e12_2prelude_2SATS_2unsafe_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_label_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__staload (void) ;

ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__staload () {
static int _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__staload_flag = 0 ;
if (_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__staload_flag) return ;
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__staload_flag = 1 ;

// _2tmp_2ATS_2dPostiats_2src_2pats_atspre_2edats__staload () ;
// ATS_2d0_2e2_2e12_2prelude_2SATS_2unsafe_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_label_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_effect_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__staload () ;

return ;
} /* staload function */

/* dynamic load function */

// dynload flag declaration
extern ats_int_type _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__dynload_flag ;

ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__dynload () {
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__dynload_flag = 1 ;
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util1_2edats__staload () ;

#ifdef _ATS_PROOFCHECK
ATS_2d0_2e2_2e12_2prelude_2SATS_2list_2esats__list_length_is_nonnegative_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2SATS_2list_vt_2esats__list_vt_length_is_nonnegative_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2SATS_2array_2esats__array_v_takeout2_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2list_vt_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____copy_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____free_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2prelude_2DATS_2array_2edats____assert_prfck () ;
#endif /* _ATS_PROOFCHECK */

/* marking static variables for GC */

/* marking external values for GC */

/* code for dynamic loading */
return ;
} /* end of [dynload function] */

/* external codes at mid */
/* external codes at bot */

/* ****** ****** */

/* end of [pats_staexp2_util1_dats.c] */
