/*===========================================================================*/
/*   (Heap/restore.scm)                                                      */
/*   Bigloo (4.5b)                                                           */
/*   Inria -- Sophia Antipolis (c)       Fri Dec 22 05:17:06 PM CET 2023     */
/*===========================================================================*/
/* COMPILATION: (/home/serrano/prgm/project/bigloo/bigloo/bin/bigloo -ldopt -L/home/serrano/prgm/project/bigloo/bigloo/libbacktrace/home/serrano/prgm/project/bigloo/bigloo/lib/bigloo/4.5b  -q -afile .afile -fsharing -fno-reflection -cc gcc -lib-dir /home/serrano/prgm/project/bigloo/bigloo/lib/bigloo/4.5b -unsafev -gno-error-localization -no-hello -O2 -rm -unsafe -s -stdc -indent Heap/restore.scm) */
/* GC selection */
#define THE_GC BOEHM_GC

/* unsafe mode */
#define BIGLOO_UNSAFE 1

/* traces mode */
#define BIGLOO_TRACE 0

/* standard Bigloo include */
#include <bigloo.h>

#ifdef __cplusplus
extern "C"
{
#endif
#ifndef BGL_MODULE_TYPE_DEFINITIONS
#define BGL_MODULE_TYPE_DEFINITIONS
#ifndef BGL_HEAP_RESTORE_TYPE_DEFINITIONS
#define BGL_HEAP_RESTORE_TYPE_DEFINITIONS

/* object type definitions */
	typedef struct BgL_typez00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_idz00;
		obj_t BgL_namez00;
		obj_t BgL_siza7eza7;
		obj_t BgL_classz00;
		obj_t BgL_coercezd2tozd2;
		obj_t BgL_parentsz00;
		bool_t BgL_initzf3zf3;
		bool_t BgL_magiczf3zf3;
		obj_t BgL_z42z42;
		obj_t BgL_aliasz00;
		obj_t BgL_pointedzd2tozd2byz00;
		obj_t BgL_tvectorz00;
		obj_t BgL_locationz00;
		obj_t BgL_importzd2locationzd2;
		int BgL_occurrencez00;
	}              *BgL_typez00_bglt;

	typedef struct BgL_valuez00_bgl
	{
		header_t header;
		obj_t widening;
	}               *BgL_valuez00_bglt;

	typedef struct BgL_globalz00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_idz00;
		obj_t BgL_namez00;
		struct BgL_typez00_bgl *BgL_typez00;
		struct BgL_valuez00_bgl *BgL_valuez00;
		obj_t BgL_accessz00;
		obj_t BgL_fastzd2alphazd2;
		obj_t BgL_removablez00;
		long BgL_occurrencez00;
		long BgL_occurrencewz00;
		bool_t BgL_userzf3zf3;
		obj_t BgL_modulez00;
		obj_t BgL_importz00;
		bool_t BgL_evaluablezf3zf3;
		bool_t BgL_evalzf3zf3;
		obj_t BgL_libraryz00;
		obj_t BgL_pragmaz00;
		obj_t BgL_srcz00;
		obj_t BgL_jvmzd2typezd2namez00;
		obj_t BgL_initz00;
		obj_t BgL_aliasz00;
	}                *BgL_globalz00_bglt;

	typedef struct BgL_backendz00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_languagez00;
		obj_t BgL_srfi0z00;
		obj_t BgL_namez00;
		obj_t BgL_externzd2variableszd2;
		obj_t BgL_externzd2functionszd2;
		obj_t BgL_externzd2typeszd2;
		obj_t BgL_variablesz00;
		obj_t BgL_functionsz00;
		obj_t BgL_typesz00;
		bool_t BgL_typedz00;
		obj_t BgL_heapzd2suffixzd2;
		obj_t BgL_heapzd2compatiblezd2;
		bool_t BgL_callccz00;
		bool_t BgL_qualifiedzd2typeszd2;
		bool_t BgL_effectzb2zb2;
		bool_t BgL_removezd2emptyzd2letz00;
		bool_t BgL_foreignzd2closurezd2;
		bool_t BgL_typedzd2eqzd2;
		bool_t BgL_tracezd2supportzd2;
		obj_t BgL_foreignzd2clausezd2supportz00;
		obj_t BgL_debugzd2supportzd2;
		bool_t BgL_pragmazd2supportzd2;
		bool_t BgL_tvectorzd2descrzd2supportz00;
		bool_t BgL_requirezd2tailczd2;
		obj_t BgL_registersz00;
		obj_t BgL_pregistersz00;
		bool_t BgL_boundzd2checkzd2;
		bool_t BgL_typezd2checkzd2;
		bool_t BgL_typedzd2funcallzd2;
	}                 *BgL_backendz00_bglt;


#endif													// BGL_HEAP_RESTORE_TYPE_DEFINITIONS
#endif													// BGL_MODULE_TYPE_DEFINITIONS

	BGL_IMPORT obj_t BGl_putpropz12z12zz__r4_symbols_6_4z00(obj_t, obj_t, obj_t);
	extern obj_t BGl_setzd2genvz12zc0zzast_envz00(obj_t);
	static obj_t BGl_z62restorezd2heapzb0zzheap_restorez00(obj_t);
	static obj_t BGl_requirezd2initializa7ationz75zzheap_restorez00 = BUNSPEC;
	BGL_EXPORTED_DECL obj_t
		BGl_restorezd2additionalzd2heapsz00zzheap_restorez00(void);
	extern obj_t BGl_za2cczd2optionsza2zd2zzengine_paramz00;
	BGL_IMPORT bool_t BGl_equalzf3zf3zz__r4_equivalence_6_2z00(obj_t, obj_t);
	extern obj_t BGl_za2srczd2filesza2zd2zzengine_paramz00;
	static obj_t BGl_z62heapzd2modulezd2listz62zzheap_restorez00(obj_t, obj_t);
	extern obj_t BGl_za2passza2z00zzengine_paramz00;
	static obj_t BGl_toplevelzd2initzd2zzheap_restorez00(void);
	BGL_EXPORTED_DECL obj_t
		BGl_restorezd2additionalzd2heapz00zzheap_restorez00(obj_t);
	extern obj_t BGl_forzd2eachzd2globalz12z12zzast_envz00(obj_t, obj_t);
	BGL_IMPORT obj_t BGl_formatz00zz__r4_output_6_10_3z00(obj_t, obj_t);
	extern obj_t BGl_internalzd2errorzd2zztools_errorz00(obj_t, obj_t, obj_t);
	BGL_IMPORT obj_t input_obj(obj_t);
	BGL_IMPORT obj_t bgl_reverse(obj_t);
	static obj_t BGl_genericzd2initzd2zzheap_restorez00(void);
	static obj_t BGl_objectzd2initzd2zzheap_restorez00(void);
	extern obj_t BGl_shapez00zztools_shapez00(obj_t);
	BGL_IMPORT obj_t string_append_3(obj_t, obj_t, obj_t);
	extern obj_t BGl_addzd2genvz12zc0zzast_envz00(obj_t);
	BGL_IMPORT obj_t BGl_openzd2inputzd2binaryzd2filezd2zz__binaryz00(obj_t);
	extern obj_t BGl_thezd2backendzd2zzbackend_backendz00(void);
	BGL_IMPORT obj_t BGl_readz00zz__readerz00(obj_t, obj_t);
	static obj_t BGl_unbindzd2callzf2ccz12z32zzheap_restorez00(void);
	static obj_t BGl_z62zc3z04anonymousza31242ze3ze5zzheap_restorez00(obj_t,
		obj_t);
	BGL_IMPORT obj_t BGl_openzd2inputzd2stringz12z12zz__r4_ports_6_10_1z00(obj_t,
		obj_t, obj_t);
	static obj_t BGl_appendzd221011zd2zzheap_restorez00(obj_t, obj_t);
	static obj_t BGl_methodzd2initzd2zzheap_restorez00(void);
	extern obj_t BGl_za2additionalzd2includezd2foreignza2z00zzengine_paramz00;
	extern obj_t BGl_za2nbzd2errorzd2onzd2passza2zd2zztools_errorz00;
	static obj_t BGl_z62zc3z04anonymousza31260ze3ze5zzheap_restorez00(obj_t);
	static obj_t BGl_z62zc3z04anonymousza31252ze3ze5zzheap_restorez00(obj_t,
		obj_t);
	BGL_IMPORT obj_t close_binary_port(obj_t);
	static obj_t BGl_z62zc3z04anonymousza31432ze3ze5zzheap_restorez00(obj_t);
	static obj_t BGl_za2heapzd2modulezd2listza2z00zzheap_restorez00 = BUNSPEC;
	BGL_IMPORT obj_t BGl_errorz00zz__errorz00(obj_t, obj_t, obj_t);
	extern obj_t BGl_unbindzd2globalz12zc0zzast_envz00(obj_t, obj_t);
	extern obj_t BGl_za2bigloozd2versionza2zd2zzengine_paramz00;
	BGL_EXPORTED_DECL obj_t BGl_restorezd2heapzd2zzheap_restorez00(void);
	BGL_EXPORTED_DECL obj_t
		BGl_modulezd2initializa7ationz75zzheap_restorez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzbackend_backendz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_shapez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzread_jvmz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_varz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_envz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_typez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_envz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzinit_mainz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzengine_enginez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzengine_paramz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzengine_passz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_errorz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_speekz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_output_6_10_3z00(long,
		char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_ports_6_10_1z00(long,
		char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_vectors_6_8z00(long,
		char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_strings_6_7z00(long,
		char *);
	BGL_IMPORT obj_t
		BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(long,
		char *);
	BGL_IMPORT obj_t
		BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(long, char *);
	BGL_IMPORT obj_t
		BGl_modulezd2initializa7ationz75zz__r4_equivalence_6_2z00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__readerz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__binaryz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__hashz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__bexitz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__osz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__errorz00(long, char *);
	static obj_t BGl_z62heapzd2filezd2namez62zzheap_restorez00(obj_t, obj_t);
	extern obj_t BGl_za2heapzd2nameza2zd2zzengine_paramz00;
	extern obj_t BGl_za2additionalzd2heapzd2namesza2z00zzengine_paramz00;
	static obj_t BGl_z62zc3z04anonymousza31365ze3ze5zzheap_restorez00(obj_t,
		obj_t);
	extern obj_t BGl_setzd2tenvz12zc0zztype_envz00(obj_t);
	extern obj_t BGl_za2libzd2dirza2zd2zzengine_paramz00;
	static obj_t BGl_z62restorezd2additionalzd2heapz62zzheap_restorez00(obj_t,
		obj_t);
	static obj_t BGl_cnstzd2initzd2zzheap_restorez00(void);
	static obj_t BGl_libraryzd2moduleszd2initz00zzheap_restorez00(void);
	extern obj_t BGl_za2unsafezd2heapza2zd2zzengine_paramz00;
	static obj_t BGl_importedzd2moduleszd2initz00zzheap_restorez00(void);
	static obj_t BGl_gczd2rootszd2initz00zzheap_restorez00(void);
	BGL_IMPORT obj_t BGl_hashtablezd2forzd2eachz00zz__hashz00(obj_t, obj_t);
	static obj_t BGl_z62zc3z04anonymousza31376ze3ze5zzheap_restorez00(obj_t,
		obj_t, obj_t);
	extern obj_t BGl_findzd2globalzf2modulez20zzast_envz00(obj_t, obj_t);
	static obj_t BGl_za2restoredzd2heapzd2namesza2z00zzheap_restorez00 = BUNSPEC;
	static obj_t BGl_z62restorezd2additionalzd2heapsz62zzheap_restorez00(obj_t);
	BGL_EXPORTED_DECL obj_t BGl_heapzd2filezd2namez00zzheap_restorez00(obj_t);
	BGL_IMPORT obj_t BGl_getpropz00zz__r4_symbols_6_4z00(obj_t, obj_t);
	extern obj_t BGl_za2currentzd2passza2zd2zzengine_passz00;
	extern obj_t BGl_za2callzf2cczf3za2z01zzengine_paramz00;
	BGL_IMPORT obj_t BGl_findzd2filezf2pathz20zz__osz00(obj_t, obj_t);
	extern obj_t BGl_addzd2qualifiedzd2typez12z12zzread_jvmz00(obj_t, obj_t,
		obj_t);
	extern obj_t BGl_addzd2tenvz12zc0zztype_envz00(obj_t);
	extern obj_t BGl_za2bigloozd2specificzd2versionza2z00zzengine_paramz00;
	BGL_IMPORT obj_t
		BGl_deletezd2duplicateszd2zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
	BGL_EXPORTED_DECL obj_t BGl_heapzd2modulezd2listz00zzheap_restorez00(obj_t);
	extern obj_t BGl_compilerzd2exitzd2zzinit_mainz00(obj_t);
	extern obj_t BGl_verbosez00zztools_speekz00(obj_t, obj_t);
	BGL_IMPORT obj_t BGl_memberz00zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
	static bool_t BGl_backendzd2heapzd2compatiblezf3zf3zzheap_restorez00(obj_t);
	static obj_t BGl_za2heapzd2markza2zd2zzheap_restorez00 = BUNSPEC;
	static obj_t __cnst[6];


	   
		 
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_restorezd2additionalzd2heapszd2envzd2zzheap_restorez00,
		BgL_bgl_za762restoreza7d2add1587z00,
		BGl_z62restorezd2additionalzd2heapsz62zzheap_restorez00, 0L, BUNSPEC, 0);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_heapzd2modulezd2listzd2envzd2zzheap_restorez00,
		BgL_bgl_za762heapza7d2module1588z00, va_generic_entry,
		BGl_z62heapzd2modulezd2listz62zzheap_restorez00, BUNSPEC, -1);
	      DEFINE_STRING(BGl_string1560z00zzheap_restorez00,
		BgL_bgl_string1560za700za7za7h1589za7, "Heap", 4);
	      DEFINE_STRING(BGl_string1561z00zzheap_restorez00,
		BgL_bgl_string1561za700za7za7h1590za7, "   . ", 5);
	      DEFINE_STRING(BGl_string1562z00zzheap_restorez00,
		BgL_bgl_string1562za700za7za7h1591za7, "failure during prelude hook", 27);
	      DEFINE_STRING(BGl_string1563z00zzheap_restorez00,
		BgL_bgl_string1563za700za7za7h1592za7, "]", 1);
	      DEFINE_STRING(BGl_string1564z00zzheap_restorez00,
		BgL_bgl_string1564za700za7za7h1593za7, "      [reading ", 15);
	      DEFINE_STRING(BGl_string1565z00zzheap_restorez00,
		BgL_bgl_string1565za700za7za7h1594za7, "Corrupted heap", 14);
	      DEFINE_STRING(BGl_string1566z00zzheap_restorez00,
		BgL_bgl_string1566za700za7za7h1595za7, "~a vs. ~a", 9);
	      DEFINE_STRING(BGl_string1567z00zzheap_restorez00,
		BgL_bgl_string1567za700za7za7h1596za7, "Target language mismatch", 24);
	      DEFINE_STRING(BGl_string1568z00zzheap_restorez00,
		BgL_bgl_string1568za700za7za7h1597za7, "Heap is `~a', Bigloo is `~a'", 28);
	      DEFINE_STRING(BGl_string1569z00zzheap_restorez00,
		BgL_bgl_string1569za700za7za7h1598za7, "Release mismatch", 16);
	      DEFINE_STRING(BGl_string1570z00zzheap_restorez00,
		BgL_bgl_string1570za700za7za7h1599za7, "Specific version mismatch", 25);
	      DEFINE_STRING(BGl_string1573z00zzheap_restorez00,
		BgL_bgl_string1573za700za7za7h1600za7, "Cannot open heap file ~s", 24);
	      DEFINE_STRING(BGl_string1574z00zzheap_restorez00,
		BgL_bgl_string1574za700za7za7h1601za7, "restore-heap", 12);
	      DEFINE_STRING(BGl_string1575z00zzheap_restorez00,
		BgL_bgl_string1575za700za7za7h1602za7, ".", 1);
	      DEFINE_STRING(BGl_string1576z00zzheap_restorez00,
		BgL_bgl_string1576za700za7za7h1603za7, "Library", 7);
	      DEFINE_STRING(BGl_string1579z00zzheap_restorez00,
		BgL_bgl_string1579za700za7za7h1604za7, "-", 1);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc1571z00zzheap_restorez00,
		BgL_bgl_za762za7c3za704anonymo1605za7,
		BGl_z62zc3z04anonymousza31242ze3ze5zzheap_restorez00, 0L, BUNSPEC, 1);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc1572z00zzheap_restorez00,
		BgL_bgl_za762za7c3za704anonymo1606za7,
		BGl_z62zc3z04anonymousza31252ze3ze5zzheap_restorez00, 0L, BUNSPEC, 1);
	      DEFINE_STRING(BGl_string1580z00zzheap_restorez00,
		BgL_bgl_string1580za700za7za7h1607za7, "heap_restore", 12);
	      DEFINE_STRING(BGl_string1581z00zzheap_restorez00,
		BgL_bgl_string1581za700za7za7h1608za7,
		"make-heap call-with-current-continuation __r4_control_features_6_9 call/cc pass-started heap-mark ",
		98);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc1577z00zzheap_restorez00,
		BgL_bgl_za762za7c3za704anonymo1609za7,
		BGl_z62zc3z04anonymousza31365ze3ze5zzheap_restorez00, 0L, BUNSPEC, 1);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc1578z00zzheap_restorez00,
		BgL_bgl_za762za7c3za704anonymo1610za7,
		BGl_z62zc3z04anonymousza31376ze3ze5zzheap_restorez00, 0L, BUNSPEC, 2);
	     
		DEFINE_EXPORT_BGL_PROCEDURE(BGl_restorezd2heapzd2envz00zzheap_restorez00,
		BgL_bgl_za762restoreza7d2hea1611z00,
		BGl_z62restorezd2heapzb0zzheap_restorez00, 0L, BUNSPEC, 0);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_restorezd2additionalzd2heapzd2envzd2zzheap_restorez00,
		BgL_bgl_za762restoreza7d2add1612z00,
		BGl_z62restorezd2additionalzd2heapz62zzheap_restorez00, 0L, BUNSPEC, 1);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_heapzd2filezd2namezd2envzd2zzheap_restorez00,
		BgL_bgl_za762heapza7d2fileza7d1613za7,
		BGl_z62heapzd2filezd2namez62zzheap_restorez00, 0L, BUNSPEC, 1);
	BGL_IMPORT obj_t BGl_equalzf3zd2envz21zz__r4_equivalence_6_2z00;

/* GC roots registration */
	static obj_t bgl_gc_roots_register()
	{
#if defined( BGL_GC_ROOTS )
#define ADD_ROOT( addr ) (addr > roots_max ? roots_max = addr : (addr < roots_min ? roots_min = addr : 0))
		void *roots_min = (void *) ULONG_MAX, *roots_max = 0;
		   
			 ADD_ROOT((void *) (&BGl_requirezd2initializa7ationz75zzheap_restorez00));
		   
			 ADD_ROOT((void *) (&BGl_za2heapzd2modulezd2listza2z00zzheap_restorez00));
		   
			 ADD_ROOT((void
				*) (&BGl_za2restoredzd2heapzd2namesza2z00zzheap_restorez00));
		     ADD_ROOT((void *) (&BGl_za2heapzd2markza2zd2zzheap_restorez00));
#undef ADD_ROOT
		if   (roots_max > 0)
			     GC_add_roots(roots_min, ((void **) roots_max) + 1);
#endif
		     return BUNSPEC;
	}



/* module-initialization */
	BGL_EXPORTED_DEF obj_t BGl_modulezd2initializa7ationz75zzheap_restorez00(long
		BgL_checksumz00_983, char *BgL_fromz00_984)
	{
		{
			if (CBOOL(BGl_requirezd2initializa7ationz75zzheap_restorez00))
				{
					BGl_requirezd2initializa7ationz75zzheap_restorez00 =
						BBOOL(((bool_t) 0));
					BGl_gczd2rootszd2initz00zzheap_restorez00();
					BGl_libraryzd2moduleszd2initz00zzheap_restorez00();
					BGl_cnstzd2initzd2zzheap_restorez00();
					BGl_importedzd2moduleszd2initz00zzheap_restorez00();
					return BGl_toplevelzd2initzd2zzheap_restorez00();
				}
			else
				{
					return BUNSPEC;
				}
		}

	}



/* library-modules-init */
	obj_t BGl_libraryzd2moduleszd2initz00zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__r4_equivalence_6_2z00(0L,
				"heap_restore");
			BGl_modulezd2initializa7ationz75zz__r4_output_6_10_3z00(0L,
				"heap_restore");
			BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(0L,
				"heap_restore");
			BGl_modulezd2initializa7ationz75zz__binaryz00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__readerz00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__r4_ports_6_10_1z00(0L,
				"heap_restore");
			BGl_modulezd2initializa7ationz75zz__errorz00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__hashz00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__osz00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(0L,
				"heap_restore");
			BGl_modulezd2initializa7ationz75zz__r4_vectors_6_8z00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__bexitz00(0L, "heap_restore");
			BGl_modulezd2initializa7ationz75zz__r4_strings_6_7z00(0L, "heap_restore");
			return BUNSPEC;
		}

	}



/* cnst-init */
	obj_t BGl_cnstzd2initzd2zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			{	/* Heap/restore.scm 15 */
				obj_t BgL_cportz00_956;

				{	/* Heap/restore.scm 15 */
					obj_t BgL_stringz00_963;

					BgL_stringz00_963 = BGl_string1581z00zzheap_restorez00;
					{	/* Heap/restore.scm 15 */
						obj_t BgL_startz00_964;

						BgL_startz00_964 = BINT(0L);
						{	/* Heap/restore.scm 15 */
							obj_t BgL_endz00_965;

							BgL_endz00_965 = BINT(STRING_LENGTH(((obj_t) BgL_stringz00_963)));
							{	/* Heap/restore.scm 15 */

								BgL_cportz00_956 =
									BGl_openzd2inputzd2stringz12z12zz__r4_ports_6_10_1z00
									(BgL_stringz00_963, BgL_startz00_964, BgL_endz00_965);
				}}}}
				{
					long BgL_iz00_957;

					BgL_iz00_957 = 5L;
				BgL_loopz00_958:
					if ((BgL_iz00_957 == -1L))
						{	/* Heap/restore.scm 15 */
							return BUNSPEC;
						}
					else
						{	/* Heap/restore.scm 15 */
							{	/* Heap/restore.scm 15 */
								obj_t BgL_arg1586z00_959;

								{	/* Heap/restore.scm 15 */

									{	/* Heap/restore.scm 15 */
										obj_t BgL_locationz00_961;

										BgL_locationz00_961 = BBOOL(((bool_t) 0));
										{	/* Heap/restore.scm 15 */

											BgL_arg1586z00_959 =
												BGl_readz00zz__readerz00(BgL_cportz00_956,
												BgL_locationz00_961);
										}
									}
								}
								{	/* Heap/restore.scm 15 */
									int BgL_tmpz00_1016;

									BgL_tmpz00_1016 = (int) (BgL_iz00_957);
									CNST_TABLE_SET(BgL_tmpz00_1016, BgL_arg1586z00_959);
							}}
							{	/* Heap/restore.scm 15 */
								int BgL_auxz00_962;

								BgL_auxz00_962 = (int) ((BgL_iz00_957 - 1L));
								{
									long BgL_iz00_1021;

									BgL_iz00_1021 = (long) (BgL_auxz00_962);
									BgL_iz00_957 = BgL_iz00_1021;
									goto BgL_loopz00_958;
								}
							}
						}
				}
			}
		}

	}



/* gc-roots-init */
	obj_t BGl_gczd2rootszd2initz00zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			return bgl_gc_roots_register();
		}

	}



/* toplevel-init */
	obj_t BGl_toplevelzd2initzd2zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			BGl_za2restoredzd2heapzd2namesza2z00zzheap_restorez00 = BNIL;
			BGl_za2heapzd2modulezd2listza2z00zzheap_restorez00 = BNIL;
			return (BGl_za2heapzd2markza2zd2zzheap_restorez00 =
				CNST_TABLE_REF(0L), BUNSPEC);
		}

	}



/* append-21011 */
	obj_t BGl_appendzd221011zd2zzheap_restorez00(obj_t BgL_l1z00_1,
		obj_t BgL_l2z00_2)
	{
		{
			{
				obj_t BgL_headz00_526;

				BgL_headz00_526 = MAKE_YOUNG_PAIR(BNIL, BgL_l2z00_2);
				{
					obj_t BgL_prevz00_527;
					obj_t BgL_tailz00_528;

					BgL_prevz00_527 = BgL_headz00_526;
					BgL_tailz00_528 = BgL_l1z00_1;
				BgL_loopz00_529:
					if (PAIRP(BgL_tailz00_528))
						{
							obj_t BgL_newzd2prevzd2_531;

							BgL_newzd2prevzd2_531 =
								MAKE_YOUNG_PAIR(CAR(BgL_tailz00_528), BgL_l2z00_2);
							SET_CDR(BgL_prevz00_527, BgL_newzd2prevzd2_531);
							{
								obj_t BgL_tailz00_1032;
								obj_t BgL_prevz00_1031;

								BgL_prevz00_1031 = BgL_newzd2prevzd2_531;
								BgL_tailz00_1032 = CDR(BgL_tailz00_528);
								BgL_tailz00_528 = BgL_tailz00_1032;
								BgL_prevz00_527 = BgL_prevz00_1031;
								goto BgL_loopz00_529;
							}
						}
					else
						{
							BNIL;
						}
					return CDR(BgL_headz00_526);
				}
			}
		}

	}



/* backend-heap-compatible? */
	bool_t BGl_backendzd2heapzd2compatiblezf3zf3zzheap_restorez00(obj_t
		BgL_targetz00_3)
	{
		{	/* Heap/restore.scm 37 */
			{	/* Heap/restore.scm 38 */
				BgL_backendz00_bglt BgL_i1065z00_534;

				BgL_i1065z00_534 =
					((BgL_backendz00_bglt) BGl_thezd2backendzd2zzbackend_backendz00());
				{	/* Heap/restore.scm 39 */
					bool_t BgL__ortest_1066z00_535;

					BgL__ortest_1066z00_535 =
						(BgL_targetz00_3 ==
						(((BgL_backendz00_bglt) COBJECT(BgL_i1065z00_534))->
							BgL_languagez00));
					if (BgL__ortest_1066z00_535)
						{	/* Heap/restore.scm 39 */
							return BgL__ortest_1066z00_535;
						}
					else
						{	/* Heap/restore.scm 39 */
							return
								(BgL_targetz00_3 ==
								(((BgL_backendz00_bglt) COBJECT(BgL_i1065z00_534))->
									BgL_heapzd2compatiblezd2));
						}
				}
			}
		}

	}



/* restore-heap */
	BGL_EXPORTED_DEF obj_t BGl_restorezd2heapzd2zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 44 */
			if (STRINGP(BGl_za2heapzd2nameza2zd2zzengine_paramz00))
				{	/* Heap/restore.scm 45 */
					{	/* Heap/restore.scm 46 */
						obj_t BgL_list1194z00_539;

						{	/* Heap/restore.scm 46 */
							obj_t BgL_arg1196z00_540;

							{	/* Heap/restore.scm 46 */
								obj_t BgL_arg1197z00_541;

								BgL_arg1197z00_541 =
									MAKE_YOUNG_PAIR(BCHAR(((unsigned char) 10)), BNIL);
								BgL_arg1196z00_540 =
									MAKE_YOUNG_PAIR(BGl_string1560z00zzheap_restorez00,
									BgL_arg1197z00_541);
							}
							BgL_list1194z00_539 =
								MAKE_YOUNG_PAIR(BGl_string1561z00zzheap_restorez00,
								BgL_arg1196z00_540);
						}
						BGl_verbosez00zztools_speekz00(BINT(1L), BgL_list1194z00_539);
					}
					BGl_za2nbzd2errorzd2onzd2passza2zd2zztools_errorz00 = BINT(0L);
					BGl_za2currentzd2passza2zd2zzengine_passz00 =
						BGl_string1560z00zzheap_restorez00;
					{	/* Heap/restore.scm 46 */
						obj_t BgL_g1067z00_542;

						BgL_g1067z00_542 = BNIL;
						{
							obj_t BgL_hooksz00_545;
							obj_t BgL_hnamesz00_546;

							BgL_hooksz00_545 = BgL_g1067z00_542;
							BgL_hnamesz00_546 = BNIL;
						BgL_zc3z04anonymousza31198ze3z87_547:
							if (NULLP(BgL_hooksz00_545))
								{	/* Heap/restore.scm 46 */
									CNST_TABLE_REF(1L);
								}
							else
								{	/* Heap/restore.scm 46 */
									bool_t BgL_test1621z00_1054;

									{	/* Heap/restore.scm 46 */
										obj_t BgL_fun1208z00_554;

										BgL_fun1208z00_554 = CAR(((obj_t) BgL_hooksz00_545));
										BgL_test1621z00_1054 =
											CBOOL(
											(VA_PROCEDUREP(BgL_fun1208z00_554) ? ((obj_t(*)(obj_t,
															...))
													PROCEDURE_ENTRY(BgL_fun1208z00_554))
												(BgL_fun1208z00_554,
													BEOA) : ((obj_t(*)(obj_t))
													PROCEDURE_ENTRY(BgL_fun1208z00_554))
												(BgL_fun1208z00_554)));
									}
									if (BgL_test1621z00_1054)
										{	/* Heap/restore.scm 46 */
											obj_t BgL_arg1204z00_551;
											obj_t BgL_arg1205z00_552;

											BgL_arg1204z00_551 = CDR(((obj_t) BgL_hooksz00_545));
											BgL_arg1205z00_552 = CDR(((obj_t) BgL_hnamesz00_546));
											{
												obj_t BgL_hnamesz00_1066;
												obj_t BgL_hooksz00_1065;

												BgL_hooksz00_1065 = BgL_arg1204z00_551;
												BgL_hnamesz00_1066 = BgL_arg1205z00_552;
												BgL_hnamesz00_546 = BgL_hnamesz00_1066;
												BgL_hooksz00_545 = BgL_hooksz00_1065;
												goto BgL_zc3z04anonymousza31198ze3z87_547;
											}
										}
									else
										{	/* Heap/restore.scm 46 */
											obj_t BgL_arg1206z00_553;

											BgL_arg1206z00_553 = CAR(((obj_t) BgL_hnamesz00_546));
											BGl_internalzd2errorzd2zztools_errorz00
												(BGl_string1560z00zzheap_restorez00,
												BGl_string1562z00zzheap_restorez00, BgL_arg1206z00_553);
										}
								}
						}
					}
					{	/* Heap/restore.scm 47 */
						obj_t BgL_fnamez00_557;

						BgL_fnamez00_557 =
							BGl_findzd2filezf2pathz20zz__osz00
							(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
							BGl_za2libzd2dirza2zd2zzengine_paramz00);
						if (STRINGP(BgL_fnamez00_557))
							{	/* Heap/restore.scm 49 */
								obj_t BgL_portz00_559;

								BgL_portz00_559 =
									BGl_openzd2inputzd2binaryzd2filezd2zz__binaryz00
									(BgL_fnamez00_557);
								if (BINARY_PORTP(BgL_portz00_559))
									{	/* Heap/restore.scm 50 */
										{	/* Heap/restore.scm 55 */
											obj_t BgL_list1212z00_561;

											{	/* Heap/restore.scm 55 */
												obj_t BgL_arg1213z00_562;

												{	/* Heap/restore.scm 55 */
													obj_t BgL_arg1214z00_563;

													{	/* Heap/restore.scm 55 */
														obj_t BgL_arg1217z00_564;

														BgL_arg1217z00_564 =
															MAKE_YOUNG_PAIR(BCHAR(((unsigned char) 10)),
															BNIL);
														BgL_arg1214z00_563 =
															MAKE_YOUNG_PAIR
															(BGl_string1563z00zzheap_restorez00,
															BgL_arg1217z00_564);
													}
													BgL_arg1213z00_562 =
														MAKE_YOUNG_PAIR(BgL_fnamez00_557,
														BgL_arg1214z00_563);
												}
												BgL_list1212z00_561 =
													MAKE_YOUNG_PAIR(BGl_string1564z00zzheap_restorez00,
													BgL_arg1213z00_562);
											}
											BGl_verbosez00zztools_speekz00(BINT(2L),
												BgL_list1212z00_561);
										}
										{	/* Heap/restore.scm 56 */
											obj_t BgL_exitd1069z00_565;

											BgL_exitd1069z00_565 = BGL_EXITD_TOP_AS_OBJ();
											{	/* Heap/restore.scm 110 */
												obj_t BgL_zc3z04anonymousza31260ze3z87_928;

												BgL_zc3z04anonymousza31260ze3z87_928 =
													MAKE_FX_PROCEDURE
													(BGl_z62zc3z04anonymousza31260ze3ze5zzheap_restorez00,
													(int) (0L), (int) (1L));
												PROCEDURE_SET(BgL_zc3z04anonymousza31260ze3z87_928,
													(int) (0L), BgL_portz00_559);
												{	/* Heap/restore.scm 56 */
													obj_t BgL_arg1820z00_845;

													{	/* Heap/restore.scm 56 */
														obj_t BgL_arg1821z00_846;

														BgL_arg1821z00_846 =
															BGL_EXITD_PROTECT(BgL_exitd1069z00_565);
														BgL_arg1820z00_845 =
															MAKE_YOUNG_PAIR
															(BgL_zc3z04anonymousza31260ze3z87_928,
															BgL_arg1821z00_846);
													}
													BGL_EXITD_PROTECT_SET(BgL_exitd1069z00_565,
														BgL_arg1820z00_845);
													BUNSPEC;
												}
												{	/* Heap/restore.scm 57 */
													bool_t BgL_tmp1071z00_567;

													{	/* Heap/restore.scm 57 */
														obj_t BgL_envsz00_568;

														BgL_envsz00_568 = input_obj(BgL_portz00_559);
														{	/* Heap/restore.scm 57 */
															obj_t BgL__z00_569;

															{	/* Heap/restore.scm 58 */
																bool_t BgL_test1624z00_1093;

																if (VECTORP(BgL_envsz00_568))
																	{	/* Heap/restore.scm 58 */
																		BgL_test1624z00_1093 =
																			(VECTOR_LENGTH(BgL_envsz00_568) == 5L);
																	}
																else
																	{	/* Heap/restore.scm 58 */
																		BgL_test1624z00_1093 = ((bool_t) 0);
																	}
																if (BgL_test1624z00_1093)
																	{	/* Heap/restore.scm 58 */
																		BgL__z00_569 = BFALSE;
																	}
																else
																	{	/* Heap/restore.scm 58 */
																		BgL__z00_569 =
																			BGl_errorz00zz__errorz00
																			(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
																			BGl_string1565z00zzheap_restorez00,
																			BgL_envsz00_568);
																	}
															}
															{	/* Heap/restore.scm 58 */
																obj_t BgL_targetz00_570;

																BgL_targetz00_570 =
																	VECTOR_REF(((obj_t) BgL_envsz00_568), 0L);
																{	/* Heap/restore.scm 63 */
																	obj_t BgL_versionz00_571;

																	BgL_versionz00_571 =
																		VECTOR_REF(((obj_t) BgL_envsz00_568), 1L);
																	{	/* Heap/restore.scm 64 */
																		obj_t BgL_specificz00_572;

																		BgL_specificz00_572 =
																			VECTOR_REF(((obj_t) BgL_envsz00_568), 2L);
																		{	/* Heap/restore.scm 65 */
																			obj_t BgL_genvz00_573;

																			BgL_genvz00_573 =
																				VECTOR_REF(
																				((obj_t) BgL_envsz00_568), 3L);
																			{	/* Heap/restore.scm 66 */
																				obj_t BgL_tenvz00_574;

																				BgL_tenvz00_574 =
																					VECTOR_REF(
																					((obj_t) BgL_envsz00_568), 4L);
																				{	/* Heap/restore.scm 67 */

																					if (BGl_backendzd2heapzd2compatiblezf3zf3zzheap_restorez00(BgL_targetz00_570))
																						{	/* Heap/restore.scm 69 */
																							BFALSE;
																						}
																					else
																						{	/* Heap/restore.scm 74 */
																							obj_t BgL_arg1219z00_576;

																							{	/* Heap/restore.scm 74 */
																								obj_t BgL_arg1220z00_577;

																								{	/* Heap/restore.scm 74 */
																									obj_t BgL_arg1223z00_580;

																									BgL_arg1223z00_580 =
																										BGl_thezd2backendzd2zzbackend_backendz00
																										();
																									BgL_arg1220z00_577 =
																										(((BgL_backendz00_bglt)
																											COBJECT((
																													(BgL_backendz00_bglt)
																													BgL_arg1223z00_580)))->
																										BgL_languagez00);
																								}
																								{	/* Heap/restore.scm 72 */
																									obj_t BgL_list1221z00_578;

																									{	/* Heap/restore.scm 72 */
																										obj_t BgL_arg1222z00_579;

																										BgL_arg1222z00_579 =
																											MAKE_YOUNG_PAIR
																											(BgL_arg1220z00_577,
																											BNIL);
																										BgL_list1221z00_578 =
																											MAKE_YOUNG_PAIR
																											(BgL_targetz00_570,
																											BgL_arg1222z00_579);
																									}
																									BgL_arg1219z00_576 =
																										BGl_formatz00zz__r4_output_6_10_3z00
																										(BGl_string1566z00zzheap_restorez00,
																										BgL_list1221z00_578);
																								}
																							}
																							BGl_errorz00zz__errorz00
																								(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
																								BGl_string1567z00zzheap_restorez00,
																								BgL_arg1219z00_576);
																						}
																					{	/* Heap/restore.scm 75 */
																						bool_t BgL_test1627z00_1118;

																						if (CBOOL
																							(BGl_za2unsafezd2heapza2zd2zzengine_paramz00))
																							{	/* Heap/restore.scm 75 */
																								BgL_test1627z00_1118 =
																									((bool_t) 1);
																							}
																						else
																							{	/* Heap/restore.scm 75 */
																								BgL_test1627z00_1118 =
																									BGl_equalzf3zf3zz__r4_equivalence_6_2z00
																									(BgL_versionz00_571,
																									BGl_za2bigloozd2versionza2zd2zzengine_paramz00);
																							}
																						if (BgL_test1627z00_1118)
																							{	/* Heap/restore.scm 75 */
																								BFALSE;
																							}
																						else
																							{	/* Heap/restore.scm 79 */
																								obj_t BgL_arg1225z00_582;

																								{	/* Heap/restore.scm 79 */
																									obj_t BgL_list1226z00_583;

																									{	/* Heap/restore.scm 79 */
																										obj_t BgL_arg1228z00_584;

																										BgL_arg1228z00_584 =
																											MAKE_YOUNG_PAIR
																											(BGl_za2bigloozd2versionza2zd2zzengine_paramz00,
																											BNIL);
																										BgL_list1226z00_583 =
																											MAKE_YOUNG_PAIR
																											(BgL_versionz00_571,
																											BgL_arg1228z00_584);
																									}
																									BgL_arg1225z00_582 =
																										BGl_formatz00zz__r4_output_6_10_3z00
																										(BGl_string1568z00zzheap_restorez00,
																										BgL_list1226z00_583);
																								}
																								BGl_errorz00zz__errorz00
																									(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
																									BGl_string1569z00zzheap_restorez00,
																									BgL_arg1225z00_582);
																							}
																					}
																					{	/* Heap/restore.scm 82 */
																						bool_t BgL_test1629z00_1126;

																						if (CBOOL
																							(BGl_za2unsafezd2heapza2zd2zzengine_paramz00))
																							{	/* Heap/restore.scm 82 */
																								BgL_test1629z00_1126 =
																									((bool_t) 1);
																							}
																						else
																							{	/* Heap/restore.scm 82 */
																								BgL_test1629z00_1126 =
																									BGl_equalzf3zf3zz__r4_equivalence_6_2z00
																									(BgL_specificz00_572,
																									BGl_za2bigloozd2specificzd2versionza2z00zzengine_paramz00);
																							}
																						if (BgL_test1629z00_1126)
																							{	/* Heap/restore.scm 82 */
																								BFALSE;
																							}
																						else
																							{	/* Heap/restore.scm 86 */
																								obj_t BgL_arg1232z00_586;

																								{	/* Heap/restore.scm 86 */
																									obj_t BgL_list1233z00_587;

																									{	/* Heap/restore.scm 86 */
																										obj_t BgL_arg1234z00_588;

																										BgL_arg1234z00_588 =
																											MAKE_YOUNG_PAIR
																											(BGl_za2bigloozd2specificzd2versionza2z00zzengine_paramz00,
																											BNIL);
																										BgL_list1233z00_587 =
																											MAKE_YOUNG_PAIR
																											(BgL_specificz00_572,
																											BgL_arg1234z00_588);
																									}
																									BgL_arg1232z00_586 =
																										BGl_formatz00zz__r4_output_6_10_3z00
																										(BGl_string1568z00zzheap_restorez00,
																										BgL_list1233z00_587);
																								}
																								BGl_errorz00zz__errorz00
																									(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
																									BGl_string1570z00zzheap_restorez00,
																									BgL_arg1232z00_586);
																							}
																					}
																					BGl_setzd2genvz12zc0zzast_envz00
																						(BgL_genvz00_573);
																					BGl_setzd2tenvz12zc0zztype_envz00
																						(BgL_tenvz00_574);
																					if (CBOOL
																						(BGl_za2callzf2cczf3za2z01zzengine_paramz00))
																						{	/* Heap/restore.scm 94 */
																							BFALSE;
																						}
																					else
																						{	/* Heap/restore.scm 94 */
																							BGl_unbindzd2callzf2ccz12z32zzheap_restorez00
																								();
																						}
																					{	/* Heap/restore.scm 97 */
																						bool_t BgL_test1633z00_1139;

																						{	/* Heap/restore.scm 97 */
																							obj_t BgL_arg1249z00_600;

																							BgL_arg1249z00_600 =
																								BGl_thezd2backendzd2zzbackend_backendz00
																								();
																							BgL_test1633z00_1139 =
																								(((BgL_backendz00_bglt)
																									COBJECT(((BgL_backendz00_bglt)
																											BgL_arg1249z00_600)))->
																								BgL_qualifiedzd2typeszd2);
																						}
																						if (BgL_test1633z00_1139)
																							{	/* Heap/restore.scm 97 */
																								BGl_forzd2eachzd2globalz12z12zzast_envz00
																									(BGl_proc1571z00zzheap_restorez00,
																									BNIL);
																								BgL_genvz00_573;
																							}
																						else
																							{	/* Heap/restore.scm 97 */
																								BFALSE;
																							}
																					}
																					BGl_forzd2eachzd2globalz12z12zzast_envz00
																						(BGl_proc1572z00zzheap_restorez00,
																						BNIL);
																					BgL_tmp1071z00_567 = ((bool_t) 1);
																				}
																			}
																		}
																	}
																}
															}
														}
													}
													{	/* Heap/restore.scm 56 */
														bool_t BgL_test1634z00_1145;

														{	/* Heap/restore.scm 56 */
															obj_t BgL_arg1819z00_865;

															BgL_arg1819z00_865 =
																BGL_EXITD_PROTECT(BgL_exitd1069z00_565);
															BgL_test1634z00_1145 = PAIRP(BgL_arg1819z00_865);
														}
														if (BgL_test1634z00_1145)
															{	/* Heap/restore.scm 56 */
																obj_t BgL_arg1817z00_866;

																{	/* Heap/restore.scm 56 */
																	obj_t BgL_arg1818z00_867;

																	BgL_arg1818z00_867 =
																		BGL_EXITD_PROTECT(BgL_exitd1069z00_565);
																	BgL_arg1817z00_866 =
																		CDR(((obj_t) BgL_arg1818z00_867));
																}
																BGL_EXITD_PROTECT_SET(BgL_exitd1069z00_565,
																	BgL_arg1817z00_866);
																BUNSPEC;
															}
														else
															{	/* Heap/restore.scm 56 */
																BFALSE;
															}
													}
													close_binary_port(BgL_portz00_559);
													return BBOOL(BgL_tmp1071z00_567);
												}
											}
										}
									}
								else
									{	/* Heap/restore.scm 51 */
										obj_t BgL_mz00_615;

										{	/* Heap/restore.scm 51 */
											obj_t BgL_list1261z00_616;

											BgL_list1261z00_616 =
												MAKE_YOUNG_PAIR(BgL_fnamez00_557, BNIL);
											BgL_mz00_615 =
												BGl_formatz00zz__r4_output_6_10_3z00
												(BGl_string1573z00zzheap_restorez00,
												BgL_list1261z00_616);
										}
										BGl_errorz00zz__errorz00(BGl_string1574z00zzheap_restorez00,
											BgL_mz00_615, BGl_za2libzd2dirza2zd2zzengine_paramz00);
										return BGl_compilerzd2exitzd2zzinit_mainz00(BINT(5L));
									}
							}
						else
							{	/* Heap/restore.scm 111 */
								obj_t BgL_mz00_617;

								{	/* Heap/restore.scm 111 */
									obj_t BgL_list1262z00_618;

									BgL_list1262z00_618 =
										MAKE_YOUNG_PAIR(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
										BNIL);
									BgL_mz00_617 =
										BGl_formatz00zz__r4_output_6_10_3z00
										(BGl_string1573z00zzheap_restorez00, BgL_list1262z00_618);
								}
								BGl_errorz00zz__errorz00(BGl_string1574z00zzheap_restorez00,
									BgL_mz00_617, BGl_za2libzd2dirza2zd2zzengine_paramz00);
								return BGl_compilerzd2exitzd2zzinit_mainz00(BINT(5L));
							}
					}
				}
			else
				{	/* Heap/restore.scm 45 */
					return BFALSE;
				}
		}

	}



/* &restore-heap */
	obj_t BGl_z62restorezd2heapzb0zzheap_restorez00(obj_t BgL_envz00_929)
	{
		{	/* Heap/restore.scm 44 */
			return BGl_restorezd2heapzd2zzheap_restorez00();
		}

	}



/* &<@anonymous:1252> */
	obj_t BGl_z62zc3z04anonymousza31252ze3ze5zzheap_restorez00(obj_t
		BgL_envz00_930, obj_t BgL_newz00_931)
	{
		{	/* Heap/restore.scm 107 */
			{	/* Heap/restore.scm 108 */
				obj_t BgL_arg1253z00_967;

				BgL_arg1253z00_967 =
					(((BgL_globalz00_bglt) COBJECT(
							((BgL_globalz00_bglt) BgL_newz00_931)))->BgL_modulez00);
				{	/* Heap/restore.scm 108 */
					obj_t BgL_list1254z00_968;

					BgL_list1254z00_968 = MAKE_YOUNG_PAIR(BgL_arg1253z00_967, BNIL);
					return
						BGl_heapzd2modulezd2listz00zzheap_restorez00(BgL_list1254z00_968);
				}
			}
		}

	}



/* &<@anonymous:1242> */
	obj_t BGl_z62zc3z04anonymousza31242ze3ze5zzheap_restorez00(obj_t
		BgL_envz00_932, obj_t BgL_newz00_933)
	{
		{	/* Heap/restore.scm 99 */
			{	/* Heap/restore.scm 101 */
				obj_t BgL_arg1244z00_969;
				obj_t BgL_arg1246z00_970;
				obj_t BgL_arg1247z00_971;

				BgL_arg1244z00_969 =
					(((BgL_globalz00_bglt) COBJECT(
							((BgL_globalz00_bglt) BgL_newz00_933)))->BgL_modulez00);
				BgL_arg1246z00_970 =
					(((BgL_globalz00_bglt) COBJECT(
							((BgL_globalz00_bglt) BgL_newz00_933)))->
					BgL_jvmzd2typezd2namez00);
				BgL_arg1247z00_971 = BGl_shapez00zztools_shapez00(BgL_newz00_933);
				{	/* Heap/restore.scm 100 */
					obj_t BgL_list1248z00_972;

					BgL_list1248z00_972 = MAKE_YOUNG_PAIR(BgL_arg1247z00_971, BNIL);
					return
						BGl_addzd2qualifiedzd2typez12z12zzread_jvmz00(BgL_arg1244z00_969,
						BgL_arg1246z00_970, BgL_list1248z00_972);
				}
			}
		}

	}



/* &<@anonymous:1260> */
	obj_t BGl_z62zc3z04anonymousza31260ze3ze5zzheap_restorez00(obj_t
		BgL_envz00_934)
	{
		{	/* Heap/restore.scm 56 */
			{	/* Heap/restore.scm 110 */
				obj_t BgL_portz00_935;

				BgL_portz00_935 = PROCEDURE_REF(BgL_envz00_934, (int) (0L));
				return close_binary_port(((obj_t) BgL_portz00_935));
			}
		}

	}



/* unbind-call/cc! */
	obj_t BGl_unbindzd2callzf2ccz12z32zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 118 */
			if (CBOOL(BGl_findzd2globalzf2modulez20zzast_envz00(CNST_TABLE_REF(2L),
						CNST_TABLE_REF(3L))))
				{	/* Heap/restore.scm 119 */
					BGl_unbindzd2globalz12zc0zzast_envz00(CNST_TABLE_REF(2L),
						CNST_TABLE_REF(3L));
				}
			else
				{	/* Heap/restore.scm 119 */
					BFALSE;
				}
			if (CBOOL(BGl_findzd2globalzf2modulez20zzast_envz00(CNST_TABLE_REF(4L),
						CNST_TABLE_REF(3L))))
				{	/* Heap/restore.scm 121 */
					return
						BGl_unbindzd2globalz12zc0zzast_envz00(CNST_TABLE_REF(4L),
						CNST_TABLE_REF(3L));
				}
			else
				{	/* Heap/restore.scm 121 */
					return BFALSE;
				}
		}

	}



/* heap-file-name */
	BGL_EXPORTED_DEF obj_t BGl_heapzd2filezd2namez00zzheap_restorez00(obj_t
		BgL_heapz00_4)
	{
		{	/* Heap/restore.scm 129 */
			{	/* Heap/restore.scm 130 */
				obj_t BgL_arg1275z00_870;

				{	/* Heap/restore.scm 130 */
					obj_t BgL_arg1276z00_871;

					BgL_arg1276z00_871 = BGl_thezd2backendzd2zzbackend_backendz00();
					BgL_arg1275z00_870 =
						(((BgL_backendz00_bglt) COBJECT(
								((BgL_backendz00_bglt) BgL_arg1276z00_871)))->
						BgL_heapzd2suffixzd2);
				}
				return
					string_append_3(BgL_heapz00_4, BGl_string1575z00zzheap_restorez00,
					BgL_arg1275z00_870);
			}
		}

	}



/* &heap-file-name */
	obj_t BGl_z62heapzd2filezd2namez62zzheap_restorez00(obj_t BgL_envz00_936,
		obj_t BgL_heapz00_937)
	{
		{	/* Heap/restore.scm 129 */
			return BGl_heapzd2filezd2namez00zzheap_restorez00(BgL_heapz00_937);
		}

	}



/* restore-additional-heaps */
	BGL_EXPORTED_DEF obj_t
		BGl_restorezd2additionalzd2heapsz00zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 135 */
			if (PAIRP(BGl_za2additionalzd2heapzd2namesza2z00zzengine_paramz00))
				{	/* Heap/restore.scm 136 */
					{	/* Heap/restore.scm 137 */
						obj_t BgL_list1280z00_624;

						{	/* Heap/restore.scm 137 */
							obj_t BgL_arg1281z00_625;

							{	/* Heap/restore.scm 137 */
								obj_t BgL_arg1282z00_626;

								BgL_arg1282z00_626 =
									MAKE_YOUNG_PAIR(BCHAR(((unsigned char) 10)), BNIL);
								BgL_arg1281z00_625 =
									MAKE_YOUNG_PAIR(BGl_string1576z00zzheap_restorez00,
									BgL_arg1282z00_626);
							}
							BgL_list1280z00_624 =
								MAKE_YOUNG_PAIR(BGl_string1561z00zzheap_restorez00,
								BgL_arg1281z00_625);
						}
						BGl_verbosez00zztools_speekz00(BINT(1L), BgL_list1280z00_624);
					}
					BGl_za2nbzd2errorzd2onzd2passza2zd2zztools_errorz00 = BINT(0L);
					BGl_za2currentzd2passza2zd2zzengine_passz00 =
						BGl_string1576z00zzheap_restorez00;
					{	/* Heap/restore.scm 137 */
						obj_t BgL_g1073z00_627;

						BgL_g1073z00_627 = BNIL;
						{
							obj_t BgL_hooksz00_630;
							obj_t BgL_hnamesz00_631;

							BgL_hooksz00_630 = BgL_g1073z00_627;
							BgL_hnamesz00_631 = BNIL;
						BgL_zc3z04anonymousza31283ze3z87_632:
							if (NULLP(BgL_hooksz00_630))
								{	/* Heap/restore.scm 137 */
									CNST_TABLE_REF(1L);
								}
							else
								{	/* Heap/restore.scm 137 */
									bool_t BgL_test1639z00_1213;

									{	/* Heap/restore.scm 137 */
										obj_t BgL_fun1292z00_639;

										BgL_fun1292z00_639 = CAR(((obj_t) BgL_hooksz00_630));
										BgL_test1639z00_1213 =
											CBOOL(
											(VA_PROCEDUREP(BgL_fun1292z00_639) ? ((obj_t(*)(obj_t,
															...))
													PROCEDURE_ENTRY(BgL_fun1292z00_639))
												(BgL_fun1292z00_639,
													BEOA) : ((obj_t(*)(obj_t))
													PROCEDURE_ENTRY(BgL_fun1292z00_639))
												(BgL_fun1292z00_639)));
									}
									if (BgL_test1639z00_1213)
										{	/* Heap/restore.scm 137 */
											obj_t BgL_arg1287z00_636;
											obj_t BgL_arg1289z00_637;

											BgL_arg1287z00_636 = CDR(((obj_t) BgL_hooksz00_630));
											BgL_arg1289z00_637 = CDR(((obj_t) BgL_hnamesz00_631));
											{
												obj_t BgL_hnamesz00_1225;
												obj_t BgL_hooksz00_1224;

												BgL_hooksz00_1224 = BgL_arg1287z00_636;
												BgL_hnamesz00_1225 = BgL_arg1289z00_637;
												BgL_hnamesz00_631 = BgL_hnamesz00_1225;
												BgL_hooksz00_630 = BgL_hooksz00_1224;
												goto BgL_zc3z04anonymousza31283ze3z87_632;
											}
										}
									else
										{	/* Heap/restore.scm 137 */
											obj_t BgL_arg1291z00_638;

											BgL_arg1291z00_638 = CAR(((obj_t) BgL_hnamesz00_631));
											BGl_internalzd2errorzd2zztools_errorz00
												(BGl_string1576z00zzheap_restorez00,
												BGl_string1562z00zzheap_restorez00, BgL_arg1291z00_638);
										}
								}
						}
					}
					{	/* Heap/restore.scm 138 */
						obj_t BgL_g1166z00_642;

						BgL_g1166z00_642 =
							bgl_reverse
							(BGl_za2additionalzd2heapzd2namesza2z00zzengine_paramz00);
						{
							obj_t BgL_l1164z00_644;

							{	/* Heap/restore.scm 143 */
								bool_t BgL_tmpz00_1230;

								BgL_l1164z00_644 = BgL_g1166z00_642;
							BgL_zc3z04anonymousza31294ze3z87_645:
								if (PAIRP(BgL_l1164z00_644))
									{	/* Heap/restore.scm 143 */
										{	/* Heap/restore.scm 139 */
											obj_t BgL_hz00_647;

											BgL_hz00_647 = CAR(BgL_l1164z00_644);
											if (CBOOL(BGl_memberz00zz__r4_pairs_and_lists_6_3z00
													(BgL_hz00_647,
														BGl_za2restoredzd2heapzd2namesza2z00zzheap_restorez00)))
												{	/* Heap/restore.scm 139 */
													BFALSE;
												}
											else
												{	/* Heap/restore.scm 139 */
													BGl_za2restoredzd2heapzd2namesza2z00zzheap_restorez00
														=
														MAKE_YOUNG_PAIR(BgL_hz00_647,
														BGl_za2restoredzd2heapzd2namesza2z00zzheap_restorez00);
													{	/* Heap/restore.scm 142 */
														obj_t BgL_arg1322z00_649;

														{	/* Heap/restore.scm 130 */
															obj_t BgL_arg1275z00_882;

															{	/* Heap/restore.scm 130 */
																obj_t BgL_arg1276z00_883;

																BgL_arg1276z00_883 =
																	BGl_thezd2backendzd2zzbackend_backendz00();
																BgL_arg1275z00_882 =
																	(((BgL_backendz00_bglt) COBJECT(
																			((BgL_backendz00_bglt)
																				BgL_arg1276z00_883)))->
																	BgL_heapzd2suffixzd2);
															}
															BgL_arg1322z00_649 =
																string_append_3(
																((obj_t) BgL_hz00_647),
																BGl_string1575z00zzheap_restorez00,
																BgL_arg1275z00_882);
														}
														BGl_restorezd2additionalzd2heapz00zzheap_restorez00
															(BgL_arg1322z00_649);
													}
												}
										}
										{
											obj_t BgL_l1164z00_1244;

											BgL_l1164z00_1244 = CDR(BgL_l1164z00_644);
											BgL_l1164z00_644 = BgL_l1164z00_1244;
											goto BgL_zc3z04anonymousza31294ze3z87_645;
										}
									}
								else
									{	/* Heap/restore.scm 143 */
										BgL_tmpz00_1230 = ((bool_t) 1);
									}
								return BBOOL(BgL_tmpz00_1230);
							}
						}
					}
				}
			else
				{	/* Heap/restore.scm 136 */
					return BFALSE;
				}
		}

	}



/* &restore-additional-heaps */
	obj_t BGl_z62restorezd2additionalzd2heapsz62zzheap_restorez00(obj_t
		BgL_envz00_938)
	{
		{	/* Heap/restore.scm 135 */
			return BGl_restorezd2additionalzd2heapsz00zzheap_restorez00();
		}

	}



/* restore-additional-heap */
	BGL_EXPORTED_DEF obj_t
		BGl_restorezd2additionalzd2heapz00zzheap_restorez00(obj_t BgL_heapz00_5)
	{
		{	/* Heap/restore.scm 153 */
			{	/* Heap/restore.scm 154 */
				obj_t BgL_fnamez00_652;

				BgL_fnamez00_652 =
					BGl_findzd2filezf2pathz20zz__osz00(BgL_heapz00_5,
					BGl_za2libzd2dirza2zd2zzengine_paramz00);
				if (STRINGP(BgL_fnamez00_652))
					{	/* Heap/restore.scm 156 */
						obj_t BgL_portz00_654;

						BgL_portz00_654 =
							BGl_openzd2inputzd2binaryzd2filezd2zz__binaryz00
							(BgL_fnamez00_652);
						if (BINARY_PORTP(BgL_portz00_654))
							{	/* Heap/restore.scm 157 */
								{	/* Heap/restore.scm 165 */
									obj_t BgL_list1328z00_656;

									{	/* Heap/restore.scm 165 */
										obj_t BgL_arg1330z00_657;

										{	/* Heap/restore.scm 165 */
											obj_t BgL_arg1331z00_658;

											{	/* Heap/restore.scm 165 */
												obj_t BgL_arg1332z00_659;

												BgL_arg1332z00_659 =
													MAKE_YOUNG_PAIR(BCHAR(((unsigned char) 10)), BNIL);
												BgL_arg1331z00_658 =
													MAKE_YOUNG_PAIR(BGl_string1563z00zzheap_restorez00,
													BgL_arg1332z00_659);
											}
											BgL_arg1330z00_657 =
												MAKE_YOUNG_PAIR(BgL_fnamez00_652, BgL_arg1331z00_658);
										}
										BgL_list1328z00_656 =
											MAKE_YOUNG_PAIR(BGl_string1564z00zzheap_restorez00,
											BgL_arg1330z00_657);
									}
									BGl_verbosez00zztools_speekz00(BINT(2L), BgL_list1328z00_656);
								}
								{	/* Heap/restore.scm 166 */
									obj_t BgL_exitd1075z00_660;

									BgL_exitd1075z00_660 = BGL_EXITD_TOP_AS_OBJ();
									{	/* Heap/restore.scm 234 */
										obj_t BgL_zc3z04anonymousza31432ze3z87_941;

										BgL_zc3z04anonymousza31432ze3z87_941 =
											MAKE_FX_PROCEDURE
											(BGl_z62zc3z04anonymousza31432ze3ze5zzheap_restorez00,
											(int) (0L), (int) (1L));
										PROCEDURE_SET(BgL_zc3z04anonymousza31432ze3z87_941,
											(int) (0L), BgL_portz00_654);
										{	/* Heap/restore.scm 166 */
											obj_t BgL_arg1820z00_888;

											{	/* Heap/restore.scm 166 */
												obj_t BgL_arg1821z00_889;

												BgL_arg1821z00_889 =
													BGL_EXITD_PROTECT(BgL_exitd1075z00_660);
												BgL_arg1820z00_888 =
													MAKE_YOUNG_PAIR(BgL_zc3z04anonymousza31432ze3z87_941,
													BgL_arg1821z00_889);
											}
											BGL_EXITD_PROTECT_SET(BgL_exitd1075z00_660,
												BgL_arg1820z00_888);
											BUNSPEC;
										}
										{	/* Heap/restore.scm 167 */
											bool_t BgL_tmp1077z00_662;

											{	/* Heap/restore.scm 167 */
												obj_t BgL_envsz00_663;

												BgL_envsz00_663 = input_obj(BgL_portz00_654);
												{	/* Heap/restore.scm 167 */
													obj_t BgL__z00_664;

													{	/* Heap/restore.scm 168 */
														bool_t BgL_test1644z00_1271;

														if (VECTORP(BgL_envsz00_663))
															{	/* Heap/restore.scm 168 */
																BgL_test1644z00_1271 =
																	(VECTOR_LENGTH(BgL_envsz00_663) == 7L);
															}
														else
															{	/* Heap/restore.scm 168 */
																BgL_test1644z00_1271 = ((bool_t) 0);
															}
														if (BgL_test1644z00_1271)
															{	/* Heap/restore.scm 168 */
																BgL__z00_664 = BFALSE;
															}
														else
															{	/* Heap/restore.scm 168 */
																BgL__z00_664 =
																	BGl_errorz00zz__errorz00(BgL_heapz00_5,
																	BGl_string1565z00zzheap_restorez00,
																	BgL_envsz00_663);
															}
													}
													{	/* Heap/restore.scm 168 */
														obj_t BgL_targetz00_665;

														BgL_targetz00_665 =
															VECTOR_REF(((obj_t) BgL_envsz00_663), 0L);
														{	/* Heap/restore.scm 171 */
															obj_t BgL_versionz00_666;

															BgL_versionz00_666 =
																VECTOR_REF(((obj_t) BgL_envsz00_663), 1L);
															{	/* Heap/restore.scm 172 */
																obj_t BgL_specificz00_667;

																BgL_specificz00_667 =
																	VECTOR_REF(((obj_t) BgL_envsz00_663), 2L);
																{	/* Heap/restore.scm 173 */
																	obj_t BgL_genvz00_668;

																	BgL_genvz00_668 =
																		VECTOR_REF(((obj_t) BgL_envsz00_663), 3L);
																	{	/* Heap/restore.scm 174 */
																		obj_t BgL_tenvz00_669;

																		BgL_tenvz00_669 =
																			VECTOR_REF(((obj_t) BgL_envsz00_663), 4L);
																		{	/* Heap/restore.scm 175 */
																			obj_t BgL_includesz00_670;

																			BgL_includesz00_670 =
																				VECTOR_REF(
																				((obj_t) BgL_envsz00_663), 5L);
																			{	/* Heap/restore.scm 176 */
																				obj_t BgL_ccoptsz00_671;

																				BgL_ccoptsz00_671 =
																					VECTOR_REF(
																					((obj_t) BgL_envsz00_663), 6L);
																				{	/* Heap/restore.scm 177 */

																					if (BGl_backendzd2heapzd2compatiblezf3zf3zzheap_restorez00(BgL_targetz00_665))
																						{	/* Heap/restore.scm 179 */
																							BFALSE;
																						}
																					else
																						{	/* Heap/restore.scm 184 */
																							obj_t BgL_arg1337z00_673;

																							{	/* Heap/restore.scm 184 */
																								obj_t BgL_arg1338z00_674;

																								{	/* Heap/restore.scm 184 */
																									obj_t BgL_arg1343z00_677;

																									BgL_arg1343z00_677 =
																										BGl_thezd2backendzd2zzbackend_backendz00
																										();
																									BgL_arg1338z00_674 =
																										(((BgL_backendz00_bglt)
																											COBJECT((
																													(BgL_backendz00_bglt)
																													BgL_arg1343z00_677)))->
																										BgL_languagez00);
																								}
																								{	/* Heap/restore.scm 182 */
																									obj_t BgL_list1339z00_675;

																									{	/* Heap/restore.scm 182 */
																										obj_t BgL_arg1341z00_676;

																										BgL_arg1341z00_676 =
																											MAKE_YOUNG_PAIR
																											(BgL_arg1338z00_674,
																											BNIL);
																										BgL_list1339z00_675 =
																											MAKE_YOUNG_PAIR
																											(BgL_targetz00_665,
																											BgL_arg1341z00_676);
																									}
																									BgL_arg1337z00_673 =
																										BGl_formatz00zz__r4_output_6_10_3z00
																										(BGl_string1566z00zzheap_restorez00,
																										BgL_list1339z00_675);
																								}
																							}
																							BGl_errorz00zz__errorz00
																								(BgL_heapz00_5,
																								BGl_string1567z00zzheap_restorez00,
																								BgL_arg1337z00_673);
																						}
																					if (BGl_equalzf3zf3zz__r4_equivalence_6_2z00(BgL_versionz00_666, BGl_za2bigloozd2versionza2zd2zzengine_paramz00))
																						{	/* Heap/restore.scm 185 */
																							BFALSE;
																						}
																					else
																						{	/* Heap/restore.scm 188 */
																							obj_t BgL_arg1346z00_679;

																							{	/* Heap/restore.scm 188 */
																								obj_t BgL_list1347z00_680;

																								{	/* Heap/restore.scm 188 */
																									obj_t BgL_arg1348z00_681;

																									BgL_arg1348z00_681 =
																										MAKE_YOUNG_PAIR
																										(BGl_za2bigloozd2versionza2zd2zzengine_paramz00,
																										BNIL);
																									BgL_list1347z00_680 =
																										MAKE_YOUNG_PAIR
																										(BgL_versionz00_666,
																										BgL_arg1348z00_681);
																								}
																								BgL_arg1346z00_679 =
																									BGl_formatz00zz__r4_output_6_10_3z00
																									(BGl_string1568z00zzheap_restorez00,
																									BgL_list1347z00_680);
																							}
																							BGl_errorz00zz__errorz00
																								(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
																								BGl_string1569z00zzheap_restorez00,
																								BgL_arg1346z00_679);
																						}
																					if (BGl_equalzf3zf3zz__r4_equivalence_6_2z00(BgL_specificz00_667, BGl_za2bigloozd2specificzd2versionza2z00zzengine_paramz00))
																						{	/* Heap/restore.scm 191 */
																							BFALSE;
																						}
																					else
																						{	/* Heap/restore.scm 194 */
																							obj_t BgL_arg1352z00_683;

																							{	/* Heap/restore.scm 194 */
																								obj_t BgL_list1353z00_684;

																								{	/* Heap/restore.scm 194 */
																									obj_t BgL_arg1354z00_685;

																									BgL_arg1354z00_685 =
																										MAKE_YOUNG_PAIR
																										(BGl_za2bigloozd2specificzd2versionza2z00zzengine_paramz00,
																										BNIL);
																									BgL_list1353z00_684 =
																										MAKE_YOUNG_PAIR
																										(BgL_specificz00_667,
																										BgL_arg1354z00_685);
																								}
																								BgL_arg1352z00_683 =
																									BGl_formatz00zz__r4_output_6_10_3z00
																									(BGl_string1568z00zzheap_restorez00,
																									BgL_list1353z00_684);
																							}
																							BGl_errorz00zz__errorz00
																								(BGl_za2heapzd2nameza2zd2zzengine_paramz00,
																								BGl_string1570z00zzheap_restorez00,
																								BgL_arg1352z00_683);
																						}
																					BGl_addzd2tenvz12zc0zztype_envz00
																						(BgL_tenvz00_669);
																					BGl_addzd2genvz12zc0zzast_envz00
																						(BgL_genvz00_668);
																					{	/* Heap/restore.scm 210 */
																						bool_t BgL_test1650z00_1314;

																						{	/* Heap/restore.scm 210 */
																							obj_t BgL_arg1374z00_697;

																							BgL_arg1374z00_697 =
																								BGl_thezd2backendzd2zzbackend_backendz00
																								();
																							BgL_test1650z00_1314 =
																								(((BgL_backendz00_bglt)
																									COBJECT(((BgL_backendz00_bglt)
																											BgL_arg1374z00_697)))->
																								BgL_qualifiedzd2typeszd2);
																						}
																						if (BgL_test1650z00_1314)
																							{	/* Heap/restore.scm 210 */
																								BGl_forzd2eachzd2globalz12z12zzast_envz00
																									(BGl_proc1577z00zzheap_restorez00,
																									BNIL);
																							}
																						else
																							{	/* Heap/restore.scm 210 */
																								BFALSE;
																							}
																					}
																					BGl_hashtablezd2forzd2eachz00zz__hashz00
																						(BgL_genvz00_668,
																						BGl_proc1578z00zzheap_restorez00);
																					if (
																						(BGl_za2passza2z00zzengine_paramz00
																							== CNST_TABLE_REF(5L)))
																						{	/* Heap/restore.scm 226 */
																							BFALSE;
																						}
																					else
																						{	/* Heap/restore.scm 226 */
																							BGl_za2additionalzd2includezd2foreignza2z00zzengine_paramz00
																								=
																								BGl_appendzd221011zd2zzheap_restorez00
																								(BGl_za2additionalzd2includezd2foreignza2z00zzengine_paramz00,
																								BgL_includesz00_670);
																							{	/* Heap/restore.scm 232 */
																								obj_t BgL_arg1408z00_713;

																								BgL_arg1408z00_713 =
																									BGl_appendzd221011zd2zzheap_restorez00
																									(BGl_za2cczd2optionsza2zd2zzengine_paramz00,
																									BgL_ccoptsz00_671);
																								{	/* Heap/restore.scm 231 */

																									BGl_za2cczd2optionsza2zd2zzengine_paramz00
																										=
																										BGl_deletezd2duplicateszd2zz__r4_pairs_and_lists_6_3z00
																										(BgL_arg1408z00_713,
																										BGl_equalzf3zd2envz21zz__r4_equivalence_6_2z00);
																								}
																							}
																						}
																					BgL_tmp1077z00_662 = ((bool_t) 1);
																				}
																			}
																		}
																	}
																}
															}
														}
													}
												}
											}
											{	/* Heap/restore.scm 166 */
												bool_t BgL_test1652z00_1326;

												{	/* Heap/restore.scm 166 */
													obj_t BgL_arg1819z00_911;

													BgL_arg1819z00_911 =
														BGL_EXITD_PROTECT(BgL_exitd1075z00_660);
													BgL_test1652z00_1326 = PAIRP(BgL_arg1819z00_911);
												}
												if (BgL_test1652z00_1326)
													{	/* Heap/restore.scm 166 */
														obj_t BgL_arg1817z00_912;

														{	/* Heap/restore.scm 166 */
															obj_t BgL_arg1818z00_913;

															BgL_arg1818z00_913 =
																BGL_EXITD_PROTECT(BgL_exitd1075z00_660);
															BgL_arg1817z00_912 =
																CDR(((obj_t) BgL_arg1818z00_913));
														}
														BGL_EXITD_PROTECT_SET(BgL_exitd1075z00_660,
															BgL_arg1817z00_912);
														BUNSPEC;
													}
												else
													{	/* Heap/restore.scm 166 */
														BFALSE;
													}
											}
											close_binary_port(BgL_portz00_654);
											return BBOOL(BgL_tmp1077z00_662);
										}
									}
								}
							}
						else
							{	/* Heap/restore.scm 158 */
								obj_t BgL_mz00_723;

								{	/* Heap/restore.scm 158 */
									obj_t BgL_list1438z00_726;

									BgL_list1438z00_726 = MAKE_YOUNG_PAIR(BgL_fnamez00_652, BNIL);
									BgL_mz00_723 =
										BGl_formatz00zz__r4_output_6_10_3z00
										(BGl_string1573z00zzheap_restorez00, BgL_list1438z00_726);
								}
								{	/* Heap/restore.scm 159 */
									obj_t BgL_arg1436z00_724;

									if (PAIRP(BGl_za2srczd2filesza2zd2zzengine_paramz00))
										{	/* Heap/restore.scm 159 */
											BgL_arg1436z00_724 =
												CAR(BGl_za2srczd2filesza2zd2zzengine_paramz00);
										}
									else
										{	/* Heap/restore.scm 159 */
											BgL_arg1436z00_724 = BGl_string1579z00zzheap_restorez00;
										}
									BGl_errorz00zz__errorz00(BgL_arg1436z00_724, BgL_mz00_723,
										BGl_za2libzd2dirza2zd2zzengine_paramz00);
								}
								return BGl_compilerzd2exitzd2zzinit_mainz00(BINT(6L));
							}
					}
				else
					{	/* Heap/restore.scm 235 */
						obj_t BgL_mz00_727;

						{	/* Heap/restore.scm 235 */
							obj_t BgL_list1453z00_730;

							BgL_list1453z00_730 = MAKE_YOUNG_PAIR(BgL_heapz00_5, BNIL);
							BgL_mz00_727 =
								BGl_formatz00zz__r4_output_6_10_3z00
								(BGl_string1573z00zzheap_restorez00, BgL_list1453z00_730);
						}
						{	/* Heap/restore.scm 236 */
							obj_t BgL_arg1450z00_728;

							if (PAIRP(BGl_za2srczd2filesza2zd2zzengine_paramz00))
								{	/* Heap/restore.scm 236 */
									BgL_arg1450z00_728 =
										CAR(BGl_za2srczd2filesza2zd2zzengine_paramz00);
								}
							else
								{	/* Heap/restore.scm 236 */
									BgL_arg1450z00_728 = BGl_string1579z00zzheap_restorez00;
								}
							BGl_errorz00zz__errorz00(BgL_arg1450z00_728, BgL_mz00_727,
								BGl_za2libzd2dirza2zd2zzengine_paramz00);
						}
						return BGl_compilerzd2exitzd2zzinit_mainz00(BINT(6L));
					}
			}
		}

	}



/* &restore-additional-heap */
	obj_t BGl_z62restorezd2additionalzd2heapz62zzheap_restorez00(obj_t
		BgL_envz00_942, obj_t BgL_heapz00_943)
	{
		{	/* Heap/restore.scm 153 */
			return
				BGl_restorezd2additionalzd2heapz00zzheap_restorez00(BgL_heapz00_943);
		}

	}



/* &<@anonymous:1376> */
	obj_t BGl_z62zc3z04anonymousza31376ze3ze5zzheap_restorez00(obj_t
		BgL_envz00_944, obj_t BgL_kz00_945, obj_t BgL_bucketz00_946)
	{
		{	/* Heap/restore.scm 220 */
			{	/* Heap/restore.scm 221 */
				bool_t BgL_tmpz00_1352;

				{	/* Heap/restore.scm 221 */
					obj_t BgL_g1169z00_973;

					BgL_g1169z00_973 = CDR(((obj_t) BgL_bucketz00_946));
					{
						obj_t BgL_l1167z00_975;

						BgL_l1167z00_975 = BgL_g1169z00_973;
					BgL_zc3z04anonymousza31377ze3z87_974:
						if (PAIRP(BgL_l1167z00_975))
							{	/* Heap/restore.scm 224 */
								{	/* Heap/restore.scm 222 */
									obj_t BgL_newz00_976;

									BgL_newz00_976 = CAR(BgL_l1167z00_975);
									{	/* Heap/restore.scm 223 */
										obj_t BgL_arg1397z00_977;

										BgL_arg1397z00_977 =
											(((BgL_globalz00_bglt) COBJECT(
													((BgL_globalz00_bglt) BgL_newz00_976)))->
											BgL_modulez00);
										{	/* Heap/restore.scm 222 */
											obj_t BgL_list1398z00_978;

											BgL_list1398z00_978 =
												MAKE_YOUNG_PAIR(BgL_arg1397z00_977, BNIL);
											BGl_heapzd2modulezd2listz00zzheap_restorez00
												(BgL_list1398z00_978);
										}
									}
								}
								{
									obj_t BgL_l1167z00_1362;

									BgL_l1167z00_1362 = CDR(BgL_l1167z00_975);
									BgL_l1167z00_975 = BgL_l1167z00_1362;
									goto BgL_zc3z04anonymousza31377ze3z87_974;
								}
							}
						else
							{	/* Heap/restore.scm 224 */
								BgL_tmpz00_1352 = ((bool_t) 1);
							}
					}
				}
				return BBOOL(BgL_tmpz00_1352);
			}
		}

	}



/* &<@anonymous:1365> */
	obj_t BGl_z62zc3z04anonymousza31365ze3ze5zzheap_restorez00(obj_t
		BgL_envz00_947, obj_t BgL_newz00_948)
	{
		{	/* Heap/restore.scm 212 */
			{	/* Heap/restore.scm 214 */
				obj_t BgL_arg1366z00_979;
				obj_t BgL_arg1369z00_980;
				obj_t BgL_arg1372z00_981;

				BgL_arg1366z00_979 =
					(((BgL_globalz00_bglt) COBJECT(
							((BgL_globalz00_bglt) BgL_newz00_948)))->BgL_modulez00);
				BgL_arg1369z00_980 =
					(((BgL_globalz00_bglt) COBJECT(
							((BgL_globalz00_bglt) BgL_newz00_948)))->
					BgL_jvmzd2typezd2namez00);
				BgL_arg1372z00_981 = BGl_shapez00zztools_shapez00(BgL_newz00_948);
				{	/* Heap/restore.scm 213 */
					obj_t BgL_list1373z00_982;

					BgL_list1373z00_982 = MAKE_YOUNG_PAIR(BgL_arg1372z00_981, BNIL);
					return
						BGl_addzd2qualifiedzd2typez12z12zzread_jvmz00(BgL_arg1366z00_979,
						BgL_arg1369z00_980, BgL_list1373z00_982);
				}
			}
		}

	}



/* &<@anonymous:1432> */
	obj_t BGl_z62zc3z04anonymousza31432ze3ze5zzheap_restorez00(obj_t
		BgL_envz00_949)
	{
		{	/* Heap/restore.scm 166 */
			{	/* Heap/restore.scm 234 */
				obj_t BgL_portz00_950;

				BgL_portz00_950 = PROCEDURE_REF(BgL_envz00_949, (int) (0L));
				return close_binary_port(((obj_t) BgL_portz00_950));
			}
		}

	}



/* heap-module-list */
	BGL_EXPORTED_DEF obj_t BGl_heapzd2modulezd2listz00zzheap_restorez00(obj_t
		BgL_argsz00_6)
	{
		{	/* Heap/restore.scm 255 */
			if (NULLP(BgL_argsz00_6))
				{	/* Heap/restore.scm 257 */
					return BGl_za2heapzd2modulezd2listza2z00zzheap_restorez00;
				}
			else
				{	/* Heap/restore.scm 257 */
					if (CBOOL(BGl_getpropz00zz__r4_symbols_6_4z00(CAR(
									((obj_t) BgL_argsz00_6)), CNST_TABLE_REF(0L))))
						{	/* Heap/restore.scm 259 */
							return BFALSE;
						}
					else
						{	/* Heap/restore.scm 259 */
							{	/* Heap/restore.scm 260 */
								obj_t BgL_arg1491z00_734;

								BgL_arg1491z00_734 = CAR(((obj_t) BgL_argsz00_6));
								BGl_putpropz12z12zz__r4_symbols_6_4z00(BgL_arg1491z00_734,
									CNST_TABLE_REF(0L), BTRUE);
							}
							{	/* Heap/restore.scm 261 */
								obj_t BgL_arg1492z00_735;

								BgL_arg1492z00_735 = CAR(((obj_t) BgL_argsz00_6));
								return (BGl_za2heapzd2modulezd2listza2z00zzheap_restorez00 =
									MAKE_YOUNG_PAIR(BgL_arg1492z00_735,
										BGl_za2heapzd2modulezd2listza2z00zzheap_restorez00),
									BUNSPEC);
							}
						}
				}
		}

	}



/* &heap-module-list */
	obj_t BGl_z62heapzd2modulezd2listz62zzheap_restorez00(obj_t BgL_envz00_954,
		obj_t BgL_argsz00_955)
	{
		{	/* Heap/restore.scm 255 */
			return BGl_heapzd2modulezd2listz00zzheap_restorez00(BgL_argsz00_955);
		}

	}



/* object-init */
	obj_t BGl_objectzd2initzd2zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			return BUNSPEC;
		}

	}



/* generic-init */
	obj_t BGl_genericzd2initzd2zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			return BUNSPEC;
		}

	}



/* method-init */
	obj_t BGl_methodzd2initzd2zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			return BUNSPEC;
		}

	}



/* imported-modules-init */
	obj_t BGl_importedzd2moduleszd2initz00zzheap_restorez00(void)
	{
		{	/* Heap/restore.scm 15 */
			BGl_modulezd2initializa7ationz75zztools_speekz00(61247943L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zztools_errorz00(300504031L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zzengine_passz00(373082237L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zzengine_paramz00(517137079L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zzengine_enginez00(373986149L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zzinit_mainz00(288050968L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zzast_envz00(146730773L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zztype_typez00(515343395L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zztype_envz00(296457443L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zzast_varz00(90839984L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zzread_jvmz00(261574382L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			BGl_modulezd2initializa7ationz75zztools_shapez00(365925558L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
			return
				BGl_modulezd2initializa7ationz75zzbackend_backendz00(216206620L,
				BSTRING_TO_STRING(BGl_string1580z00zzheap_restorez00));
		}

	}

#ifdef __cplusplus
}
#endif
