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

/* 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 {
ats_ptr_type atslab_s2exp_srt ;
ats_ptr_type atslab_s2exp_node ;
} anairiats_rec_1 ;

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

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

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

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_5 ;

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

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

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

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

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

typedef struct {
ats_ptr_type atslab_0 ;
} anairiats_sum_11 ;

typedef
struct {
ats_int_type atslab_0 ;
ats_ptr_type atslab_1 ;
ats_ptr_type atslab_2 ;
ats_ptr_type atslab_3 ;
} anairiats_rec_12 ;

/* 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, _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) ;

/* external dynamic constant declarations */
ATSextern_fun(ats_void_type, atspre_vbox_make_view_ptr) (ats_ptr_type) ;
ATSextern_fun(ats_int_type, atspre_add_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_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_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_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_get_sVarset) (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_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_nil) () ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_add) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_delist) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_union) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_srt) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_link) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_set_link) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_sVarlst) (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_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_errexp) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_isbot) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_fun_isbot) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2cst) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2var) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2Var) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explstlst) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lab) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lablst) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2exp) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2explst) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst) (ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_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 */
/* sum constructor declarations */
/* exn constructor declarations */
/* global dynamic (non-functional) constant declarations */
/* internal function declarations */
static
ats_void_type aux_s2exp_0 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_s2explst_1 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_s2explstlst_2 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_labs2explst_3 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_wths2explst_4 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_s2Var_5 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_s2exp_exiuni_6 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ref_type arg3) ;
static
ats_void_type aux_s2lab_7 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_s2lablst_8 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type aux_s2eff_9 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_bool_type loop_11 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_bool_type s2Var_occurcheck_s2cst_12 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_bool_type s2Var_occurcheck_s2var_13 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_void_type auxlst_14 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5, ats_ptr_type arg6) ;
static
ats_bool_type ismem_28 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_bool_type list_is_nil_01294_ (ats_ptr_type arg0) ;

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

/* function implementations */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 1555(line=49, offs=1) -- 4286(line=168, offs=4)
*/
ATSstaticdec()
ats_void_type
aux_s2exp_0 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp0) ;
ATSlocal (ats_ptr_type, tmp1) ;
ATSlocal (ats_ptr_type, tmp2) ;
ATSlocal (ats_ptr_type, tmp3) ;
ATSlocal (ats_ptr_type, tmp4) ;
ATSlocal (ats_ptr_type, tmp5) ;
ATSlocal (ats_ptr_type, tmp6) ;
ATSlocal (ats_ptr_type, tmp7) ;
ATSlocal (ats_ptr_type, tmp8) ;
ATSlocal (ats_ptr_type, tmp9) ;
// ATSlocal_void (tmp10) ;
ATSlocal (ats_ptr_type, tmp11) ;
ATSlocal (ats_ptr_type, tmp12) ;
// ATSlocal_void (tmp13) ;
ATSlocal (ats_ptr_type, tmp14) ;
ATSlocal (ats_ptr_type, tmp15) ;
ATSlocal (ats_ptr_type, tmp16) ;
ATSlocal (ats_ptr_type, tmp17) ;
// ATSlocal_void (tmp18) ;
ATSlocal (ats_ptr_type, tmp19) ;
ATSlocal (ats_ptr_type, tmp20) ;
ATSlocal (ats_ptr_type, tmp21) ;
// ATSlocal_void (tmp22) ;
// ATSlocal_void (tmp23) ;
ATSlocal (ats_ptr_type, tmp24) ;
ATSlocal (ats_ptr_type, tmp25) ;
// ATSlocal_void (tmp26) ;
ATSlocal (ats_ptr_type, tmp27) ;
ATSlocal (ats_ptr_type, tmp28) ;
ATSlocal (ats_ptr_type, tmp29) ;
// ATSlocal_void (tmp30) ;
ATSlocal (ats_ptr_type, tmp31) ;
ATSlocal (ats_ptr_type, tmp32) ;
ATSlocal (ats_ptr_type, tmp33) ;
ATSlocal (ats_ptr_type, tmp34) ;
ATSlocal (ats_ptr_type, tmp35) ;
// ATSlocal_void (tmp36) ;
// ATSlocal_void (tmp37) ;
ATSlocal (ats_ptr_type, tmp38) ;
ATSlocal (ats_ptr_type, tmp39) ;
// ATSlocal_void (tmp40) ;
ATSlocal (ats_ptr_type, tmp41) ;
ATSlocal (ats_ptr_type, tmp42) ;
// ATSlocal_void (tmp43) ;
ATSlocal (ats_ptr_type, tmp44) ;
ATSlocal (ats_ptr_type, tmp45) ;
ATSlocal (ats_ptr_type, tmp46) ;
ATSlocal (ats_ptr_type, tmp47) ;
// ATSlocal_void (tmp48) ;
ATSlocal (ats_ptr_type, tmp49) ;
ATSlocal (ats_ptr_type, tmp50) ;
ATSlocal (ats_ptr_type, tmp51) ;
ATSlocal (ats_ptr_type, tmp52) ;
ATSlocal (ats_ptr_type, tmp53) ;
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_void (tmp61) ;

__ats_lab_aux_s2exp_0:
tmp1 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_1, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_0 */
__ats_lab_0_0:
if (((ats_sum_ptr_type)tmp1)->tag != 0) { goto __ats_lab_1_0 ; }
__ats_lab_0_1:
break ;

/* branch: __ats_lab_1 */
__ats_lab_1_0:
if (((ats_sum_ptr_type)tmp1)->tag != 1) { goto __ats_lab_2_0 ; }
__ats_lab_1_1:
break ;

/* branch: __ats_lab_2 */
__ats_lab_2_0:
if (((ats_sum_ptr_type)tmp1)->tag != 2) { goto __ats_lab_3_0 ; }
__ats_lab_2_1:
break ;

/* branch: __ats_lab_3 */
__ats_lab_3_0:
if (((ats_sum_ptr_type)tmp1)->tag != 3) { goto __ats_lab_4_0 ; }
__ats_lab_3_1:
break ;

/* branch: __ats_lab_4 */
__ats_lab_4_0:
if (((ats_sum_ptr_type)tmp1)->tag != 4) { goto __ats_lab_5_0 ; }
__ats_lab_4_1:
break ;

/* branch: __ats_lab_5 */
__ats_lab_5_0:
if (((ats_sum_ptr_type)tmp1)->tag != 5) { goto __ats_lab_6_0 ; }
__ats_lab_5_1:
tmp2 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp0 = */ aux_s2explstlst_2 (tmp2, arg1) ;
break ;

/* branch: __ats_lab_6 */
__ats_lab_6_0:
if (((ats_sum_ptr_type)tmp1)->tag != 6) { goto __ats_lab_7_0 ; }
__ats_lab_6_1:
tmp3 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp0 = */ aux_s2explstlst_2 (tmp3, arg1) ;
break ;

/* branch: __ats_lab_7 */
__ats_lab_7_0:
if (((ats_sum_ptr_type)tmp1)->tag != 7) { goto __ats_lab_8_0 ; }
__ats_lab_7_1:
tmp4 = ats_caselptrlab_mac(anairiats_sum_3, tmp1, atslab_0) ;
tmp5 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_add (ats_ptrget_mac(ats_ptr_type, arg1), tmp4) ;
ats_ptrget_mac(ats_ptr_type, arg1) = tmp5 ;
break ;

/* branch: __ats_lab_8 */
__ats_lab_8_0:
if (((ats_sum_ptr_type)tmp1)->tag != 8) { goto __ats_lab_9_0 ; }
__ats_lab_8_1:
tmp6 = ats_caselptrlab_mac(anairiats_sum_3, tmp1, atslab_0) ;
/* tmp0 = */ aux_s2Var_5 (tmp6, arg1) ;
break ;

/* branch: __ats_lab_9 */
__ats_lab_9_0:
if (((ats_sum_ptr_type)tmp1)->tag != 9) { goto __ats_lab_10_0 ; }
__ats_lab_9_1:
break ;

/* branch: __ats_lab_10 */
__ats_lab_10_0:
if (((ats_sum_ptr_type)tmp1)->tag != 10) { goto __ats_lab_11_0 ; }
__ats_lab_10_1:
tmp7 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp0 = */ aux_s2explst_1 (tmp7, arg1) ;
break ;

/* branch: __ats_lab_11 */
__ats_lab_11_0:
if (((ats_sum_ptr_type)tmp1)->tag != 11) { goto __ats_lab_12_0 ; }
__ats_lab_11_1:
tmp8 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_1) ;
tmp9 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_2) ;
/* tmp10 = */ aux_s2exp_0 (tmp8, arg1) ;
/* tmp0 = */ aux_s2explst_1 (tmp9, arg1) ;
break ;

/* branch: __ats_lab_12 */
__ats_lab_12_0:
if (((ats_sum_ptr_type)tmp1)->tag != 12) { goto __ats_lab_13_0 ; }
__ats_lab_12_1:
tmp11 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_0) ;
tmp12 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp13 = */ aux_s2exp_0 (tmp11, arg1) ;
arg0 = tmp12 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_13 */
__ats_lab_13_0:
if (((ats_sum_ptr_type)tmp1)->tag != 14) { goto __ats_lab_14_0 ; }
__ats_lab_13_1:
tmp14 = ats_caselptrlab_mac(anairiats_sum_3, tmp1, atslab_0) ;
/* tmp0 = */ aux_s2eff_9 (tmp14, arg1) ;
break ;

/* branch: __ats_lab_14 */
__ats_lab_14_0:
if (((ats_sum_ptr_type)tmp1)->tag != 13) { goto __ats_lab_15_0 ; }
__ats_lab_14_1:
tmp15 = ats_caselptrlab_mac(anairiats_sum_3, tmp1, atslab_0) ;
arg0 = tmp15 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_15 */
__ats_lab_15_0:
if (((ats_sum_ptr_type)tmp1)->tag != 15) { goto __ats_lab_16_0 ; }
__ats_lab_15_1:
tmp16 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_0) ;
tmp17 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp18 = */ aux_s2exp_0 (tmp16, arg1) ;
arg0 = tmp17 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_16 */
__ats_lab_16_0:
if (((ats_sum_ptr_type)tmp1)->tag != 16) { goto __ats_lab_17_0 ; }
__ats_lab_16_1:
tmp19 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_0) ;
tmp20 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_1) ;
tmp21 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_2) ;
/* tmp22 = */ aux_s2exp_0 (tmp19, arg1) ;
/* tmp23 = */ aux_s2exp_0 (tmp20, arg1) ;
/* tmp0 = */ aux_s2lablst_8 (tmp21, arg1) ;
break ;

/* branch: __ats_lab_17 */
__ats_lab_17_0:
if (((ats_sum_ptr_type)tmp1)->tag != 17) { goto __ats_lab_18_0 ; }
__ats_lab_17_1:
tmp24 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_0) ;
tmp25 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp26 = */ aux_s2exp_0 (tmp24, arg1) ;
/* tmp0 = */ aux_s2explst_1 (tmp25, arg1) ;
break ;

/* branch: __ats_lab_18 */
__ats_lab_18_0:
if (((ats_sum_ptr_type)tmp1)->tag != 18) { goto __ats_lab_19_0 ; }
__ats_lab_18_1:
tmp27 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_0) ;
tmp28 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* ats_ptr_type tmp29 ; */
tmp29 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_nil () ;
/* tmp30 = */ aux_s2exp_0 (tmp28, (&tmp29)) ;
tmp31 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_delist (tmp29, tmp27) ;
tmp29 = tmp31 ;
tmp32 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_union (ats_ptrget_mac(ats_ptr_type, arg1), tmp29) ;
ats_ptrget_mac(ats_ptr_type, arg1) = tmp32 ;
break ;

/* branch: __ats_lab_19 */
__ats_lab_19_0:
if (((ats_sum_ptr_type)tmp1)->tag != 19) { goto __ats_lab_20_0 ; }
__ats_lab_19_1:
tmp33 = ats_caselptrlab_mac(anairiats_sum_5, tmp1, atslab_2) ;
tmp34 = ats_caselptrlab_mac(anairiats_sum_5, tmp1, atslab_4) ;
tmp35 = ats_caselptrlab_mac(anairiats_sum_5, tmp1, atslab_5) ;
/* tmp36 = */ aux_s2eff_9 (tmp33, arg1) ;
/* tmp37 = */ aux_s2explst_1 (tmp34, arg1) ;
arg0 = tmp35 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_20 */
__ats_lab_20_0:
if (((ats_sum_ptr_type)tmp1)->tag != 20) { goto __ats_lab_21_0 ; }
__ats_lab_20_1:
tmp38 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_1) ;
tmp39 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_2) ;
/* tmp40 = */ aux_s2explst_1 (tmp38, arg1) ;
arg0 = tmp39 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_21 */
__ats_lab_21_0:
if (((ats_sum_ptr_type)tmp1)->tag != 21) { goto __ats_lab_22_0 ; }
__ats_lab_21_1:
tmp41 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_0) ;
tmp42 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp43 = */ aux_s2explst_1 (tmp41, arg1) ;
/* tmp0 = */ aux_s2explst_1 (tmp42, arg1) ;
break ;

/* branch: __ats_lab_22 */
__ats_lab_22_0:
if (((ats_sum_ptr_type)tmp1)->tag != 22) { goto __ats_lab_23_0 ; }
__ats_lab_22_1:
tmp44 = ats_caselptrlab_mac(anairiats_sum_6, tmp1, atslab_1) ;
arg0 = tmp44 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_23 */
__ats_lab_23_0:
if (((ats_sum_ptr_type)tmp1)->tag != 23) { goto __ats_lab_24_0 ; }
__ats_lab_23_1:
tmp45 = ats_caselptrlab_mac(anairiats_sum_3, tmp1, atslab_0) ;
arg0 = tmp45 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_24 */
__ats_lab_24_0:
if (((ats_sum_ptr_type)tmp1)->tag != 24) { goto __ats_lab_25_0 ; }
__ats_lab_24_1:
tmp46 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_0) ;
tmp47 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp48 = */ aux_s2exp_0 (tmp46, arg1) ;
/* tmp0 = */ aux_s2explst_1 (tmp47, arg1) ;
break ;

/* branch: __ats_lab_25 */
__ats_lab_25_0:
if (((ats_sum_ptr_type)tmp1)->tag != 25) { goto __ats_lab_26_0 ; }
__ats_lab_25_1:
tmp49 = ats_caselptrlab_mac(anairiats_sum_7, tmp1, atslab_2) ;
/* tmp0 = */ aux_labs2explst_3 (tmp49, arg1) ;
break ;

/* branch: __ats_lab_26 */
__ats_lab_26_0:
if (((ats_sum_ptr_type)tmp1)->tag != 26) { goto __ats_lab_27_0 ; }
__ats_lab_26_1:
tmp50 = ats_caselptrlab_mac(anairiats_sum_3, tmp1, atslab_0) ;
arg0 = tmp50 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_27 */
__ats_lab_27_0:
if (((ats_sum_ptr_type)tmp1)->tag != 29) { goto __ats_lab_28_0 ; }
__ats_lab_27_1:
tmp51 = ats_caselptrlab_mac(anairiats_sum_6, tmp1, atslab_1) ;
arg0 = tmp51 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_28 */
__ats_lab_28_0:
if (((ats_sum_ptr_type)tmp1)->tag != 27) { goto __ats_lab_29_0 ; }
__ats_lab_28_1:
tmp52 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_0) ;
tmp53 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_1) ;
tmp54 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_2) ;
/* tmp0 = */ aux_s2exp_exiuni_6 (tmp52, tmp53, tmp54, arg1) ;
break ;

/* branch: __ats_lab_29 */
__ats_lab_29_0:
if (((ats_sum_ptr_type)tmp1)->tag != 28) { goto __ats_lab_30_0 ; }
__ats_lab_29_1:
tmp55 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_0) ;
tmp56 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_1) ;
tmp57 = ats_caselptrlab_mac(anairiats_sum_4, tmp1, atslab_2) ;
/* tmp0 = */ aux_s2exp_exiuni_6 (tmp55, tmp56, tmp57, arg1) ;
break ;

/* branch: __ats_lab_30 */
__ats_lab_30_0:
if (((ats_sum_ptr_type)tmp1)->tag != 30) { goto __ats_lab_31_0 ; }
__ats_lab_30_1:
tmp58 = ats_caselptrlab_mac(anairiats_sum_3, tmp1, atslab_0) ;
arg0 = tmp58 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2exp_0 ; // tail call
break ;

/* branch: __ats_lab_31 */
__ats_lab_31_0:
if (((ats_sum_ptr_type)tmp1)->tag != 31) { goto __ats_lab_32_0 ; }
__ats_lab_31_1:
tmp59 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_0) ;
tmp60 = ats_caselptrlab_mac(anairiats_sum_2, tmp1, atslab_1) ;
/* tmp61 = */ aux_s2exp_0 (tmp59, arg1) ;
/* tmp0 = */ aux_wths2explst_4 (tmp60, arg1) ;
break ;

/* branch: __ats_lab_32 */
__ats_lab_32_0:
// if (((ats_sum_ptr_type)tmp1)->tag != 32) { ats_deadcode_failure_handle () ; }
__ats_lab_32_1:
break ;
} while (0) ;
return /* (tmp0) */ ;
} /* end of [aux_s2exp_0] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 4314(line=171, offs=1) -- 4525(line=178, offs=22)
*/
ATSstaticdec()
ats_void_type
aux_s2explst_1 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp62) ;
ATSlocal (ats_ptr_type, tmp63) ;
ATSlocal (ats_ptr_type, tmp64) ;
// ATSlocal_void (tmp65) ;

__ats_lab_aux_s2explst_1:
do {
/* branch: __ats_lab_33 */
__ats_lab_33_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_34_0 ; }
__ats_lab_33_1:
tmp63 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp64 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
/* tmp65 = */ aux_s2exp_0 (tmp63, arg1) ;
arg0 = tmp64 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2explst_1 ; // tail call
break ;

/* branch: __ats_lab_34 */
__ats_lab_34_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_34_1:
break ;
} while (0) ;
return /* (tmp62) */ ;
} /* end of [aux_s2explst_1] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 4556(line=182, offs=1) -- 4785(line=189, offs=22)
*/
ATSstaticdec()
ats_void_type
aux_s2explstlst_2 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp66) ;
ATSlocal (ats_ptr_type, tmp67) ;
ATSlocal (ats_ptr_type, tmp68) ;
// ATSlocal_void (tmp69) ;

__ats_lab_aux_s2explstlst_2:
do {
/* branch: __ats_lab_35 */
__ats_lab_35_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_36_0 ; }
__ats_lab_35_1:
tmp67 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp68 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
/* tmp69 = */ aux_s2explst_1 (tmp67, arg1) ;
arg0 = tmp68 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2explstlst_2 ; // tail call
break ;

/* branch: __ats_lab_36 */
__ats_lab_36_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_36_1:
break ;
} while (0) ;
return /* (tmp66) */ ;
} /* end of [aux_s2explstlst_2] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 4819(line=193, offs=1) -- 5107(line=203, offs=22)
*/
ATSstaticdec()
ats_void_type
aux_labs2explst_3 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp70) ;
ATSlocal (ats_ptr_type, tmp71) ;
ATSlocal (ats_ptr_type, tmp72) ;
ATSlocal (ats_ptr_type, tmp73) ;
// ATSlocal_void (tmp74) ;

__ats_lab_aux_labs2explst_3:
do {
/* branch: __ats_lab_37 */
__ats_lab_37_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_38_0 ; }
__ats_lab_37_1:
tmp71 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp72 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;

tmp73 = ats_caselptrlab_mac(anairiats_sum_9, tmp71, atslab_2) ;
/* tmp74 = */ aux_s2exp_0 (tmp73, arg1) ;
arg0 = tmp72 ;
arg1 = arg1 ;
goto __ats_lab_aux_labs2explst_3 ; // tail call
break ;

/* branch: __ats_lab_38 */
__ats_lab_38_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_38_1:
break ;
} while (0) ;
return /* (tmp70) */ ;
} /* end of [aux_labs2explst_3] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 5141(line=207, offs=1) -- 5631(line=223, offs=2)
*/
ATSstaticdec()
ats_void_type
aux_wths2explst_4 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp75) ;
ATSlocal (ats_ptr_type, tmp76) ;
ATSlocal (ats_ptr_type, tmp77) ;
// ATSlocal_void (tmp78) ;
ATSlocal (ats_ptr_type, tmp79) ;
ATSlocal (ats_ptr_type, tmp80) ;
// ATSlocal_void (tmp81) ;
ATSlocal (ats_ptr_type, tmp82) ;

__ats_lab_aux_wths2explst_4:
do {
/* branch: __ats_lab_39 */
__ats_lab_39_0:
if (((ats_sum_ptr_type)arg0)->tag != 0) { goto __ats_lab_40_0 ; }
__ats_lab_39_1:
break ;

/* branch: __ats_lab_40 */
__ats_lab_40_0:
if (((ats_sum_ptr_type)arg0)->tag != 2) { goto __ats_lab_41_0 ; }
__ats_lab_40_1:
tmp76 = ats_caselptrlab_mac(anairiats_sum_10, arg0, atslab_1) ;
tmp77 = ats_caselptrlab_mac(anairiats_sum_10, arg0, atslab_2) ;
/* tmp78 = */ aux_s2exp_0 (tmp76, arg1) ;
arg0 = tmp77 ;
arg1 = arg1 ;
goto __ats_lab_aux_wths2explst_4 ; // tail call
break ;

/* branch: __ats_lab_41 */
__ats_lab_41_0:
if (((ats_sum_ptr_type)arg0)->tag != 3) { goto __ats_lab_42_0 ; }
__ats_lab_41_1:
tmp79 = ats_caselptrlab_mac(anairiats_sum_10, arg0, atslab_1) ;
tmp80 = ats_caselptrlab_mac(anairiats_sum_10, arg0, atslab_2) ;
/* tmp81 = */ aux_s2exp_0 (tmp79, arg1) ;
arg0 = tmp80 ;
arg1 = arg1 ;
goto __ats_lab_aux_wths2explst_4 ; // tail call
break ;

/* branch: __ats_lab_42 */
__ats_lab_42_0:
// if (((ats_sum_ptr_type)arg0)->tag != 1) { ats_deadcode_failure_handle () ; }
__ats_lab_42_1:
tmp82 = ats_caselptrlab_mac(anairiats_sum_3, arg0, atslab_0) ;
arg0 = tmp82 ;
arg1 = arg1 ;
goto __ats_lab_aux_wths2explst_4 ; // tail call
break ;
} while (0) ;
return /* (tmp75) */ ;
} /* end of [aux_wths2explst_4] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 5665(line=226, offs=1) -- 5951(line=239, offs=4)
*/
ATSstaticdec()
ats_void_type
aux_s2Var_5 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp83) ;
ATSlocal (ats_ptr_type, tmp84) ;
ATSlocal (ats_ptr_type, tmp85) ;
ATSlocal (ats_ptr_type, tmp86) ;
ATSlocal (ats_ptr_type, tmp87) ;
ATSlocal (ats_ptr_type, tmp88) ;

__ats_lab_aux_s2Var_5:
tmp84 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_link (arg0) ;
do {
/* branch: __ats_lab_43 */
__ats_lab_43_0:
if (tmp84 == (ats_sum_ptr_type)0) { goto __ats_lab_44_0 ; }
__ats_lab_43_1:
tmp85 = ats_caselptrlab_mac(anairiats_sum_11, tmp84, atslab_0) ;
/* tmp83 = */ aux_s2exp_0 (tmp85, arg1) ;
break ;

/* branch: __ats_lab_44 */
__ats_lab_44_0:
// if (tmp84 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_44_1:
tmp86 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_srt (arg0) ;
tmp88 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2exp_errexp (tmp86) ;
tmp87 = ATS_MALLOC(sizeof(anairiats_sum_11)) ;
ats_selptrset_mac(anairiats_sum_11, tmp87, atslab_0, tmp88) ;
/* tmp83 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_set_link (arg0, tmp87) ;
break ;
} while (0) ;
return /* (tmp83) */ ;
} /* end of [aux_s2Var_5] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 5979(line=242, offs=1) -- 6288(line=255, offs=4)
*/
ATSstaticdec()
ats_void_type
aux_s2exp_exiuni_6 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_ref_type arg3) {
/* local vardec */
// ATSlocal_void (tmp89) ;
ATSlocal (ats_ptr_type, tmp90) ;
// ATSlocal_void (tmp91) ;
// ATSlocal_void (tmp92) ;
ATSlocal (ats_ptr_type, tmp93) ;
ATSlocal (ats_ptr_type, tmp94) ;

__ats_lab_aux_s2exp_exiuni_6:
/* ats_ptr_type tmp90 ; */
tmp90 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_nil () ;
/* tmp91 = */ aux_s2explst_1 (arg1, (&tmp90)) ;
/* tmp92 = */ aux_s2exp_0 (arg2, (&tmp90)) ;
tmp93 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_delist (tmp90, arg0) ;
tmp90 = tmp93 ;
tmp94 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_union (ats_ptrget_mac(ats_ptr_type, arg3), tmp90) ;
ats_ptrget_mac(ats_ptr_type, arg3) = tmp94 ;
return /* (tmp89) */ ;
} /* end of [aux_s2exp_exiuni_6] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 6323(line=258, offs=1) -- 6459(line=263, offs=46)
*/
ATSstaticdec()
ats_void_type
aux_s2lab_7 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp95) ;
ATSlocal (ats_ptr_type, tmp96) ;

__ats_lab_aux_s2lab_7:
do {
/* branch: __ats_lab_45 */
__ats_lab_45_0:
if (((ats_sum_ptr_type)arg0)->tag != 0) { goto __ats_lab_46_0 ; }
__ats_lab_45_1:
break ;

/* branch: __ats_lab_46 */
__ats_lab_46_0:
// if (((ats_sum_ptr_type)arg0)->tag != 1) { ats_deadcode_failure_handle () ; }
__ats_lab_46_1:
tmp96 = ats_caselptrlab_mac(anairiats_sum_3, arg0, atslab_0) ;
/* tmp95 = */ aux_s2explst_1 (tmp96, arg1) ;
break ;
} while (0) ;
return /* (tmp95) */ ;
} /* end of [aux_s2lab_7] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 6487(line=267, offs=1) -- 6698(line=274, offs=22)
*/
ATSstaticdec()
ats_void_type
aux_s2lablst_8 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp97) ;
ATSlocal (ats_ptr_type, tmp98) ;
ATSlocal (ats_ptr_type, tmp99) ;
// ATSlocal_void (tmp100) ;

__ats_lab_aux_s2lablst_8:
do {
/* branch: __ats_lab_47 */
__ats_lab_47_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_48_0 ; }
__ats_lab_47_1:
tmp98 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp99 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
/* tmp100 = */ aux_s2lab_7 (tmp98, arg1) ;
arg0 = tmp99 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2lablst_8 ; // tail call
break ;

/* branch: __ats_lab_48 */
__ats_lab_48_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_48_1:
break ;
} while (0) ;
return /* (tmp97) */ ;
} /* end of [aux_s2lablst_8] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 6729(line=278, offs=1) -- 6971(line=286, offs=8)
*/
ATSstaticdec()
ats_void_type
aux_s2eff_9 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp101) ;
ATSlocal (ats_ptr_type, tmp102) ;
ATSlocal (ats_ptr_type, tmp103) ;
ATSlocal (ats_ptr_type, tmp104) ;
// ATSlocal_void (tmp105) ;

__ats_lab_aux_s2eff_9:
do {
/* branch: __ats_lab_49 */
__ats_lab_49_0:
if (((ats_sum_ptr_type)arg0)->tag != 0) { goto __ats_lab_50_0 ; }
__ats_lab_49_1:
break ;

/* branch: __ats_lab_50 */
__ats_lab_50_0:
if (((ats_sum_ptr_type)arg0)->tag != 1) { goto __ats_lab_51_0 ; }
__ats_lab_50_1:
tmp102 = ats_caselptrlab_mac(anairiats_sum_3, arg0, atslab_0) ;
/* tmp101 = */ aux_s2exp_0 (tmp102, arg1) ;
break ;

/* branch: __ats_lab_51 */
__ats_lab_51_0:
// if (((ats_sum_ptr_type)arg0)->tag != 2) { ats_deadcode_failure_handle () ; }
__ats_lab_51_1:
tmp103 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_0) ;
tmp104 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_1) ;
/* tmp105 = */ aux_s2eff_9 (tmp103, arg1) ;
arg0 = tmp104 ;
arg1 = arg1 ;
goto __ats_lab_aux_s2eff_9 ; // tail call
break ;
} while (0) ;
return /* (tmp101) */ ;
} /* end of [aux_s2eff_9] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 7067(line=293, offs=3) -- 7153(line=296, offs=2)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_freevars (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp106) ;
ATSlocal (ats_ptr_type, tmp107) ;
// ATSlocal_void (tmp108) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_freevars:
/* ats_ptr_type tmp107 ; */
tmp107 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2varset_vt_nil () ;
/* tmp108 = */ aux_s2exp_0 (arg0, (&tmp107)) ;
tmp106 = tmp107 ;
return (tmp106) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_freevars] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 7237(line=305, offs=1) -- 7464(line=315, offs=2)
*/
ATSstaticdec()
ats_bool_type
loop_11 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp109) ;
ATSlocal (ats_ptr_type, tmp110) ;
ATSlocal (ats_ptr_type, tmp111) ;
ATSlocal (ats_bool_type, tmp112) ;

__ats_lab_loop_11:
do {
/* branch: __ats_lab_52 */
__ats_lab_52_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_53_0 ; }
__ats_lab_52_1:
tmp110 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp111 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
tmp112 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Varset_ismem (arg1, tmp110) ;
if (tmp112) {
tmp109 = ats_true_bool ;
} else {
arg0 = tmp111 ;
arg1 = arg1 ;
goto __ats_lab_loop_11 ; // tail call
} /* end of [if] */
break ;

/* branch: __ats_lab_53 */
__ats_lab_53_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_53_1:
tmp109 = ats_false_bool ;
break ;
} while (0) ;
return (tmp109) ;
} /* end of [loop_11] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 7510(line=320, offs=1) -- 7736(line=332, offs=4)
*/
ATSstaticdec()
ats_bool_type
s2Var_occurcheck_s2cst_12 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp113) ;
ATSlocal (ats_ptr_type, tmp114) ;
ATSlocal (ats_bool_type, tmp115) ;
ATSlocal (ats_ptr_type, tmp116) ;

__ats_lab_s2Var_occurcheck_s2cst_12:
tmp114 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2cst_get_sVarset (arg1) ;
tmp115 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Varset_ismem (tmp114, arg0) ;
if (tmp115) {
tmp113 = ats_true_bool ;
} else {
tmp116 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_sVarlst (arg0) ;
tmp113 = loop_11 (tmp116, tmp114) ;
} /* end of [if] */
return (tmp113) ;
} /* end of [s2Var_occurcheck_s2cst_12] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 7777(line=335, offs=1) -- 8127(line=350, offs=4)
*/
ATSstaticdec()
ats_bool_type
s2Var_occurcheck_s2var_13 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp117) ;
ATSlocal (ats_ptr_type, tmp118) ;
ATSlocal (ats_bool_type, tmp119) ;
ATSlocal (ats_ptr_type, tmp120) ;

__ats_lab_s2Var_occurcheck_s2var_13:
tmp118 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2var_get_sVarset (arg1) ;
tmp119 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Varset_ismem (tmp118, arg0) ;
if (tmp119) {
tmp117 = ats_true_bool ;
} else {
tmp120 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_sVarlst (arg0) ;
tmp117 = loop_11 (tmp120, tmp118) ;
} /* end of [if] */
return (tmp117) ;
} /* end of [s2Var_occurcheck_s2var_13] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 8913(line=384, offs=1) -- 9347(line=409, offs=4)
*/
ATSstaticdec()
ats_void_type
auxlst_14 (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5, ats_ptr_type arg6) {
/* local vardec */
// ATSlocal_void (tmp121) ;
ATSlocal (ats_ptr_type, tmp122) ;
ATSlocal (ats_ptr_type, tmp123) ;
// ATSlocal_void (tmp124) ;

__ats_lab_auxlst_14:
do {
/* branch: __ats_lab_54 */
__ats_lab_54_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_55_0 ; }
__ats_lab_54_1:
tmp122 = ats_caselptrlab_mac(anairiats_sum_8, arg1, atslab_0) ;
tmp123 = ats_caselptrlab_mac(anairiats_sum_8, arg1, atslab_1) ;
/* tmp124 = */ ((ats_void_type(*)(ats_ptr_type, ats_ptr_type, ats_ref_type, ats_ref_type, ats_ref_type, ats_ref_type))arg6) (arg0, tmp122, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp123 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
arg6 = arg6 ;
goto __ats_lab_auxlst_14 ; // tail call
break ;

/* branch: __ats_lab_55 */
__ats_lab_55_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_55_1:
break ;
} while (0) ;
return /* (tmp121) */ ;
} /* end of [auxlst_14] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 9410(line=414, offs=12) -- 9648(line=426, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2cst (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp125) ;
ATSlocal (ats_bool_type, tmp126) ;
ATSlocal (ats_int_type, tmp127) ;
ATSlocal (ats_ptr_type, tmp128) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2cst:
tmp126 = s2Var_occurcheck_s2cst_12 (arg0, arg1) ;
if (tmp126) {
tmp127 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg2), 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp127 ;
tmp128 = ATS_MALLOC(sizeof(anairiats_sum_8)) ;
ats_selptrset_mac(anairiats_sum_8, tmp128, atslab_0, arg1) ;
ats_selptrset_mac(anairiats_sum_8, tmp128, atslab_1, ats_ptrget_mac(ats_ptr_type, arg3)) ;
ats_ptrget_mac(ats_ptr_type, arg3) = tmp128 ;
} else {
/* empty */
} /* end of [if] */
return /* (tmp125) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2cst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 9694(line=429, offs=12) -- 9910(line=439, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2var (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp129) ;
ATSlocal (ats_bool_type, tmp130) ;
ATSlocal (ats_int_type, tmp131) ;
ATSlocal (ats_ptr_type, tmp132) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2var:
tmp130 = s2Var_occurcheck_s2var_13 (arg0, arg1) ;
if (tmp130) {
tmp131 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg2), 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp131 ;
tmp132 = ATS_MALLOC(sizeof(anairiats_sum_8)) ;
ats_selptrset_mac(anairiats_sum_8, tmp132, atslab_0, arg1) ;
ats_selptrset_mac(anairiats_sum_8, tmp132, atslab_1, ats_ptrget_mac(ats_ptr_type, arg4)) ;
ats_ptrget_mac(ats_ptr_type, arg4) = tmp132 ;
} else {
/* empty */
} /* end of [if] */
return /* (tmp129) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2var] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 9956(line=442, offs=12) -- 10281(line=457, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2Var (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp133) ;
ATSlocal (ats_ptr_type, tmp134) ;
ATSlocal (ats_ptr_type, tmp135) ;
ATSlocal (ats_bool_type, tmp136) ;
ATSlocal (ats_int_type, tmp137) ;
ATSlocal (ats_ptr_type, tmp138) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2Var:
tmp134 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__s2Var_get_link (arg1) ;
do {
/* branch: __ats_lab_56 */
__ats_lab_56_0:
if (tmp134 == (ats_sum_ptr_type)0) { goto __ats_lab_57_0 ; }
__ats_lab_56_1:
tmp135 = ats_caselptrlab_mac(anairiats_sum_11, tmp134, atslab_0) ;
/* tmp133 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp135, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_57 */
__ats_lab_57_0:
// if (tmp134 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_57_1:
tmp136 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__eq_s2Var_s2Var (arg0, arg1) ;
if (tmp136) {
tmp137 = atspre_add_int_int (ats_ptrget_mac(ats_int_type, arg2), 1) ;
ats_ptrget_mac(ats_int_type, arg2) = tmp137 ;
} else {
tmp138 = ATS_MALLOC(sizeof(anairiats_sum_8)) ;
ats_selptrset_mac(anairiats_sum_8, tmp138, atslab_0, arg1) ;
ats_selptrset_mac(anairiats_sum_8, tmp138, atslab_1, ats_ptrget_mac(ats_ptr_type, arg5)) ;
ats_ptrget_mac(ats_ptr_type, arg5) = tmp138 ;
} /* end of [if] */
break ;
} while (0) ;
return /* (tmp133) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2Var] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 10348(line=462, offs=12) -- 13414(line=589, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp139) ;
ATSlocal (ats_ptr_type, tmp140) ;
ATSlocal (ats_ptr_type, tmp141) ;
ATSlocal (ats_ptr_type, tmp142) ;
ATSlocal (ats_ptr_type, tmp143) ;
ATSlocal (ats_ptr_type, tmp144) ;
ATSlocal (ats_ptr_type, tmp145) ;
ATSlocal (ats_ptr_type, tmp146) ;
ATSlocal (ats_ptr_type, tmp147) ;
ATSlocal (ats_ptr_type, tmp148) ;
// ATSlocal_void (tmp149) ;
ATSlocal (ats_ptr_type, tmp150) ;
ATSlocal (ats_ptr_type, tmp151) ;
// ATSlocal_void (tmp152) ;
ATSlocal (ats_ptr_type, tmp153) ;
ATSlocal (ats_ptr_type, tmp154) ;
ATSlocal (ats_ptr_type, tmp155) ;
ATSlocal (ats_ptr_type, tmp156) ;
// ATSlocal_void (tmp157) ;
ATSlocal (ats_ptr_type, tmp158) ;
ATSlocal (ats_ptr_type, tmp159) ;
ATSlocal (ats_ptr_type, tmp160) ;
// ATSlocal_void (tmp161) ;
// ATSlocal_void (tmp162) ;
ATSlocal (ats_ptr_type, tmp163) ;
ATSlocal (ats_ptr_type, tmp164) ;
// ATSlocal_void (tmp165) ;
ATSlocal (ats_ptr_type, tmp166) ;
ATSlocal (ats_ptr_type, tmp167) ;
ATSlocal (ats_ptr_type, tmp168) ;
ATSlocal (ats_ptr_type, tmp169) ;
// ATSlocal_void (tmp170) ;
// ATSlocal_void (tmp171) ;
ATSlocal (ats_ptr_type, tmp172) ;
ATSlocal (ats_ptr_type, tmp173) ;
// ATSlocal_void (tmp174) ;
ATSlocal (ats_ptr_type, tmp175) ;
ATSlocal (ats_ptr_type, tmp176) ;
// ATSlocal_void (tmp177) ;
ATSlocal (ats_ptr_type, tmp178) ;
ATSlocal (ats_ptr_type, tmp179) ;
ATSlocal (ats_ptr_type, tmp180) ;
ATSlocal (ats_ptr_type, tmp181) ;
// ATSlocal_void (tmp182) ;
ATSlocal (ats_ptr_type, tmp183) ;
ATSlocal (ats_ptr_type, tmp184) ;
ATSlocal (ats_ptr_type, tmp185) ;
ATSlocal (ats_ptr_type, tmp186) ;
ATSlocal (ats_ptr_type, tmp187) ;
// ATSlocal_void (tmp188) ;
ATSlocal (ats_ptr_type, tmp189) ;
ATSlocal (ats_ptr_type, tmp190) ;
// ATSlocal_void (tmp191) ;
ATSlocal (ats_ptr_type, tmp192) ;
ATSlocal (ats_ptr_type, tmp193) ;
ATSlocal (ats_ptr_type, tmp194) ;
// ATSlocal_void (tmp195) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp:
tmp140 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_1, arg1), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_58 */
__ats_lab_58_0:
if (((ats_sum_ptr_type)tmp140)->tag != 0) { goto __ats_lab_59_0 ; }
__ats_lab_58_1:
break ;

/* branch: __ats_lab_59 */
__ats_lab_59_0:
if (((ats_sum_ptr_type)tmp140)->tag != 1) { goto __ats_lab_60_0 ; }
__ats_lab_59_1:
break ;

/* branch: __ats_lab_60 */
__ats_lab_60_0:
if (((ats_sum_ptr_type)tmp140)->tag != 2) { goto __ats_lab_61_0 ; }
__ats_lab_60_1:
break ;

/* branch: __ats_lab_61 */
__ats_lab_61_0:
if (((ats_sum_ptr_type)tmp140)->tag != 3) { goto __ats_lab_62_0 ; }
__ats_lab_61_1:
break ;

/* branch: __ats_lab_62 */
__ats_lab_62_0:
if (((ats_sum_ptr_type)tmp140)->tag != 4) { goto __ats_lab_63_0 ; }
__ats_lab_62_1:
tmp141 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2cst (arg0, tmp141, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_63 */
__ats_lab_63_0:
if (((ats_sum_ptr_type)tmp140)->tag != 5) { goto __ats_lab_64_0 ; }
__ats_lab_63_1:
tmp142 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explstlst (arg0, tmp142, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_64 */
__ats_lab_64_0:
if (((ats_sum_ptr_type)tmp140)->tag != 6) { goto __ats_lab_65_0 ; }
__ats_lab_64_1:
tmp143 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explstlst (arg0, tmp143, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_65 */
__ats_lab_65_0:
if (((ats_sum_ptr_type)tmp140)->tag != 7) { goto __ats_lab_66_0 ; }
__ats_lab_65_1:
tmp144 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2var (arg0, tmp144, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_66 */
__ats_lab_66_0:
if (((ats_sum_ptr_type)tmp140)->tag != 8) { goto __ats_lab_67_0 ; }
__ats_lab_66_1:
tmp145 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2Var (arg0, tmp145, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_67 */
__ats_lab_67_0:
if (((ats_sum_ptr_type)tmp140)->tag != 9) { goto __ats_lab_68_0 ; }
__ats_lab_67_1:
break ;

/* branch: __ats_lab_68 */
__ats_lab_68_0:
if (((ats_sum_ptr_type)tmp140)->tag != 10) { goto __ats_lab_69_0 ; }
__ats_lab_68_1:
tmp146 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp146, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_69 */
__ats_lab_69_0:
if (((ats_sum_ptr_type)tmp140)->tag != 11) { goto __ats_lab_70_0 ; }
__ats_lab_69_1:
tmp147 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_1) ;
tmp148 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_2) ;
/* tmp149 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp147, arg2, arg3, arg4, arg5) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp148, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_70 */
__ats_lab_70_0:
if (((ats_sum_ptr_type)tmp140)->tag != 12) { goto __ats_lab_71_0 ; }
__ats_lab_70_1:
tmp150 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_0) ;
tmp151 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp152 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp150, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp151 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_71 */
__ats_lab_71_0:
if (((ats_sum_ptr_type)tmp140)->tag != 13) { goto __ats_lab_72_0 ; }
__ats_lab_71_1:
tmp153 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
arg0 = arg0 ;
arg1 = tmp153 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_72 */
__ats_lab_72_0:
if (((ats_sum_ptr_type)tmp140)->tag != 14) { goto __ats_lab_73_0 ; }
__ats_lab_72_1:
tmp154 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff (arg0, tmp154, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_73 */
__ats_lab_73_0:
if (((ats_sum_ptr_type)tmp140)->tag != 15) { goto __ats_lab_74_0 ; }
__ats_lab_73_1:
tmp155 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_0) ;
tmp156 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp157 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp155, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp156 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_74 */
__ats_lab_74_0:
if (((ats_sum_ptr_type)tmp140)->tag != 16) { goto __ats_lab_75_0 ; }
__ats_lab_74_1:
tmp158 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_0) ;
tmp159 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_1) ;
tmp160 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_2) ;
/* tmp161 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp158, arg2, arg3, arg4, arg5) ;
/* tmp162 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp159, arg2, arg3, arg4, arg5) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lablst (arg0, tmp160, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_75 */
__ats_lab_75_0:
if (((ats_sum_ptr_type)tmp140)->tag != 17) { goto __ats_lab_76_0 ; }
__ats_lab_75_1:
tmp163 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_0) ;
tmp164 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp165 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp163, arg2, arg3, arg4, arg5) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp164, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_76 */
__ats_lab_76_0:
if (((ats_sum_ptr_type)tmp140)->tag != 18) { goto __ats_lab_77_0 ; }
__ats_lab_76_1:
tmp166 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
arg0 = arg0 ;
arg1 = tmp166 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_77 */
__ats_lab_77_0:
if (((ats_sum_ptr_type)tmp140)->tag != 19) { goto __ats_lab_78_0 ; }
__ats_lab_77_1:
tmp167 = ats_caselptrlab_mac(anairiats_sum_5, tmp140, atslab_2) ;
tmp168 = ats_caselptrlab_mac(anairiats_sum_5, tmp140, atslab_4) ;
tmp169 = ats_caselptrlab_mac(anairiats_sum_5, tmp140, atslab_5) ;
/* tmp170 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff (arg0, tmp167, arg2, arg3, arg4, arg5) ;
/* tmp171 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp168, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp169 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_78 */
__ats_lab_78_0:
if (((ats_sum_ptr_type)tmp140)->tag != 20) { goto __ats_lab_79_0 ; }
__ats_lab_78_1:
tmp172 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_1) ;
tmp173 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_2) ;
/* tmp174 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp172, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp173 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_79 */
__ats_lab_79_0:
if (((ats_sum_ptr_type)tmp140)->tag != 21) { goto __ats_lab_80_0 ; }
__ats_lab_79_1:
tmp175 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_0) ;
tmp176 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp177 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp175, arg2, arg3, arg4, arg5) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp176, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_80 */
__ats_lab_80_0:
if (((ats_sum_ptr_type)tmp140)->tag != 22) { goto __ats_lab_81_0 ; }
__ats_lab_80_1:
tmp178 = ats_caselptrlab_mac(anairiats_sum_6, tmp140, atslab_1) ;
arg0 = arg0 ;
arg1 = tmp178 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_81 */
__ats_lab_81_0:
if (((ats_sum_ptr_type)tmp140)->tag != 23) { goto __ats_lab_82_0 ; }
__ats_lab_81_1:
tmp179 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
arg0 = arg0 ;
arg1 = tmp179 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_82 */
__ats_lab_82_0:
if (((ats_sum_ptr_type)tmp140)->tag != 24) { goto __ats_lab_83_0 ; }
__ats_lab_82_1:
tmp180 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_0) ;
tmp181 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp182 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp180, arg2, arg3, arg4, arg5) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp181, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_83 */
__ats_lab_83_0:
if (((ats_sum_ptr_type)tmp140)->tag != 25) { goto __ats_lab_84_0 ; }
__ats_lab_83_1:
tmp183 = ats_caselptrlab_mac(anairiats_sum_7, tmp140, atslab_2) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2explst (arg0, tmp183, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_84 */
__ats_lab_84_0:
if (((ats_sum_ptr_type)tmp140)->tag != 26) { goto __ats_lab_85_0 ; }
__ats_lab_84_1:
tmp184 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
arg0 = arg0 ;
arg1 = tmp184 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_85 */
__ats_lab_85_0:
if (((ats_sum_ptr_type)tmp140)->tag != 29) { goto __ats_lab_86_0 ; }
__ats_lab_85_1:
tmp185 = ats_caselptrlab_mac(anairiats_sum_6, tmp140, atslab_1) ;
arg0 = arg0 ;
arg1 = tmp185 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_86 */
__ats_lab_86_0:
if (((ats_sum_ptr_type)tmp140)->tag != 27) { goto __ats_lab_87_0 ; }
__ats_lab_86_1:
tmp186 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_1) ;
tmp187 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_2) ;
/* tmp188 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp186, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp187 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_87 */
__ats_lab_87_0:
if (((ats_sum_ptr_type)tmp140)->tag != 28) { goto __ats_lab_88_0 ; }
__ats_lab_87_1:
tmp189 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_1) ;
tmp190 = ats_caselptrlab_mac(anairiats_sum_4, tmp140, atslab_2) ;
/* tmp191 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp189, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp190 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_88 */
__ats_lab_88_0:
if (((ats_sum_ptr_type)tmp140)->tag != 30) { goto __ats_lab_89_0 ; }
__ats_lab_88_1:
tmp192 = ats_caselptrlab_mac(anairiats_sum_3, tmp140, atslab_0) ;
arg0 = arg0 ;
arg1 = tmp192 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp ; // tail call
break ;

/* branch: __ats_lab_89 */
__ats_lab_89_0:
if (((ats_sum_ptr_type)tmp140)->tag != 31) { goto __ats_lab_90_0 ; }
__ats_lab_89_1:
tmp193 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_0) ;
tmp194 = ats_caselptrlab_mac(anairiats_sum_2, tmp140, atslab_1) ;
/* tmp195 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp193, arg2, arg3, arg4, arg5) ;
/* tmp139 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst (arg0, tmp194, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_90 */
__ats_lab_90_0:
// if (((ats_sum_ptr_type)tmp140)->tag != 32) { ats_deadcode_failure_handle () ; }
__ats_lab_90_1:
break ;
} while (0) ;
return /* (tmp139) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 13465(line=593, offs=3) -- 13555(line=594, offs=55)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp196) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst:
/* tmp196 = */ auxlst_14 (arg0, arg1, arg2, arg3, arg4, arg5, &_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp) ;
return /* (tmp196) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 13612(line=599, offs=3) -- 13707(line=600, offs=59)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explstlst (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp197) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explstlst:
/* tmp197 = */ auxlst_14 (arg0, arg1, arg2, arg3, arg4, arg5, &_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst) ;
return /* (tmp197) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explstlst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 13782(line=607, offs=3) -- 14249(line=628, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp198) ;
ATSlocal (ats_ptr_type, tmp199) ;
ATSlocal (ats_ptr_type, tmp200) ;
ATSlocal (ats_ptr_type, tmp201) ;
// ATSlocal_void (tmp202) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff:
do {
/* branch: __ats_lab_91 */
__ats_lab_91_0:
if (((ats_sum_ptr_type)arg1)->tag != 0) { goto __ats_lab_92_0 ; }
__ats_lab_91_1:
break ;

/* branch: __ats_lab_92 */
__ats_lab_92_0:
if (((ats_sum_ptr_type)arg1)->tag != 1) { goto __ats_lab_93_0 ; }
__ats_lab_92_1:
tmp199 = ats_caselptrlab_mac(anairiats_sum_3, arg1, atslab_0) ;
/* tmp198 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp199, arg2, arg3, arg4, arg5) ;
break ;

/* branch: __ats_lab_93 */
__ats_lab_93_0:
// if (((ats_sum_ptr_type)arg1)->tag != 2) { ats_deadcode_failure_handle () ; }
__ats_lab_93_1:
tmp200 = ats_caselptrlab_mac(anairiats_sum_2, arg1, atslab_0) ;
tmp201 = ats_caselptrlab_mac(anairiats_sum_2, arg1, atslab_1) ;
/* tmp202 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff (arg0, tmp200, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp201 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff ; // tail call
break ;
} while (0) ;
return /* (tmp198) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2eff] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 14316(line=633, offs=12) -- 14501(line=644, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lab (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp203) ;
ATSlocal (ats_ptr_type, tmp204) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lab:
do {
/* branch: __ats_lab_94 */
__ats_lab_94_0:
if (((ats_sum_ptr_type)arg1)->tag != 0) { goto __ats_lab_95_0 ; }
__ats_lab_94_1:
break ;

/* branch: __ats_lab_95 */
__ats_lab_95_0:
// if (((ats_sum_ptr_type)arg1)->tag != 1) { ats_deadcode_failure_handle () ; }
__ats_lab_95_1:
tmp204 = ats_caselptrlab_mac(anairiats_sum_3, arg1, atslab_0) ;
/* tmp203 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2explst (arg0, tmp204, arg2, arg3, arg4, arg5) ;
break ;
} while (0) ;
return /* (tmp203) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lab] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 14552(line=648, offs=3) -- 14646(line=649, offs=57)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lablst (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp205) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lablst:
/* tmp205 = */ auxlst_14 (arg0, arg1, arg2, arg3, arg4, arg5, &_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lab) ;
return /* (tmp205) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2lablst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 14719(line=655, offs=15) -- 14856(line=661, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2exp (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp206) ;
ATSlocal (ats_ptr_type, tmp207) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2exp:

tmp207 = ats_caselptrlab_mac(anairiats_sum_9, arg1, atslab_2) ;
/* tmp206 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp207, arg2, arg3, arg4, arg5) ;
return /* (tmp206) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2exp] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 14913(line=665, offs=3) -- 15008(line=666, offs=58)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2explst (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp208) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2explst:
/* tmp208 = */ auxlst_14 (arg0, arg1, arg2, arg3, arg4, arg5, &_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2exp) ;
return /* (tmp208) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_labs2explst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 15087(line=673, offs=1) -- 15815(line=709, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst (ats_ptr_type arg0, ats_ptr_type arg1, ats_ref_type arg2, ats_ref_type arg3, ats_ref_type arg4, ats_ref_type arg5) {
/* local vardec */
// ATSlocal_void (tmp209) ;
ATSlocal (ats_ptr_type, tmp210) ;
ATSlocal (ats_ptr_type, tmp211) ;
// ATSlocal_void (tmp212) ;
ATSlocal (ats_ptr_type, tmp213) ;
ATSlocal (ats_ptr_type, tmp214) ;
// ATSlocal_void (tmp215) ;
ATSlocal (ats_ptr_type, tmp216) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst:
do {
/* branch: __ats_lab_96 */
__ats_lab_96_0:
if (((ats_sum_ptr_type)arg1)->tag != 0) { goto __ats_lab_97_0 ; }
__ats_lab_96_1:
break ;

/* branch: __ats_lab_97 */
__ats_lab_97_0:
if (((ats_sum_ptr_type)arg1)->tag != 2) { goto __ats_lab_98_0 ; }
__ats_lab_97_1:
tmp210 = ats_caselptrlab_mac(anairiats_sum_10, arg1, atslab_1) ;
tmp211 = ats_caselptrlab_mac(anairiats_sum_10, arg1, atslab_2) ;
/* tmp212 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp210, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp211 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst ; // tail call
break ;

/* branch: __ats_lab_98 */
__ats_lab_98_0:
if (((ats_sum_ptr_type)arg1)->tag != 3) { goto __ats_lab_99_0 ; }
__ats_lab_98_1:
tmp213 = ats_caselptrlab_mac(anairiats_sum_10, arg1, atslab_1) ;
tmp214 = ats_caselptrlab_mac(anairiats_sum_10, arg1, atslab_2) ;
/* tmp215 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, tmp213, arg2, arg3, arg4, arg5) ;
arg0 = arg0 ;
arg1 = tmp214 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst ; // tail call
break ;

/* branch: __ats_lab_99 */
__ats_lab_99_0:
// if (((ats_sum_ptr_type)arg1)->tag != 1) { ats_deadcode_failure_handle () ; }
__ats_lab_99_1:
tmp216 = ats_caselptrlab_mac(anairiats_sum_3, arg1, atslab_0) ;
arg0 = arg0 ;
arg1 = tmp216 ;
arg2 = arg2 ;
arg3 = arg3 ;
arg4 = arg4 ;
arg5 = arg5 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst ; // tail call
break ;
} while (0) ;
return /* (tmp209) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_wths2explst] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 15905(line=715, offs=3) -- 16263(line=726, offs=4)
*/
ATSglobaldec()
anairiats_rec_12
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2Var_occurcheck_s2exp (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (anairiats_rec_12, tmp217) ;
ATSlocal (ats_int_type, tmp218) ;
ATSlocal (ats_ptr_type, tmp219) ;
ATSlocal (ats_ptr_type, tmp220) ;
ATSlocal (ats_ptr_type, tmp221) ;
// ATSlocal_void (tmp222) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2Var_occurcheck_s2exp:
/* ats_int_type tmp218 ; */
tmp218 = 0 ;
/* ats_ptr_type tmp219 ; */
tmp219 = (ats_sum_ptr_type)0 ;
/* ats_ptr_type tmp220 ; */
tmp220 = (ats_sum_ptr_type)0 ;
/* ats_ptr_type tmp221 ; */
tmp221 = (ats_sum_ptr_type)0 ;
/* tmp222 = */ _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__aux2_s2exp (arg0, arg1, (&tmp218), (&tmp219), (&tmp220), (&tmp221)) ;
tmp217.atslab_0 = tmp218 ;
tmp217.atslab_1 = tmp219 ;
tmp217.atslab_2 = tmp220 ;
tmp217.atslab_3 = tmp221 ;

return (tmp217) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2Var_occurcheck_s2exp] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 16355(line=735, offs=1) -- 16570(line=745, offs=4)
*/
ATSstaticdec()
ats_bool_type
ismem_28 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp223) ;
ATSlocal (ats_ptr_type, tmp224) ;
ATSlocal (ats_ptr_type, tmp225) ;
ATSlocal (ats_bool_type, tmp226) ;

__ats_lab_ismem_28:
do {
/* branch: __ats_lab_100 */
__ats_lab_100_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_101_0 ; }
__ats_lab_100_1:
tmp224 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_0) ;
tmp225 = ats_caselptrlab_mac(anairiats_sum_8, arg0, atslab_1) ;
tmp226 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_2esats__eq_s2var_s2var (tmp224, arg1) ;
if (tmp226) {
tmp223 = ats_true_bool ;
} else {
arg0 = tmp225 ;
arg1 = arg1 ;
goto __ats_lab_ismem_28 ; // tail call
} /* end of [if] */
break ;

/* branch: __ats_lab_101 */
__ats_lab_101_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_101_1:
tmp223 = ats_false_bool ;
break ;
} while (0) ;
return (tmp223) ;
} /* end of [ismem_28] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/prelude/DATS/list.dats: 50443(line=1783, offs=17) -- 50505(line=1785, offs=4)
*/
ATSstaticdec()
ats_bool_type
list_is_nil_01294_ (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp233) ;

__ats_lab_list_is_nil_01294_:
do {
/* branch: __ats_lab_103 */
__ats_lab_103_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_104_0 ; }
__ats_lab_103_1:
tmp233 = ats_false_bool ;
break ;

/* branch: __ats_lab_104 */
__ats_lab_104_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_104_1:
tmp233 = ats_true_bool ;
break ;
} while (0) ;
return (tmp233) ;
} /* end of [list_is_nil_01294_] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 16638(line=751, offs=3) -- 16985(line=772, offs=4)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_isbot (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp227) ;
ATSlocal (ats_ptr_type, tmp228) ;
ATSlocal (ats_ptr_type, tmp229) ;
ATSlocal (ats_ptr_type, tmp230) ;
ATSlocal (ats_ptr_type, tmp231) ;
ATSlocal (ats_bool_type, tmp232) ;
ATSlocal (ats_ptr_type, tmp234) ;
ATSlocal (ats_ptr_type, tmp235) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_isbot:
tmp228 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_1, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_102 */
__ats_lab_102_0:
if (((ats_sum_ptr_type)tmp228)->tag != 28) { goto __ats_lab_107_0 ; }
__ats_lab_102_1:
tmp229 = ats_caselptrlab_mac(anairiats_sum_4, tmp228, atslab_0) ;
tmp230 = ats_caselptrlab_mac(anairiats_sum_4, tmp228, atslab_1) ;
tmp231 = ats_caselptrlab_mac(anairiats_sum_4, tmp228, atslab_2) ;
tmp232 = list_is_nil_01294_ (tmp230) ;
if (tmp232) {
tmp234 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_1, tmp231), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_105 */
__ats_lab_105_0:
if (((ats_sum_ptr_type)tmp234)->tag != 7) { goto __ats_lab_106_0 ; }
__ats_lab_105_1:
tmp235 = ats_caselptrlab_mac(anairiats_sum_3, tmp234, atslab_0) ;
tmp227 = ismem_28 (tmp229, tmp235) ;
break ;

/* branch: __ats_lab_106 */
__ats_lab_106_0:
__ats_lab_106_1:
tmp227 = ats_false_bool ;
break ;
} while (0) ;
} else {
tmp227 = ats_false_bool ;
} /* end of [if] */
break ;

/* branch: __ats_lab_107 */
__ats_lab_107_0:
__ats_lab_107_1:
tmp227 = ats_false_bool ;
break ;
} while (0) ;
return (tmp227) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_isbot] */

/*
// /tmp/ATS-Postiats/src/pats_staexp2_util3.dats: 17060(line=777, offs=17) -- 17319(line=793, offs=4)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_fun_isbot (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp236) ;
ATSlocal (ats_ptr_type, tmp237) ;
ATSlocal (ats_ptr_type, tmp238) ;
ATSlocal (ats_ptr_type, tmp239) ;
ATSlocal (ats_ptr_type, tmp240) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_fun_isbot:
tmp237 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_1, arg0), atslab_s2exp_node) ;
do {
/* branch: __ats_lab_108 */
__ats_lab_108_0:
if (((ats_sum_ptr_type)tmp237)->tag != 19) { goto __ats_lab_109_0 ; }
__ats_lab_108_1:
tmp238 = ats_caselptrlab_mac(anairiats_sum_5, tmp237, atslab_5) ;
tmp236 = _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_isbot (tmp238) ;
break ;

/* branch: __ats_lab_109 */
__ats_lab_109_0:
if (((ats_sum_ptr_type)tmp237)->tag != 28) { goto __ats_lab_110_0 ; }
__ats_lab_109_1:
tmp239 = ats_caselptrlab_mac(anairiats_sum_4, tmp237, atslab_2) ;
arg0 = tmp239 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_fun_isbot ; // tail call
break ;

/* branch: __ats_lab_110 */
__ats_lab_110_0:
if (((ats_sum_ptr_type)tmp237)->tag != 20) { goto __ats_lab_111_0 ; }
__ats_lab_110_1:
tmp240 = ats_caselptrlab_mac(anairiats_sum_4, tmp237, atslab_2) ;
arg0 = tmp240 ;
goto __ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_fun_isbot ; // tail call
break ;

/* branch: __ats_lab_111 */
__ats_lab_111_0:
__ats_lab_111_1:
tmp236 = ats_false_bool ;
break ;
} while (0) ;
return (tmp236) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util_2esats__s2exp_fun_isbot] */

/* static load function */

// extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_atspre_2edats__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_util3_2edats__staload () {
static int _2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__staload_flag = 0 ;
if (_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__staload_flag) return ;
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__staload_flag = 1 ;

// _2tmp_2ATS_2dPostiats_2src_2pats_atspre_2edats__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_util3_2edats__dynload_flag ;

ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__dynload () {
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_2edats__dynload_flag = 1 ;
_2tmp_2ATS_2dPostiats_2src_2pats_staexp2_util3_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_util3_dats.c] */
