ats_ptr_type
atspre_matrix_make_funenv_tsz (ats_size_type arg0, ats_size_type arg1, ats_ptr_type arg2, ats_size_type arg3, ats_ptr_type arg4) {
/* local vardec */
ATSlocal (ats_ptr_type, tmp7) ;
ATSlocal (ats_size_type, tmp8) ;
ATSlocal (ats_size_type, tmp9) ;
ATSlocal (ats_ptr_type, tmp10) ;
ATSlocal (ats_ptr_type, tmp11) ;
ATSlocal (ats_ptr_type, tmp12) ;
ATSlocal (__ats_fun_5_closure_type, tmp16) ;
// ATSlocal_void (tmp17) ;
// ATSlocal_void (tmp18) ;
// ATSlocal_void (tmp19) ;

__ats_lab_atspre_matrix_make_funenv_tsz:
tmp8 = atspre_mul2_size1_size1 (arg0, arg1) ;
tmp9 = ats_selsin_mac(tmp8, atslab_1) ;
tmp10 = atspre_array_ptr_alloc_tsz (tmp9, arg3) ;
tmp11 = ats_selsin_mac(tmp10, atslab_2) ;
/* ats_ptr_type tmp12 ; */
tmp12 = &(tmp16) ;
__ats_fun_5_closure_init (tmp12, arg1, arg2) ; // closure initialization
/* tmp17 = */ atspre_array_ptr_initialize_cloenv_tsz (tmp11, tmp9, tmp12, arg3, arg4) ;
/* tmp18 = */ atspre_vbox_make_view_ptr (tmp11) ;
/* tmp19 = ats_selsin_mac(tmp18, atslab_1) */ ;
tmp7 = tmp11 ;
return (tmp7) ;
} /* end of [atspre_matrix_make_funenv_tsz] */
ats_clo_ptr_type
__ats_fun_5_closure_make (ats_ptr_type env0) {
__ats_fun_5_closure_type *p_clo = ATS_MALLOC(sizeof(__ats_fun_5_closure_type)) ;
__ats_fun_5_closure_init (p_clo, env0) ;
return (ats_clo_ptr_type)p_clo ;
} /* end of function */