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

/* 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 */
/* external codes at top */
/* type definitions */
typedef struct {
ats_int_type atslab_0 ;
ats_uint_type atslab_1 ;
ats_ptr_type atslab_2 ;
ats_ptr_type atslab_3 ;
ats_ptr_type atslab_4 ;
} anairiats_sum_0 ;

typedef struct {
ats_ptr_type atslab_0 ;
} anairiats_sum_1 ;

typedef
struct {
ats_uint_type atslab_0 ;
ats_ptr_type atslab_1 ;
} anairiats_rec_2 ;

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

/* external typedefs */
/* external dynamic constructor declarations */
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_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_void_type, atspre_fprint_newline) (ats_ptr_type) ;
ATSextern_fun(ats_bool_type, atspre_lt_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_int_type, atspre_compare_uint_uint) (ats_uint_type, ats_uint_type) ;
ATSextern_fun(ats_void_type, atspre_fprint_uint) (ats_ptr_type, ats_uint_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_igte) (ats_int_type, ats_int_type) ;
ATSextern_fun(ats_int_type, atspre_imax) (ats_int_type, ats_int_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_void_type, atspre_fprint_string) (ats_ptr_type, ats_ptr_type) ;
ATSextern_fun(ats_uint_type, _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_get_stamp) (ats_ptr_type) ;

/* external dynamic terminating constant declarations */
#ifdef _ATS_PROOFCHECK
#endif /* _ATS_PROOFCHECK */

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

/* sum constructor declarations */
/* exn constructor declarations */
/* global dynamic (non-functional) constant declarations */
/* internal function declarations */
static
ats_int_type compare_key_key_01713_ats_uint_type (ats_uint_type arg0, ats_uint_type arg1, ats_clo_ref_type arg2) ;
static
ats_ptr_type linmap_make_nil_01714_ () ;
static
ats_void_type _free_5 (ats_ptr_type arg0) ;
static
ats_void_type linmap_free_01731_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type search_9 (ats_uint_type env0, ats_clo_ref_type env1, ats_ptr_type arg0) ;
static
ats_clo_ptr_type search_9_closure_make (ats_uint_type env0, ats_clo_ref_type env1) ;
static
ats_ptr_type search_9_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0) ;
static
ats_ptr_type linmap_search_ref_01720_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0, ats_uint_type arg1, ats_clo_ref_type arg2) ;
static
ats_bool_type linmap_search_01719_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0, ats_uint_type arg1, ats_clo_ref_type arg2, ats_ref_type arg3) ;
static
ats_int_type avltree_height_036_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0) ;
static
ats_ptr_type avltree_rrotate_089_ats_uint_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_064_ats_uint_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_12 (ats_uint_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_12_closure_make (ats_uint_type env0, ats_clo_ref_type env1) ;
static
ats_bool_type insert_12_clofun (ats_clo_ptr_type cloptr, ats_ref_type arg0, ats_ptr_type arg1, ats_ref_type arg2) ;
static
ats_bool_type linmap_insert_01722_ats_uint_type_2cats_ptr_type (ats_ref_type arg0, ats_uint_type arg1, ats_ptr_type arg2, ats_clo_ref_type arg3, ats_ref_type arg4) ;
static
ats_void_type loop_17 (ats_ref_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type aux_19 (ats_ptr_type arg0, ats_ptr_type arg1) ;
static
ats_ptr_type linmap_listize_01733_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0) ;
static
ats_void_type __ats_fun_21 (ats_ptr_type env0, ats_ptr_type env1, ats_uint_type arg0, ats_ref_type arg1) ;
static
ats_clo_ptr_type __ats_fun_21_closure_make (ats_ptr_type env0, ats_ptr_type env1) ;
static
ats_void_type __ats_fun_21_clofun (ats_clo_ptr_type cloptr, ats_uint_type arg0, ats_ref_type arg1) ;
static
ats_void_type foreach_23 (ats_ptr_type arg0, ats_ref_type arg1) ;
static
ats_void_type linmap_foreach_vclo_01727_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0, ats_ref_type arg1) ;

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

/* function implementations */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 1790(line=59, offs=22) -- 1830(line=59, offs=62)
*/
ATSstaticdec()
ats_int_type
compare_key_key_01713_ats_uint_type (ats_uint_type arg0, ats_uint_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_int_type, tmp0) ;

__ats_lab_compare_key_key_01713_ats_uint_type:
tmp0 = atspre_compare_uint_uint (arg0, arg1) ;
return (tmp0) ;
} /* end of [compare_key_key_01713_ats_uint_type] */

/*
// /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_01714_ () {
/* local vardec */
ATSlocal (ats_ptr_type, tmp2) ;

__ats_lab_linmap_make_nil_01714_:
tmp2 = (ats_sum_ptr_type)0 ;
return (tmp2) ;
} /* end of [linmap_make_nil_01714_] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 1881(line=63, offs=27) -- 1906(line=63, offs=52)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_make_nil () {
/* local vardec */
ATSlocal (ats_ptr_type, tmp1) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_make_nil:
tmp1 = linmap_make_nil_01714_ () ;
return (tmp1) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_make_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_5 (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp5) ;
ATSlocal (ats_ptr_type, tmp6) ;
ATSlocal (ats_ptr_type, tmp7) ;
// ATSlocal_void (tmp8) ;

__ats_lab__free_5:
do {
/* branch: __ats_lab_0 */
__ats_lab_0_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_1_0 ; }
__ats_lab_0_1:
tmp6 = ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_3) ;
tmp7 = ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_4) ;
ATS_FREE(arg0) ;
/* tmp8 = */ _free_5 (tmp6) ;
arg0 = tmp7 ;
goto __ats_lab__free_5 ; // tail call
break ;

/* branch: __ats_lab_1 */
__ats_lab_1_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_1_1:
break ;
} while (0) ;
return /* (tmp5) */ ;
} /* end of [_free_5] */

/*
// /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_01731_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp4) ;

__ats_lab_linmap_free_01731_ats_uint_type_2cats_ptr_type:
/* tmp4 = */ _free_5 (arg0) ;
return /* (tmp4) */ ;
} /* end of [linmap_free_01731_ats_uint_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 1935(line=64, offs=29) -- 1968(line=64, offs=62)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_free (ats_ptr_type arg0) {
/* local vardec */
// ATSlocal_void (tmp3) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_free:
/* tmp3 = */ linmap_free_01731_ats_uint_type_2cats_ptr_type (arg0) ;
return /* (tmp3) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_free] */

/*
// /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_9 (ats_uint_type env0, ats_clo_ref_type env1, ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp16) ;
ATSlocal (ats_uint_type, tmp17) ;
ATSlocal (ats_ptr_type, tmp18) ;
ATSlocal (ats_ptr_type, tmp19) ;
ATSlocal (ats_ptr_type, tmp20) ;
ATSlocal (ats_int_type, tmp21) ;
ATSlocal (ats_bool_type, tmp22) ;
ATSlocal (ats_ptr_type, tmp23) ;
ATSlocal (ats_bool_type, tmp24) ;
ATSlocal (ats_ptr_type, tmp25) ;

__ats_lab_search_9:
do {
/* branch: __ats_lab_2 */
__ats_lab_2_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_6_0 ; }
__ats_lab_2_1:
tmp17 = ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_1) ;
tmp18 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_2) ;
tmp19 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_3) ;
tmp20 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_4) ;
tmp21 = compare_key_key_01713_ats_uint_type (env0, tmp17, env1) ;
do {
/* branch: __ats_lab_3 */
__ats_lab_3_0:
__ats_lab_3_1:
tmp22 = atspre_lt_int_int (tmp21, 0) ;
if (!tmp22) { goto __ats_lab_4_1 ; }
tmp23 = ats_ptrget_mac(ats_ptr_type, tmp19) ;
arg0 = tmp23 ;
goto __ats_lab_search_9 ; // tail call
break ;

/* branch: __ats_lab_4 */
__ats_lab_4_0:
__ats_lab_4_1:
tmp24 = atspre_gt_int_int (tmp21, 0) ;
if (!tmp24) { goto __ats_lab_5_1 ; }
tmp25 = ats_ptrget_mac(ats_ptr_type, tmp20) ;
arg0 = tmp25 ;
goto __ats_lab_search_9 ; // tail call
break ;

/* branch: __ats_lab_5 */
__ats_lab_5_0:
__ats_lab_5_1:
tmp16 = tmp18 ;
break ;
} while (0) ;
break ;

/* branch: __ats_lab_6 */
__ats_lab_6_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_6_1:
tmp16 = atspre_null_ptr ;
break ;
} while (0) ;
return (tmp16) ;
} /* end of [search_9] */

typedef struct {
ats_fun_ptr_type closure_fun ;
ats_uint_type closure_env_0 ;
ats_clo_ref_type closure_env_1 ;
} search_9_closure_type ;

ats_ptr_type
search_9_clofun (ats_clo_ptr_type cloptr, ats_ptr_type arg0) {
return search_9 (((search_9_closure_type*)cloptr)->closure_env_0, ((search_9_closure_type*)cloptr)->closure_env_1, arg0) ;
} /* end of function */

ATSinline()
ats_void_type
search_9_closure_init (search_9_closure_type *p_clo, ats_uint_type env0, ats_clo_ref_type env1) {
p_clo->closure_fun = (ats_fun_ptr_type)&search_9_clofun ;
p_clo->closure_env_0 = env0 ;
p_clo->closure_env_1 = env1 ;
return ;
} /* end of function */

ats_clo_ptr_type
search_9_closure_make (ats_uint_type env0, ats_clo_ref_type env1) {
search_9_closure_type *p_clo = ATS_MALLOC(sizeof(search_9_closure_type)) ;
search_9_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_01720_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0, ats_uint_type arg1, ats_clo_ref_type arg2) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp15) ;

__ats_lab_linmap_search_ref_01720_ats_uint_type_2cats_ptr_type:
tmp15 = search_9 (arg1, arg2, arg0) ;
return (tmp15) ;
} /* end of [linmap_search_ref_01720_ats_uint_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_01719_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0, ats_uint_type arg1, ats_clo_ref_type arg2, ats_ref_type arg3) {
/* local vardec */
ATSlocal (ats_bool_type, tmp13) ;
ATSlocal (ats_ptr_type, tmp14) ;
ATSlocal (ats_bool_type, tmp26) ;
ATSlocal (ats_ptr_type, tmp27) ;

__ats_lab_linmap_search_01719_ats_uint_type_2cats_ptr_type:
tmp14 = linmap_search_ref_01720_ats_uint_type_2cats_ptr_type (arg0, arg1, arg2) ;
tmp26 = atspre_pgt (tmp14, atspre_null_ptr) ;
if (tmp26) {
tmp27 = ats_ptrget_mac(ats_ptr_type, tmp14) ;
ats_ptrget_mac(ats_ptr_type, arg3) = tmp27 ;
tmp13 = ats_true_bool ;
} else {
tmp13 = ats_false_bool ;
} /* end of [if] */
return (tmp13) ;
} /* end of [linmap_search_01719_ats_uint_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 2024(line=70, offs=9) -- 2315(line=80, offs=4)
*/
ATSglobaldec()
ats_ptr_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_search (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp9) ;
ATSlocal (ats_uint_type, tmp10) ;
ATSlocal (ats_ptr_type, tmp11) ;
ATSlocal (ats_bool_type, tmp12) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_search:
tmp10 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_get_stamp (arg1) ;
/* ats_ptr_type tmp11 ; */
tmp12 = linmap_search_01719_ats_uint_type_2cats_ptr_type (arg0, tmp10, ats_castfn_mac(ats_clo_ref_type, atspre_null_ptr), (&tmp11)) ;
if (tmp12) {
tmp9 = ATS_MALLOC(sizeof(anairiats_sum_1)) ;
ats_selptrset_mac(anairiats_sum_1, tmp9, atslab_0, tmp11) ;
} else {
tmp9 = (ats_sum_ptr_type)0 ;
} /* end of [if] */
return (tmp9) ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_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_036_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_int_type, tmp44) ;
ATSlocal (ats_int_type, tmp45) ;

__ats_lab_avltree_height_036_ats_uint_type_2cats_ptr_type:
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:
tmp45 = ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_0) ;
tmp44 = tmp45 ;
break ;

/* branch: __ats_lab_9 */
__ats_lab_9_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_9_1:
tmp44 = 0 ;
break ;
} while (0) ;
return (tmp44) ;
} /* end of [avltree_height_036_ats_uint_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_089_ats_uint_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, tmp54) ;
ATSlocal (ats_ptr_type, tmp55) ;
ATSlocal (ats_ptr_type, tmp56) ;
ATSlocal (ats_ptr_type, tmp57) ;
ATSlocal (ats_ptr_type, tmp58) ;
ATSlocal (ats_int_type, tmp59) ;
ATSlocal (ats_ptr_type, tmp60) ;
ATSlocal (ats_int_type, tmp61) ;
ATSlocal (ats_ptr_type, tmp62) ;
ATSlocal (ats_bool_type, tmp63) ;
ATSlocal (ats_int_type, tmp64) ;
ATSlocal (ats_int_type, tmp65) ;
ATSlocal (ats_ptr_type, tmp66) ;
ATSlocal (ats_int_type, tmp67) ;
ATSlocal (ats_int_type, tmp68) ;
ATSlocal (ats_ptr_type, tmp69) ;
ATSlocal (ats_ptr_type, tmp70) ;
ATSlocal (ats_ptr_type, tmp71) ;
ATSlocal (ats_ptr_type, tmp72) ;
ATSlocal (ats_int_type, tmp73) ;
ATSlocal (ats_ptr_type, tmp74) ;
ATSlocal (ats_int_type, tmp75) ;
ATSlocal (ats_ptr_type, tmp76) ;
ATSlocal (ats_int_type, tmp77) ;
ATSlocal (ats_int_type, tmp78) ;
ATSlocal (ats_ptr_type, tmp79) ;
ATSlocal (ats_int_type, tmp80) ;
ATSlocal (ats_int_type, tmp81) ;
ATSlocal (ats_ptr_type, tmp82) ;

__ats_lab_avltree_rrotate_089_ats_uint_type_2cats_ptr_type:
tmp55 = ats_ptrget_mac(ats_ptr_type, arg2) ;
// if (tmp55 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp56 = &ats_caselptrlab_mac(anairiats_sum_0, tmp55, atslab_0) ;
tmp57 = &ats_caselptrlab_mac(anairiats_sum_0, tmp55, atslab_3) ;
tmp58 = &ats_caselptrlab_mac(anairiats_sum_0, tmp55, atslab_4) ;
tmp60 = ats_ptrget_mac(ats_ptr_type, tmp57) ;
tmp59 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp60) ;
tmp62 = ats_ptrget_mac(ats_ptr_type, tmp58) ;
tmp61 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp62) ;
tmp64 = atspre_iadd (tmp59, 0) ;
tmp63 = atspre_igte (tmp64, tmp61) ;
if (tmp63) {
tmp65 = atspre_iadd (tmp61, 1) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp65 ;
tmp66 = ats_ptrget_mac(ats_ptr_type, tmp58) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp66 ;
tmp68 = atspre_imax (tmp59, tmp65) ;
tmp67 = atspre_iadd (1, tmp68) ;
ats_ptrget_mac(ats_int_type, tmp56) = tmp67 ;
ats_ptrget_mac(ats_ptr_type, tmp58) = arg5 ;
tmp54 = tmp55 ;
} else {
tmp69 = ats_ptrget_mac(ats_ptr_type, tmp58) ;
// if (tmp69 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp70 = &ats_caselptrlab_mac(anairiats_sum_0, tmp69, atslab_0) ;
tmp71 = &ats_caselptrlab_mac(anairiats_sum_0, tmp69, atslab_3) ;
tmp72 = &ats_caselptrlab_mac(anairiats_sum_0, tmp69, atslab_4) ;
tmp74 = ats_ptrget_mac(ats_ptr_type, tmp71) ;
tmp73 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp74) ;
tmp76 = ats_ptrget_mac(ats_ptr_type, tmp72) ;
tmp75 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp76) ;
tmp78 = atspre_imax (tmp75, arg3) ;
tmp77 = atspre_iadd (1, tmp78) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp77 ;
tmp79 = ats_ptrget_mac(ats_ptr_type, tmp72) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp79 ;
tmp81 = atspre_imax (tmp59, tmp73) ;
tmp80 = atspre_iadd (1, tmp81) ;
ats_ptrget_mac(ats_int_type, tmp56) = tmp80 ;
tmp82 = ats_ptrget_mac(ats_ptr_type, tmp71) ;
ats_ptrget_mac(ats_ptr_type, tmp58) = tmp82 ;
ats_ptrget_mac(ats_int_type, tmp70) = arg1 ;
ats_ptrget_mac(ats_ptr_type, tmp71) = tmp55 ;
ats_ptrget_mac(ats_ptr_type, tmp72) = arg5 ;
tmp54 = tmp69 ;
} /* end of [if] */
return (tmp54) ;
} /* end of [avltree_rrotate_089_ats_uint_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_064_ats_uint_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, tmp94) ;
ATSlocal (ats_ptr_type, tmp95) ;
ATSlocal (ats_ptr_type, tmp96) ;
ATSlocal (ats_ptr_type, tmp97) ;
ATSlocal (ats_ptr_type, tmp98) ;
ATSlocal (ats_int_type, tmp99) ;
ATSlocal (ats_ptr_type, tmp100) ;
ATSlocal (ats_int_type, tmp101) ;
ATSlocal (ats_ptr_type, tmp102) ;
ATSlocal (ats_bool_type, tmp103) ;
ATSlocal (ats_int_type, tmp104) ;
ATSlocal (ats_int_type, tmp105) ;
ATSlocal (ats_ptr_type, tmp106) ;
ATSlocal (ats_int_type, tmp107) ;
ATSlocal (ats_int_type, tmp108) ;
ATSlocal (ats_ptr_type, tmp109) ;
ATSlocal (ats_ptr_type, tmp110) ;
ATSlocal (ats_ptr_type, tmp111) ;
ATSlocal (ats_ptr_type, tmp112) ;
ATSlocal (ats_int_type, tmp113) ;
ATSlocal (ats_ptr_type, tmp114) ;
ATSlocal (ats_int_type, tmp115) ;
ATSlocal (ats_ptr_type, tmp116) ;
ATSlocal (ats_int_type, tmp117) ;
ATSlocal (ats_int_type, tmp118) ;
ATSlocal (ats_ptr_type, tmp119) ;
ATSlocal (ats_int_type, tmp120) ;
ATSlocal (ats_int_type, tmp121) ;
ATSlocal (ats_ptr_type, tmp122) ;

__ats_lab_avltree_lrotate_064_ats_uint_type_2cats_ptr_type:
tmp95 = ats_ptrget_mac(ats_ptr_type, arg4) ;
// if (tmp95 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp96 = &ats_caselptrlab_mac(anairiats_sum_0, tmp95, atslab_0) ;
tmp97 = &ats_caselptrlab_mac(anairiats_sum_0, tmp95, atslab_3) ;
tmp98 = &ats_caselptrlab_mac(anairiats_sum_0, tmp95, atslab_4) ;
tmp100 = ats_ptrget_mac(ats_ptr_type, tmp97) ;
tmp99 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp100) ;
tmp102 = ats_ptrget_mac(ats_ptr_type, tmp98) ;
tmp101 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp102) ;
tmp104 = atspre_iadd (tmp101, 0) ;
tmp103 = atspre_ilte (tmp99, tmp104) ;
if (tmp103) {
tmp105 = atspre_iadd (tmp99, 1) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp105 ;
tmp106 = ats_ptrget_mac(ats_ptr_type, tmp97) ;
ats_ptrget_mac(ats_ptr_type, arg4) = tmp106 ;
tmp108 = atspre_imax (tmp105, tmp101) ;
tmp107 = atspre_iadd (1, tmp108) ;
ats_ptrget_mac(ats_int_type, tmp96) = tmp107 ;
ats_ptrget_mac(ats_ptr_type, tmp97) = arg5 ;
tmp94 = tmp95 ;
} else {
tmp109 = ats_ptrget_mac(ats_ptr_type, tmp97) ;
// if (tmp109 == (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
tmp110 = &ats_caselptrlab_mac(anairiats_sum_0, tmp109, atslab_0) ;
tmp111 = &ats_caselptrlab_mac(anairiats_sum_0, tmp109, atslab_3) ;
tmp112 = &ats_caselptrlab_mac(anairiats_sum_0, tmp109, atslab_4) ;
tmp114 = ats_ptrget_mac(ats_ptr_type, tmp111) ;
tmp113 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp114) ;
tmp116 = ats_ptrget_mac(ats_ptr_type, tmp112) ;
tmp115 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp116) ;
tmp118 = atspre_imax (arg1, tmp113) ;
tmp117 = atspre_iadd (1, tmp118) ;
ats_ptrget_mac(ats_int_type, arg0) = tmp117 ;
tmp119 = ats_ptrget_mac(ats_ptr_type, tmp111) ;
ats_ptrget_mac(ats_ptr_type, arg4) = tmp119 ;
tmp121 = atspre_imax (tmp115, tmp101) ;
tmp120 = atspre_iadd (1, tmp121) ;
ats_ptrget_mac(ats_int_type, tmp96) = tmp120 ;
tmp122 = ats_ptrget_mac(ats_ptr_type, tmp112) ;
ats_ptrget_mac(ats_ptr_type, tmp97) = tmp122 ;
ats_ptrget_mac(ats_int_type, tmp110) = arg3 ;
ats_ptrget_mac(ats_ptr_type, tmp111) = arg5 ;
ats_ptrget_mac(ats_ptr_type, tmp112) = tmp95 ;
tmp94 = tmp109 ;
} /* end of [if] */
return (tmp94) ;
} /* end of [avltree_lrotate_064_ats_uint_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_12 (ats_uint_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, tmp33) ;
ATSlocal (ats_ptr_type, tmp34) ;
ATSlocal (ats_ptr_type, tmp35) ;
ATSlocal (ats_ptr_type, tmp36) ;
ATSlocal (ats_ptr_type, tmp37) ;
ATSlocal (ats_ptr_type, tmp38) ;
ATSlocal (ats_int_type, tmp39) ;
ATSlocal (ats_uint_type, tmp40) ;
ATSlocal (ats_bool_type, tmp41) ;
ATSlocal (ats_bool_type, tmp42) ;
ATSlocal (ats_int_type, tmp43) ;
ATSlocal (ats_ptr_type, tmp46) ;
ATSlocal (ats_int_type, tmp47) ;
ATSlocal (ats_ptr_type, tmp48) ;
ATSlocal (ats_bool_type, tmp49) ;
ATSlocal (ats_int_type, tmp50) ;
ATSlocal (ats_int_type, tmp51) ;
ATSlocal (ats_int_type, tmp52) ;
ATSlocal (ats_ptr_type, tmp53) ;
ATSlocal (ats_bool_type, tmp83) ;
ATSlocal (ats_bool_type, tmp84) ;
ATSlocal (ats_int_type, tmp85) ;
ATSlocal (ats_ptr_type, tmp86) ;
ATSlocal (ats_int_type, tmp87) ;
ATSlocal (ats_ptr_type, tmp88) ;
ATSlocal (ats_bool_type, tmp89) ;
ATSlocal (ats_int_type, tmp90) ;
ATSlocal (ats_int_type, tmp91) ;
ATSlocal (ats_int_type, tmp92) ;
ATSlocal (ats_ptr_type, tmp93) ;
ATSlocal (ats_ptr_type, tmp123) ;
ATSlocal (ats_ptr_type, tmp124) ;
ATSlocal (ats_ptr_type, tmp125) ;
ATSlocal (ats_ptr_type, tmp126) ;

__ats_lab_insert_12:
do {
/* branch: __ats_lab_7 */
__ats_lab_7_0:
if (ats_ptrget_mac(ats_ptr_type, arg0) == (ats_sum_ptr_type)0) { goto __ats_lab_10_0 ; }
__ats_lab_7_1:
tmp34 = &ats_caselptrlab_mac(anairiats_sum_0, ats_ptrget_mac(ats_ptr_type, arg0), atslab_0) ;
tmp35 = &ats_caselptrlab_mac(anairiats_sum_0, ats_ptrget_mac(ats_ptr_type, arg0), atslab_1) ;
tmp36 = &ats_caselptrlab_mac(anairiats_sum_0, ats_ptrget_mac(ats_ptr_type, arg0), atslab_2) ;
tmp37 = &ats_caselptrlab_mac(anairiats_sum_0, ats_ptrget_mac(ats_ptr_type, arg0), atslab_3) ;
tmp38 = &ats_caselptrlab_mac(anairiats_sum_0, ats_ptrget_mac(ats_ptr_type, arg0), atslab_4) ;
tmp40 = ats_ptrget_mac(ats_uint_type, tmp35) ;
tmp39 = compare_key_key_01713_ats_uint_type (env0, tmp40, env1) ;
tmp41 = atspre_lt_int_int (tmp39, 0) ;
if (tmp41) {
tmp42 = insert_12 (env0, env1, tmp37, arg1, arg2) ;
tmp46 = ats_ptrget_mac(ats_ptr_type, tmp37) ;
tmp43 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp46) ;
tmp48 = ats_ptrget_mac(ats_ptr_type, tmp38) ;
tmp47 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp48) ;
tmp50 = atspre_isub (tmp43, tmp47) ;
tmp49 = atspre_ilte (tmp50, 1) ;
if (tmp49) {
tmp52 = atspre_imax (tmp43, tmp47) ;
tmp51 = atspre_iadd (1, tmp52) ;
ats_ptrget_mac(ats_int_type, tmp34) = tmp51 ;
tmp33 = tmp42 ;
} else {
tmp53 = avltree_rrotate_089_ats_uint_type_2cats_ptr_type (tmp34, tmp43, tmp37, tmp47, tmp38, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp53 ;
tmp33 = tmp42 ;
} /* end of [if] */
} else {
tmp83 = atspre_gt_int_int (tmp39, 0) ;
if (tmp83) {
tmp84 = insert_12 (env0, env1, tmp38, arg1, arg2) ;
tmp86 = ats_ptrget_mac(ats_ptr_type, tmp37) ;
tmp85 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp86) ;
tmp88 = ats_ptrget_mac(ats_ptr_type, tmp38) ;
tmp87 = avltree_height_036_ats_uint_type_2cats_ptr_type (tmp88) ;
tmp90 = atspre_isub (tmp87, tmp85) ;
tmp89 = atspre_ilte (tmp90, 1) ;
if (tmp89) {
tmp92 = atspre_imax (tmp85, tmp87) ;
tmp91 = atspre_iadd (1, tmp92) ;
ats_ptrget_mac(ats_int_type, tmp34) = tmp91 ;
tmp33 = tmp84 ;
} else {
tmp93 = avltree_lrotate_064_ats_uint_type_2cats_ptr_type (tmp34, tmp85, tmp37, tmp87, tmp38, ats_ptrget_mac(ats_ptr_type, arg0)) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp93 ;
tmp33 = tmp84 ;
} /* end of [if] */
} else {
tmp123 = ats_ptrget_mac(ats_ptr_type, tmp36) ;
ats_ptrget_mac(ats_ptr_type, arg2) = tmp123 ;
ats_ptrget_mac(ats_ptr_type, tmp36) = arg1 ;
tmp33 = ats_true_bool ;
} /* end of [if] */
} /* end of [if] */
break ;

/* branch: __ats_lab_10 */
__ats_lab_10_0:
// if (ats_ptrget_mac(ats_ptr_type, arg0) != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_10_1:
tmp125 = (ats_sum_ptr_type)0 ;
tmp126 = (ats_sum_ptr_type)0 ;
tmp124 = ATS_MALLOC(sizeof(anairiats_sum_0)) ;
ats_selptrset_mac(anairiats_sum_0, tmp124, atslab_0, 1) ;
ats_selptrset_mac(anairiats_sum_0, tmp124, atslab_1, env0) ;
ats_selptrset_mac(anairiats_sum_0, tmp124, atslab_2, arg1) ;
ats_selptrset_mac(anairiats_sum_0, tmp124, atslab_3, tmp125) ;
ats_selptrset_mac(anairiats_sum_0, tmp124, atslab_4, tmp126) ;
ats_ptrget_mac(ats_ptr_type, arg0) = tmp124 ;
tmp33 = ats_false_bool ;
break ;
} while (0) ;
return (tmp33) ;
} /* end of [insert_12] */

typedef struct {
ats_fun_ptr_type closure_fun ;
ats_uint_type closure_env_0 ;
ats_clo_ref_type closure_env_1 ;
} insert_12_closure_type ;

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

ATSinline()
ats_void_type
insert_12_closure_init (insert_12_closure_type *p_clo, ats_uint_type env0, ats_clo_ref_type env1) {
p_clo->closure_fun = (ats_fun_ptr_type)&insert_12_clofun ;
p_clo->closure_env_0 = env0 ;
p_clo->closure_env_1 = env1 ;
return ;
} /* end of function */

ats_clo_ptr_type
insert_12_closure_make (ats_uint_type env0, ats_clo_ref_type env1) {
insert_12_closure_type *p_clo = ATS_MALLOC(sizeof(insert_12_closure_type)) ;
insert_12_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_01722_ats_uint_type_2cats_ptr_type (ats_ref_type arg0, ats_uint_type arg1, ats_ptr_type arg2, ats_clo_ref_type arg3, ats_ref_type arg4) {
/* local vardec */
ATSlocal (ats_bool_type, tmp32) ;

__ats_lab_linmap_insert_01722_ats_uint_type_2cats_ptr_type:
tmp32 = insert_12 (arg1, arg3, arg0, arg2, arg4) ;
return (tmp32) ;
} /* end of [linmap_insert_01722_ats_uint_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 2396(line=86, offs=9) -- 2549(line=91, offs=2)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_insert (ats_ref_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
// ATSlocal_void (tmp28) ;
ATSlocal (ats_uint_type, tmp29) ;
ATSlocal (ats_ptr_type, tmp30) ;
ATSlocal (ats_bool_type, tmp31) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_insert:
tmp29 = _2tmp_2ATS_2dPostiats_2src_2pats_symbol_2esats__symbol_get_stamp (arg1) ;
/* ats_ptr_type tmp30 ; */
tmp31 = linmap_insert_01722_ats_uint_type_2cats_ptr_type (arg0, tmp29, arg2, ats_castfn_mac(ats_clo_ref_type, atspre_null_ptr), (&tmp30)) ;
return /* (tmp28) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_insert] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 2691(line=101, offs=5) -- 3091(line=121, offs=4)
*/
ATSstaticdec()
ats_void_type
loop_17 (ats_ref_type arg0, ats_ptr_type arg1) {
/* local vardec */
// ATSlocal_void (tmp128) ;
ATSlocal (ats_ptr_type, tmp129) ;
ATSlocal (ats_ptr_type, tmp130) ;
ATSlocal (ats_ptr_type, tmp131) ;
ATSlocal (ats_bool_type, tmp132) ;
ATSlocal (ats_uint_type, tmp133) ;
ATSlocal (ats_ptr_type, tmp134) ;

__ats_lab_loop_17:
do {
/* branch: __ats_lab_11 */
__ats_lab_11_0:
if (arg1 == (ats_sum_ptr_type)0) { goto __ats_lab_12_0 ; }
__ats_lab_11_1:
tmp129 = &ats_caselptrlab_mac(anairiats_sum_3, arg1, atslab_0) ;
tmp130 = ats_caselptrlab_mac(anairiats_sum_3, arg1, atslab_1) ;
/* ats_ptr_type tmp131 ; */
tmp133 = ats_selptr_mac(ats_castptr_mac(anairiats_rec_2, tmp129), atslab_0) ;
tmp134 = ats_selptr_mac(ats_castptr_mac(anairiats_rec_2, tmp129), atslab_1) ;
tmp132 = linmap_insert_01722_ats_uint_type_2cats_ptr_type (arg0, tmp133, tmp134, ats_castfn_mac(ats_clo_ref_type, atspre_null_ptr), (&tmp131)) ;
ATS_FREE(arg1) ;
arg0 = arg0 ;
arg1 = tmp130 ;
goto __ats_lab_loop_17 ; // tail call
break ;

/* branch: __ats_lab_12 */
__ats_lab_12_0:
// if (arg1 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_12_1:
break ;
} while (0) ;
return /* (tmp128) */ ;
} /* end of [loop_17] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 21260(line=724, offs=7) -- 21616(line=736, offs=31)
*/
ATSstaticdec()
ats_ptr_type
aux_19 (ats_ptr_type arg0, ats_ptr_type arg1) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp137) ;
ATSlocal (ats_uint_type, tmp138) ;
ATSlocal (ats_ptr_type, tmp139) ;
ATSlocal (ats_ptr_type, tmp140) ;
ATSlocal (ats_ptr_type, tmp141) ;
ATSlocal (ats_ptr_type, tmp142) ;
ATSlocal (ats_ptr_type, tmp143) ;
ATSlocal (ats_ptr_type, tmp144) ;
ATSlocal (anairiats_rec_2, tmp145) ;
ATSlocal (ats_ptr_type, tmp146) ;

__ats_lab_aux_19:
do {
/* branch: __ats_lab_13 */
__ats_lab_13_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_14_0 ; }
__ats_lab_13_1:
tmp138 = ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_1) ;
tmp139 = ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_2) ;
tmp140 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_3) ;
tmp141 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_4) ;
tmp143 = ats_ptrget_mac(ats_ptr_type, tmp141) ;
tmp142 = aux_19 (tmp143, arg1) ;
tmp145.atslab_0 = tmp138 ;
tmp145.atslab_1 = tmp139 ;

tmp144 = ATS_MALLOC(sizeof(anairiats_sum_3)) ;
ats_selptrset_mac(anairiats_sum_3, tmp144, atslab_0, tmp145) ;
ats_selptrset_mac(anairiats_sum_3, tmp144, atslab_1, tmp142) ;
tmp146 = ats_ptrget_mac(ats_ptr_type, tmp140) ;
arg0 = tmp146 ;
arg1 = tmp144 ;
goto __ats_lab_aux_19 ; // tail call
break ;

/* branch: __ats_lab_14 */
__ats_lab_14_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_14_1:
tmp137 = arg1 ;
break ;
} while (0) ;
return (tmp137) ;
} /* end of [aux_19] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 21202(line=722, offs=16) -- 21664(line=740, offs=4)
*/
ATSstaticdec()
ats_ptr_type
linmap_listize_01733_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp136) ;
ATSlocal (ats_ptr_type, tmp147) ;

__ats_lab_linmap_listize_01733_ats_uint_type_2cats_ptr_type:
tmp147 = (ats_sum_ptr_type)0 ;
tmp136 = aux_19 (arg0, tmp147) ;
return (tmp136) ;
} /* end of [linmap_listize_01733_ats_uint_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 2634(line=97, offs=9) -- 3181(line=127, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_joinwth (ats_ref_type arg0, ats_ptr_type arg1) {
/* local vardec */
// ATSlocal_void (tmp127) ;
ATSlocal (ats_ptr_type, tmp135) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_joinwth:
tmp135 = linmap_listize_01733_ats_uint_type_2cats_ptr_type (arg1) ;
/* tmp127 = */ loop_17 (arg0, tmp135) ;
return /* (tmp127) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__symmap_joinwth] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 3295(line=133, offs=16) -- 3435(line=134, offs=91)
*/
ATSstaticdec()
ats_void_type
__ats_fun_21 (ats_ptr_type env0, ats_ptr_type env1, ats_uint_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp150) ;
// ATSlocal_void (tmp151) ;
// ATSlocal_void (tmp152) ;
// ATSlocal_void (tmp153) ;

__ats_lab___ats_fun_21:
/* tmp151 = */ atspre_fprint_uint (env0, arg0) ;
/* tmp152 = */ atspre_fprint_string (env0, ATSstrcst(" -> ")) ;
/* tmp153 = */ ((ats_void_type(*)(ats_ptr_type, ats_ptr_type))env1) (env0, ats_ptrget_mac(ats_ptr_type, arg1)) ;
/* tmp150 = */ atspre_fprint_newline (env0) ;
return /* (tmp150) */ ;
} /* end of [__ats_fun_21] */

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

ats_void_type
__ats_fun_21_clofun (ats_clo_ptr_type cloptr, ats_uint_type arg0, ats_ref_type arg1) {
__ats_fun_21 (((__ats_fun_21_closure_type*)cloptr)->closure_env_0, ((__ats_fun_21_closure_type*)cloptr)->closure_env_1, arg0, arg1) ; return ;
} /* end of function */

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

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 18402(line=624, offs=7) -- 18717(line=631, offs=24)
*/
ATSstaticdec()
ats_void_type
foreach_23 (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp156) ;
ATSlocal (ats_ptr_type, tmp157) ;
ATSlocal (ats_ptr_type, tmp158) ;
ATSlocal (ats_ptr_type, tmp159) ;
ATSlocal (ats_ptr_type, tmp160) ;
// ATSlocal_void (tmp161) ;
ATSlocal (ats_ptr_type, tmp162) ;
// ATSlocal_void (tmp163) ;
ATSlocal (ats_uint_type, tmp164) ;
ATSlocal (ats_ptr_type, tmp165) ;

__ats_lab_foreach_23:
do {
/* branch: __ats_lab_15 */
__ats_lab_15_0:
if (arg0 == (ats_sum_ptr_type)0) { goto __ats_lab_16_0 ; }
__ats_lab_15_1:
tmp157 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_1) ;
tmp158 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_2) ;
tmp159 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_3) ;
tmp160 = &ats_caselptrlab_mac(anairiats_sum_0, arg0, atslab_4) ;
tmp162 = ats_ptrget_mac(ats_ptr_type, tmp159) ;
/* tmp161 = */ foreach_23 (tmp162, arg1) ;
tmp164 = ats_ptrget_mac(ats_uint_type, tmp157) ;
/* tmp163 = */ ((ats_void_type(*)(ats_clo_ptr_type, ats_uint_type, ats_ref_type))(ats_closure_fun(arg1))) (arg1, tmp164, tmp158) ;
tmp165 = ats_ptrget_mac(ats_ptr_type, tmp160) ;
arg0 = tmp165 ;
arg1 = arg1 ;
goto __ats_lab_foreach_23 ; // tail call
break ;

/* branch: __ats_lab_16 */
__ats_lab_16_0:
// if (arg0 != (ats_sum_ptr_type)0) { ats_deadcode_failure_handle () ; }
__ats_lab_16_1:
break ;
} while (0) ;
return /* (tmp156) */ ;
} /* end of [foreach_23] */

/*
// /nix/store/rfja8ixrs5wb4kj3kiwlch1apnh7qgvy-ats-0.2.12/lib/ats-anairiats-0.2.12/libats/DATS/linmap_avltree.dats: 18354(line=623, offs=3) -- 18741(line=633, offs=2)
*/
ATSstaticdec()
ats_void_type
linmap_foreach_vclo_01727_ats_uint_type_2cats_ptr_type (ats_ptr_type arg0, ats_ref_type arg1) {
/* local vardec */
// ATSlocal_void (tmp155) ;

__ats_lab_linmap_foreach_vclo_01727_ats_uint_type_2cats_ptr_type:
/* tmp155 = */ foreach_23 (arg0, arg1) ;
return /* (tmp155) */ ;
} /* end of [linmap_foreach_vclo_01727_ats_uint_type_2cats_ptr_type] */

/*
// /tmp/ATS-Postiats/src/pats_symmap_avltree.hats: 3260(line=132, offs=20) -- 3554(line=140, offs=4)
*/
ATSglobaldec()
ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__fprint_symmap (ats_ptr_type arg0, ats_ptr_type arg1, ats_ptr_type arg2) {
/* local vardec */
// ATSlocal_void (tmp148) ;
ATSlocal (ats_ptr_type, tmp149) ;
ATSlocal (__ats_fun_21_closure_type, tmp154) ;

__ats_lab__2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__fprint_symmap:
/* ats_ptr_type tmp149 ; */
tmp149 = &(tmp154) ;
__ats_fun_21_closure_init (tmp149, arg0, arg2) ; // closure initialization
/* tmp148 = */ linmap_foreach_vclo_01727_ats_uint_type_2cats_ptr_type (arg1, tmp149) ;
return /* (tmp148) */ ;
} /* end of [_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__fprint_symmap] */

/* static load function */

// extern ats_void_type ATS_2d0_2e2_2e12_2prelude_2SATS_2unsafe_2esats__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) ;
extern ats_void_type _2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__staload (void) ;

ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__staload () {
static int _2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__staload_flag = 0 ;
if (_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__staload_flag) return ;
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__staload_flag = 1 ;

// ATS_2d0_2e2_2e12_2prelude_2SATS_2unsafe_2esats__staload () ;
// ATS_2d0_2e2_2e12_2libats_2SATS_2linmap_avltree_2esats__staload () ;
// ATS_2d0_2e2_2e12_2libats_2DATS_2linmap_avltree_2edats__staload () ;
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2esats__staload () ;

return ;
} /* staload function */

/* dynamic load function */

// dynload flag declaration
extern ats_int_type _2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__dynload_flag ;

ats_void_type
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__dynload () {
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__dynload_flag = 1 ;
_2tmp_2ATS_2dPostiats_2src_2pats_symmap_2edats__staload () ;

#ifdef _ATS_PROOFCHECK
#endif /* _ATS_PROOFCHECK */

/* marking static variables for GC */

/* marking external values for GC */

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

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

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

/* end of [pats_symmap_dats.c] */
