/*
**
** 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_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"

#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"

#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_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_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"

#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_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"

#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_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_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"

#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_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_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"

#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_tmpvar_loc ;
ats_ptr_type atslab_tmpvar_type ;
ats_int_type atslab_tmpvar_ref ;
ats_int_type atslab_tmpvar_ret ;
ats_int_type atslab_tmpvar_topknd ;
ats_ptr_type atslab_tmpvar_origin ;
ats_int_type atslab_tmpvar_suffix ;
ats_int_type atslab_tmpvar_stamp ;
} anairiats_rec_0 ;

typedef struct {
ats_ptr_type atslab_0 ;
} anairiats_sum_1 ;

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

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

typedef struct {
ats_int_type atslab_0 ;
ats_ptr_type atslab_1 ;
ats_ptr_type atslab_2 ;
ats_ptr_type atslab_3 ;
ats_ptr_type atslab_4 ;
} anairiats_sum_4 ;

/* external typedefs */
typedef anairiats_rec_0 *tmpvar_t ;

/* external dynamic constructor declarations */
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, ATS_2d0_2e2_2e12_2libats_2DATS_2linset_avltree_2edats__B_0) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2libats_2DATS_2linset_avltree_2edats__E_1) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2libats_2DATS_2linmap_avltree_2edats__B_0) ;
ATSextern_val(ats_sum_type, ATS_2d0_2e2_2e12_2libats_2DATS_2linmap_avltree_2edats__E_1) ;

/* external dynamic constant declarations */
ATSextern_fun(ats_bool_type, atspre_neg_bool) (ats_bool_type) ;
ATSextern_fun(ats_bool_type, atspre_lt_char_char) (ats_char_type, ats_char_type) ;
ATSextern_fun(ats_bool_type, atspre_gt_char_char) (ats_char_type, ats_char_type) ;
ATSextern_fun(ats_bool_type, atspre_eq_char_char) (ats_char_type, ats_char_type) ;
ATSextern_fun(ats_bool_type, atspre_neq_char_char) (ats_char_type, ats_char_type) ;
ATSextern_fun(ats_int_type, atspre_compare_char_char) (ats_char_type, ats_char_type) ;
ATSextern_fun(ats_void_type, atspre_fprint_char) (ats_ptr_type, ats_char_type) ;
ATSextern_fun(ats_bool_type, atspre_char_isdigit) (ats_char_type) ;
ATSextern_fun(ats_char_type, atspre_char_toupper) (ats_char_type) ;
ATSextern_fun(ats_bool_type, atspre_eq_char_char) (ats_char_type, ats_char_type) ;
ATSextern_fun(ats_int_type, atspre_add_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_lt_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_eq_int_int) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_uint_type, atspre_add_uint_uint) (ats_uint_type, ats_uint_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_bool_type, atspre_ilte) (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_bool_type, atspre_ieq) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_int_type, atspre_imax) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_llint_type, atspre_llint_of_int) (ats_int_type) ;
ATSextern_fun(ats_llint_type, atspre_mul_llint_llint) (ats_llint_type, ats_llint_type) ;
ATSextern_fun(ats_size_type, atspre_size_of_int1) (ats_int_type) ;
ATSextern_fun(ats_size_type, atspre_add_size_size) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_size_type, atspre_sub_size_size) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_bool_type, atspre_gte_size_size) (ats_size_type, ats_size_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_sub_size1_size1) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_size_type, atspre_mul_size1_size1) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_size_type, atspre_mul2_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_gt_size1_size1) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_bool_type, atspre_eq_size1_int1) (ats_size_type, ats_int_type) ;
ATSextern_fun(ats_bool_type, atspre_eq_size1_size1) (ats_size_type, ats_size_type) ;
ATSextern_fun(ats_ptr_type, ats_malloc_gc) (ats_size_type) ;
ATSextern_fun(ats_void_type, atspre_bytes_strbuf_trans) (ats_ptr_type, ats_size_type) ;
ATSextern_fun(ats_bool_type, atspre_eq_string_string) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_void_type, atspre_fprint_string) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_char_type, atspre_string_get_char_at) (ats_ptr_type, ats_size_type) ;
ATSextern_fun(ats_char_type, atspre_string_get_char_at__intsz) (ats_ptr_type, ats_int_type) ;
ATSextern_fun(ats_ptr_type, atspre_string_copy) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, atspre_string_contains) (ats_ptr_type, ats_char_type) ;
ATSextern_fun(ats_size_type, atspre_string_length) (ats_ptr_type) ;
ATSextern_fun(ats_size_type, atspre_string_length) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, atspre_string_isnot_empty) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, atspre_string_isnot_atend) (ats_ptr_type, ats_size_type) ;
ATSextern_val(ats_ptr_type, atspre_stropt_none) ;
ATSextern_fun(ats_bool_type, atspre_stropt_is_some) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, atspre_strptr_free) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, atspre_tostringf) (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, _2tmp_2ATS_2dPostiats_2src_2pats_utils_2esats__fprint_stropt) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_utils_2esats__charset_listize) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, patsopt_file2strptr) (ats_int_type) ;
ATSextern_fun(ats_size_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_cap) (ats_ref_type) ;
ATSextern_fun(ats_size_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_size) (ats_ref_type) ;
ATSextern_fun(ats_bool_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_is_empty) (ats_ref_type) ;
ATSextern_fun(ats_bool_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_isnot_empty) (ats_ref_type) ;
ATSextern_fun(ats_bool_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_is_full) (ats_ref_type) ;
ATSextern_fun(ats_bool_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_isnot_full) (ats_ref_type) ;
ATSextern_fun(ats_void_type, atslib_ngc_deque_arr_deque_initialize_tsz) (ats_ref_type, ats_size_type, ats_ptr_type, ats_size_type) ;
ATSextern_fun(ats_ptr_type, atslib_ngc_deque_arr_deque_uninitialize) (ats_ref_type) ;
ATSextern_fun(ats_ptr_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_uninitialize_vt) (ats_ref_type) ;
ATSextern_fun(ats_ptr_type, atslib_ngc_deque_arr_deque_takeout_tsz) (ats_ref_type, ats_size_type, ats_size_type) ;
ATSextern_fun(ats_void_type, atslib_ngc_deque_arr_deque_insert_end_many_tsz) (ats_ref_type, ats_size_type, ats_ref_type, ats_size_type) ;
ATSextern_fun(ats_void_type, atslib_ngc_deque_arr_deque_remove_beg_many_tsz) (ats_ref_type, ats_size_type, ats_ref_type, ats_size_type) ;
ATSextern_fun(ats_void_type, ATS_2d0_2e2_2e12_2libats_2ngc_2SATS_2deque_arr_2esats__deque_clear_all) (ats_ref_type) ;
ATSextern_fun(ats_void_type, atslib_ngc_deque_arr_deque_copyout_tsz) (ats_ref_type, ats_size_type, ats_size_type, ats_ref_type, ats_size_type) ;
ATSextern_fun(ats_ptr_type, atslib_ngc_deque_arr_deque_update_capacity_tsz) (ats_ref_type, ats_size_type, ats_ptr_type, ats_size_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__eq_stamp_stamp) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_int_type, _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__compare_stamp_stamp) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__fprint_stamp) (ats_ptr_type, ats_int_type) ;
ATSextern_fun(ats_int_type, _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__tmpvar_stamp_make) () ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_histaexp_2esats__hisexp_tyclo) (ats_ptr_type) ;
ATSextern_fun(ats_ptr_type, _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isref) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isret) (ats_ptr_type) ;
ATSextern_fun(ats_int_type, _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_stamp) (ats_ptr_type) ;
ATSextern_fun(ats_int_type, _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_tailcal) (ats_ptr_type) ;
ATSextern_fun(ats_void_type, _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvar) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_int_type, _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__compare_tmpvar_tmpvar) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_void_type, patsopt_tmpvar_set_ref) (ats_ptr_type, ats_int_type) ;
ATSextern_fun(ats_void_type, patsopt_tmpvar_set_ret) (ats_ptr_type, ats_int_type) ;
ATSextern_fun(ats_void_type, patsopt_tmpvar_set_type) (ats_ptr_type, ats_ptr_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_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_2libats_2ngc_2SATS_2deque_arr_2esats__lemma_deque_param_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_v_encode_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_v_decode_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_v_clear_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_insert_beg_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_insert_end_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_remove_beg_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_remove_end_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
extern
ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_utils_2edats____assert_prfck () ;
extern
ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_utils_2edats____assert_prfck () ;
#endif /* _ATS_PROOFCHECK */

/* assuming abstract types */
int _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__sasp__tmpvarmap_vtype = 0 ;
int _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__sasp__tmpvarset_vtype = 0 ;
int _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__sasp__tmpvar_type = 0 ;

/* sum constructor declarations */
/* exn constructor declarations */
/* global dynamic (non-functional) constant declarations */
/* internal function declarations */
static
ats_void_type fprintopt_01724_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) ;
static
ats_int_type __ats_fun_21 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_clo_ptr_type __ats_fun_21_closure_make () ;
static
ats_int_type __ats_fun_21_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type linset_make_nil_05139_ () ;
static
ats_void_type aux_26 (ats_ptr_type arg0) ;
static
ats_void_type linset_free_05146_ats_ptr_type (ats_ptr_type arg0) ;
static
ats_int_type compare_elt_elt_05138_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) ;
static
ats_int_type avltree_height_01896_ats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type avltree_rrotate_01950_ats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) ;
static
ats_ptr_type avltree_lrotate_01926_ats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) ;
static
ats_bool_type insert_29 (ats_clo_ref_type env0, ats_ref_type arg0, ats_ptr_type arg1) ;
static
ats_clo_ptr_type insert_29_closure_make (ats_clo_ref_type env0) ;
static
ats_bool_type insert_29_clofun (ats_clo_ptr_type cloptr, ats_ref_type arg0, ats_ptr_type arg1) ;
static
ats_bool_type linset_insert_05148_ats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) ;
static
ats_ptr_type aux_36 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type linset_listize_05163_ats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type aux_39 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type linset_listize_free_05164_ats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type linmap_make_nil_05169_ () ;
static
ats_void_type _free_44 (ats_ptr_type arg0) ;
static
ats_void_type linmap_free_05186_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0) ;
static
ats_int_type compare_key_key_05168_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) ;
static
ats_ptr_type search_49 (ats_ptr_type env0, ats_clo_ref_type env1, ats_ptr_type arg0) ;
static
ats_clo_ptr_type search_49_closure_make (ats_ptr_type env0, ats_clo_ref_type env1) ;
static
ats_ptr_type search_49_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0) ;
static
ats_ptr_type linmap_search_ref_05175_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) ;
static
ats_bool_type linmap_search_05174_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2, ats_ref_type arg3) ;
static
ats_ptr_type linmap_search_opt_05176_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) ;
static
ats_int_type avltree_height_02279_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type avltree_rrotate_02332_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) ;
static
ats_ptr_type avltree_lrotate_02307_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) ;
static
ats_bool_type insert_53 (ats_ptr_type env0, ats_clo_ref_type env1, ats_ref_type arg0, ats_ptr_type arg1, ats_ref_type arg2) ;
static
ats_clo_ptr_type insert_53_closure_make (ats_ptr_type env0, ats_clo_ref_type env1) ;
static
ats_bool_type insert_53_clofun (ats_clo_ptr_type cloptr, ats_ref_type arg0, ats_ptr_type arg1, ats_ref_type arg2) ;
static
ats_bool_type linmap_insert_05177_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_clo_ref_type arg3, ats_ref_type arg4) ;
static
ats_ptr_type avltree_takeout_min_02383_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0) ;
static
ats_bool_type takeout_60 (ats_ptr_type env0, ats_clo_ref_type env1, ats_ref_type arg0, ats_ptr_type arg1) ;
static
ats_clo_ptr_type takeout_60_closure_make (ats_ptr_type env0, ats_clo_ref_type env1) ;
static
ats_bool_type takeout_60_clofun (ats_clo_ptr_type cloptr, ats_ref_type arg0, ats_ptr_type arg1) ;
static
ats_bool_type linmap_takeout_ptr_05192_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2, ats_ptr_type arg3) ;
static
ats_bool_type linmap_remove_05179_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) ;

/* partial value template declarations */
/* static temporary variable declarations */
ATSstatic (ats_ptr_type, statmp48) ;

/* external value variable declarations */

/* function implementations */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 2301(line=87, offs=3) -- 2576(line=96, offs=6)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp0) ;
ATSlocal (ats_int_type, tmp1) ;
ATSlocal (ats_ptr_type, tmp2) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make:
tmp1 = _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__tmpvar_stamp_make () ;
tmp2 = (ats_sum_ptr_type)0 ;
tmp0 = ATS_MALLOC(sizeof(anairiats_rec_0)) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_loc, arg0) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_type, arg1) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_ref, 0) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_ret, 0) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_topknd, 0) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_origin, tmp2) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_suffix, 0) ;
ats_selptrset_mac(anairiats_rec_0, tmp0, atslab_tmpvar_stamp, tmp1) ;

return (tmp0) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 2649(line=101, offs=15) -- 2671(line=101, offs=37)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_loc (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp3) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_loc:
tmp3 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_loc) ;
return (tmp3) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_loc] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 2700(line=104, offs=16) -- 2723(line=104, offs=39)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp4) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_type:
tmp4 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_type) ;
return (tmp4) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 2749(line=107, offs=13) -- 2775(line=107, offs=39)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isref (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp5) ;
ATSlocal (ats_int_type, tmp6) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isref:
tmp6 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_ref) ;
tmp5 = atspre_gt_int_int (tmp6, 0) ;
return (tmp5) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isref] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 2798(line=109, offs=13) -- 2824(line=109, offs=39)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isret (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_bool_type, tmp7) ;
ATSlocal (ats_int_type, tmp8) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isret:
tmp8 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_ret) ;
tmp7 = atspre_gt_int_int (tmp8, 0) ;
return (tmp7) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isret] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 2855(line=112, offs=18) -- 2880(line=112, offs=43)
*/
ATSglobaldec()
ats_int_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_topknd (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_int_type, tmp9) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_topknd:
tmp9 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_topknd) ;
return (tmp9) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_topknd] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 2911(line=115, offs=18) -- 2958(line=116, offs=40)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_origin (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp10) ;
ATSlocal (ats_ptr_type, tmp11) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_origin:
tmp11 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_origin) ;
tmp10 = ats_castfn_mac(ats_ptr_type, tmp11) ;
return (tmp10) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_origin] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3020(line=120, offs=18) -- 3044(line=120, offs=42)
*/
ATSglobaldec()
ats_int_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_stamp (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_int_type, tmp12) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_stamp:
tmp12 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_stamp) ;
return (tmp12) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_stamp] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3072(line=122, offs=18) -- 3097(line=122, offs=43)
*/
ATSglobaldec()
ats_int_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_suffix (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_int_type, tmp13) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_suffix:
tmp13 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_suffix) ;
return (tmp13) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_suffix] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3153(line=127, offs=20) -- 3175(line=127, offs=42)
*/
ATSglobaldec()
ats_int_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_tailcal (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_int_type, tmp14) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_tailcal:
tmp14 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_ret) ;
return (tmp14) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_tailcal] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3229(line=132, offs=18) -- 3305(line=133, offs=62)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__eq_tmpvar_tmpvar (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp15) ;
ATSlocal (ats_int_type, tmp16) ;
ATSlocal (ats_int_type, tmp17) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__eq_tmpvar_tmpvar:
tmp16 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_stamp) ;
tmp17 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg1), atslab_tmpvar_stamp) ;
tmp15 = _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__eq_stamp_stamp (tmp16, tmp17) ;
return (tmp15) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__eq_tmpvar_tmpvar] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3370(line=137, offs=23) -- 3451(line=138, offs=67)
*/
ATSglobaldec()
ats_int_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__compare_tmpvar_tmpvar (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_int_type, tmp18) ;
ATSlocal (ats_int_type, tmp19) ;
ATSlocal (ats_int_type, tmp20) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__compare_tmpvar_tmpvar:
tmp19 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg0), atslab_tmpvar_stamp) ;
tmp20 = ats_selbox_mac(ats_castptr_mac(anairiats_rec_0, arg1), atslab_tmpvar_stamp) ;
tmp18 = _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__compare_stamp_stamp (tmp19, tmp20) ;
return (tmp18) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__compare_tmpvar_tmpvar] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3581(line=149, offs=3) -- 3620(line=149, offs=42)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__print_tmpvar (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp21) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__print_tmpvar:
/* tmp21 = */ _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvar (stdout, arg0) ;
return /* (tmp21) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__print_tmpvar] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3646(line=152, offs=3) -- 3685(line=152, offs=42)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__prerr_tmpvar (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp22) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__prerr_tmpvar:
/* tmp22 = */ _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvar (stderr, arg0) ;
return /* (tmp22) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__prerr_tmpvar] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 3715(line=156, offs=3) -- 4111(line=168, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvar (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
// ATSlocal_void (tmp23) ;
ATSlocal (ats_bool_type, tmp24) ;
ATSlocal (ats_bool_type, tmp25) ;
ATSlocal (ats_int_type, tmp26) ;
// ATSlocal_void (tmp27) ;
// ATSlocal_void (tmp28) ;
// ATSlocal_void (tmp29) ;
// ATSlocal_void (tmp30) ;
// ATSlocal_void (tmp31) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvar:
tmp24 = _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isref (arg1) ;
tmp25 = _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_isret (arg1) ;
tmp26 = _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_stamp (arg1) ;
/* tmp27 = */ atspre_fprint_string (arg0, ATSstrcst("tmp")) ;
if (tmp24) {
/* tmp28 = */ atspre_fprint_string (arg0, ATSstrcst("ref")) ;
} else {
/* empty */
} /* end of [if] */
if (tmp25) {
/* tmp29 = */ atspre_fprint_string (arg0, ATSstrcst("ret")) ;
} else {
/* empty */
} /* end of [if] */
/* tmp30 = */ atspre_fprint_string (arg0, ATSstrcst("(")) ;
/* tmp31 = */ _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__fprint_stamp (arg0, tmp26) ;
/* tmp23 = */ atspre_fprint_string (arg0, ATSstrcst(")")) ;
return /* (tmp23) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvar] */

/*
// /tmp/ATS-Postiats/src/pats_utils.dats: 12283(line=676, offs=1) -- 12550(line=689, offs=8)
*/
ATSstaticdec()
ats_void_type
fprintopt_01724_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
// ATSlocal_void (tmp33) ;
ATSlocal (ats_ptr_type, tmp34) ;
// ATSlocal_void (tmp35) ;
// ATSlocal_void (tmp36) ;

__ats_lab_fprintopt_01724_ats_ptr_type:
do {
/* branch: __ats_lab_0 */
__ats_lab_0_0:
if (arg1 != (ats_sum_ptr_type)0) { goto __ats_lab_1_0 ; }
__ats_lab_0_1:
/* tmp33 = */ atspre_fprint_string (arg0, ATSstrcst("None()")) ;
break ;

/* branch: __ats_lab_1 */
__ats_lab_1_0:
// if (arg1 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_1_1:
tmp34 = ats_caselptrlab_mac(anairiats_sum_1, arg1, atslab_0) ;
/* tmp35 = */ atspre_fprint_string (arg0, ATSstrcst("Some(")) ;
/* tmp36 = */ ((ats_void_type(*)(ats_ptr_type, ats_ptr_type))arg2) (arg0, tmp34) ;
/* tmp33 = */ atspre_fprint_string (arg0, ATSstrcst(")")) ;
break ;
} while (0) ;
return /* (tmp33) */ ;
} /* end of [fprintopt_01724_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 4170(line=172, offs=3) -- 4222(line=172, offs=55)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvaropt (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
// ATSlocal_void (tmp32) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvaropt:
/* tmp32 = */ fprintopt_01724_ats_ptr_type (arg0, arg1, &_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvar) ;
return /* (tmp32) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__fprint_tmpvaropt] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 4531(line=193, offs=3) -- 4634(line=196, offs=2)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make_ref (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp37) ;
ATSlocal (ats_ptr_type, tmp38) ;
// ATSlocal_void (tmp39) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make_ref:
tmp38 = _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make (arg0, arg1) ;
/* tmp39 = */ patsopt_tmpvar_set_ref (tmp38, 1) ;
tmp37 = tmp38 ;
return (tmp37) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make_ref] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 4692(line=200, offs=3) -- 4795(line=203, offs=2)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make_ret (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp40) ;
ATSlocal (ats_ptr_type, tmp41) ;
// ATSlocal_void (tmp42) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make_ret:
tmp41 = _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make (arg0, arg1) ;
/* tmp42 = */ patsopt_tmpvar_set_ret (tmp41, 1) ;
tmp40 = tmp41 ;
return (tmp40) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_make_ret] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 4856(line=207, offs=3) -- 4963(line=210, offs=2)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_inc_tailcal (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp43) ;
ATSlocal (ats_int_type, tmp44) ;
ATSlocal (ats_int_type, tmp45) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_inc_tailcal:
tmp44 = _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_get_tailcal (arg0) ;
tmp45 = atspre_add_int_int (tmp44, 1) ;
/* tmp43 = */ patsopt_tmpvar_set_ret (arg0, tmp45) ;
return /* (tmp43) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_inc_tailcal] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 5066(line=217, offs=17) -- 5077(line=217, offs=28)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_copy_err (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp46) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_copy_err:
tmp46 = arg0 ;
return (tmp46) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_copy_err] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 5461(line=235, offs=11) -- 5550(line=239, offs=37)
*/
ATSstaticdec()
ats_int_type
__ats_fun_21 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_int_type, tmp47) ;

__ats_lab___ats_fun_21:
tmp47 = _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__compare_tmpvar_tmpvar (arg0, arg1) ;
return (tmp47) ;
} /* end of [__ats_fun_21] */

typedef struct {
ats_fun_ptr_type closure_fun ;
} __ats_fun_21_closure_type ;

ats_int_type
__ats_fun_21_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0, ats_ptr_type arg1) {
return __ats_fun_21 (arg0, arg1) ;
} /* end of function */

ATSinline()
ats_void_type
__ats_fun_21_closure_init (__ats_fun_21_closure_type *p_clo) {
p_clo->closure_fun = (ats_fun_ptr_type)&__ats_fun_21_clofun ;
return ;
} /* end of function */

ats_clo_ptr_type
__ats_fun_21_closure_make () {
__ats_fun_21_closure_type *p_clo = ATS_MALLOC(sizeof(__ats_fun_21_closure_type)) ;
__ats_fun_21_closure_init (p_clo) ;
return (ats_clo_ptr_type)p_clo ;
} /* end of function */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 2859(line=106, offs=17) -- 2868(line=106, offs=26)
*/
ATSstaticdec()
ats_ptr_type
linset_make_nil_05139_ () {
/* local vardec */
ATSlocal (ats_ptr_type, tmp50) ;

__ats_lab_linset_make_nil_05139_:
tmp50 = (ats_sum_ptr_type)0 ;
return (tmp50) ;
} /* end of [linset_make_nil_05139_] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 5619(line=245, offs=18) -- 5646(line=245, offs=45)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_nil () {
/* local vardec */
ATSlocal (ats_ptr_type, tmp49) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_nil:
tmp49 = linset_make_nil_05139_ () ;
return (tmp49) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_nil] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 4427(line=171, offs=7) -- 4555(line=175, offs=18)
*/
ATSstaticdec()
ats_void_type
aux_26 (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp53) ;
ATSlocal (ats_ptr_type, tmp54) ;
ATSlocal (ats_ptr_type, tmp55) ;
// ATSlocal_void (tmp56) ;

__ats_lab_aux_26:
do {
/* branch: __ats_lab_2 */
__ats_lab_2_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_3_0 ; }
__ats_lab_2_1:
tmp54 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_2) ;
tmp55 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_3) ;
ATS_FREE(arg0) ;
/* tmp56 = */ aux_26 (tmp54) ;
arg0 = tmp55 ;
goto __ats_lab_aux_26 ; // tail call
break ;

/* branch: __ats_lab_3 */
__ats_lab_3_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_3_1:
break ;
} while (0) ;
return /* (tmp53) */ ;
} /* end of [aux_26] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 4410(line=170, offs=13) -- 4591(line=179, offs=4)
*/
ATSstaticdec()
ats_void_type
linset_free_05146_ats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp52) ;

__ats_lab_linset_free_05146_ats_ptr_type:
/* tmp52 = */ aux_26 (arg0) ;
return /* (tmp52) */ ;
} /* end of [linset_free_05146_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 5676(line=248, offs=19) -- 5702(line=248, offs=45)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_free (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp51) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_free:
/* tmp51 = */ linset_free_05146_ats_ptr_type (arg0) ;
return /* (tmp51) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_free] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 2013(line=65, offs=17) -- 2041(line=65, offs=45)
*/
ATSstaticdec()
ats_int_type
compare_elt_elt_05138_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_int_type, tmp67) ;

__ats_lab_compare_elt_elt_05138_ats_ptr_type:
tmp67 = ((ats_int_type(*)(ats_clo_ptr_type, ats_ptr_type, ats_ptr_type))(ats_closure_fun(arg2))) (arg2, arg0, arg1) ;
return (tmp67) ;
} /* end of [compare_elt_elt_05138_ats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 3655(line=140, offs=3) -- 3740(line=141, offs=54)
*/
ATSstaticdec()
ats_int_type
avltree_height_01896_ats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_int_type, tmp72) ;
ATSlocal (ats_int_type, tmp73) ;

__ats_lab_avltree_height_01896_ats_ptr_type:
do {
/* branch: __ats_lab_5 */
__ats_lab_5_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_6_0 ; }
__ats_lab_5_1:
tmp73 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_0) ;
tmp72 = tmp73 ;
break ;

/* branch: __ats_lab_6 */
__ats_lab_6_0:
__ats_lab_6_1:
tmp72 = 0 ;
break ;
} while (0) ;
return (tmp72) ;
} /* end of [avltree_height_01896_ats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 6846(line=274, offs=32) -- 8280(line=323, offs=4)
*/
ATSstaticdec()
ats_ptr_type
avltree_rrotate_01950_ats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp82) ;
ATSlocal (ats_ptr_type, tmp83) ;
ATSlocal (ats_ptr_type, tmp84) ;
ATSlocal (ats_ptr_type, tmp85) ;
ATSlocal (ats_ptr_type, tmp86) ;
ATSlocal (ats_int_type, tmp87) ;
ATSlocal (ats_ptr_type, tmp88) ;
ATSlocal (ats_int_type, tmp89) ;
ATSlocal (ats_ptr_type, tmp90) ;
ATSlocal (ats_bool_type, tmp91) ;
ATSlocal (ats_int_type, tmp92) ;
ATSlocal (ats_int_type, tmp93) ;
ATSlocal (ats_ptr_type, tmp94) ;
ATSlocal (ats_int_type, tmp95) ;
ATSlocal (ats_int_type, tmp96) ;
ATSlocal (ats_ptr_type, tmp97) ;
ATSlocal (ats_ptr_type, tmp98) ;
ATSlocal (ats_ptr_type, tmp99) ;
ATSlocal (ats_ptr_type, tmp100) ;
ATSlocal (ats_int_type, tmp101) ;
ATSlocal (ats_ptr_type, tmp102) ;
ATSlocal (ats_int_type, tmp103) ;
ATSlocal (ats_ptr_type, tmp104) ;
ATSlocal (ats_int_type, tmp105) ;
ATSlocal (ats_int_type, tmp106) ;
ATSlocal (ats_ptr_type, tmp107) ;
ATSlocal (ats_int_type, tmp108) ;
ATSlocal (ats_int_type, tmp109) ;
ATSlocal (ats_ptr_type, tmp110) ;

__ats_lab_avltree_rrotate_01950_ats_ptr_type:
tmp83 = ats_ptrget_mac(ats_ptr_type, arg2) ;
// if (tmp83 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp84 = &ats_caselptrlab_mac(anairiats_sum_2, tmp83, atslab_0) ;
tmp85 = &ats_caselptrlab_mac(anairiats_sum_2, tmp83, atslab_2) ;
tmp86 = &ats_caselptrlab_mac(anairiats_sum_2, tmp83, atslab_3) ;
tmp88 = ats_ptrget_mac(ats_ptr_type, tmp85) ;
tmp87 = avltree_height_01896_ats_ptr_type (tmp88) ;
tmp90 = ats_ptrget_mac(ats_ptr_type, tmp86) ;
tmp89 = avltree_height_01896_ats_ptr_type (tmp90) ;
tmp92 = atspre_iadd (tmp87, 0) ;
tmp91 = atspre_igte (tmp92, tmp89) ;
if (tmp91) {
tmp93 = atspre_iadd (tmp89, 1) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp93 ;
tmp94 = ats_ptrget_mac(ats_ptr_type, tmp86) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp94 ;
tmp96 = atspre_imax (tmp87, tmp93) ;
tmp95 = atspre_iadd (1, tmp96) ;
ats_ptrget_mac(ats_int_type, tmp84) = tmp95 ;
ats_ptrget_mac(ats_ptr_type, tmp86) = arg5 ;
tmp82 = tmp83 ;
} else {
tmp97 = ats_ptrget_mac(ats_ptr_type, tmp86) ;
// if (tmp97 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp98 = &ats_caselptrlab_mac(anairiats_sum_2, tmp97, atslab_0) ;
tmp99 = &ats_caselptrlab_mac(anairiats_sum_2, tmp97, atslab_2) ;
tmp100 = &ats_caselptrlab_mac(anairiats_sum_2, tmp97, atslab_3) ;
tmp102 = ats_ptrget_mac(ats_ptr_type, tmp99) ;
tmp101 = avltree_height_01896_ats_ptr_type (tmp102) ;
tmp104 = ats_ptrget_mac(ats_ptr_type, tmp100) ;
tmp103 = avltree_height_01896_ats_ptr_type (tmp104) ;
tmp106 = atspre_imax (tmp103, arg3) ;
tmp105 = atspre_iadd (1, tmp106) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp105 ;
tmp107 = ats_ptrget_mac(ats_ptr_type, tmp100) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp107 ;
tmp109 = atspre_imax (tmp87, tmp101) ;
tmp108 = atspre_iadd (1, tmp109) ;
ats_ptrget_mac(ats_int_type, tmp84) = tmp108 ;
tmp110 = ats_ptrget_mac(ats_ptr_type, tmp99) ;
ats_ptrget_mac(ats_ptr_type, tmp86) = tmp110 ;
ats_ptrget_mac(ats_int_type, tmp98) = arg1 ;
ats_ptrget_mac(ats_ptr_type, tmp99) = tmp83 ;
ats_ptrget_mac(ats_ptr_type, tmp100) = arg5 ;
tmp82 = tmp97 ;
} /* end of [if] */
return (tmp82) ;
} /* end of [avltree_rrotate_01950_ats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 5209(line=217, offs=32) -- 6673(line=266, offs=4)
*/
ATSstaticdec()
ats_ptr_type
avltree_lrotate_01926_ats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp122) ;
ATSlocal (ats_ptr_type, tmp123) ;
ATSlocal (ats_ptr_type, tmp124) ;
ATSlocal (ats_ptr_type, tmp125) ;
ATSlocal (ats_ptr_type, tmp126) ;
ATSlocal (ats_int_type, tmp127) ;
ATSlocal (ats_ptr_type, tmp128) ;
ATSlocal (ats_int_type, tmp129) ;
ATSlocal (ats_ptr_type, tmp130) ;
ATSlocal (ats_bool_type, tmp131) ;
ATSlocal (ats_int_type, tmp132) ;
ATSlocal (ats_int_type, tmp133) ;
ATSlocal (ats_ptr_type, tmp134) ;
ATSlocal (ats_int_type, tmp135) ;
ATSlocal (ats_int_type, tmp136) ;
ATSlocal (ats_ptr_type, tmp137) ;
ATSlocal (ats_ptr_type, tmp138) ;
ATSlocal (ats_ptr_type, tmp139) ;
ATSlocal (ats_ptr_type, tmp140) ;
ATSlocal (ats_int_type, tmp141) ;
ATSlocal (ats_ptr_type, tmp142) ;
ATSlocal (ats_int_type, tmp143) ;
ATSlocal (ats_ptr_type, tmp144) ;
ATSlocal (ats_int_type, tmp145) ;
ATSlocal (ats_int_type, tmp146) ;
ATSlocal (ats_ptr_type, tmp147) ;
ATSlocal (ats_int_type, tmp148) ;
ATSlocal (ats_int_type, tmp149) ;
ATSlocal (ats_ptr_type, tmp150) ;

__ats_lab_avltree_lrotate_01926_ats_ptr_type:
tmp123 = ats_ptrget_mac(ats_ptr_type, arg4) ;
// if (tmp123 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp124 = &ats_caselptrlab_mac(anairiats_sum_2, tmp123, atslab_0) ;
tmp125 = &ats_caselptrlab_mac(anairiats_sum_2, tmp123, atslab_2) ;
tmp126 = &ats_caselptrlab_mac(anairiats_sum_2, tmp123, atslab_3) ;
tmp128 = ats_ptrget_mac(ats_ptr_type, tmp125) ;
tmp127 = avltree_height_01896_ats_ptr_type (tmp128) ;
tmp130 = ats_ptrget_mac(ats_ptr_type, tmp126) ;
tmp129 = avltree_height_01896_ats_ptr_type (tmp130) ;
tmp132 = atspre_iadd (tmp129, 0) ;
tmp131 = atspre_ilte (tmp127, tmp132) ;
if (tmp131) {
tmp133 = atspre_iadd (tmp127, 1) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp133 ;
tmp134 = ats_ptrget_mac(ats_ptr_type, tmp125) ;
ats_ptrget_mac(ats_ptr_type, arg4) = tmp134 ;
tmp136 = atspre_imax (tmp133, tmp129) ;
tmp135 = atspre_iadd (1, tmp136) ;
ats_ptrget_mac(ats_int_type, tmp124) = tmp135 ;
ats_ptrget_mac(ats_ptr_type, tmp125) = arg5 ;
tmp122 = tmp123 ;
} else {
tmp137 = ats_ptrget_mac(ats_ptr_type, tmp125) ;
// if (tmp137 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp138 = &ats_caselptrlab_mac(anairiats_sum_2, tmp137, atslab_0) ;
tmp139 = &ats_caselptrlab_mac(anairiats_sum_2, tmp137, atslab_2) ;
tmp140 = &ats_caselptrlab_mac(anairiats_sum_2, tmp137, atslab_3) ;
tmp142 = ats_ptrget_mac(ats_ptr_type, tmp139) ;
tmp141 = avltree_height_01896_ats_ptr_type (tmp142) ;
tmp144 = ats_ptrget_mac(ats_ptr_type, tmp140) ;
tmp143 = avltree_height_01896_ats_ptr_type (tmp144) ;
tmp146 = atspre_imax (arg1, tmp141) ;
tmp145 = atspre_iadd (1, tmp146) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp145 ;
tmp147 = ats_ptrget_mac(ats_ptr_type, tmp139) ;
ats_ptrget_mac(ats_ptr_type, arg4) = tmp147 ;
tmp149 = atspre_imax (tmp143, tmp129) ;
tmp148 = atspre_iadd (1, tmp149) ;
ats_ptrget_mac(ats_int_type, tmp124) = tmp148 ;
tmp150 = ats_ptrget_mac(ats_ptr_type, tmp140) ;
ats_ptrget_mac(ats_ptr_type, tmp125) = tmp150 ;
ats_ptrget_mac(ats_int_type, tmp138) = arg3 ;
ats_ptrget_mac(ats_ptr_type, tmp139) = arg5 ;
ats_ptrget_mac(ats_ptr_type, tmp140) = tmp123 ;
tmp122 = tmp137 ;
} /* end of [if] */
return (tmp122) ;
} /* end of [avltree_lrotate_01926_ats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 8387(line=331, offs=5) -- 10085(line=382, offs=4)
*/
ATSstaticdec()
ats_bool_type
insert_29 (ats_clo_ref_type env0, ats_ref_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp61) ;
ATSlocal (ats_ptr_type, tmp62) ;
ATSlocal (ats_ptr_type, tmp63) ;
ATSlocal (ats_ptr_type, tmp64) ;
ATSlocal (ats_ptr_type, tmp65) ;
ATSlocal (ats_int_type, tmp66) ;
ATSlocal (ats_ptr_type, tmp68) ;
ATSlocal (ats_bool_type, tmp69) ;
ATSlocal (ats_bool_type, tmp70) ;
ATSlocal (ats_int_type, tmp71) ;
ATSlocal (ats_ptr_type, tmp74) ;
ATSlocal (ats_int_type, tmp75) ;
ATSlocal (ats_ptr_type, tmp76) ;
ATSlocal (ats_bool_type, tmp77) ;
ATSlocal (ats_int_type, tmp78) ;
ATSlocal (ats_int_type, tmp79) ;
ATSlocal (ats_int_type, tmp80) ;
ATSlocal (ats_ptr_type, tmp81) ;
ATSlocal (ats_bool_type, tmp111) ;
ATSlocal (ats_bool_type, tmp112) ;
ATSlocal (ats_int_type, tmp113) ;
ATSlocal (ats_ptr_type, tmp114) ;
ATSlocal (ats_int_type, tmp115) ;
ATSlocal (ats_ptr_type, tmp116) ;
ATSlocal (ats_bool_type, tmp117) ;
ATSlocal (ats_int_type, tmp118) ;
ATSlocal (ats_int_type, tmp119) ;
ATSlocal (ats_int_type, tmp120) ;
ATSlocal (ats_ptr_type, tmp121) ;
ATSlocal (ats_ptr_type, tmp151) ;
ATSlocal (ats_ptr_type, tmp152) ;
ATSlocal (ats_ptr_type, tmp153) ;

__ats_lab_insert_29:
do {
/* branch: __ats_lab_4 */
__ats_lab_4_0:
if (ats_ptrget_mac(ats_ptr_type, arg0) == (ats_sum_ptr_type)0) { goto __ats_lab_7_0 ; }
__ats_lab_4_1:
tmp62 = &ats_caselptrlab_mac(anairiats_sum_2, ats_ptrget_mac(ats_ptr_type, arg0), atslab_0) ;
tmp63 = &ats_caselptrlab_mac(anairiats_sum_2, ats_ptrget_mac(ats_ptr_type, arg0), atslab_1) ;
tmp64 = &ats_caselptrlab_mac(anairiats_sum_2, ats_ptrget_mac(ats_ptr_type, arg0), atslab_2) ;
tmp65 = &ats_caselptrlab_mac(anairiats_sum_2, ats_ptrget_mac(ats_ptr_type, arg0), atslab_3) ;
tmp68 = ats_ptrget_mac(ats_ptr_type, tmp63) ;
tmp66 = compare_elt_elt_05138_ats_ptr_type (arg1, tmp68, env0) ;
tmp69 = atspre_lt_int_int (tmp66, 0) ;
if (tmp69) {
tmp70 = insert_29 (env0, tmp64, arg1) ;
tmp74 = ats_ptrget_mac(ats_ptr_type, tmp64) ;
tmp71 = avltree_height_01896_ats_ptr_type (tmp74) ;
tmp76 = ats_ptrget_mac(ats_ptr_type, tmp65) ;
tmp75 = avltree_height_01896_ats_ptr_type (tmp76) ;
tmp78 = atspre_isub (tmp71, tmp75) ;
tmp77 = atspre_ilte (tmp78, 1) ;
if (tmp77) {
tmp80 = atspre_imax (tmp71, tmp75) ;
tmp79 = atspre_iadd (1, tmp80) ;
ats_ptrget_mac(ats_int_type, tmp62) = tmp79 ;
tmp61 = tmp70 ;
} else {
tmp81 = avltree_rrotate_01950_ats_ptr_type (tmp62, tmp71, tmp64, tmp75, tmp65, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp81 ;
tmp61 = tmp70 ;
} /* end of [if] */
} else {
tmp111 = atspre_gt_int_int (tmp66, 0) ;
if (tmp111) {
tmp112 = insert_29 (env0, tmp65, arg1) ;
tmp114 = ats_ptrget_mac(ats_ptr_type, tmp64) ;
tmp113 = avltree_height_01896_ats_ptr_type (tmp114) ;
tmp116 = ats_ptrget_mac(ats_ptr_type, tmp65) ;
tmp115 = avltree_height_01896_ats_ptr_type (tmp116) ;
tmp118 = atspre_isub (tmp115, tmp113) ;
tmp117 = atspre_ilte (tmp118, 1) ;
if (tmp117) {
tmp120 = atspre_imax (tmp113, tmp115) ;
tmp119 = atspre_iadd (1, tmp120) ;
ats_ptrget_mac(ats_int_type, tmp62) = tmp119 ;
tmp61 = tmp112 ;
} else {
tmp121 = avltree_lrotate_01926_ats_ptr_type (tmp62, tmp113, tmp64, tmp115, tmp65, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp121 ;
tmp61 = tmp112 ;
} /* end of [if] */
} else {
tmp61 = ats_true_bool ;
} /* end of [if] */
} /* end of [if] */
break ;

/* branch: __ats_lab_7 */
__ats_lab_7_0:
// if (ats_ptrget_mac(ats_ptr_type, arg0) != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_7_1:
tmp152 = (ats_sum_ptr_type)0 ;
tmp153 = (ats_sum_ptr_type)0 ;
tmp151 = ATS_MALLOC(sizeof(anairiats_sum_2)) ;
ats_selptrset_mac(anairiats_sum_2, tmp151, atslab_0, 1) ;
ats_selptrset_mac(anairiats_sum_2, tmp151, atslab_1, arg1) ;
ats_selptrset_mac(anairiats_sum_2, tmp151, atslab_2, tmp152) ;
ats_selptrset_mac(anairiats_sum_2, tmp151, atslab_3, tmp153) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp151 ;
tmp61 = ats_false_bool ;
break ;
} while (0) ;
return (tmp61) ;
} /* end of [insert_29] */

typedef struct {
ats_fun_ptr_type closure_fun ;
ats_clo_ref_type closure_env_0 ;
} insert_29_closure_type ;

ats_bool_type
insert_29_clofun (ats_clo_ptr_type cloptr, ats_ref_type arg0, ats_ptr_type arg1) {
return insert_29 (((insert_29_closure_type*)cloptr)->closure_env_0, arg0, arg1) ;
} /* end of function */

ATSinline()
ats_void_type
insert_29_closure_init (insert_29_closure_type *p_clo, ats_clo_ref_type env0) {
p_clo->closure_fun = (ats_fun_ptr_type)&insert_29_clofun ;
p_clo->closure_env_0 = env0 ;
return ;
} /* end of function */

ats_clo_ptr_type
insert_29_closure_make (ats_clo_ref_type env0) {
insert_29_closure_type *p_clo = ATS_MALLOC(sizeof(insert_29_closure_type)) ;
insert_29_closure_init (p_clo, env0) ;
return (ats_clo_ptr_type)p_clo ;
} /* end of function */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 8360(line=329, offs=3) -- 10136(line=388, offs=4)
*/
ATSstaticdec()
ats_bool_type
linset_insert_05148_ats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_bool_type, tmp60) ;

__ats_lab_linset_insert_05148_ats_ptr_type:
tmp60 = insert_29 (arg2, arg0, arg1) ;
return (tmp60) ;
} /* end of [linset_insert_05148_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 5734(line=252, offs=3) -- 5823(line=255, offs=2)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_add (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp57) ;
ATSlocal (ats_ptr_type, tmp58) ;
ATSlocal (ats_bool_type, tmp59) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_add:
/* ats_ptr_type tmp58 ; */
tmp58 = arg0 ;
tmp59 = linset_insert_05148_ats_ptr_type ((&tmp58), arg1, statmp48) ;
tmp57 = tmp58 ;
return (tmp57) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_add] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 27430(line=997, offs=7) -- 27766(line=1008, offs=31)
*/
ATSstaticdec()
ats_ptr_type
aux_36 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp156) ;
ATSlocal (ats_ptr_type, tmp157) ;
ATSlocal (ats_ptr_type, tmp158) ;
ATSlocal (ats_ptr_type, tmp159) ;
ATSlocal (ats_ptr_type, tmp160) ;
ATSlocal (ats_ptr_type, tmp161) ;
ATSlocal (ats_ptr_type, tmp162) ;
ATSlocal (ats_ptr_type, tmp163) ;

__ats_lab_aux_36:
do {
/* branch: __ats_lab_8 */
__ats_lab_8_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_9_0 ; }
__ats_lab_8_1:
tmp157 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_1) ;
tmp158 = &ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_2) ;
tmp159 = &ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_3) ;
tmp161 = ats_ptrget_mac(ats_ptr_type, tmp159) ;
tmp160 = aux_36 (tmp161, arg1) ;
tmp162 = ATS_MALLOC(sizeof(anairiats_sum_3)) ;
ats_selptrset_mac(anairiats_sum_3, tmp162, atslab_0, tmp157) ;
ats_selptrset_mac(anairiats_sum_3, tmp162, atslab_1, tmp160) ;
tmp163 = ats_ptrget_mac(ats_ptr_type, tmp158) ;
arg0 = tmp163 ;
arg1 = tmp162 ;
goto __ats_lab_aux_36 ; // tail call
break ;

/* branch: __ats_lab_9 */
__ats_lab_9_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_9_1:
tmp156 = arg1 ;
break ;
} while (0) ;
return (tmp156) ;
} /* end of [aux_36] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 27379(line=995, offs=16) -- 27815(line=1012, offs=4)
*/
ATSstaticdec()
ats_ptr_type
linset_listize_05163_ats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp155) ;
ATSlocal (ats_ptr_type, tmp164) ;

__ats_lab_linset_listize_05163_ats_ptr_type:
tmp164 = (ats_sum_ptr_type)0 ;
tmp155 = aux_36 (arg0, tmp164) ;
return (tmp155) ;
} /* end of [linset_listize_05163_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 5885(line=258, offs=22) -- 5914(line=258, offs=51)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_listize (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp154) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_listize:
tmp154 = linset_listize_05163_ats_ptr_type (arg0) ;
return (tmp154) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_listize] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 27949(line=1019, offs=7) -- 28232(line=1029, offs=19)
*/
ATSstaticdec()
ats_ptr_type
aux_39 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp167) ;
ATSlocal (ats_ptr_type, tmp168) ;
ATSlocal (ats_ptr_type, tmp169) ;
ATSlocal (ats_ptr_type, tmp170) ;
ATSlocal (ats_ptr_type, tmp171) ;
ATSlocal (ats_ptr_type, tmp172) ;

__ats_lab_aux_39:
do {
/* branch: __ats_lab_10 */
__ats_lab_10_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_11_0 ; }
__ats_lab_10_1:
tmp168 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_1) ;
tmp169 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_2) ;
tmp170 = ats_caselptrlab_mac(anairiats_sum_2, arg0, atslab_3) ;
ATS_FREE(arg0) ;
tmp171 = aux_39 (tmp170, arg1) ;
tmp172 = ATS_MALLOC(sizeof(anairiats_sum_3)) ;
ats_selptrset_mac(anairiats_sum_3, tmp172, atslab_0, tmp168) ;
ats_selptrset_mac(anairiats_sum_3, tmp172, atslab_1, tmp171) ;
arg0 = tmp169 ;
arg1 = tmp172 ;
goto __ats_lab_aux_39 ; // tail call
break ;

/* branch: __ats_lab_11 */
__ats_lab_11_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_11_1:
tmp167 = arg1 ;
break ;
} while (0) ;
return (tmp167) ;
} /* end of [aux_39] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linset_avltree.dats: 27898(line=1017, offs=21) -- 28295(line=1033, offs=4)
*/
ATSstaticdec()
ats_ptr_type
linset_listize_free_05164_ats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp166) ;
ATSlocal (ats_ptr_type, tmp173) ;

__ats_lab_linset_listize_free_05164_ats_ptr_type:
tmp173 = (ats_sum_ptr_type)0 ;
tmp166 = aux_39 (arg0, tmp173) ;
return (tmp166) ;
} /* end of [linset_listize_free_05164_ats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 5952(line=260, offs=27) -- 5986(line=260, offs=61)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_listize_free (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp165) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_listize_free:
tmp165 = linset_listize_free_05164_ats_ptr_type (arg0) ;
return (tmp165) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarset_vt_listize_free] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 3005(line=103, offs=29) -- 3014(line=103, offs=38)
*/
ATSstaticdec()
ats_ptr_type
linmap_make_nil_05169_ () {
/* local vardec */
ATSlocal (ats_ptr_type, tmp175) ;

__ats_lab_linmap_make_nil_05169_:
tmp175 = (ats_sum_ptr_type)0 ;
return (tmp175) ;
} /* end of [linmap_make_nil_05169_] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 6037(line=265, offs=18) -- 6064(line=265, offs=45)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_nil () {
/* local vardec */
ATSlocal (ats_ptr_type, tmp174) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_nil:
tmp174 = linmap_make_nil_05169_ () ;
return (tmp174) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_nil] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 20597(line=699, offs=7) -- 20733(line=701, offs=65)
*/
ATSstaticdec()
ats_void_type
_free_44 (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp178) ;
ATSlocal (ats_ptr_type, tmp179) ;
ATSlocal (ats_ptr_type, tmp180) ;
// ATSlocal_void (tmp181) ;

__ats_lab__free_44:
do {
/* branch: __ats_lab_12 */
__ats_lab_12_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_13_0 ; }
__ats_lab_12_1:
tmp179 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_3) ;
tmp180 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_4) ;
ATS_FREE(arg0) ;
/* tmp181 = */ _free_44 (tmp179) ;
arg0 = tmp180 ;
goto __ats_lab__free_44 ; // tail call
break ;

/* branch: __ats_lab_13 */
__ats_lab_13_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_13_1:
break ;
} while (0) ;
return /* (tmp178) */ ;
} /* end of [_free_44] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 20567(line=698, offs=13) -- 20755(line=703, offs=2)
*/
ATSstaticdec()
ats_void_type
linmap_free_05186_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp177) ;

__ats_lab_linmap_free_05186_ats_ptr_type_2cats_ptr_type:
/* tmp177 = */ _free_44 (arg0) ;
return /* (tmp177) */ ;
} /* end of [linmap_free_05186_ats_ptr_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 6094(line=268, offs=19) -- 6122(line=268, offs=47)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_free (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp176) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_free:
/* tmp176 = */ linmap_free_05186_ats_ptr_type_2cats_ptr_type (arg0) ;
return /* (tmp176) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_free] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 2008(line=61, offs=17) -- 2036(line=61, offs=45)
*/
ATSstaticdec()
ats_int_type
compare_key_key_05168_ats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_int_type, tmp195) ;

__ats_lab_compare_key_key_05168_ats_ptr_type:
tmp195 = ((ats_int_type(*)(ats_clo_ptr_type, ats_ptr_type, ats_ptr_type))(ats_closure_fun(arg2))) (arg2, arg0, arg1) ;
return (tmp195) ;
} /* end of [compare_key_key_05168_ats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 4545(line=168, offs=7) -- 5110(line=188, offs=6)
*/
ATSstaticdec()
ats_ptr_type
search_49 (ats_ptr_type env0, ats_clo_ref_type env1, ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp189) ;
ATSlocal (ats_ptr_type, tmp190) ;
ATSlocal (ats_ptr_type, tmp191) ;
ATSlocal (ats_ptr_type, tmp192) ;
ATSlocal (ats_ptr_type, tmp193) ;
ATSlocal (ats_int_type, tmp194) ;
ATSlocal (ats_bool_type, tmp196) ;
ATSlocal (ats_ptr_type, tmp197) ;
ATSlocal (ats_bool_type, tmp198) ;
ATSlocal (ats_ptr_type, tmp199) ;

__ats_lab_search_49:
do {
/* branch: __ats_lab_14 */
__ats_lab_14_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_18_0 ; }
__ats_lab_14_1:
tmp190 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_1) ;
tmp191 = &ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_2) ;
tmp192 = &ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_3) ;
tmp193 = &ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_4) ;
tmp194 = compare_key_key_05168_ats_ptr_type (env0, tmp190, env1) ;
do {
/* branch: __ats_lab_15 */
__ats_lab_15_0:
__ats_lab_15_1:
tmp196 = atspre_lt_int_int (tmp194, 0) ;
if (!tmp196) { goto __ats_lab_16_1 ; }
tmp197 = ats_ptrget_mac(ats_ptr_type, tmp192) ;
arg0 = tmp197 ;
goto __ats_lab_search_49 ; // tail call
break ;

/* branch: __ats_lab_16 */
__ats_lab_16_0:
__ats_lab_16_1:
tmp198 = atspre_gt_int_int (tmp194, 0) ;
if (!tmp198) { goto __ats_lab_17_1 ; }
tmp199 = ats_ptrget_mac(ats_ptr_type, tmp193) ;
arg0 = tmp199 ;
goto __ats_lab_search_49 ; // tail call
break ;

/* branch: __ats_lab_17 */
__ats_lab_17_0:
__ats_lab_17_1:
tmp189 = tmp191 ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_18 */
__ats_lab_18_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_18_1:
tmp189 = atspre_null_ptr ;
break ;
} while (0) ;
return (tmp189) ;
} /* end of [search_49] */

typedef struct {
ats_fun_ptr_type closure_fun ;
ats_ptr_type closure_env_0 ;
ats_clo_ref_type closure_env_1 ;
} search_49_closure_type ;

ats_ptr_type
search_49_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0) {
return search_49 (((search_49_closure_type*)cloptr)->closure_env_0, ((search_49_closure_type*)cloptr)->closure_env_1, arg0) ;
} /* end of function */

ATSinline()
ats_void_type
search_49_closure_init (search_49_closure_type *p_clo, ats_ptr_type env0, ats_clo_ref_type env1) {
p_clo->closure_fun = (ats_fun_ptr_type)&search_49_clofun ;
p_clo->closure_env_0 = env0 ;
p_clo->closure_env_1 = env1 ;
return ;
} /* end of function */

ats_clo_ptr_type
search_49_closure_make (ats_ptr_type env0, ats_clo_ref_type env1) {
search_49_closure_type *p_clo = ATS_MALLOC(sizeof(search_49_closure_type)) ;
search_49_closure_init (p_clo, env0, env1) ;
return (ats_clo_ptr_type)p_clo ;
} /* end of function */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 4505(line=167, offs=3) -- 5131(line=189, offs=2)
*/
ATSstaticdec()
ats_ptr_type
linmap_search_ref_05175_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp188) ;

__ats_lab_linmap_search_ref_05175_ats_ptr_type_2cats_ptr_type:
tmp188 = search_49 (arg1, arg2, arg0) ;
return (tmp188) ;
} /* end of [linmap_search_ref_05175_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 4021(line=145, offs=3) -- 4437(line=162, offs=4)
*/
ATSstaticdec()
ats_bool_type
linmap_search_05174_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2, ats_ref_type arg3) {
/* local vardec */
ATSlocal (ats_bool_type, tmp186) ;
ATSlocal (ats_ptr_type, tmp187) ;
ATSlocal (ats_bool_type, tmp200) ;
ATSlocal (ats_ptr_type, tmp201) ;

__ats_lab_linmap_search_05174_ats_ptr_type_2cats_ptr_type:
tmp187 = linmap_search_ref_05175_ats_ptr_type_2cats_ptr_type (arg0, arg1, arg2) ;
tmp200 = atspre_pgt (tmp187, atspre_null_ptr) ;
if (tmp200) {
tmp201 = ats_ptrget_mac(ats_ptr_type, tmp187) ;
ats_ptrget_mac(ats_ptr_type, arg3) = tmp201 ;
tmp186 = ats_true_bool ;
} else {
tmp186 = ats_false_bool ;
} /* end of [if] */
return (tmp186) ;
} /* end of [linmap_search_05174_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 5224(line=196, offs=3) -- 5488(line=209, offs=4)
*/
ATSstaticdec()
ats_ptr_type
linmap_search_opt_05176_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp183) ;
ATSlocal (ats_ptr_type, tmp184) ;
ATSlocal (ats_bool_type, tmp185) ;

__ats_lab_linmap_search_opt_05176_ats_ptr_type_2cats_ptr_type:
/* ats_ptr_type tmp184 ; */
tmp185 = linmap_search_05174_ats_ptr_type_2cats_ptr_type (arg0, arg1, arg2, (&tmp184)) ;
if (tmp185) {
tmp183 = ATS_MALLOC(sizeof(anairiats_sum_1)) ;
ats_selptrset_mac(anairiats_sum_1, tmp183, atslab_0, tmp184) ;
} else {
tmp183 = (ats_sum_ptr_type)0 ;
} /* end of [if] */
return (tmp183) ;
} /* end of [linmap_search_opt_05176_ats_ptr_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 6161(line=272, offs=7) -- 6213(line=273, offs=40)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_search (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp182) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_search:
tmp182 = linmap_search_opt_05176_ats_ptr_type_2cats_ptr_type (arg0, arg1, statmp48) ;
return (tmp182) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_search] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 3769(line=134, offs=24) -- 3876(line=135, offs=69)
*/
ATSstaticdec()
ats_int_type
avltree_height_02279_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_int_type, tmp216) ;
ATSlocal (ats_int_type, tmp217) ;

__ats_lab_avltree_height_02279_ats_ptr_type_2cats_ptr_type:
do {
/* branch: __ats_lab_20 */
__ats_lab_20_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_21_0 ; }
__ats_lab_20_1:
tmp217 = ats_caselptrlab_mac(anairiats_sum_4, arg0, atslab_0) ;
tmp216 = tmp217 ;
break ;

/* branch: __ats_lab_21 */
__ats_lab_21_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_21_1:
tmp216 = 0 ;
break ;
} while (0) ;
return (tmp216) ;
} /* end of [avltree_height_02279_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 7405(line=276, offs=32) -- 8902(line=325, offs=4)
*/
ATSstaticdec()
ats_ptr_type
avltree_rrotate_02332_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp226) ;
ATSlocal (ats_ptr_type, tmp227) ;
ATSlocal (ats_ptr_type, tmp228) ;
ATSlocal (ats_ptr_type, tmp229) ;
ATSlocal (ats_ptr_type, tmp230) ;
ATSlocal (ats_int_type, tmp231) ;
ATSlocal (ats_ptr_type, tmp232) ;
ATSlocal (ats_int_type, tmp233) ;
ATSlocal (ats_ptr_type, tmp234) ;
ATSlocal (ats_bool_type, tmp235) ;
ATSlocal (ats_int_type, tmp236) ;
ATSlocal (ats_int_type, tmp237) ;
ATSlocal (ats_ptr_type, tmp238) ;
ATSlocal (ats_int_type, tmp239) ;
ATSlocal (ats_int_type, tmp240) ;
ATSlocal (ats_ptr_type, tmp241) ;
ATSlocal (ats_ptr_type, tmp242) ;
ATSlocal (ats_ptr_type, tmp243) ;
ATSlocal (ats_ptr_type, tmp244) ;
ATSlocal (ats_int_type, tmp245) ;
ATSlocal (ats_ptr_type, tmp246) ;
ATSlocal (ats_int_type, tmp247) ;
ATSlocal (ats_ptr_type, tmp248) ;
ATSlocal (ats_int_type, tmp249) ;
ATSlocal (ats_int_type, tmp250) ;
ATSlocal (ats_ptr_type, tmp251) ;
ATSlocal (ats_int_type, tmp252) ;
ATSlocal (ats_int_type, tmp253) ;
ATSlocal (ats_ptr_type, tmp254) ;

__ats_lab_avltree_rrotate_02332_ats_ptr_type_2cats_ptr_type:
tmp227 = ats_ptrget_mac(ats_ptr_type, arg2) ;
// if (tmp227 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp228 = &ats_caselptrlab_mac(anairiats_sum_4, tmp227, atslab_0) ;
tmp229 = &ats_caselptrlab_mac(anairiats_sum_4, tmp227, atslab_3) ;
tmp230 = &ats_caselptrlab_mac(anairiats_sum_4, tmp227, atslab_4) ;
tmp232 = ats_ptrget_mac(ats_ptr_type, tmp229) ;
tmp231 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp232) ;
tmp234 = ats_ptrget_mac(ats_ptr_type, tmp230) ;
tmp233 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp234) ;
tmp236 = atspre_iadd (tmp231, 0) ;
tmp235 = atspre_igte (tmp236, tmp233) ;
if (tmp235) {
tmp237 = atspre_iadd (tmp233, 1) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp237 ;
tmp238 = ats_ptrget_mac(ats_ptr_type, tmp230) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp238 ;
tmp240 = atspre_imax (tmp231, tmp237) ;
tmp239 = atspre_iadd (1, tmp240) ;
ats_ptrget_mac(ats_int_type, tmp228) = tmp239 ;
ats_ptrget_mac(ats_ptr_type, tmp230) = arg5 ;
tmp226 = tmp227 ;
} else {
tmp241 = ats_ptrget_mac(ats_ptr_type, tmp230) ;
// if (tmp241 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp242 = &ats_caselptrlab_mac(anairiats_sum_4, tmp241, atslab_0) ;
tmp243 = &ats_caselptrlab_mac(anairiats_sum_4, tmp241, atslab_3) ;
tmp244 = &ats_caselptrlab_mac(anairiats_sum_4, tmp241, atslab_4) ;
tmp246 = ats_ptrget_mac(ats_ptr_type, tmp243) ;
tmp245 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp246) ;
tmp248 = ats_ptrget_mac(ats_ptr_type, tmp244) ;
tmp247 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp248) ;
tmp250 = atspre_imax (tmp247, arg3) ;
tmp249 = atspre_iadd (1, tmp250) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp249 ;
tmp251 = ats_ptrget_mac(ats_ptr_type, tmp244) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp251 ;
tmp253 = atspre_imax (tmp231, tmp245) ;
tmp252 = atspre_iadd (1, tmp253) ;
ats_ptrget_mac(ats_int_type, tmp228) = tmp252 ;
tmp254 = ats_ptrget_mac(ats_ptr_type, tmp243) ;
ats_ptrget_mac(ats_ptr_type, tmp230) = tmp254 ;
ats_ptrget_mac(ats_int_type, tmp242) = arg1 ;
ats_ptrget_mac(ats_ptr_type, tmp243) = tmp227 ;
ats_ptrget_mac(ats_ptr_type, tmp244) = arg5 ;
tmp226 = tmp241 ;
} /* end of [if] */
return (tmp226) ;
} /* end of [avltree_rrotate_02332_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 5694(line=219, offs=32) -- 7221(line=268, offs=4)
*/
ATSstaticdec()
ats_ptr_type
avltree_lrotate_02307_ats_ptr_type_2cats_ptr_type (ats_ptr_type arg0, ats_int_type arg1, ats_ptr_type arg2, ats_int_type arg3, ats_ptr_type arg4, ats_ptr_type arg5) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp266) ;
ATSlocal (ats_ptr_type, tmp267) ;
ATSlocal (ats_ptr_type, tmp268) ;
ATSlocal (ats_ptr_type, tmp269) ;
ATSlocal (ats_ptr_type, tmp270) ;
ATSlocal (ats_int_type, tmp271) ;
ATSlocal (ats_ptr_type, tmp272) ;
ATSlocal (ats_int_type, tmp273) ;
ATSlocal (ats_ptr_type, tmp274) ;
ATSlocal (ats_bool_type, tmp275) ;
ATSlocal (ats_int_type, tmp276) ;
ATSlocal (ats_int_type, tmp277) ;
ATSlocal (ats_ptr_type, tmp278) ;
ATSlocal (ats_int_type, tmp279) ;
ATSlocal (ats_int_type, tmp280) ;
ATSlocal (ats_ptr_type, tmp281) ;
ATSlocal (ats_ptr_type, tmp282) ;
ATSlocal (ats_ptr_type, tmp283) ;
ATSlocal (ats_ptr_type, tmp284) ;
ATSlocal (ats_int_type, tmp285) ;
ATSlocal (ats_ptr_type, tmp286) ;
ATSlocal (ats_int_type, tmp287) ;
ATSlocal (ats_ptr_type, tmp288) ;
ATSlocal (ats_int_type, tmp289) ;
ATSlocal (ats_int_type, tmp290) ;
ATSlocal (ats_ptr_type, tmp291) ;
ATSlocal (ats_int_type, tmp292) ;
ATSlocal (ats_int_type, tmp293) ;
ATSlocal (ats_ptr_type, tmp294) ;

__ats_lab_avltree_lrotate_02307_ats_ptr_type_2cats_ptr_type:
tmp267 = ats_ptrget_mac(ats_ptr_type, arg4) ;
// if (tmp267 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp268 = &ats_caselptrlab_mac(anairiats_sum_4, tmp267, atslab_0) ;
tmp269 = &ats_caselptrlab_mac(anairiats_sum_4, tmp267, atslab_3) ;
tmp270 = &ats_caselptrlab_mac(anairiats_sum_4, tmp267, atslab_4) ;
tmp272 = ats_ptrget_mac(ats_ptr_type, tmp269) ;
tmp271 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp272) ;
tmp274 = ats_ptrget_mac(ats_ptr_type, tmp270) ;
tmp273 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp274) ;
tmp276 = atspre_iadd (tmp273, 0) ;
tmp275 = atspre_ilte (tmp271, tmp276) ;
if (tmp275) {
tmp277 = atspre_iadd (tmp271, 1) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp277 ;
tmp278 = ats_ptrget_mac(ats_ptr_type, tmp269) ;
ats_ptrget_mac(ats_ptr_type, arg4) = tmp278 ;
tmp280 = atspre_imax (tmp277, tmp273) ;
tmp279 = atspre_iadd (1, tmp280) ;
ats_ptrget_mac(ats_int_type, tmp268) = tmp279 ;
ats_ptrget_mac(ats_ptr_type, tmp269) = arg5 ;
tmp266 = tmp267 ;
} else {
tmp281 = ats_ptrget_mac(ats_ptr_type, tmp269) ;
// if (tmp281 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp282 = &ats_caselptrlab_mac(anairiats_sum_4, tmp281, atslab_0) ;
tmp283 = &ats_caselptrlab_mac(anairiats_sum_4, tmp281, atslab_3) ;
tmp284 = &ats_caselptrlab_mac(anairiats_sum_4, tmp281, atslab_4) ;
tmp286 = ats_ptrget_mac(ats_ptr_type, tmp283) ;
tmp285 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp286) ;
tmp288 = ats_ptrget_mac(ats_ptr_type, tmp284) ;
tmp287 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp288) ;
tmp290 = atspre_imax (arg1, tmp285) ;
tmp289 = atspre_iadd (1, tmp290) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp289 ;
tmp291 = ats_ptrget_mac(ats_ptr_type, tmp283) ;
ats_ptrget_mac(ats_ptr_type, arg4) = tmp291 ;
tmp293 = atspre_imax (tmp287, tmp273) ;
tmp292 = atspre_iadd (1, tmp293) ;
ats_ptrget_mac(ats_int_type, tmp268) = tmp292 ;
tmp294 = ats_ptrget_mac(ats_ptr_type, tmp284) ;
ats_ptrget_mac(ats_ptr_type, tmp269) = tmp294 ;
ats_ptrget_mac(ats_int_type, tmp282) = arg3 ;
ats_ptrget_mac(ats_ptr_type, tmp283) = arg5 ;
ats_ptrget_mac(ats_ptr_type, tmp284) = tmp267 ;
tmp266 = tmp281 ;
} /* end of [if] */
return (tmp266) ;
} /* end of [avltree_lrotate_02307_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 9023(line=333, offs=5) -- 11023(line=394, offs=4)
*/
ATSstaticdec()
ats_bool_type
insert_53 (ats_ptr_type env0, ats_clo_ref_type env1, ats_ref_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
/* local vardec */
ATSlocal (ats_bool_type, tmp205) ;
ATSlocal (ats_ptr_type, tmp206) ;
ATSlocal (ats_ptr_type, tmp207) ;
ATSlocal (ats_ptr_type, tmp208) ;
ATSlocal (ats_ptr_type, tmp209) ;
ATSlocal (ats_ptr_type, tmp210) ;
ATSlocal (ats_int_type, tmp211) ;
ATSlocal (ats_ptr_type, tmp212) ;
ATSlocal (ats_bool_type, tmp213) ;
ATSlocal (ats_bool_type, tmp214) ;
ATSlocal (ats_int_type, tmp215) ;
ATSlocal (ats_ptr_type, tmp218) ;
ATSlocal (ats_int_type, tmp219) ;
ATSlocal (ats_ptr_type, tmp220) ;
ATSlocal (ats_bool_type, tmp221) ;
ATSlocal (ats_int_type, tmp222) ;
ATSlocal (ats_int_type, tmp223) ;
ATSlocal (ats_int_type, tmp224) ;
ATSlocal (ats_ptr_type, tmp225) ;
ATSlocal (ats_bool_type, tmp255) ;
ATSlocal (ats_bool_type, tmp256) ;
ATSlocal (ats_int_type, tmp257) ;
ATSlocal (ats_ptr_type, tmp258) ;
ATSlocal (ats_int_type, tmp259) ;
ATSlocal (ats_ptr_type, tmp260) ;
ATSlocal (ats_bool_type, tmp261) ;
ATSlocal (ats_int_type, tmp262) ;
ATSlocal (ats_int_type, tmp263) ;
ATSlocal (ats_int_type, tmp264) ;
ATSlocal (ats_ptr_type, tmp265) ;
ATSlocal (ats_ptr_type, tmp295) ;
ATSlocal (ats_ptr_type, tmp296) ;
ATSlocal (ats_ptr_type, tmp297) ;
ATSlocal (ats_ptr_type, tmp298) ;

__ats_lab_insert_53:
do {
/* branch: __ats_lab_19 */
__ats_lab_19_0:
if (ats_ptrget_mac(ats_ptr_type, arg0) == (ats_sum_ptr_type)0) { goto __ats_lab_22_0 ; }
__ats_lab_19_1:
tmp206 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_0) ;
tmp207 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_1) ;
tmp208 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_2) ;
tmp209 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_3) ;
tmp210 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_4) ;
tmp212 = ats_ptrget_mac(ats_ptr_type, tmp207) ;
tmp211 = compare_key_key_05168_ats_ptr_type (env0, tmp212, env1) ;
tmp213 = atspre_lt_int_int (tmp211, 0) ;
if (tmp213) {
tmp214 = insert_53 (env0, env1, tmp209, arg1, arg2) ;
tmp218 = ats_ptrget_mac(ats_ptr_type, tmp209) ;
tmp215 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp218) ;
tmp220 = ats_ptrget_mac(ats_ptr_type, tmp210) ;
tmp219 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp220) ;
tmp222 = atspre_isub (tmp215, tmp219) ;
tmp221 = atspre_ilte (tmp222, 1) ;
if (tmp221) {
tmp224 = atspre_imax (tmp215, tmp219) ;
tmp223 = atspre_iadd (1, tmp224) ;
ats_ptrget_mac(ats_int_type, tmp206) = tmp223 ;
tmp205 = tmp214 ;
} else {
tmp225 = avltree_rrotate_02332_ats_ptr_type_2cats_ptr_type (tmp206, tmp215, tmp209, tmp219, tmp210, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp225 ;
tmp205 = tmp214 ;
} /* end of [if] */
} else {
tmp255 = atspre_gt_int_int (tmp211, 0) ;
if (tmp255) {
tmp256 = insert_53 (env0, env1, tmp210, arg1, arg2) ;
tmp258 = ats_ptrget_mac(ats_ptr_type, tmp209) ;
tmp257 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp258) ;
tmp260 = ats_ptrget_mac(ats_ptr_type, tmp210) ;
tmp259 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp260) ;
tmp262 = atspre_isub (tmp259, tmp257) ;
tmp261 = atspre_ilte (tmp262, 1) ;
if (tmp261) {
tmp264 = atspre_imax (tmp257, tmp259) ;
tmp263 = atspre_iadd (1, tmp264) ;
ats_ptrget_mac(ats_int_type, tmp206) = tmp263 ;
tmp205 = tmp256 ;
} else {
tmp265 = avltree_lrotate_02307_ats_ptr_type_2cats_ptr_type (tmp206, tmp257, tmp209, tmp259, tmp210, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp265 ;
tmp205 = tmp256 ;
} /* end of [if] */
} else {
tmp295 = ats_ptrget_mac(ats_ptr_type, tmp208) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp295 ;
ats_ptrget_mac(ats_ptr_type, tmp208) = arg1 ;
tmp205 = ats_true_bool ;
} /* end of [if] */
} /* end of [if] */
break ;

/* branch: __ats_lab_22 */
__ats_lab_22_0:
// if (ats_ptrget_mac(ats_ptr_type, arg0) != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_22_1:
tmp297 = (ats_sum_ptr_type)0 ;
tmp298 = (ats_sum_ptr_type)0 ;
tmp296 = ATS_MALLOC(sizeof(anairiats_sum_4)) ;
ats_selptrset_mac(anairiats_sum_4, tmp296, atslab_0, 1) ;
ats_selptrset_mac(anairiats_sum_4, tmp296, atslab_1, env0) ;
ats_selptrset_mac(anairiats_sum_4, tmp296, atslab_2, arg1) ;
ats_selptrset_mac(anairiats_sum_4, tmp296, atslab_3, tmp297) ;
ats_selptrset_mac(anairiats_sum_4, tmp296, atslab_4, tmp298) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp296 ;
tmp205 = ats_false_bool ;
break ;
} while (0) ;
return (tmp205) ;
} /* end of [insert_53] */

typedef struct {
ats_fun_ptr_type closure_fun ;
ats_ptr_type closure_env_0 ;
ats_clo_ref_type closure_env_1 ;
} insert_53_closure_type ;

ats_bool_type
insert_53_clofun (ats_clo_ptr_type cloptr, ats_ref_type arg0, ats_ptr_type arg1, ats_ref_type arg2) {
return insert_53 (((insert_53_closure_type*)cloptr)->closure_env_0, ((insert_53_closure_type*)cloptr)->closure_env_1, arg0, arg1, arg2) ;
} /* end of function */

ATSinline()
ats_void_type
insert_53_closure_init (insert_53_closure_type *p_clo, ats_ptr_type env0, ats_clo_ref_type env1) {
p_clo->closure_fun = (ats_fun_ptr_type)&insert_53_clofun ;
p_clo->closure_env_0 = env0 ;
p_clo->closure_env_1 = env1 ;
return ;
} /* end of function */

ats_clo_ptr_type
insert_53_closure_make (ats_ptr_type env0, ats_clo_ref_type env1) {
insert_53_closure_type *p_clo = ATS_MALLOC(sizeof(insert_53_closure_type)) ;
insert_53_closure_init (p_clo, env0, env1) ;
return (ats_clo_ptr_type)p_clo ;
} /* end of function */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 8988(line=331, offs=3) -- 11078(line=400, offs=4)
*/
ATSstaticdec()
ats_bool_type
linmap_insert_05177_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2, ats_clo_ref_type arg3, ats_ref_type arg4) {
/* local vardec */
ATSlocal (ats_bool_type, tmp204) ;

__ats_lab_linmap_insert_05177_ats_ptr_type_2cats_ptr_type:
tmp204 = insert_53 (arg1, arg3, arg0, arg2, arg4) ;
return (tmp204) ;
} /* end of [linmap_insert_05177_ats_ptr_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 6283(line=278, offs=7) -- 6429(line=284, offs=4)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_insert (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
ATSlocal (ats_bool_type, tmp202) ;
ATSlocal (ats_ptr_type, tmp203) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_insert:
/* ats_ptr_type tmp203 ; */
tmp202 = linmap_insert_05177_ats_ptr_type_2cats_ptr_type (arg0, arg1, arg2, statmp48, (&tmp203)) ;
return (tmp202) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_insert] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 11578(line=417, offs=35) -- 12629(line=451, offs=4)
*/
ATSstaticdec()
ats_ptr_type
avltree_takeout_min_02383_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp334) ;
ATSlocal (ats_ptr_type, tmp335) ;
ATSlocal (ats_ptr_type, tmp336) ;
ATSlocal (ats_ptr_type, tmp337) ;
ATSlocal (ats_ptr_type, 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_bool_type, tmp344) ;
ATSlocal (ats_int_type, tmp345) ;
ATSlocal (ats_int_type, tmp346) ;
ATSlocal (ats_int_type, tmp347) ;
ATSlocal (ats_ptr_type, tmp348) ;
ATSlocal (ats_ptr_type, tmp349) ;
ATSlocal (ats_ptr_type, tmp350) ;

__ats_lab_avltree_takeout_min_02383_ats_ptr_type_2cats_ptr_type:
// if (ats_ptrget_mac(ats_ptr_type, arg0) == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp335 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_0) ;
tmp336 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_3) ;
tmp337 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_4) ;
tmp338 = ats_ptrget_mac(ats_ptr_type, tmp336) ;
do {
/* branch: __ats_lab_28 */
__ats_lab_28_0:
if (tmp338 == (ats_sum_ptr_type)0) { goto __ats_lab_29_0 ; }
__ats_lab_28_1:
tmp339 = avltree_takeout_min_02383_ats_ptr_type_2cats_ptr_type (tmp336) ;
tmp341 = ats_ptrget_mac(ats_ptr_type, tmp336) ;
tmp340 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp341) ;
tmp343 = ats_ptrget_mac(ats_ptr_type, tmp337) ;
tmp342 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp343) ;
tmp345 = atspre_isub (tmp342, tmp340) ;
tmp344 = atspre_ilte (tmp345, 1) ;
if (tmp344) {
tmp347 = atspre_imax (tmp340, tmp342) ;
tmp346 = atspre_iadd (1, tmp347) ;
ats_ptrget_mac(ats_int_type, tmp335) = tmp346 ;
tmp334 = tmp339 ;
} else {
tmp348 = avltree_lrotate_02307_ats_ptr_type_2cats_ptr_type (tmp335, tmp340, tmp336, tmp342, tmp337, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp348 ;
tmp334 = tmp339 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_29 */
__ats_lab_29_0:
// if (tmp338 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_29_1:
tmp349 = ats_ptrget_mac(ats_ptr_type, tmp337) ;
tmp350 = ats_ptrget_mac(ats_ptr_type, arg0) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp349 ;
tmp334 = ats_castfn_mac(ats_ptr_type, tmp350) ;
break ;
} while (0) ;
return (tmp334) ;
} /* end of [avltree_takeout_min_02383_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 13012(line=467, offs=7) -- 16649(line=558, offs=6)
*/
ATSstaticdec()
ats_bool_type
takeout_60 (ats_ptr_type env0, ats_clo_ref_type env1, ats_ref_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp302) ;
ATSlocal (ats_ptr_type, tmp303) ;
ATSlocal (ats_ptr_type, tmp304) ;
ATSlocal (ats_ptr_type, tmp305) ;
ATSlocal (ats_ptr_type, tmp306) ;
ATSlocal (ats_ptr_type, tmp307) ;
ATSlocal (ats_int_type, tmp308) ;
ATSlocal (ats_ptr_type, tmp309) ;
ATSlocal (ats_bool_type, tmp310) ;
ATSlocal (ats_bool_type, tmp311) ;
ATSlocal (ats_int_type, tmp312) ;
ATSlocal (ats_ptr_type, tmp313) ;
ATSlocal (ats_int_type, tmp314) ;
ATSlocal (ats_ptr_type, tmp315) ;
ATSlocal (ats_bool_type, tmp316) ;
ATSlocal (ats_int_type, tmp317) ;
ATSlocal (ats_ptr_type, tmp318) ;
ATSlocal (ats_bool_type, tmp319) ;
ATSlocal (ats_bool_type, tmp320) ;
ATSlocal (ats_int_type, tmp321) ;
ATSlocal (ats_ptr_type, tmp322) ;
ATSlocal (ats_int_type, tmp323) ;
ATSlocal (ats_ptr_type, tmp324) ;
ATSlocal (ats_bool_type, tmp325) ;
ATSlocal (ats_int_type, tmp326) ;
ATSlocal (ats_ptr_type, tmp327) ;
ATSlocal (ats_bool_type, tmp329) ;
ATSlocal (ats_ptr_type, tmp330) ;
ATSlocal (ats_ptr_type, tmp331) ;
ATSlocal (ats_ptr_type, tmp332) ;
ATSlocal (ats_ptr_type, tmp333) ;
ATSlocal (ats_ptr_type, tmp351) ;
ATSlocal (ats_ptr_type, tmp352) ;
ATSlocal (ats_ptr_type, tmp353) ;
ATSlocal (ats_int_type, tmp354) ;
ATSlocal (ats_int_type, tmp355) ;
ATSlocal (ats_bool_type, tmp356) ;
ATSlocal (ats_int_type, tmp357) ;
ATSlocal (ats_int_type, tmp358) ;
ATSlocal (ats_int_type, tmp359) ;
ATSlocal (ats_ptr_type, tmp360) ;

__ats_lab_takeout_60:
do {
/* branch: __ats_lab_23 */
__ats_lab_23_0:
if (ats_ptrget_mac(ats_ptr_type, arg0) == (ats_sum_ptr_type)0) { goto __ats_lab_31_0 ; }
__ats_lab_23_1:
tmp303 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_0) ;
tmp304 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_1) ;
tmp305 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_2) ;
tmp306 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_3) ;
tmp307 = &ats_caselptrlab_mac(anairiats_sum_4, ats_ptrget_mac(ats_ptr_type, arg0), atslab_4) ;
tmp309 = ats_ptrget_mac(ats_ptr_type, tmp304) ;
tmp308 = compare_key_key_05168_ats_ptr_type (env0, tmp309, env1) ;
do {
/* branch: __ats_lab_24 */
__ats_lab_24_0:
__ats_lab_24_1:
tmp310 = atspre_lt_int_int (tmp308, 0) ;
if (!tmp310) { goto __ats_lab_25_1 ; }
tmp311 = takeout_60 (env0, env1, tmp306, arg1) ;
tmp313 = ats_ptrget_mac(ats_ptr_type, tmp306) ;
tmp312 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp313) ;
tmp315 = ats_ptrget_mac(ats_ptr_type, tmp307) ;
tmp314 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp315) ;
tmp317 = atspre_isub (tmp314, tmp312) ;
tmp316 = atspre_ilte (tmp317, 1) ;
if (tmp316) {
tmp302 = tmp311 ;
} else {
tmp318 = avltree_lrotate_02307_ats_ptr_type_2cats_ptr_type (tmp303, tmp312, tmp306, tmp314, tmp307, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp318 ;
tmp302 = tmp311 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_25 */
__ats_lab_25_0:
__ats_lab_25_1:
tmp319 = atspre_gt_int_int (tmp308, 0) ;
if (!tmp319) { goto __ats_lab_26_1 ; }
tmp320 = takeout_60 (env0, env1, tmp307, arg1) ;
tmp322 = ats_ptrget_mac(ats_ptr_type, tmp306) ;
tmp321 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp322) ;
tmp324 = ats_ptrget_mac(ats_ptr_type, tmp307) ;
tmp323 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp324) ;
tmp326 = atspre_isub (tmp321, tmp323) ;
tmp325 = atspre_ilte (tmp326, 1) ;
if (tmp325) {
tmp302 = tmp320 ;
} else {
tmp327 = avltree_rrotate_02332_ats_ptr_type_2cats_ptr_type (tmp303, tmp321, tmp306, tmp323, tmp307, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp327 ;
tmp302 = tmp320 ;
} /* end of [if] */
break ;

/* branch: __ats_lab_26 */
__ats_lab_26_0:
__ats_lab_26_1:
tmp329 = atspre_pgt (arg1, atspre_null_ptr) ;
if (tmp329) {
tmp330 = ats_ptrget_mac(ats_ptr_type, tmp305) ;
ats_ptrget_mac(ats_ptr_type, arg1) = tmp330 ;
} else {
/* empty */
} /* end of [if] */
/* ats_ptr_type tmp331 ; */
tmp331 = ats_ptrget_mac(ats_ptr_type, tmp306) ;
/* ats_ptr_type tmp332 ; */
tmp332 = ats_ptrget_mac(ats_ptr_type, tmp307) ;
ATS_FREE(ats_ptrget_mac(ats_ptr_type, arg0)) ;
do {
/* branch: __ats_lab_27 */
__ats_lab_27_0:
if (tmp332 == (ats_sum_ptr_type)0) { goto __ats_lab_30_0 ; }
__ats_lab_27_1:
tmp333 = avltree_takeout_min_02383_ats_ptr_type_2cats_ptr_type ((&tmp332)) ;
if (tmp333 == (ats_sum_ptr_type)0) { ats_caseof_failure_handle ("/nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 15639(line=535, offs=21) -- 15683(line=535, offs=65)") ; }
tmp351 = &ats_caselptrlab_mac(anairiats_sum_4, tmp333, atslab_0) ;
tmp352 = &ats_caselptrlab_mac(anairiats_sum_4, tmp333, atslab_3) ;
tmp353 = &ats_caselptrlab_mac(anairiats_sum_4, tmp333, atslab_4) ;
tmp354 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp331) ;
tmp355 = avltree_height_02279_ats_ptr_type_2cats_ptr_type (tmp332) ;
ats_ptrget_mac(ats_ptr_type, tmp352) = tmp331 ;
ats_ptrget_mac(ats_ptr_type, tmp353) = tmp332 ;
tmp357 = atspre_isub (tmp354, tmp355) ;
tmp356 = atspre_ilte (tmp357, 1) ;
if (tmp356) {
tmp359 = atspre_imax (tmp354, tmp355) ;
tmp358 = atspre_iadd (1, tmp359) ;
ats_ptrget_mac(ats_int_type, tmp351) = tmp358 ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp333 ;
tmp302 = ats_true_bool ;
} else {
tmp360 = avltree_rrotate_02332_ats_ptr_type_2cats_ptr_type (tmp351, tmp354, tmp352, tmp355, tmp353, tmp333) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp360 ;
tmp302 = ats_true_bool ;
} /* end of [if] */
break ;

/* branch: __ats_lab_30 */
__ats_lab_30_0:
// if (tmp332 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_30_1:
ats_ptrget_mac(ats_ptr_type, arg0) = tmp331 ;
tmp302 = ats_true_bool ;
break ;
} while (0) ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_31 */
__ats_lab_31_0:
// if (ats_ptrget_mac(ats_ptr_type, arg0) != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_31_1:
tmp302 = ats_false_bool ;
break ;
} while (0) ;
return (tmp302) ;
} /* end of [takeout_60] */

typedef struct {
ats_fun_ptr_type closure_fun ;
ats_ptr_type closure_env_0 ;
ats_clo_ref_type closure_env_1 ;
} takeout_60_closure_type ;

ats_bool_type
takeout_60_clofun (ats_clo_ptr_type cloptr, ats_ref_type arg0, ats_ptr_type arg1) {
return takeout_60 (((takeout_60_closure_type*)cloptr)->closure_env_0, ((takeout_60_closure_type*)cloptr)->closure_env_1, arg0, arg1) ;
} /* end of function */

ATSinline()
ats_void_type
takeout_60_closure_init (takeout_60_closure_type *p_clo, ats_ptr_type env0, ats_clo_ref_type env1) {
p_clo->closure_fun = (ats_fun_ptr_type)&takeout_60_clofun ;
p_clo->closure_env_0 = env0 ;
p_clo->closure_env_1 = env1 ;
return ;
} /* end of function */

ats_clo_ptr_type
takeout_60_closure_make (ats_ptr_type env0, ats_clo_ref_type env1) {
takeout_60_closure_type *p_clo = ATS_MALLOC(sizeof(takeout_60_closure_type)) ;
takeout_60_closure_init (p_clo, env0, env1) ;
return (ats_clo_ptr_type)p_clo ;
} /* end of function */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 12957(line=466, offs=3) -- 16671(line=559, offs=2)
*/
ATSstaticdec()
ats_bool_type
linmap_takeout_ptr_05192_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2, ats_ptr_type arg3) {
/* local vardec */
ATSlocal (ats_bool_type, tmp301) ;

__ats_lab_linmap_takeout_ptr_05192_ats_ptr_type_2cats_ptr_type:
tmp301 = takeout_60 (arg1, arg2, arg0, arg3) ;
return (tmp301) ;
} /* end of [linmap_takeout_ptr_05192_ats_ptr_type_2cats_ptr_type] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 17132(line=576, offs=15) -- 17193(line=576, offs=76)
*/
ATSstaticdec()
ats_bool_type
linmap_remove_05179_ats_ptr_type_2cats_ptr_type (ats_ref_type arg0, ats_ptr_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_bool_type, tmp300) ;

__ats_lab_linmap_remove_05179_ats_ptr_type_2cats_ptr_type:
tmp300 = linmap_takeout_ptr_05192_ats_ptr_type_2cats_ptr_type (arg0, arg1, arg2, atspre_null_ptr) ;
return (tmp300) ;
} /* end of [linmap_remove_05179_ats_ptr_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 6499(line=288, offs=7) -- 6547(line=289, offs=36)
*/
ATSglobaldec()
ats_bool_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_remove (ats_ref_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_bool_type, tmp299) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_remove:
tmp299 = linmap_remove_05179_ats_ptr_type_2cats_ptr_type (arg0, arg1, statmp48) ;
return (tmp299) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvarmap_vt_remove] */

/*
// /tmp/ATS-Postiats/src/pats_ccomp_tmpvar.dats: 6654(line=298, offs=3) -- 6901(line=309, offs=2)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_set_tyclo (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
// ATSlocal_void (tmp361) ;
ATSlocal (ats_ptr_type, tmp362) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_set_tyclo:
tmp362 = _2tmp_2ATS_2dPostiats_2src_2pats_histaexp_2esats__hisexp_tyclo (arg1) ;
/* tmp361 = */ patsopt_tmpvar_set_type (arg0, tmp362) ;
return /* (tmp361) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__tmpvar_set_tyclo] */

/* static load function */

// extern ats_void_type ATS_2d0_2e2_2e12_2prelude_2SATS_2unsafe_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_utils_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_utils_2edats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_location_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_histaexp_2esats__staload (void) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__staload (void) ;
// extern ats_void_type ATS_2d0_2e2_2e12_2libats_2SATS_2linset_avltree_2esats__staload (void) ;
// extern ats_void_type ATS_2d0_2e2_2e12_2libats_2DATS_2linset_avltree_2edats__staload (void) ;
// extern ats_void_type ATS_2d0_2e2_2e12_2libats_2SATS_2linmap_avltree_2esats__staload (void) ;
// extern ats_void_type ATS_2d0_2e2_2e12_2libats_2DATS_2linmap_avltree_2edats__staload (void) ;

ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_2edats__staload () {
static int _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_2edats__staload_flag = 0 ;
if (_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_2edats__staload_flag) return ;
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_2edats__staload_flag = 1 ;

// ATS_2d0_2e2_2e12_2prelude_2SATS_2unsafe_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_utils_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_utils_2edats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_basics_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_stamp_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_location_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_histaexp_2esats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_2esats__staload () ;
// ATS_2d0_2e2_2e12_2libats_2SATS_2linset_avltree_2esats__staload () ;
// ATS_2d0_2e2_2e12_2libats_2DATS_2linset_avltree_2edats__staload () ;
// ATS_2d0_2e2_2e12_2libats_2SATS_2linmap_avltree_2esats__staload () ;
// ATS_2d0_2e2_2e12_2libats_2DATS_2linmap_avltree_2edats__staload () ;

return ;
} /* staload function */

/* dynamic load function */

// dynload flag declaration
extern ats_int_type _2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_2edats__dynload_flag ;

ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_2edats__dynload () {
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_2edats__dynload_flag = 1 ;
_2tmp_2ATS_2dPostiats_2src_2pats_ccomp_tmpvar_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_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_2libats_2ngc_2SATS_2deque_arr_2esats__lemma_deque_param_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_v_encode_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_v_decode_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_v_clear_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_insert_beg_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_insert_end_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_remove_beg_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats__DEQUEarr_remove_end_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
ATS_2d0_2e2_2e12_2libats_2ngc_2DATS_2deque_arr_2edats____assert_prfck () ;
_2tmp_2ATS_2dPostiats_2src_2pats_utils_2edats____assert_prfck () ;
_2tmp_2ATS_2dPostiats_2src_2pats_utils_2edats____assert_prfck () ;
#endif /* _ATS_PROOFCHECK */

/* marking static variables for GC */
ATS_GC_MARKROOT(&statmp48, sizeof(ats_ptr_type)) ;

/* marking external values for GC */

/* code for dynamic loading */
statmp48 = __ats_fun_21_closure_make () ;
return ;
} /* end of [dynload function] */

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


ats_void_type
patsopt_tmpvar_set_type
(
  ats_ptr_type tmp, ats_ptr_type hse
) {
  ((tmpvar_t)tmp)->atslab_tmpvar_type = hse ; return ;
} // end of [patsopt_tmpvar_set_type]

ats_void_type
patsopt_tmpvar_set_ref
(
  ats_ptr_type tmp, ats_int_type ref
) {
  ((tmpvar_t)tmp)->atslab_tmpvar_ref = ref ; return ;
} // end of [patsopt_tmpvar_set_ref]

ats_void_type
patsopt_tmpvar_set_ret
(
  ats_ptr_type tmp, ats_int_type ret
) {
  ((tmpvar_t)tmp)->atslab_tmpvar_ret = ret ; return ;
} // end of [patsopt_tmpvar_set_ret]

ats_void_type
patsopt_tmpvar_set_topknd
(
  ats_ptr_type tmp, ats_int_type knd
) {
  ((tmpvar_t)tmp)->atslab_tmpvar_topknd = knd ; return ;
} // end of [patsopt_tmpvar_set_topknd]

ats_void_type
patsopt_tmpvar_set_origin
(
  ats_ptr_type tmp, ats_ptr_type opt
) {
  ((tmpvar_t)tmp)->atslab_tmpvar_origin = opt ; return ;
} // end of [patsopt_tmpvar_set_origin]

ats_void_type
patsopt_tmpvar_set_suffix
(
  ats_ptr_type tmp, ats_int_type sfx
) {
  ((tmpvar_t)tmp)->atslab_tmpvar_suffix = sfx ; return ;
} // end of [patsopt_tmpvar_set_suffix]



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

/* end of [pats_ccomp_tmpvar_dats.c] */
