/*===========================================================================*/
/*   (Module/foreign.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 Module/foreign.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_MODULE_FOREIGN_TYPE_DEFINITIONS
#define BGL_MODULE_FOREIGN_TYPE_DEFINITIONS

/* object type definitions */
	typedef struct BgL_ccompz00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_idz00;
		obj_t BgL_producerz00;
		obj_t BgL_consumerz00;
		obj_t BgL_finaliza7erza7;
	}               *BgL_ccompz00_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;

	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_variablez00_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;
	}                  *BgL_variablez00_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;


#endif													// BGL_MODULE_FOREIGN_TYPE_DEFINITIONS
#endif													// BGL_MODULE_TYPE_DEFINITIONS

	static obj_t BGl_externzd2parserzd2zzmodule_foreignz00(obj_t, bool_t);
	extern obj_t BGl_declarezd2czd2typez12z12zzforeign_ctypez00(obj_t, obj_t,
		obj_t, obj_t);
	static obj_t BGl_requirezd2initializa7ationz75zzmodule_foreignz00 = BUNSPEC;
	static obj_t BGl_z62makezd2foreignzd2compilerz62zzmodule_foreignz00(obj_t);
	static obj_t BGl_parsezd2czd2externzd2typezd2zzmodule_foreignz00(obj_t);
	BGL_IMPORT obj_t BGl_za2classesza2z00zz__objectz00;
	static obj_t BGl_foreignzd2parserzd2zzmodule_foreignz00(obj_t, bool_t);
	extern obj_t BGl_caliasz00zzforeign_ctypez00;
	static obj_t BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00 = BUNSPEC;
	static obj_t BGl_z62foreignzd2finaliza7erz17zzmodule_foreignz00(obj_t);
	static obj_t BGl_externzd2producerzd2zzmodule_foreignz00(obj_t, bool_t);
	extern obj_t BGl_za2passza2z00zzengine_paramz00;
	static obj_t BGl_toplevelzd2initzd2zzmodule_foreignz00(void);
	static obj_t BGl_z62zc3z04anonymousza31221ze3ze5zzmodule_foreignz00(obj_t,
		obj_t, obj_t);
	BGL_IMPORT obj_t BGl_formatz00zz__r4_output_6_10_3z00(obj_t, obj_t);
	static bool_t
		BGl_checkzd2czd2foreignzd2typezd2expzf3zf3zzmodule_foreignz00(obj_t);
	static obj_t BGl_genericzd2initzd2zzmodule_foreignz00(void);
	BGL_IMPORT obj_t BGl_stringzd2copyzd2zz__r4_strings_6_7z00(obj_t);
	extern BgL_typez00_bglt BGl_declarezd2typez12zc0zztype_envz00(obj_t, obj_t,
		obj_t);
	extern BgL_typez00_bglt BGl_getzd2defaultzd2typez00zztype_cachez00(void);
	static obj_t BGl_objectzd2initzd2zzmodule_foreignz00(void);
	extern obj_t BGl_cstructz00zzforeign_ctypez00;
	static obj_t BGl_z62zc3z04anonymousza31223ze3ze5zzmodule_foreignz00(obj_t,
		obj_t);
	static obj_t BGl_z62makezd2externzd2compilerz62zzmodule_foreignz00(obj_t);
	BGL_IMPORT obj_t BGl_memqz00zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
	BGL_IMPORT obj_t BGl_za2inheritancesza2z00zz__objectz00;
	static obj_t BGl_za2foreignzd2exportedza2zd2zzmodule_foreignz00 = BUNSPEC;
	BGL_IMPORT obj_t bgl_reverse_bang(obj_t);
	extern obj_t BGl_typez00zztype_typez00;
	static obj_t BGl_z62zc3z04anonymousza31224ze3ze5zzmodule_foreignz00(obj_t,
		obj_t, obj_t);
	extern obj_t BGl_userzd2warningzd2zztools_errorz00(obj_t, obj_t, obj_t);
	BGL_EXPORTED_DECL obj_t
		BGl_makezd2externzd2compilerz00zzmodule_foreignz00(void);
	BGL_IMPORT obj_t bstring_to_symbol(obj_t);
	static obj_t BGl_z62zc3z04anonymousza31225ze3ze5zzmodule_foreignz00(obj_t);
	extern obj_t BGl_thezd2backendzd2zzbackend_backendz00(void);
	BGL_IMPORT obj_t BGl_readz00zz__readerz00(obj_t, obj_t);
	extern BgL_globalz00_bglt
		BGl_declarezd2globalzd2cfunz12z12zzast_glozd2declzd2(obj_t, obj_t, obj_t,
		obj_t, obj_t, obj_t, bool_t, bool_t, 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_appendzd221011zd2zzmodule_foreignz00(obj_t, obj_t);
	static obj_t BGl_methodzd2initzd2zzmodule_foreignz00(void);
	extern obj_t BGl_findzd2globalzd2zzast_envz00(obj_t, obj_t);
	static obj_t BGl_defaultzd2czd2typez00zzmodule_foreignz00(obj_t, obj_t);
	static obj_t BGl_foreignzd2producerzd2zzmodule_foreignz00(obj_t);
	BGL_IMPORT obj_t string_append(obj_t, obj_t);
	static obj_t
		BGl_czd2externzd2typezd2ze3czd2foreignzd2typez31zzmodule_foreignz00(obj_t);
	extern obj_t BGl_ccompz00zzmodule_modulez00;
	BGL_EXPORTED_DECL obj_t
		BGl_modulezd2initializa7ationz75zzmodule_foreignz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_locationz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzforeign_accessz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzforeign_ctypez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_identz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_envz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_varz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_cachez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_toolsz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_envz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_typez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_shapez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_errorz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_glozd2declzd2(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzbackend_backendz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzengine_paramz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzmodule_checksumz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzmodule_modulez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_tracez00(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__objectz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__structurez00(long,
		char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__biglooz00(long, char *);
	extern obj_t BGl_findzd2locationzd2zztools_locationz00(obj_t);
	static obj_t BGl_z62foreignzd2producerzb0zzmodule_foreignz00(obj_t, obj_t);
	static obj_t BGl_parsezd2czd2foreignzd2typezd2zzmodule_foreignz00(obj_t);
	BGL_IMPORT obj_t create_struct(obj_t, int);
	extern BgL_typez00_bglt BGl_getzd2defaultzd2czd2typezd2zztype_cachez00(void);
	extern obj_t BGl_checkzd2idzd2zzast_identz00(obj_t, obj_t);
	static obj_t BGl_cnstzd2initzd2zzmodule_foreignz00(void);
	static obj_t BGl_libraryzd2moduleszd2initz00zzmodule_foreignz00(void);
	extern BgL_globalz00_bglt
		BGl_declarezd2globalzd2cvarz12z12zzast_glozd2declzd2(obj_t, obj_t, obj_t,
		obj_t, bool_t, obj_t, obj_t);
	static obj_t BGl_importedzd2moduleszd2initz00zzmodule_foreignz00(void);
	static obj_t BGl_gczd2rootszd2initz00zzmodule_foreignz00(void);
	extern obj_t BGl_parsezd2idzd2zzast_identz00(obj_t, obj_t);
	static bool_t BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00(obj_t);
	BGL_EXPORTED_DECL obj_t
		BGl_foreignzd2accesseszd2addz12z12zzmodule_foreignz00(obj_t);
	extern obj_t
		BGl_makezd2pointerzd2tozd2namezd2zztype_toolsz00(BgL_typez00_bglt);
	extern obj_t
		BGl_makezd2ctypezd2accessesz12z12zzforeign_accessz00(BgL_typez00_bglt,
		BgL_typez00_bglt, obj_t);
	extern obj_t BGl_userzd2warningzf2locationz20zztools_errorz00(obj_t, obj_t,
		obj_t, obj_t);
	extern obj_t BGl_userzd2errorzd2zztools_errorz00(obj_t, obj_t, obj_t, obj_t);
	static obj_t BGl_z62foreignzd2accesseszd2addz12z70zzmodule_foreignz00(obj_t,
		obj_t);
	BGL_EXPORTED_DECL obj_t
		BGl_makezd2foreignzd2compilerz00zzmodule_foreignz00(void);
	extern obj_t BGl_za2includezd2foreignza2zd2zzengine_paramz00;
	extern obj_t BGl_globalz00zzast_varz00;
	BGL_IMPORT obj_t BGl_memberz00zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
	static obj_t __cnst[22];


	   
		 
		DEFINE_STATIC_BGL_PROCEDURE
		(BGl_foreignzd2finaliza7erzd2envza7zzmodule_foreignz00,
		BgL_bgl_za762foreignza7d2fin2343z00,
		BGl_z62foreignzd2finaliza7erz17zzmodule_foreignz00, 0L, BUNSPEC, 0);
	      DEFINE_STRING(BGl_string2325z00zzmodule_foreignz00,
		BgL_bgl_string2325za700za7za7m2344za7, "Parse error", 11);
	      DEFINE_STRING(BGl_string2326z00zzmodule_foreignz00,
		BgL_bgl_string2326za700za7za7m2345za7, "Illegal `foreign' clause", 24);
	      DEFINE_STRING(BGl_string2327z00zzmodule_foreignz00,
		BgL_bgl_string2327za700za7za7m2346za7, "Illegal `extern' clause", 23);
	      DEFINE_STRING(BGl_string2328z00zzmodule_foreignz00,
		BgL_bgl_string2328za700za7za7m2347za7, "Illegal `include' clause", 24);
	      DEFINE_STRING(BGl_string2329z00zzmodule_foreignz00,
		BgL_bgl_string2329za700za7za7m2348za7, "Illegal foreign form", 20);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc2321z00zzmodule_foreignz00,
		BgL_bgl_za762za7c3za704anonymo2349za7,
		BGl_z62zc3z04anonymousza31221ze3ze5zzmodule_foreignz00, 0L, BUNSPEC, 2);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc2322z00zzmodule_foreignz00,
		BgL_bgl_za762za7c3za704anonymo2350za7,
		BGl_z62zc3z04anonymousza31223ze3ze5zzmodule_foreignz00, 0L, BUNSPEC, 1);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc2323z00zzmodule_foreignz00,
		BgL_bgl_za762za7c3za704anonymo2351za7,
		BGl_z62zc3z04anonymousza31224ze3ze5zzmodule_foreignz00, 0L, BUNSPEC, 2);
	      DEFINE_STRING(BGl_string2330z00zzmodule_foreignz00,
		BgL_bgl_string2330za700za7za7m2352za7, "Illegal `macro' form", 20);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc2324z00zzmodule_foreignz00,
		BgL_bgl_za762za7c3za704anonymo2353za7,
		BGl_z62zc3z04anonymousza31225ze3ze5zzmodule_foreignz00, 0L, BUNSPEC, 0);
	      DEFINE_STRING(BGl_string2331z00zzmodule_foreignz00,
		BgL_bgl_string2331za700za7za7m2354za7, "Illegal `function' form", 23);
	      DEFINE_STRING(BGl_string2332z00zzmodule_foreignz00,
		BgL_bgl_string2332za700za7za7m2355za7, "Illegal `variable' form", 23);
	      DEFINE_STRING(BGl_string2333z00zzmodule_foreignz00,
		BgL_bgl_string2333za700za7za7m2356za7, "Illegal extern form", 19);
	      DEFINE_STRING(BGl_string2334z00zzmodule_foreignz00,
		BgL_bgl_string2334za700za7za7m2357za7, "Illegal `C foreign type'", 24);
	      DEFINE_STRING(BGl_string2335z00zzmodule_foreignz00,
		BgL_bgl_string2335za700za7za7m2358za7, "Illegal `C extern type'", 23);
	      DEFINE_STRING(BGl_string2336z00zzmodule_foreignz00,
		BgL_bgl_string2336za700za7za7m2359za7, "Foreign", 7);
	      DEFINE_STRING(BGl_string2337z00zzmodule_foreignz00,
		BgL_bgl_string2337za700za7za7m2360za7,
		"Re-exportation of global variable (ignored)", 43);
	      DEFINE_STRING(BGl_string2338z00zzmodule_foreignz00,
		BgL_bgl_string2338za700za7za7m2361za7, "Unbound global variable \"~a\"",
		28);
	      DEFINE_STRING(BGl_string2339z00zzmodule_foreignz00,
		BgL_bgl_string2339za700za7za7m2362za7, "Unspecified C type, using type",
		30);
	      DEFINE_STRING(BGl_string2340z00zzmodule_foreignz00,
		BgL_bgl_string2340za700za7za7m2363za7, "module_foreign", 14);
	      DEFINE_STRING(BGl_string2341z00zzmodule_foreignz00,
		BgL_bgl_string2341za700za7za7m2364za7,
		"unit make-heap make-add-heap union* struct* array enum function pointer opaque struct union C * macro export type include infix void extern foreign ",
		148);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_makezd2externzd2compilerzd2envzd2zzmodule_foreignz00,
		BgL_bgl_za762makeza7d2extern2365z00,
		BGl_z62makezd2externzd2compilerz62zzmodule_foreignz00, 0L, BUNSPEC, 0);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_makezd2foreignzd2compilerzd2envzd2zzmodule_foreignz00,
		BgL_bgl_za762makeza7d2foreig2366z00,
		BGl_z62makezd2foreignzd2compilerz62zzmodule_foreignz00, 0L, BUNSPEC, 0);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_foreignzd2accesseszd2addz12zd2envzc0zzmodule_foreignz00,
		BgL_bgl_za762foreignza7d2acc2367z00,
		BGl_z62foreignzd2accesseszd2addz12z70zzmodule_foreignz00, 0L, BUNSPEC, 1);
	     
		DEFINE_STATIC_BGL_PROCEDURE
		(BGl_foreignzd2producerzd2envz00zzmodule_foreignz00,
		BgL_bgl_za762foreignza7d2pro2368z00,
		BGl_z62foreignzd2producerzb0zzmodule_foreignz00, 0L, BUNSPEC, 1);

/* 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_requirezd2initializa7ationz75zzmodule_foreignz00));
		     ADD_ROOT((void
				*) (&BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00));
		     ADD_ROOT((void
				*) (&BGl_za2foreignzd2exportedza2zd2zzmodule_foreignz00));
#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_modulezd2initializa7ationz75zzmodule_foreignz00(long
		BgL_checksumz00_2986, char *BgL_fromz00_2987)
	{
		{
			if (CBOOL(BGl_requirezd2initializa7ationz75zzmodule_foreignz00))
				{
					BGl_requirezd2initializa7ationz75zzmodule_foreignz00 =
						BBOOL(((bool_t) 0));
					BGl_gczd2rootszd2initz00zzmodule_foreignz00();
					BGl_libraryzd2moduleszd2initz00zzmodule_foreignz00();
					BGl_cnstzd2initzd2zzmodule_foreignz00();
					BGl_importedzd2moduleszd2initz00zzmodule_foreignz00();
					return BGl_toplevelzd2initzd2zzmodule_foreignz00();
				}
			else
				{
					return BUNSPEC;
				}
		}

	}



/* library-modules-init */
	obj_t BGl_libraryzd2moduleszd2initz00zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			BGl_modulezd2initializa7ationz75zz__objectz00(0L, "module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_output_6_10_3z00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_strings_6_7z00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__readerz00(0L, "module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_ports_6_10_1z00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_equivalence_6_2z00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_vectors_6_8z00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(0L,
				"module_foreign");
			BGl_modulezd2initializa7ationz75zz__structurez00(0L, "module_foreign");
			BGl_modulezd2initializa7ationz75zz__biglooz00(0L, "module_foreign");
			return BUNSPEC;
		}

	}



/* cnst-init */
	obj_t BGl_cnstzd2initzd2zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			{	/* Module/foreign.scm 18 */
				obj_t BgL_cportz00_2942;

				{	/* Module/foreign.scm 18 */
					obj_t BgL_stringz00_2949;

					BgL_stringz00_2949 = BGl_string2341z00zzmodule_foreignz00;
					{	/* Module/foreign.scm 18 */
						obj_t BgL_startz00_2950;

						BgL_startz00_2950 = BINT(0L);
						{	/* Module/foreign.scm 18 */
							obj_t BgL_endz00_2951;

							BgL_endz00_2951 =
								BINT(STRING_LENGTH(((obj_t) BgL_stringz00_2949)));
							{	/* Module/foreign.scm 18 */

								BgL_cportz00_2942 =
									BGl_openzd2inputzd2stringz12z12zz__r4_ports_6_10_1z00
									(BgL_stringz00_2949, BgL_startz00_2950, BgL_endz00_2951);
				}}}}
				{
					long BgL_iz00_2943;

					BgL_iz00_2943 = 21L;
				BgL_loopz00_2944:
					if ((BgL_iz00_2943 == -1L))
						{	/* Module/foreign.scm 18 */
							return BUNSPEC;
						}
					else
						{	/* Module/foreign.scm 18 */
							{	/* Module/foreign.scm 18 */
								obj_t BgL_arg2342z00_2945;

								{	/* Module/foreign.scm 18 */

									{	/* Module/foreign.scm 18 */
										obj_t BgL_locationz00_2947;

										BgL_locationz00_2947 = BBOOL(((bool_t) 0));
										{	/* Module/foreign.scm 18 */

											BgL_arg2342z00_2945 =
												BGl_readz00zz__readerz00(BgL_cportz00_2942,
												BgL_locationz00_2947);
										}
									}
								}
								{	/* Module/foreign.scm 18 */
									int BgL_tmpz00_3017;

									BgL_tmpz00_3017 = (int) (BgL_iz00_2943);
									CNST_TABLE_SET(BgL_tmpz00_3017, BgL_arg2342z00_2945);
							}}
							{	/* Module/foreign.scm 18 */
								int BgL_auxz00_2948;

								BgL_auxz00_2948 = (int) ((BgL_iz00_2943 - 1L));
								{
									long BgL_iz00_3022;

									BgL_iz00_3022 = (long) (BgL_auxz00_2948);
									BgL_iz00_2943 = BgL_iz00_3022;
									goto BgL_loopz00_2944;
								}
							}
						}
				}
			}
		}

	}



/* gc-roots-init */
	obj_t BGl_gczd2rootszd2initz00zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			return bgl_gc_roots_register();
		}

	}



/* toplevel-init */
	obj_t BGl_toplevelzd2initzd2zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00 = BNIL;
			return (BGl_za2foreignzd2exportedza2zd2zzmodule_foreignz00 =
				BNIL, BUNSPEC);
		}

	}



/* append-21011 */
	obj_t BGl_appendzd221011zd2zzmodule_foreignz00(obj_t BgL_l1z00_1,
		obj_t BgL_l2z00_2)
	{
		{
			{
				obj_t BgL_headz00_1017;

				BgL_headz00_1017 = MAKE_YOUNG_PAIR(BNIL, BgL_l2z00_2);
				{
					obj_t BgL_prevz00_1018;
					obj_t BgL_tailz00_1019;

					BgL_prevz00_1018 = BgL_headz00_1017;
					BgL_tailz00_1019 = BgL_l1z00_1;
				BgL_loopz00_1020:
					if (PAIRP(BgL_tailz00_1019))
						{
							obj_t BgL_newzd2prevzd2_1022;

							BgL_newzd2prevzd2_1022 =
								MAKE_YOUNG_PAIR(CAR(BgL_tailz00_1019), BgL_l2z00_2);
							SET_CDR(BgL_prevz00_1018, BgL_newzd2prevzd2_1022);
							{
								obj_t BgL_tailz00_3032;
								obj_t BgL_prevz00_3031;

								BgL_prevz00_3031 = BgL_newzd2prevzd2_1022;
								BgL_tailz00_3032 = CDR(BgL_tailz00_1019);
								BgL_tailz00_1019 = BgL_tailz00_3032;
								BgL_prevz00_1018 = BgL_prevz00_3031;
								goto BgL_loopz00_1020;
							}
						}
					else
						{
							BNIL;
						}
					return CDR(BgL_headz00_1017);
				}
			}
		}

	}



/* make-foreign-compiler */
	BGL_EXPORTED_DEF obj_t
		BGl_makezd2foreignzd2compilerz00zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 45 */
			{	/* Module/foreign.scm 46 */
				BgL_ccompz00_bglt BgL_new1074z00_1039;

				{	/* Module/foreign.scm 47 */
					BgL_ccompz00_bglt BgL_new1073z00_1043;

					BgL_new1073z00_1043 =
						((BgL_ccompz00_bglt) BOBJECT(GC_MALLOC(sizeof(struct
									BgL_ccompz00_bgl))));
					{	/* Module/foreign.scm 47 */
						long BgL_arg1222z00_1044;

						BgL_arg1222z00_1044 = BGL_CLASS_NUM(BGl_ccompz00zzmodule_modulez00);
						BGL_OBJECT_CLASS_NUM_SET(
							((BgL_objectz00_bglt) BgL_new1073z00_1043), BgL_arg1222z00_1044);
					}
					BgL_new1074z00_1039 = BgL_new1073z00_1043;
				}
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1074z00_1039))->BgL_idz00) =
					((obj_t) CNST_TABLE_REF(0L)), BUNSPEC);
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1074z00_1039))->BgL_producerz00) =
					((obj_t) BGl_foreignzd2producerzd2envz00zzmodule_foreignz00),
					BUNSPEC);
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1074z00_1039))->BgL_consumerz00) =
					((obj_t) BGl_proc2321z00zzmodule_foreignz00), BUNSPEC);
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1074z00_1039))->
						BgL_finaliza7erza7) =
					((obj_t) BGl_foreignzd2finaliza7erzd2envza7zzmodule_foreignz00),
					BUNSPEC);
				return ((obj_t) BgL_new1074z00_1039);
			}
		}

	}



/* &make-foreign-compiler */
	obj_t BGl_z62makezd2foreignzd2compilerz62zzmodule_foreignz00(obj_t
		BgL_envz00_2917)
	{
		{	/* Module/foreign.scm 45 */
			return BGl_makezd2foreignzd2compilerz00zzmodule_foreignz00();
		}

	}



/* &<@anonymous:1221> */
	obj_t BGl_z62zc3z04anonymousza31221ze3ze5zzmodule_foreignz00(obj_t
		BgL_envz00_2918, obj_t BgL_mz00_2919, obj_t BgL_cz00_2920)
	{
		{	/* Module/foreign.scm 49 */
			return BGl_foreignzd2producerzd2zzmodule_foreignz00(BgL_cz00_2920);
		}

	}



/* make-extern-compiler */
	BGL_EXPORTED_DEF obj_t
		BGl_makezd2externzd2compilerz00zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 55 */
			{	/* Module/foreign.scm 56 */
				BgL_ccompz00_bglt BgL_new1076z00_1045;

				{	/* Module/foreign.scm 57 */
					BgL_ccompz00_bglt BgL_new1075z00_1052;

					BgL_new1075z00_1052 =
						((BgL_ccompz00_bglt) BOBJECT(GC_MALLOC(sizeof(struct
									BgL_ccompz00_bgl))));
					{	/* Module/foreign.scm 57 */
						long BgL_arg1226z00_1053;

						BgL_arg1226z00_1053 = BGL_CLASS_NUM(BGl_ccompz00zzmodule_modulez00);
						BGL_OBJECT_CLASS_NUM_SET(
							((BgL_objectz00_bglt) BgL_new1075z00_1052), BgL_arg1226z00_1053);
					}
					BgL_new1076z00_1045 = BgL_new1075z00_1052;
				}
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1076z00_1045))->BgL_idz00) =
					((obj_t) CNST_TABLE_REF(1L)), BUNSPEC);
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1076z00_1045))->BgL_producerz00) =
					((obj_t) BGl_proc2322z00zzmodule_foreignz00), BUNSPEC);
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1076z00_1045))->BgL_consumerz00) =
					((obj_t) BGl_proc2323z00zzmodule_foreignz00), BUNSPEC);
				((((BgL_ccompz00_bglt) COBJECT(BgL_new1076z00_1045))->
						BgL_finaliza7erza7) =
					((obj_t) BGl_proc2324z00zzmodule_foreignz00), BUNSPEC);
				return ((obj_t) BgL_new1076z00_1045);
			}
		}

	}



/* &make-extern-compiler */
	obj_t BGl_z62makezd2externzd2compilerz62zzmodule_foreignz00(obj_t
		BgL_envz00_2927)
	{
		{	/* Module/foreign.scm 55 */
			return BGl_makezd2externzd2compilerz00zzmodule_foreignz00();
		}

	}



/* &<@anonymous:1225> */
	obj_t BGl_z62zc3z04anonymousza31225ze3ze5zzmodule_foreignz00(obj_t
		BgL_envz00_2928)
	{
		{	/* Module/module.scm 55 */
			return CNST_TABLE_REF(2L);
		}

	}



/* &<@anonymous:1224> */
	obj_t BGl_z62zc3z04anonymousza31224ze3ze5zzmodule_foreignz00(obj_t
		BgL_envz00_2929, obj_t BgL_mz00_2930, obj_t BgL_cz00_2931)
	{
		{	/* Module/foreign.scm 59 */
			return
				BGl_externzd2producerzd2zzmodule_foreignz00(BgL_cz00_2931,
				((bool_t) 0));
		}

	}



/* &<@anonymous:1223> */
	obj_t BGl_z62zc3z04anonymousza31223ze3ze5zzmodule_foreignz00(obj_t
		BgL_envz00_2932, obj_t BgL_cz00_2933)
	{
		{	/* Module/foreign.scm 58 */
			return
				BGl_externzd2producerzd2zzmodule_foreignz00(BgL_cz00_2933,
				((bool_t) 1));
		}

	}



/* foreign-producer */
	obj_t BGl_foreignzd2producerzd2zzmodule_foreignz00(obj_t BgL_clausez00_25)
	{
		{	/* Module/foreign.scm 64 */
			{	/* Module/foreign.scm 65 */
				bool_t BgL_test2372z00_3061;

				{	/* Module/foreign.scm 65 */
					obj_t BgL_arg1242z00_1071;

					{	/* Module/foreign.scm 65 */
						obj_t BgL_arg1244z00_1072;

						BgL_arg1244z00_1072 = BGl_thezd2backendzd2zzbackend_backendz00();
						BgL_arg1242z00_1071 =
							(((BgL_backendz00_bglt) COBJECT(
									((BgL_backendz00_bglt) BgL_arg1244z00_1072)))->
							BgL_foreignzd2clausezd2supportz00);
					}
					BgL_test2372z00_3061 =
						CBOOL(BGl_memqz00zz__r4_pairs_and_lists_6_3z00(CNST_TABLE_REF(0L),
							BgL_arg1242z00_1071));
				}
				if (BgL_test2372z00_3061)
					{
						obj_t BgL_protosz00_1057;

						if (PAIRP(BgL_clausez00_25))
							{	/* Module/foreign.scm 66 */
								obj_t BgL_arg1237z00_1062;

								BgL_arg1237z00_1062 = CDR(((obj_t) BgL_clausez00_25));
								BgL_protosz00_1057 = BgL_arg1237z00_1062;
								{
									obj_t BgL_l1198z00_1064;

									BgL_l1198z00_1064 = BgL_protosz00_1057;
								BgL_zc3z04anonymousza31238ze3z87_1065:
									if (PAIRP(BgL_l1198z00_1064))
										{	/* Module/foreign.scm 68 */
											BGl_foreignzd2parserzd2zzmodule_foreignz00(CAR
												(BgL_l1198z00_1064), ((bool_t) 1));
											{
												obj_t BgL_l1198z00_3076;

												BgL_l1198z00_3076 = CDR(BgL_l1198z00_1064);
												BgL_l1198z00_1064 = BgL_l1198z00_3076;
												goto BgL_zc3z04anonymousza31238ze3z87_1065;
											}
										}
									else
										{	/* Module/foreign.scm 68 */
											((bool_t) 1);
										}
								}
								return BNIL;
							}
						else
							{	/* Module/foreign.scm 66 */
								{	/* Module/foreign.scm 71 */
									obj_t BgL_list1241z00_1070;

									BgL_list1241z00_1070 = MAKE_YOUNG_PAIR(BNIL, BNIL);
									return
										BGl_userzd2errorzd2zztools_errorz00
										(BGl_string2325z00zzmodule_foreignz00,
										BGl_string2326z00zzmodule_foreignz00, BgL_clausez00_25,
										BgL_list1241z00_1070);
								}
							}
					}
				else
					{	/* Module/foreign.scm 65 */
						return BNIL;
					}
			}
		}

	}



/* &foreign-producer */
	obj_t BGl_z62foreignzd2producerzb0zzmodule_foreignz00(obj_t BgL_envz00_2921,
		obj_t BgL_clausez00_2922)
	{
		{	/* Module/foreign.scm 64 */
			return BGl_foreignzd2producerzd2zzmodule_foreignz00(BgL_clausez00_2922);
		}

	}



/* extern-producer */
	obj_t BGl_externzd2producerzd2zzmodule_foreignz00(obj_t BgL_clausez00_26,
		bool_t BgL_exportpz00_27)
	{
		{	/* Module/foreign.scm 80 */
			{	/* Module/foreign.scm 81 */
				bool_t BgL_test2375z00_3081;

				{	/* Module/foreign.scm 81 */
					obj_t BgL_arg1256z00_1090;

					{	/* Module/foreign.scm 81 */
						obj_t BgL_arg1257z00_1091;

						BgL_arg1257z00_1091 = BGl_thezd2backendzd2zzbackend_backendz00();
						BgL_arg1256z00_1090 =
							(((BgL_backendz00_bglt) COBJECT(
									((BgL_backendz00_bglt) BgL_arg1257z00_1091)))->
							BgL_foreignzd2clausezd2supportz00);
					}
					BgL_test2375z00_3081 =
						CBOOL(BGl_memqz00zz__r4_pairs_and_lists_6_3z00(CNST_TABLE_REF(1L),
							BgL_arg1256z00_1090));
				}
				if (BgL_test2375z00_3081)
					{
						obj_t BgL_protosz00_1076;

						if (PAIRP(BgL_clausez00_26))
							{	/* Module/foreign.scm 82 */
								obj_t BgL_arg1250z00_1081;

								BgL_arg1250z00_1081 = CDR(((obj_t) BgL_clausez00_26));
								BgL_protosz00_1076 = BgL_arg1250z00_1081;
								{
									obj_t BgL_l1200z00_1083;

									BgL_l1200z00_1083 = BgL_protosz00_1076;
								BgL_zc3z04anonymousza31251ze3z87_1084:
									if (PAIRP(BgL_l1200z00_1083))
										{	/* Module/foreign.scm 84 */
											BGl_externzd2parserzd2zzmodule_foreignz00(CAR
												(BgL_l1200z00_1083), BgL_exportpz00_27);
											{
												obj_t BgL_l1200z00_3096;

												BgL_l1200z00_3096 = CDR(BgL_l1200z00_1083);
												BgL_l1200z00_1083 = BgL_l1200z00_3096;
												goto BgL_zc3z04anonymousza31251ze3z87_1084;
											}
										}
									else
										{	/* Module/foreign.scm 84 */
											((bool_t) 1);
										}
								}
								return BNIL;
							}
						else
							{	/* Module/foreign.scm 82 */
								{	/* Module/foreign.scm 87 */
									obj_t BgL_list1254z00_1089;

									BgL_list1254z00_1089 = MAKE_YOUNG_PAIR(BNIL, BNIL);
									return
										BGl_userzd2errorzd2zztools_errorz00
										(BGl_string2325z00zzmodule_foreignz00,
										BGl_string2327z00zzmodule_foreignz00, BgL_clausez00_26,
										BgL_list1254z00_1089);
								}
							}
					}
				else
					{	/* Module/foreign.scm 81 */
						return BNIL;
					}
			}
		}

	}



/* check-c-args? */
	bool_t BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00(obj_t BgL_protoz00_28)
	{
		{	/* Module/foreign.scm 96 */
			{
				obj_t BgL_protoz00_1093;

				BgL_protoz00_1093 = BgL_protoz00_28;
			BgL_zc3z04anonymousza31258ze3z87_1094:
				if (NULLP(BgL_protoz00_1093))
					{	/* Module/foreign.scm 99 */
						return ((bool_t) 1);
					}
				else
					{	/* Module/foreign.scm 99 */
						if (SYMBOLP(BgL_protoz00_1093))
							{	/* Module/foreign.scm 101 */
								return ((bool_t) 1);
							}
						else
							{	/* Module/foreign.scm 101 */
								if (PAIRP(BgL_protoz00_1093))
									{	/* Module/foreign.scm 105 */
										bool_t BgL_test2381z00_3106;

										{	/* Module/foreign.scm 105 */
											obj_t BgL_tmpz00_3107;

											BgL_tmpz00_3107 = CAR(BgL_protoz00_1093);
											BgL_test2381z00_3106 = SYMBOLP(BgL_tmpz00_3107);
										}
										if (BgL_test2381z00_3106)
											{
												obj_t BgL_protoz00_3110;

												BgL_protoz00_3110 = CDR(BgL_protoz00_1093);
												BgL_protoz00_1093 = BgL_protoz00_3110;
												goto BgL_zc3z04anonymousza31258ze3z87_1094;
											}
										else
											{	/* Module/foreign.scm 105 */
												return ((bool_t) 0);
											}
									}
								else
									{	/* Module/foreign.scm 103 */
										return ((bool_t) 0);
									}
							}
					}
			}
		}

	}



/* foreign-parser */
	obj_t BGl_foreignzd2parserzd2zzmodule_foreignz00(obj_t BgL_foreignz00_29,
		bool_t BgL_exportpz00_30)
	{
		{	/* Module/foreign.scm 113 */
			{
				obj_t BgL_typez00_1125;
				obj_t BgL_lzd2namezd2_1126;
				obj_t BgL_czd2namezd2_1127;
				obj_t BgL_typez00_1120;
				obj_t BgL_lzd2namezd2_1121;
				obj_t BgL_protoz00_1122;
				obj_t BgL_czd2namezd2_1123;
				obj_t BgL_typez00_1115;
				obj_t BgL_lzd2namezd2_1116;
				obj_t BgL_czd2namezd2_1117;
				obj_t BgL_typez00_1110;
				obj_t BgL_lzd2namezd2_1111;
				obj_t BgL_protoz00_1112;
				obj_t BgL_czd2namezd2_1113;
				obj_t BgL_stringz00_1103;

				if (PAIRP(BgL_foreignz00_29))
					{	/* Module/foreign.scm 115 */
						obj_t BgL_cdrzd2395zd2_1132;

						BgL_cdrzd2395zd2_1132 = CDR(((obj_t) BgL_foreignz00_29));
						if ((CAR(((obj_t) BgL_foreignz00_29)) == CNST_TABLE_REF(4L)))
							{	/* Module/foreign.scm 115 */
								if (PAIRP(BgL_cdrzd2395zd2_1132))
									{	/* Module/foreign.scm 115 */
										if (NULLP(CDR(BgL_cdrzd2395zd2_1132)))
											{	/* Module/foreign.scm 115 */
												BgL_stringz00_1103 = CAR(BgL_cdrzd2395zd2_1132);
												if (STRINGP(BgL_stringz00_1103))
													{	/* Module/foreign.scm 117 */
														if (CBOOL(BGl_memberz00zz__r4_pairs_and_lists_6_3z00
																(BgL_stringz00_1103,
																	BGl_za2includezd2foreignza2zd2zzengine_paramz00)))
															{	/* Module/foreign.scm 119 */
																return BFALSE;
															}
														else
															{	/* Module/foreign.scm 119 */
																return
																	(BGl_za2includezd2foreignza2zd2zzengine_paramz00
																	=
																	MAKE_YOUNG_PAIR(BgL_stringz00_1103,
																		BGl_za2includezd2foreignza2zd2zzengine_paramz00),
																	BUNSPEC);
															}
													}
												else
													{	/* Module/foreign.scm 118 */
														obj_t BgL_list1619z00_1269;

														BgL_list1619z00_1269 = MAKE_YOUNG_PAIR(BNIL, BNIL);
														return
															BGl_userzd2errorzd2zztools_errorz00
															(BGl_string2325z00zzmodule_foreignz00,
															BGl_string2328z00zzmodule_foreignz00,
															BgL_foreignz00_29, BgL_list1619z00_1269);
													}
											}
										else
											{	/* Module/foreign.scm 115 */
											BgL_tagzd2378zd2_1109:
												{	/* Module/foreign.scm 128 */
													obj_t BgL_list1621z00_1271;

													BgL_list1621z00_1271 = MAKE_YOUNG_PAIR(BNIL, BNIL);
													return
														BGl_userzd2errorzd2zztools_errorz00
														(BGl_string2325z00zzmodule_foreignz00,
														BGl_string2329z00zzmodule_foreignz00,
														BgL_foreignz00_29, BgL_list1621z00_1271);
												}
											}
									}
								else
									{	/* Module/foreign.scm 115 */
										goto BgL_tagzd2378zd2_1109;
									}
							}
						else
							{	/* Module/foreign.scm 115 */
								if ((CAR(((obj_t) BgL_foreignz00_29)) == CNST_TABLE_REF(5L)))
									{	/* Module/foreign.scm 115 */
										return
											BGl_parsezd2czd2foreignzd2typezd2zzmodule_foreignz00
											(BgL_foreignz00_29);
									}
								else
									{	/* Module/foreign.scm 115 */
										if (
											(CAR(((obj_t) BgL_foreignz00_29)) == CNST_TABLE_REF(6L)))
											{	/* Module/foreign.scm 115 */
												if (PAIRP(BgL_cdrzd2395zd2_1132))
													{	/* Module/foreign.scm 115 */
														obj_t BgL_carzd2456zd2_1146;
														obj_t BgL_cdrzd2457zd2_1147;

														BgL_carzd2456zd2_1146 = CAR(BgL_cdrzd2395zd2_1132);
														BgL_cdrzd2457zd2_1147 = CDR(BgL_cdrzd2395zd2_1132);
														if (SYMBOLP(BgL_carzd2456zd2_1146))
															{	/* Module/foreign.scm 115 */
																if (PAIRP(BgL_cdrzd2457zd2_1147))
																	{	/* Module/foreign.scm 115 */
																		obj_t BgL_carzd2462zd2_1150;

																		BgL_carzd2462zd2_1150 =
																			CAR(BgL_cdrzd2457zd2_1147);
																		if (STRINGP(BgL_carzd2462zd2_1150))
																			{	/* Module/foreign.scm 115 */
																				if (NULLP(CDR(BgL_cdrzd2457zd2_1147)))
																					{	/* Module/foreign.scm 125 */
																						obj_t BgL_arg1620z00_2278;

																						BgL_arg1620z00_2278 =
																							MAKE_YOUNG_PAIR(BgL_foreignz00_29,
																							BBOOL(BgL_exportpz00_30));
																						return
																							(BGl_za2foreignzd2exportedza2zd2zzmodule_foreignz00
																							=
																							MAKE_YOUNG_PAIR
																							(BgL_arg1620z00_2278,
																								BGl_za2foreignzd2exportedza2zd2zzmodule_foreignz00),
																							BUNSPEC);
																					}
																				else
																					{	/* Module/foreign.scm 115 */
																						goto BgL_tagzd2378zd2_1109;
																					}
																			}
																		else
																			{	/* Module/foreign.scm 115 */
																				goto BgL_tagzd2378zd2_1109;
																			}
																	}
																else
																	{	/* Module/foreign.scm 115 */
																		goto BgL_tagzd2378zd2_1109;
																	}
															}
														else
															{	/* Module/foreign.scm 115 */
																goto BgL_tagzd2378zd2_1109;
															}
													}
												else
													{	/* Module/foreign.scm 115 */
														goto BgL_tagzd2378zd2_1109;
													}
											}
										else
											{	/* Module/foreign.scm 115 */
												obj_t BgL_cdrzd2509zd2_1155;

												BgL_cdrzd2509zd2_1155 =
													CDR(((obj_t) BgL_foreignz00_29));
												if (
													(CAR(
															((obj_t) BgL_foreignz00_29)) ==
														CNST_TABLE_REF(7L)))
													{	/* Module/foreign.scm 115 */
														if (PAIRP(BgL_cdrzd2509zd2_1155))
															{	/* Module/foreign.scm 115 */
																obj_t BgL_cdrzd2515zd2_1159;

																BgL_cdrzd2515zd2_1159 =
																	CDR(BgL_cdrzd2509zd2_1155);
																if (PAIRP(BgL_cdrzd2515zd2_1159))
																	{	/* Module/foreign.scm 115 */
																		obj_t BgL_cdrzd2521zd2_1161;

																		BgL_cdrzd2521zd2_1161 =
																			CDR(BgL_cdrzd2515zd2_1159);
																		if (PAIRP(BgL_cdrzd2521zd2_1161))
																			{	/* Module/foreign.scm 115 */
																				obj_t BgL_cdrzd2526zd2_1163;

																				BgL_cdrzd2526zd2_1163 =
																					CDR(BgL_cdrzd2521zd2_1161);
																				if (PAIRP(BgL_cdrzd2526zd2_1163))
																					{	/* Module/foreign.scm 115 */
																						if (NULLP(CDR
																								(BgL_cdrzd2526zd2_1163)))
																							{	/* Module/foreign.scm 115 */
																								BgL_typez00_1110 =
																									CAR(BgL_cdrzd2509zd2_1155);
																								BgL_lzd2namezd2_1111 =
																									CAR(BgL_cdrzd2515zd2_1159);
																								BgL_protoz00_1112 =
																									CAR(BgL_cdrzd2521zd2_1161);
																								BgL_czd2namezd2_1113 =
																									CAR(BgL_cdrzd2526zd2_1163);
																							BgL_tagzd2379zd2_1114:
																								{	/* Module/foreign.scm 131 */
																									bool_t BgL_test2401z00_3186;

																									if (STRINGP
																										(BgL_czd2namezd2_1113))
																										{	/* Module/foreign.scm 131 */
																											if (SYMBOLP
																												(BgL_typez00_1110))
																												{	/* Module/foreign.scm 132 */
																													if (SYMBOLP
																														(BgL_lzd2namezd2_1111))
																														{	/* Module/foreign.scm 133 */
																															BgL_test2401z00_3186
																																=
																																BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00
																																(BgL_protoz00_1112);
																														}
																													else
																														{	/* Module/foreign.scm 133 */
																															BgL_test2401z00_3186
																																= ((bool_t) 0);
																														}
																												}
																											else
																												{	/* Module/foreign.scm 132 */
																													BgL_test2401z00_3186 =
																														((bool_t) 0);
																												}
																										}
																									else
																										{	/* Module/foreign.scm 131 */
																											BgL_test2401z00_3186 =
																												((bool_t) 0);
																										}
																									if (BgL_test2401z00_3186)
																										{	/* Module/foreign.scm 137 */
																											bool_t
																												BgL_arg1628z00_1276;
																											BgL_arg1628z00_1276 =
																												(CAR(((obj_t)
																														BgL_foreignz00_29))
																												== CNST_TABLE_REF(3L));
																											return ((obj_t)
																												BGl_declarezd2globalzd2cfunz12z12zzast_glozd2declzd2
																												(BgL_lzd2namezd2_1111,
																													BFALSE,
																													CNST_TABLE_REF(0L),
																													BgL_czd2namezd2_1113,
																													BgL_typez00_1110,
																													BgL_protoz00_1112,
																													BgL_arg1628z00_1276,
																													((bool_t) 1),
																													BgL_foreignz00_29,
																													BgL_foreignz00_29));
																										}
																									else
																										{	/* Module/foreign.scm 135 */
																											obj_t
																												BgL_list1630z00_1278;
																											BgL_list1630z00_1278 =
																												MAKE_YOUNG_PAIR(BNIL,
																												BNIL);
																											return
																												BGl_userzd2errorzd2zztools_errorz00
																												(BGl_string2325z00zzmodule_foreignz00,
																												BGl_string2330z00zzmodule_foreignz00,
																												BgL_foreignz00_29,
																												BgL_list1630z00_1278);
																										}
																								}
																							}
																						else
																							{	/* Module/foreign.scm 115 */
																							BgL_tagzd2381zd2_1119:
																								{	/* Module/foreign.scm 145 */
																									obj_t BgL_list1635z00_1288;

																									BgL_list1635z00_1288 =
																										MAKE_YOUNG_PAIR(BNIL, BNIL);
																									return
																										BGl_userzd2errorzd2zztools_errorz00
																										(BGl_string2325z00zzmodule_foreignz00,
																										BGl_string2329z00zzmodule_foreignz00,
																										BgL_foreignz00_29,
																										BgL_list1635z00_1288);
																								}
																							}
																					}
																				else
																					{	/* Module/foreign.scm 115 */
																						obj_t BgL_cdrzd2573zd2_1173;

																						BgL_cdrzd2573zd2_1173 =
																							CDR(
																							((obj_t) BgL_cdrzd2509zd2_1155));
																						{	/* Module/foreign.scm 115 */
																							obj_t BgL_cdrzd2581zd2_1174;

																							BgL_cdrzd2581zd2_1174 =
																								CDR(
																								((obj_t)
																									BgL_cdrzd2573zd2_1173));
																							if (NULLP(CDR(((obj_t)
																											BgL_cdrzd2581zd2_1174))))
																								{	/* Module/foreign.scm 115 */
																									obj_t BgL_arg1352z00_1177;
																									obj_t BgL_arg1354z00_1178;
																									obj_t BgL_arg1361z00_1179;

																									BgL_arg1352z00_1177 =
																										CAR(
																										((obj_t)
																											BgL_cdrzd2509zd2_1155));
																									BgL_arg1354z00_1178 =
																										CAR(((obj_t)
																											BgL_cdrzd2573zd2_1173));
																									BgL_arg1361z00_1179 =
																										CAR(((obj_t)
																											BgL_cdrzd2581zd2_1174));
																									BgL_typez00_1115 =
																										BgL_arg1352z00_1177;
																									BgL_lzd2namezd2_1116 =
																										BgL_arg1354z00_1178;
																									BgL_czd2namezd2_1117 =
																										BgL_arg1361z00_1179;
																									{	/* Module/foreign.scm 139 */
																										bool_t BgL_test2406z00_3223;

																										if (STRINGP
																											(BgL_czd2namezd2_1117))
																											{	/* Module/foreign.scm 139 */
																												if (SYMBOLP
																													(BgL_typez00_1115))
																													{	/* Module/foreign.scm 140 */
																														BgL_test2406z00_3223
																															=
																															SYMBOLP
																															(BgL_lzd2namezd2_1116);
																													}
																												else
																													{	/* Module/foreign.scm 140 */
																														BgL_test2406z00_3223
																															= ((bool_t) 0);
																													}
																											}
																										else
																											{	/* Module/foreign.scm 139 */
																												BgL_test2406z00_3223 =
																													((bool_t) 0);
																											}
																										if (BgL_test2406z00_3223)
																											{	/* Module/foreign.scm 139 */
																												return
																													((obj_t)
																													BGl_declarezd2globalzd2cvarz12z12zzast_glozd2declzd2
																													(BgL_lzd2namezd2_1116,
																														BFALSE,
																														BgL_czd2namezd2_1117,
																														BgL_typez00_1115,
																														((bool_t) 1),
																														BgL_foreignz00_29,
																														BgL_foreignz00_29));
																											}
																										else
																											{	/* Module/foreign.scm 142 */
																												obj_t
																													BgL_list1634z00_1285;
																												BgL_list1634z00_1285 =
																													MAKE_YOUNG_PAIR(BNIL,
																													BNIL);
																												return
																													BGl_userzd2errorzd2zztools_errorz00
																													(BGl_string2325z00zzmodule_foreignz00,
																													BGl_string2330z00zzmodule_foreignz00,
																													BgL_foreignz00_29,
																													BgL_list1634z00_1285);
																											}
																									}
																								}
																							else
																								{	/* Module/foreign.scm 115 */
																									goto BgL_tagzd2381zd2_1119;
																								}
																						}
																					}
																			}
																		else
																			{	/* Module/foreign.scm 115 */
																				goto BgL_tagzd2381zd2_1119;
																			}
																	}
																else
																	{	/* Module/foreign.scm 115 */
																		goto BgL_tagzd2381zd2_1119;
																	}
															}
														else
															{	/* Module/foreign.scm 115 */
																goto BgL_tagzd2381zd2_1119;
															}
													}
												else
													{	/* Module/foreign.scm 115 */
														if (
															(CAR(
																	((obj_t) BgL_foreignz00_29)) ==
																CNST_TABLE_REF(3L)))
															{	/* Module/foreign.scm 115 */
																if (PAIRP(BgL_cdrzd2509zd2_1155))
																	{	/* Module/foreign.scm 115 */
																		obj_t BgL_cdrzd2653zd2_1185;

																		BgL_cdrzd2653zd2_1185 =
																			CDR(BgL_cdrzd2509zd2_1155);
																		if (
																			(CAR(BgL_cdrzd2509zd2_1155) ==
																				CNST_TABLE_REF(7L)))
																			{	/* Module/foreign.scm 115 */
																				if (PAIRP(BgL_cdrzd2653zd2_1185))
																					{	/* Module/foreign.scm 115 */
																						obj_t BgL_cdrzd2659zd2_1189;

																						BgL_cdrzd2659zd2_1189 =
																							CDR(BgL_cdrzd2653zd2_1185);
																						if (PAIRP(BgL_cdrzd2659zd2_1189))
																							{	/* Module/foreign.scm 115 */
																								obj_t BgL_cdrzd2665zd2_1191;

																								BgL_cdrzd2665zd2_1191 =
																									CDR(BgL_cdrzd2659zd2_1189);
																								if (PAIRP
																									(BgL_cdrzd2665zd2_1191))
																									{	/* Module/foreign.scm 115 */
																										obj_t BgL_cdrzd2670zd2_1193;

																										BgL_cdrzd2670zd2_1193 =
																											CDR
																											(BgL_cdrzd2665zd2_1191);
																										if (PAIRP
																											(BgL_cdrzd2670zd2_1193))
																											{	/* Module/foreign.scm 115 */
																												if (NULLP(CDR
																														(BgL_cdrzd2670zd2_1193)))
																													{
																														obj_t
																															BgL_czd2namezd2_3265;
																														obj_t
																															BgL_protoz00_3263;
																														obj_t
																															BgL_lzd2namezd2_3261;
																														obj_t
																															BgL_typez00_3259;
																														BgL_typez00_3259 =
																															CAR
																															(BgL_cdrzd2653zd2_1185);
																														BgL_lzd2namezd2_3261
																															=
																															CAR
																															(BgL_cdrzd2659zd2_1189);
																														BgL_protoz00_3263 =
																															CAR
																															(BgL_cdrzd2665zd2_1191);
																														BgL_czd2namezd2_3265
																															=
																															CAR
																															(BgL_cdrzd2670zd2_1193);
																														BgL_czd2namezd2_1113
																															=
																															BgL_czd2namezd2_3265;
																														BgL_protoz00_1112 =
																															BgL_protoz00_3263;
																														BgL_lzd2namezd2_1111
																															=
																															BgL_lzd2namezd2_3261;
																														BgL_typez00_1110 =
																															BgL_typez00_3259;
																														goto
																															BgL_tagzd2379zd2_1114;
																													}
																												else
																													{	/* Module/foreign.scm 115 */
																													BgL_tagzd2384zd2_1129:
																														{	/* Module/foreign.scm 161 */
																															obj_t
																																BgL_list1645z00_1303;
																															BgL_list1645z00_1303
																																=
																																MAKE_YOUNG_PAIR
																																(BNIL, BNIL);
																															return
																																BGl_userzd2errorzd2zztools_errorz00
																																(BGl_string2325z00zzmodule_foreignz00,
																																BGl_string2329z00zzmodule_foreignz00,
																																BgL_foreignz00_29,
																																BgL_list1645z00_1303);
																														}
																													}
																											}
																										else
																											{	/* Module/foreign.scm 115 */
																												goto
																													BgL_tagzd2384zd2_1129;
																											}
																									}
																								else
																									{	/* Module/foreign.scm 115 */
																										obj_t BgL_cdrzd2754zd2_1202;

																										BgL_cdrzd2754zd2_1202 =
																											CDR(
																											((obj_t)
																												BgL_foreignz00_29));
																										{	/* Module/foreign.scm 115 */
																											obj_t
																												BgL_cdrzd2762zd2_1203;
																											BgL_cdrzd2762zd2_1203 =
																												CDR(((obj_t)
																													BgL_cdrzd2754zd2_1202));
																											{	/* Module/foreign.scm 115 */
																												obj_t
																													BgL_cdrzd2769zd2_1204;
																												BgL_cdrzd2769zd2_1204 =
																													CDR(((obj_t)
																														BgL_cdrzd2762zd2_1203));
																												if (NULLP(CDR(((obj_t)
																																BgL_cdrzd2769zd2_1204))))
																													{	/* Module/foreign.scm 115 */
																														obj_t
																															BgL_arg1450z00_1207;
																														obj_t
																															BgL_arg1451z00_1208;
																														obj_t
																															BgL_arg1452z00_1209;
																														obj_t
																															BgL_arg1453z00_1210;
																														BgL_arg1450z00_1207
																															=
																															CAR(((obj_t)
																																BgL_foreignz00_29));
																														BgL_arg1451z00_1208
																															=
																															CAR(((obj_t)
																																BgL_cdrzd2754zd2_1202));
																														BgL_arg1452z00_1209
																															=
																															CAR(((obj_t)
																																BgL_cdrzd2762zd2_1203));
																														BgL_arg1453z00_1210
																															=
																															CAR(((obj_t)
																																BgL_cdrzd2769zd2_1204));
																														BgL_typez00_1120 =
																															BgL_arg1450z00_1207;
																														BgL_lzd2namezd2_1121
																															=
																															BgL_arg1451z00_1208;
																														BgL_protoz00_1122 =
																															BgL_arg1452z00_1209;
																														BgL_czd2namezd2_1123
																															=
																															BgL_arg1453z00_1210;
																													BgL_tagzd2382zd2_1124:
																														{	/* Module/foreign.scm 147 */
																															bool_t
																																BgL_test2418z00_3287;
																															if (STRINGP
																																(BgL_czd2namezd2_1123))
																																{	/* Module/foreign.scm 147 */
																																	if (SYMBOLP
																																		(BgL_typez00_1120))
																																		{	/* Module/foreign.scm 148 */
																																			if (SYMBOLP(BgL_lzd2namezd2_1121))
																																				{	/* Module/foreign.scm 149 */
																																					BgL_test2418z00_3287
																																						=
																																						BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00
																																						(BgL_protoz00_1122);
																																				}
																																			else
																																				{	/* Module/foreign.scm 149 */
																																					BgL_test2418z00_3287
																																						=
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 148 */
																																			BgL_test2418z00_3287
																																				=
																																				(
																																				(bool_t)
																																				0);
																																		}
																																}
																															else
																																{	/* Module/foreign.scm 147 */
																																	BgL_test2418z00_3287
																																		=
																																		((bool_t)
																																		0);
																																}
																															if (BgL_test2418z00_3287)
																																{	/* Module/foreign.scm 147 */
																																	return
																																		((obj_t)
																																		BGl_declarezd2globalzd2cfunz12z12zzast_glozd2declzd2
																																		(BgL_lzd2namezd2_1121,
																																			BFALSE,
																																			CNST_TABLE_REF
																																			(0L),
																																			BgL_czd2namezd2_1123,
																																			BgL_typez00_1120,
																																			BgL_protoz00_1122,
																																			((bool_t)
																																				0),
																																			((bool_t)
																																				0),
																																			BgL_foreignz00_29,
																																			BgL_foreignz00_29));
																																}
																															else
																																{	/* Module/foreign.scm 151 */
																																	obj_t
																																		BgL_list1640z00_1293;
																																	BgL_list1640z00_1293
																																		=
																																		MAKE_YOUNG_PAIR
																																		(BNIL,
																																		BNIL);
																																	return
																																		BGl_userzd2errorzd2zztools_errorz00
																																		(BGl_string2325z00zzmodule_foreignz00,
																																		BGl_string2331z00zzmodule_foreignz00,
																																		BgL_foreignz00_29,
																																		BgL_list1640z00_1293);
																																}
																														}
																													}
																												else
																													{	/* Module/foreign.scm 115 */
																														goto
																															BgL_tagzd2384zd2_1129;
																													}
																											}
																										}
																									}
																							}
																						else
																							{	/* Module/foreign.scm 115 */
																								obj_t BgL_cdrzd2812zd2_1212;

																								BgL_cdrzd2812zd2_1212 =
																									CDR(
																									((obj_t) BgL_foreignz00_29));
																								{	/* Module/foreign.scm 115 */
																									obj_t BgL_cdrzd2818zd2_1213;

																									BgL_cdrzd2818zd2_1213 =
																										CDR(
																										((obj_t)
																											BgL_cdrzd2812zd2_1212));
																									if (NULLP(CDR(((obj_t)
																													BgL_cdrzd2818zd2_1213))))
																										{	/* Module/foreign.scm 115 */
																											obj_t BgL_arg1494z00_1216;
																											obj_t BgL_arg1496z00_1217;
																											obj_t BgL_arg1497z00_1218;

																											BgL_arg1494z00_1216 =
																												CAR(
																												((obj_t)
																													BgL_foreignz00_29));
																											BgL_arg1496z00_1217 =
																												CAR(((obj_t)
																													BgL_cdrzd2812zd2_1212));
																											BgL_arg1497z00_1218 =
																												CAR(((obj_t)
																													BgL_cdrzd2818zd2_1213));
																											BgL_typez00_1125 =
																												BgL_arg1494z00_1216;
																											BgL_lzd2namezd2_1126 =
																												BgL_arg1496z00_1217;
																											BgL_czd2namezd2_1127 =
																												BgL_arg1497z00_1218;
																										BgL_tagzd2383zd2_1128:
																											{	/* Module/foreign.scm 155 */
																												bool_t
																													BgL_test2423z00_3314;
																												if (STRINGP
																													(BgL_czd2namezd2_1127))
																													{	/* Module/foreign.scm 155 */
																														if (SYMBOLP
																															(BgL_typez00_1125))
																															{	/* Module/foreign.scm 156 */
																																BgL_test2423z00_3314
																																	=
																																	SYMBOLP
																																	(BgL_lzd2namezd2_1126);
																															}
																														else
																															{	/* Module/foreign.scm 156 */
																																BgL_test2423z00_3314
																																	=
																																	((bool_t) 0);
																															}
																													}
																												else
																													{	/* Module/foreign.scm 155 */
																														BgL_test2423z00_3314
																															= ((bool_t) 0);
																													}
																												if (BgL_test2423z00_3314)
																													{	/* Module/foreign.scm 155 */
																														return
																															((obj_t)
																															BGl_declarezd2globalzd2cvarz12z12zzast_glozd2declzd2
																															(BgL_lzd2namezd2_1126,
																																BFALSE,
																																BgL_czd2namezd2_1127,
																																BgL_typez00_1125,
																																((bool_t) 0),
																																BgL_foreignz00_29,
																																BFALSE));
																													}
																												else
																													{	/* Module/foreign.scm 158 */
																														obj_t
																															BgL_list1644z00_1300;
																														BgL_list1644z00_1300
																															=
																															MAKE_YOUNG_PAIR
																															(BNIL, BNIL);
																														return
																															BGl_userzd2errorzd2zztools_errorz00
																															(BGl_string2325z00zzmodule_foreignz00,
																															BGl_string2332z00zzmodule_foreignz00,
																															BgL_foreignz00_29,
																															BgL_list1644z00_1300);
																													}
																											}
																										}
																									else
																										{	/* Module/foreign.scm 115 */
																											goto
																												BgL_tagzd2384zd2_1129;
																										}
																								}
																							}
																					}
																				else
																					{	/* Module/foreign.scm 115 */
																						goto BgL_tagzd2384zd2_1129;
																					}
																			}
																		else
																			{	/* Module/foreign.scm 115 */
																				obj_t BgL_cdrzd2871zd2_1220;

																				BgL_cdrzd2871zd2_1220 =
																					CDR(((obj_t) BgL_foreignz00_29));
																				{	/* Module/foreign.scm 115 */
																					obj_t BgL_cdrzd2877zd2_1221;

																					BgL_cdrzd2877zd2_1221 =
																						CDR(
																						((obj_t) BgL_cdrzd2871zd2_1220));
																					if (PAIRP(BgL_cdrzd2877zd2_1221))
																						{	/* Module/foreign.scm 115 */
																							obj_t BgL_cdrzd2882zd2_1223;

																							BgL_cdrzd2882zd2_1223 =
																								CDR(BgL_cdrzd2877zd2_1221);
																							if (PAIRP(BgL_cdrzd2882zd2_1223))
																								{	/* Module/foreign.scm 115 */
																									if (NULLP(CDR
																											(BgL_cdrzd2882zd2_1223)))
																										{	/* Module/foreign.scm 115 */
																											obj_t BgL_arg1532z00_1227;
																											obj_t BgL_arg1534z00_1228;
																											obj_t BgL_arg1541z00_1229;
																											obj_t BgL_arg1545z00_1230;

																											BgL_arg1532z00_1227 =
																												CAR(
																												((obj_t)
																													BgL_foreignz00_29));
																											BgL_arg1534z00_1228 =
																												CAR(((obj_t)
																													BgL_cdrzd2871zd2_1220));
																											BgL_arg1541z00_1229 =
																												CAR
																												(BgL_cdrzd2877zd2_1221);
																											BgL_arg1545z00_1230 =
																												CAR
																												(BgL_cdrzd2882zd2_1223);
																											{
																												obj_t
																													BgL_czd2namezd2_3345;
																												obj_t BgL_protoz00_3344;
																												obj_t
																													BgL_lzd2namezd2_3343;
																												obj_t BgL_typez00_3342;

																												BgL_typez00_3342 =
																													BgL_arg1532z00_1227;
																												BgL_lzd2namezd2_3343 =
																													BgL_arg1534z00_1228;
																												BgL_protoz00_3344 =
																													BgL_arg1541z00_1229;
																												BgL_czd2namezd2_3345 =
																													BgL_arg1545z00_1230;
																												BgL_czd2namezd2_1123 =
																													BgL_czd2namezd2_3345;
																												BgL_protoz00_1122 =
																													BgL_protoz00_3344;
																												BgL_lzd2namezd2_1121 =
																													BgL_lzd2namezd2_3343;
																												BgL_typez00_1120 =
																													BgL_typez00_3342;
																												goto
																													BgL_tagzd2382zd2_1124;
																											}
																										}
																									else
																										{	/* Module/foreign.scm 115 */
																											goto
																												BgL_tagzd2384zd2_1129;
																										}
																								}
																							else
																								{	/* Module/foreign.scm 115 */
																									if (NULLP(CDR(
																												((obj_t)
																													BgL_cdrzd2877zd2_1221))))
																										{	/* Module/foreign.scm 115 */
																											obj_t BgL_arg1550z00_1236;
																											obj_t BgL_arg1554z00_1237;
																											obj_t BgL_arg1555z00_1238;

																											BgL_arg1550z00_1236 =
																												CAR(
																												((obj_t)
																													BgL_foreignz00_29));
																											BgL_arg1554z00_1237 =
																												CAR(((obj_t)
																													BgL_cdrzd2871zd2_1220));
																											BgL_arg1555z00_1238 =
																												CAR(((obj_t)
																													BgL_cdrzd2877zd2_1221));
																											{
																												obj_t
																													BgL_czd2namezd2_3358;
																												obj_t
																													BgL_lzd2namezd2_3357;
																												obj_t BgL_typez00_3356;

																												BgL_typez00_3356 =
																													BgL_arg1550z00_1236;
																												BgL_lzd2namezd2_3357 =
																													BgL_arg1554z00_1237;
																												BgL_czd2namezd2_3358 =
																													BgL_arg1555z00_1238;
																												BgL_czd2namezd2_1127 =
																													BgL_czd2namezd2_3358;
																												BgL_lzd2namezd2_1126 =
																													BgL_lzd2namezd2_3357;
																												BgL_typez00_1125 =
																													BgL_typez00_3356;
																												goto
																													BgL_tagzd2383zd2_1128;
																											}
																										}
																									else
																										{	/* Module/foreign.scm 115 */
																											goto
																												BgL_tagzd2384zd2_1129;
																										}
																								}
																						}
																					else
																						{	/* Module/foreign.scm 115 */
																							goto BgL_tagzd2384zd2_1129;
																						}
																				}
																			}
																	}
																else
																	{	/* Module/foreign.scm 115 */
																		goto BgL_tagzd2384zd2_1129;
																	}
															}
														else
															{	/* Module/foreign.scm 115 */
																obj_t BgL_cdrzd2973zd2_1241;

																BgL_cdrzd2973zd2_1241 =
																	CDR(((obj_t) BgL_foreignz00_29));
																if (PAIRP(BgL_cdrzd2973zd2_1241))
																	{	/* Module/foreign.scm 115 */
																		obj_t BgL_cdrzd2979zd2_1243;

																		BgL_cdrzd2979zd2_1243 =
																			CDR(BgL_cdrzd2973zd2_1241);
																		if (PAIRP(BgL_cdrzd2979zd2_1243))
																			{	/* Module/foreign.scm 115 */
																				obj_t BgL_cdrzd2984zd2_1245;

																				BgL_cdrzd2984zd2_1245 =
																					CDR(BgL_cdrzd2979zd2_1243);
																				if (PAIRP(BgL_cdrzd2984zd2_1245))
																					{	/* Module/foreign.scm 115 */
																						if (NULLP(CDR
																								(BgL_cdrzd2984zd2_1245)))
																							{	/* Module/foreign.scm 115 */
																								obj_t BgL_arg1578z00_1249;
																								obj_t BgL_arg1579z00_1250;
																								obj_t BgL_arg1581z00_1251;
																								obj_t BgL_arg1586z00_1252;

																								BgL_arg1578z00_1249 =
																									CAR(
																									((obj_t) BgL_foreignz00_29));
																								BgL_arg1579z00_1250 =
																									CAR(BgL_cdrzd2973zd2_1241);
																								BgL_arg1581z00_1251 =
																									CAR(BgL_cdrzd2979zd2_1243);
																								BgL_arg1586z00_1252 =
																									CAR(BgL_cdrzd2984zd2_1245);
																								{
																									obj_t BgL_czd2namezd2_3380;
																									obj_t BgL_protoz00_3379;
																									obj_t BgL_lzd2namezd2_3378;
																									obj_t BgL_typez00_3377;

																									BgL_typez00_3377 =
																										BgL_arg1578z00_1249;
																									BgL_lzd2namezd2_3378 =
																										BgL_arg1579z00_1250;
																									BgL_protoz00_3379 =
																										BgL_arg1581z00_1251;
																									BgL_czd2namezd2_3380 =
																										BgL_arg1586z00_1252;
																									BgL_czd2namezd2_1123 =
																										BgL_czd2namezd2_3380;
																									BgL_protoz00_1122 =
																										BgL_protoz00_3379;
																									BgL_lzd2namezd2_1121 =
																										BgL_lzd2namezd2_3378;
																									BgL_typez00_1120 =
																										BgL_typez00_3377;
																									goto BgL_tagzd2382zd2_1124;
																								}
																							}
																						else
																							{	/* Module/foreign.scm 115 */
																								goto BgL_tagzd2384zd2_1129;
																							}
																					}
																				else
																					{	/* Module/foreign.scm 115 */
																						obj_t BgL_cdrzd21017zd2_1255;

																						BgL_cdrzd21017zd2_1255 =
																							CDR(
																							((obj_t) BgL_cdrzd2973zd2_1241));
																						if (NULLP(CDR(
																									((obj_t)
																										BgL_cdrzd21017zd2_1255))))
																							{	/* Module/foreign.scm 115 */
																								obj_t BgL_arg1595z00_1258;
																								obj_t BgL_arg1597z00_1259;
																								obj_t BgL_arg1598z00_1260;

																								BgL_arg1595z00_1258 =
																									CAR(
																									((obj_t) BgL_foreignz00_29));
																								BgL_arg1597z00_1259 =
																									CAR(
																									((obj_t)
																										BgL_cdrzd2973zd2_1241));
																								BgL_arg1598z00_1260 =
																									CAR(((obj_t)
																										BgL_cdrzd21017zd2_1255));
																								{
																									obj_t BgL_czd2namezd2_3395;
																									obj_t BgL_lzd2namezd2_3394;
																									obj_t BgL_typez00_3393;

																									BgL_typez00_3393 =
																										BgL_arg1595z00_1258;
																									BgL_lzd2namezd2_3394 =
																										BgL_arg1597z00_1259;
																									BgL_czd2namezd2_3395 =
																										BgL_arg1598z00_1260;
																									BgL_czd2namezd2_1127 =
																										BgL_czd2namezd2_3395;
																									BgL_lzd2namezd2_1126 =
																										BgL_lzd2namezd2_3394;
																									BgL_typez00_1125 =
																										BgL_typez00_3393;
																									goto BgL_tagzd2383zd2_1128;
																								}
																							}
																						else
																							{	/* Module/foreign.scm 115 */
																								goto BgL_tagzd2384zd2_1129;
																							}
																					}
																			}
																		else
																			{	/* Module/foreign.scm 115 */
																				goto BgL_tagzd2384zd2_1129;
																			}
																	}
																else
																	{	/* Module/foreign.scm 115 */
																		goto BgL_tagzd2384zd2_1129;
																	}
															}
													}
											}
									}
							}
					}
				else
					{	/* Module/foreign.scm 115 */
						goto BgL_tagzd2384zd2_1129;
					}
			}
		}

	}



/* extern-parser */
	obj_t BGl_externzd2parserzd2zzmodule_foreignz00(obj_t BgL_externz00_31,
		bool_t BgL_exportpz00_32)
	{
		{	/* Module/foreign.scm 166 */
			{
				obj_t BgL_idz00_1318;
				obj_t BgL_czd2namezd2_1319;
				obj_t BgL_idz00_1314;
				obj_t BgL_protoz00_1315;
				obj_t BgL_cnz00_1316;
				obj_t BgL_idz00_1310;
				obj_t BgL_czd2namezd2_1311;
				obj_t BgL_idz00_1306;
				obj_t BgL_protoz00_1307;
				obj_t BgL_cnz00_1308;

				if (PAIRP(BgL_externz00_31))
					{	/* Module/foreign.scm 168 */
						if ((CAR(((obj_t) BgL_externz00_31)) == CNST_TABLE_REF(5L)))
							{	/* Module/foreign.scm 168 */
								return
									BGl_parsezd2czd2externzd2typezd2zzmodule_foreignz00
									(BgL_externz00_31);
							}
						else
							{	/* Module/foreign.scm 168 */
								obj_t BgL_carzd21120zd2_1326;

								BgL_carzd21120zd2_1326 = CAR(((obj_t) BgL_externz00_31));
								if ((BgL_carzd21120zd2_1326 == CNST_TABLE_REF(6L)))
									{	/* Module/foreign.scm 168 */
										BGL_TAIL return
											BGl_foreignzd2parserzd2zzmodule_foreignz00
											(BgL_externz00_31, BgL_exportpz00_32);
									}
								else
									{	/* Module/foreign.scm 168 */
										if ((BgL_carzd21120zd2_1326 == CNST_TABLE_REF(4L)))
											{	/* Module/foreign.scm 168 */
												BGL_TAIL return
													BGl_foreignzd2parserzd2zzmodule_foreignz00
													(BgL_externz00_31, BgL_exportpz00_32);
											}
										else
											{	/* Module/foreign.scm 168 */
												obj_t BgL_cdrzd21135zd2_1327;

												BgL_cdrzd21135zd2_1327 =
													CDR(((obj_t) BgL_externz00_31));
												if ((BgL_carzd21120zd2_1326 == CNST_TABLE_REF(7L)))
													{	/* Module/foreign.scm 168 */
														if (PAIRP(BgL_cdrzd21135zd2_1327))
															{	/* Module/foreign.scm 168 */
																obj_t BgL_carzd21139zd2_1331;
																obj_t BgL_cdrzd21140zd2_1332;

																BgL_carzd21139zd2_1331 =
																	CAR(BgL_cdrzd21135zd2_1327);
																BgL_cdrzd21140zd2_1332 =
																	CDR(BgL_cdrzd21135zd2_1327);
																if (SYMBOLP(BgL_carzd21139zd2_1331))
																	{	/* Module/foreign.scm 168 */
																		if (PAIRP(BgL_cdrzd21140zd2_1332))
																			{	/* Module/foreign.scm 168 */
																				obj_t BgL_cdrzd21147zd2_1335;

																				BgL_cdrzd21147zd2_1335 =
																					CDR(BgL_cdrzd21140zd2_1332);
																				if (PAIRP(BgL_cdrzd21147zd2_1335))
																					{	/* Module/foreign.scm 168 */
																						obj_t BgL_carzd21150zd2_1337;

																						BgL_carzd21150zd2_1337 =
																							CAR(BgL_cdrzd21147zd2_1335);
																						if (STRINGP(BgL_carzd21150zd2_1337))
																							{	/* Module/foreign.scm 168 */
																								if (NULLP(CDR
																										(BgL_cdrzd21147zd2_1335)))
																									{	/* Module/foreign.scm 168 */
																										BgL_idz00_1306 =
																											BgL_carzd21139zd2_1331;
																										BgL_protoz00_1307 =
																											CAR
																											(BgL_cdrzd21140zd2_1332);
																										BgL_cnz00_1308 =
																											BgL_carzd21150zd2_1337;
																									BgL_tagzd21103zd2_1309:
																										{	/* Module/foreign.scm 177 */
																											obj_t BgL_pidz00_1470;

																											BgL_pidz00_1470 =
																												BGl_parsezd2idzd2zzast_identz00
																												(BgL_idz00_1306,
																												BGl_findzd2locationzd2zztools_locationz00
																												(BgL_externz00_31));
																											{	/* Module/foreign.scm 177 */
																												obj_t BgL_lnz00_1471;

																												BgL_lnz00_1471 =
																													CAR(BgL_pidz00_1470);
																												{	/* Module/foreign.scm 178 */
																													obj_t
																														BgL_typez00_1472;
																													{	/* Module/foreign.scm 179 */
																														obj_t
																															BgL_arg1831z00_1481;
																														BgL_arg1831z00_1481
																															=
																															BGl_defaultzd2czd2typez00zzmodule_foreignz00
																															(CDR
																															(BgL_pidz00_1470),
																															BgL_externz00_31);
																														BgL_typez00_1472 =
																															(((BgL_typez00_bglt) COBJECT(((BgL_typez00_bglt) BgL_arg1831z00_1481)))->BgL_idz00);
																													}
																													{	/* Module/foreign.scm 179 */

																														{	/* Module/foreign.scm 180 */
																															bool_t
																																BgL_test2446z00_3443;
																															{	/* Module/foreign.scm 180 */
																																obj_t
																																	BgL_xz00_2937;
																																BgL_xz00_2937 =
																																	BGl_checkzd2idzd2zzast_identz00
																																	(BgL_pidz00_1470,
																																	BgL_externz00_31);
																																((bool_t) 1);
																															}
																															if (BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00(BgL_protoz00_1307))
																																{	/* Module/foreign.scm 181 */
																																	BgL_test2446z00_3443
																																		=
																																		((bool_t)
																																		0);
																																}
																															else
																																{	/* Module/foreign.scm 181 */
																																	BgL_test2446z00_3443
																																		=
																																		((bool_t)
																																		1);
																																}
																															if (BgL_test2446z00_3443)
																																{	/* Module/foreign.scm 182 */
																																	obj_t
																																		BgL_list1829z00_1476;
																																	BgL_list1829z00_1476
																																		=
																																		MAKE_YOUNG_PAIR
																																		(BNIL,
																																		BNIL);
																																	return
																																		BGl_userzd2errorzd2zztools_errorz00
																																		(BGl_string2325z00zzmodule_foreignz00,
																																		BGl_string2333z00zzmodule_foreignz00,
																																		BgL_externz00_31,
																																		BgL_list1829z00_1476);
																																}
																															else
																																{	/* Module/foreign.scm 183 */
																																	bool_t
																																		BgL_infixzf3zf3_1477;
																																	BgL_infixzf3zf3_1477
																																		=
																																		(CAR((
																																				(obj_t)
																																				BgL_externz00_31))
																																		==
																																		CNST_TABLE_REF
																																		(3L));
																																	return (
																																		(obj_t)
																																		BGl_declarezd2globalzd2cfunz12z12zzast_glozd2declzd2
																																		(BgL_lnz00_1471,
																																			BFALSE,
																																			CNST_TABLE_REF
																																			(0L),
																																			BgL_cnz00_1308,
																																			BgL_typez00_1472,
																																			BgL_protoz00_1307,
																																			BgL_infixzf3zf3_1477,
																																			((bool_t)
																																				1),
																																			BgL_externz00_31,
																																			BFALSE));
																																}
																														}
																													}
																												}
																											}
																										}
																									}
																								else
																									{	/* Module/foreign.scm 168 */
																									BgL_tagzd21105zd2_1313:
																										{	/* Module/foreign.scm 195 */
																											obj_t
																												BgL_list1839z00_1492;
																											BgL_list1839z00_1492 =
																												MAKE_YOUNG_PAIR(BNIL,
																												BNIL);
																											return
																												BGl_userzd2errorzd2zztools_errorz00
																												(BGl_string2325z00zzmodule_foreignz00,
																												BGl_string2333z00zzmodule_foreignz00,
																												BgL_externz00_31,
																												BgL_list1839z00_1492);
																										}
																									}
																							}
																						else
																							{	/* Module/foreign.scm 168 */
																								goto BgL_tagzd21105zd2_1313;
																							}
																					}
																				else
																					{	/* Module/foreign.scm 168 */
																						obj_t BgL_cdrzd21197zd2_1343;

																						BgL_cdrzd21197zd2_1343 =
																							CDR(((obj_t) BgL_externz00_31));
																						{	/* Module/foreign.scm 168 */
																							obj_t BgL_carzd21202zd2_1344;
																							obj_t BgL_cdrzd21203zd2_1345;

																							BgL_carzd21202zd2_1344 =
																								CAR(
																								((obj_t)
																									BgL_cdrzd21197zd2_1343));
																							BgL_cdrzd21203zd2_1345 =
																								CDR(((obj_t)
																									BgL_cdrzd21197zd2_1343));
																							if (SYMBOLP
																								(BgL_carzd21202zd2_1344))
																								{	/* Module/foreign.scm 168 */
																									obj_t BgL_carzd21211zd2_1347;

																									BgL_carzd21211zd2_1347 =
																										CAR(
																										((obj_t)
																											BgL_cdrzd21203zd2_1345));
																									if (STRINGP
																										(BgL_carzd21211zd2_1347))
																										{	/* Module/foreign.scm 168 */
																											if (NULLP(CDR(
																														((obj_t)
																															BgL_cdrzd21203zd2_1345))))
																												{	/* Module/foreign.scm 168 */
																													BgL_idz00_1310 =
																														BgL_carzd21202zd2_1344;
																													BgL_czd2namezd2_1311 =
																														BgL_carzd21211zd2_1347;
																												BgL_tagzd21104zd2_1312:
																													{	/* Module/foreign.scm 188 */
																														obj_t
																															BgL_pidz00_1484;
																														BgL_pidz00_1484 =
																															BGl_parsezd2idzd2zzast_identz00
																															(BgL_idz00_1310,
																															BGl_findzd2locationzd2zztools_locationz00
																															(BgL_externz00_31));
																														{	/* Module/foreign.scm 188 */
																															obj_t
																																BgL_lzd2namezd2_1485;
																															BgL_lzd2namezd2_1485
																																=
																																CAR
																																(BgL_pidz00_1484);
																															{	/* Module/foreign.scm 189 */
																																obj_t
																																	BgL_typez00_1486;
																																{	/* Module/foreign.scm 190 */
																																	obj_t
																																		BgL_arg1836z00_1489;
																																	BgL_arg1836z00_1489
																																		=
																																		BGl_defaultzd2czd2typez00zzmodule_foreignz00
																																		(CDR
																																		(BgL_pidz00_1484),
																																		BgL_externz00_31);
																																	BgL_typez00_1486
																																		=
																																		(((BgL_typez00_bglt) COBJECT(((BgL_typez00_bglt) BgL_arg1836z00_1489)))->BgL_idz00);
																																}
																																{	/* Module/foreign.scm 190 */

																																	{	/* Module/foreign.scm 191 */
																																		obj_t
																																			BgL_xz00_2938;
																																		BgL_xz00_2938
																																			=
																																			BGl_checkzd2idzd2zzast_identz00
																																			(BgL_pidz00_1484,
																																			BgL_externz00_31);
																																		((bool_t)
																																			1);
																																	}
																																	return
																																		((obj_t)
																																		BGl_declarezd2globalzd2cvarz12z12zzast_glozd2declzd2
																																		(BgL_lzd2namezd2_1485,
																																			BFALSE,
																																			BgL_czd2namezd2_1311,
																																			BgL_typez00_1486,
																																			((bool_t)
																																				1),
																																			BgL_externz00_31,
																																			BFALSE));
																																}
																															}
																														}
																													}
																												}
																											else
																												{	/* Module/foreign.scm 168 */
																													goto
																														BgL_tagzd21105zd2_1313;
																												}
																										}
																									else
																										{	/* Module/foreign.scm 168 */
																											goto
																												BgL_tagzd21105zd2_1313;
																										}
																								}
																							else
																								{	/* Module/foreign.scm 168 */
																									goto BgL_tagzd21105zd2_1313;
																								}
																						}
																					}
																			}
																		else
																			{	/* Module/foreign.scm 168 */
																				goto BgL_tagzd21105zd2_1313;
																			}
																	}
																else
																	{	/* Module/foreign.scm 168 */
																		obj_t BgL_cdrzd21254zd2_1352;

																		BgL_cdrzd21254zd2_1352 =
																			CDR(((obj_t) BgL_externz00_31));
																		{	/* Module/foreign.scm 168 */
																			obj_t BgL_carzd21257zd2_1353;
																			obj_t BgL_cdrzd21258zd2_1354;

																			BgL_carzd21257zd2_1353 =
																				CAR(((obj_t) BgL_cdrzd21254zd2_1352));
																			BgL_cdrzd21258zd2_1354 =
																				CDR(((obj_t) BgL_cdrzd21254zd2_1352));
																			if (SYMBOLP(BgL_carzd21257zd2_1353))
																				{	/* Module/foreign.scm 168 */
																					if (PAIRP(BgL_cdrzd21258zd2_1354))
																						{	/* Module/foreign.scm 168 */
																							obj_t BgL_carzd21263zd2_1357;

																							BgL_carzd21263zd2_1357 =
																								CAR(BgL_cdrzd21258zd2_1354);
																							if (STRINGP
																								(BgL_carzd21263zd2_1357))
																								{	/* Module/foreign.scm 168 */
																									if (NULLP(CDR
																											(BgL_cdrzd21258zd2_1354)))
																										{
																											obj_t
																												BgL_czd2namezd2_3502;
																											obj_t BgL_idz00_3501;

																											BgL_idz00_3501 =
																												BgL_carzd21257zd2_1353;
																											BgL_czd2namezd2_3502 =
																												BgL_carzd21263zd2_1357;
																											BgL_czd2namezd2_1311 =
																												BgL_czd2namezd2_3502;
																											BgL_idz00_1310 =
																												BgL_idz00_3501;
																											goto
																												BgL_tagzd21104zd2_1312;
																										}
																									else
																										{	/* Module/foreign.scm 168 */
																											goto
																												BgL_tagzd21105zd2_1313;
																										}
																								}
																							else
																								{	/* Module/foreign.scm 168 */
																									goto BgL_tagzd21105zd2_1313;
																								}
																						}
																					else
																						{	/* Module/foreign.scm 168 */
																							goto BgL_tagzd21105zd2_1313;
																						}
																				}
																			else
																				{	/* Module/foreign.scm 168 */
																					goto BgL_tagzd21105zd2_1313;
																				}
																		}
																	}
															}
														else
															{	/* Module/foreign.scm 168 */
																goto BgL_tagzd21105zd2_1313;
															}
													}
												else
													{	/* Module/foreign.scm 168 */
														obj_t BgL_cdrzd21301zd2_1362;

														BgL_cdrzd21301zd2_1362 =
															CDR(((obj_t) BgL_externz00_31));
														if (
															(CAR(
																	((obj_t) BgL_externz00_31)) ==
																CNST_TABLE_REF(3L)))
															{	/* Module/foreign.scm 168 */
																if (PAIRP(BgL_cdrzd21301zd2_1362))
																	{	/* Module/foreign.scm 168 */
																		obj_t BgL_cdrzd21306zd2_1366;

																		BgL_cdrzd21306zd2_1366 =
																			CDR(BgL_cdrzd21301zd2_1362);
																		if (
																			(CAR(BgL_cdrzd21301zd2_1362) ==
																				CNST_TABLE_REF(7L)))
																			{	/* Module/foreign.scm 168 */
																				if (PAIRP(BgL_cdrzd21306zd2_1366))
																					{	/* Module/foreign.scm 168 */
																						obj_t BgL_carzd21310zd2_1370;
																						obj_t BgL_cdrzd21311zd2_1371;

																						BgL_carzd21310zd2_1370 =
																							CAR(BgL_cdrzd21306zd2_1366);
																						BgL_cdrzd21311zd2_1371 =
																							CDR(BgL_cdrzd21306zd2_1366);
																						if (SYMBOLP(BgL_carzd21310zd2_1370))
																							{	/* Module/foreign.scm 168 */
																								if (PAIRP
																									(BgL_cdrzd21311zd2_1371))
																									{	/* Module/foreign.scm 168 */
																										obj_t
																											BgL_cdrzd21318zd2_1374;
																										BgL_cdrzd21318zd2_1374 =
																											CDR
																											(BgL_cdrzd21311zd2_1371);
																										if (PAIRP
																											(BgL_cdrzd21318zd2_1374))
																											{	/* Module/foreign.scm 168 */
																												obj_t
																													BgL_carzd21321zd2_1376;
																												BgL_carzd21321zd2_1376 =
																													CAR
																													(BgL_cdrzd21318zd2_1374);
																												if (STRINGP
																													(BgL_carzd21321zd2_1376))
																													{	/* Module/foreign.scm 168 */
																														if (NULLP(CDR
																																(BgL_cdrzd21318zd2_1374)))
																															{
																																obj_t
																																	BgL_cnz00_3537;
																																obj_t
																																	BgL_protoz00_3535;
																																obj_t
																																	BgL_idz00_3534;
																																BgL_idz00_3534 =
																																	BgL_carzd21310zd2_1370;
																																BgL_protoz00_3535
																																	=
																																	CAR
																																	(BgL_cdrzd21311zd2_1371);
																																BgL_cnz00_3537 =
																																	BgL_carzd21321zd2_1376;
																																BgL_cnz00_1308 =
																																	BgL_cnz00_3537;
																																BgL_protoz00_1307
																																	=
																																	BgL_protoz00_3535;
																																BgL_idz00_1306 =
																																	BgL_idz00_3534;
																																goto
																																	BgL_tagzd21103zd2_1309;
																															}
																														else
																															{	/* Module/foreign.scm 168 */
																															BgL_tagzd21108zd2_1321:
																																{	/* Module/foreign.scm 215 */
																																	obj_t
																																		BgL_list1853z00_1513;
																																	BgL_list1853z00_1513
																																		=
																																		MAKE_YOUNG_PAIR
																																		(BNIL,
																																		BNIL);
																																	return
																																		BGl_userzd2errorzd2zztools_errorz00
																																		(BGl_string2325z00zzmodule_foreignz00,
																																		BGl_string2333z00zzmodule_foreignz00,
																																		BgL_externz00_31,
																																		BgL_list1853z00_1513);
																																}
																															}
																													}
																												else
																													{	/* Module/foreign.scm 168 */
																														goto
																															BgL_tagzd21108zd2_1321;
																													}
																											}
																										else
																											{	/* Module/foreign.scm 168 */
																												goto
																													BgL_tagzd21108zd2_1321;
																											}
																									}
																								else
																									{	/* Module/foreign.scm 168 */
																										obj_t
																											BgL_carzd21410zd2_1382;
																										BgL_carzd21410zd2_1382 =
																											CAR(((obj_t)
																												BgL_externz00_31));
																										if (SYMBOLP
																											(BgL_carzd21410zd2_1382))
																											{	/* Module/foreign.scm 168 */
																												obj_t
																													BgL_cdrzd21419zd2_1385;
																												BgL_cdrzd21419zd2_1385 =
																													CDR(((obj_t)
																														BgL_cdrzd21301zd2_1362));
																												{	/* Module/foreign.scm 168 */
																													obj_t
																														BgL_carzd21423zd2_1386;
																													BgL_carzd21423zd2_1386
																														=
																														CAR(((obj_t)
																															BgL_cdrzd21419zd2_1385));
																													if (STRINGP
																														(BgL_carzd21423zd2_1386))
																														{	/* Module/foreign.scm 168 */
																															if (NULLP(CDR(
																																		((obj_t)
																																			BgL_cdrzd21419zd2_1385))))
																																{	/* Module/foreign.scm 168 */
																																	obj_t
																																		BgL_arg1717z00_1390;
																																	BgL_arg1717z00_1390
																																		=
																																		CAR(((obj_t)
																																			BgL_cdrzd21301zd2_1362));
																																	BgL_idz00_1314
																																		=
																																		BgL_carzd21410zd2_1382;
																																	BgL_protoz00_1315
																																		=
																																		BgL_arg1717z00_1390;
																																	BgL_cnz00_1316
																																		=
																																		BgL_carzd21423zd2_1386;
																																BgL_tagzd21106zd2_1317:
																																	{	/* Module/foreign.scm 198 */
																																		obj_t
																																			BgL_pidz00_1493;
																																		BgL_pidz00_1493
																																			=
																																			BGl_parsezd2idzd2zzast_identz00
																																			(BgL_idz00_1314,
																																			BGl_findzd2locationzd2zztools_locationz00
																																			(BgL_externz00_31));
																																		{	/* Module/foreign.scm 198 */
																																			obj_t
																																				BgL_lnz00_1494;
																																			BgL_lnz00_1494
																																				=
																																				CAR
																																				(BgL_pidz00_1493);
																																			{	/* Module/foreign.scm 199 */
																																				obj_t
																																					BgL_typez00_1495;
																																				{	/* Module/foreign.scm 200 */
																																					obj_t
																																						BgL_arg1844z00_1502;
																																					BgL_arg1844z00_1502
																																						=
																																						BGl_defaultzd2czd2typez00zzmodule_foreignz00
																																						(CDR
																																						(BgL_pidz00_1493),
																																						BgL_externz00_31);
																																					BgL_typez00_1495
																																						=
																																						(((BgL_typez00_bglt) COBJECT(((BgL_typez00_bglt) BgL_arg1844z00_1502)))->BgL_idz00);
																																				}
																																				{	/* Module/foreign.scm 200 */

																																					{	/* Module/foreign.scm 201 */
																																						bool_t
																																							BgL_test2467z00_3563;
																																						{	/* Module/foreign.scm 201 */
																																							obj_t
																																								BgL_xz00_2939;
																																							BgL_xz00_2939
																																								=
																																								BGl_checkzd2idzd2zzast_identz00
																																								(BgL_pidz00_1493,
																																								BgL_externz00_31);
																																							((bool_t) 1);
																																						}
																																						if (BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00(BgL_protoz00_1315))
																																							{	/* Module/foreign.scm 202 */
																																								BgL_test2467z00_3563
																																									=
																																									(
																																									(bool_t)
																																									0);
																																							}
																																						else
																																							{	/* Module/foreign.scm 202 */
																																								BgL_test2467z00_3563
																																									=
																																									(
																																									(bool_t)
																																									1);
																																							}
																																						if (BgL_test2467z00_3563)
																																							{	/* Module/foreign.scm 203 */
																																								obj_t
																																									BgL_list1843z00_1499;
																																								BgL_list1843z00_1499
																																									=
																																									MAKE_YOUNG_PAIR
																																									(BNIL,
																																									BNIL);
																																								return
																																									BGl_userzd2errorzd2zztools_errorz00
																																									(BGl_string2325z00zzmodule_foreignz00,
																																									BGl_string2333z00zzmodule_foreignz00,
																																									BgL_externz00_31,
																																									BgL_list1843z00_1499);
																																							}
																																						else
																																							{	/* Module/foreign.scm 201 */
																																								return
																																									(
																																									(obj_t)
																																									BGl_declarezd2globalzd2cfunz12z12zzast_glozd2declzd2
																																									(BgL_lnz00_1494,
																																										BFALSE,
																																										CNST_TABLE_REF
																																										(0L),
																																										BgL_cnz00_1316,
																																										BgL_typez00_1495,
																																										BgL_protoz00_1315,
																																										((bool_t) 0), ((bool_t) 0), BgL_externz00_31, BFALSE));
																																							}
																																					}
																																				}
																																			}
																																		}
																																	}
																																}
																															else
																																{	/* Module/foreign.scm 168 */
																																	goto
																																		BgL_tagzd21108zd2_1321;
																																}
																														}
																													else
																														{	/* Module/foreign.scm 168 */
																															goto
																																BgL_tagzd21108zd2_1321;
																														}
																												}
																											}
																										else
																											{	/* Module/foreign.scm 168 */
																												goto
																													BgL_tagzd21108zd2_1321;
																											}
																									}
																							}
																						else
																							{	/* Module/foreign.scm 168 */
																								obj_t BgL_carzd21459zd2_1392;

																								BgL_carzd21459zd2_1392 =
																									CAR(
																									((obj_t) BgL_externz00_31));
																								if (SYMBOLP
																									(BgL_carzd21459zd2_1392))
																									{	/* Module/foreign.scm 168 */
																										obj_t
																											BgL_cdrzd21467zd2_1395;
																										BgL_cdrzd21467zd2_1395 =
																											CDR(((obj_t)
																												BgL_cdrzd21301zd2_1362));
																										{	/* Module/foreign.scm 168 */
																											obj_t
																												BgL_carzd21470zd2_1396;
																											BgL_carzd21470zd2_1396 =
																												CAR(((obj_t)
																													BgL_cdrzd21467zd2_1395));
																											if (STRINGP
																												(BgL_carzd21470zd2_1396))
																												{	/* Module/foreign.scm 168 */
																													if (NULLP(CDR(
																																((obj_t)
																																	BgL_cdrzd21467zd2_1395))))
																														{	/* Module/foreign.scm 168 */
																															obj_t
																																BgL_arg1731z00_1400;
																															BgL_arg1731z00_1400
																																=
																																CAR(((obj_t)
																																	BgL_cdrzd21301zd2_1362));
																															{
																																obj_t
																																	BgL_cnz00_3590;
																																obj_t
																																	BgL_protoz00_3589;
																																obj_t
																																	BgL_idz00_3588;
																																BgL_idz00_3588 =
																																	BgL_carzd21459zd2_1392;
																																BgL_protoz00_3589
																																	=
																																	BgL_arg1731z00_1400;
																																BgL_cnz00_3590 =
																																	BgL_carzd21470zd2_1396;
																																BgL_cnz00_1316 =
																																	BgL_cnz00_3590;
																																BgL_protoz00_1315
																																	=
																																	BgL_protoz00_3589;
																																BgL_idz00_1314 =
																																	BgL_idz00_3588;
																																goto
																																	BgL_tagzd21106zd2_1317;
																															}
																														}
																													else
																														{	/* Module/foreign.scm 168 */
																															goto
																																BgL_tagzd21108zd2_1321;
																														}
																												}
																											else
																												{	/* Module/foreign.scm 168 */
																													goto
																														BgL_tagzd21108zd2_1321;
																												}
																										}
																									}
																								else
																									{	/* Module/foreign.scm 168 */
																										goto BgL_tagzd21108zd2_1321;
																									}
																							}
																					}
																				else
																					{	/* Module/foreign.scm 168 */
																						obj_t BgL_carzd21508zd2_1402;

																						BgL_carzd21508zd2_1402 =
																							CAR(((obj_t) BgL_externz00_31));
																						if (SYMBOLP(BgL_carzd21508zd2_1402))
																							{	/* Module/foreign.scm 168 */
																								obj_t BgL_carzd21514zd2_1405;

																								BgL_carzd21514zd2_1405 =
																									CAR(
																									((obj_t)
																										BgL_cdrzd21301zd2_1362));
																								if (STRINGP
																									(BgL_carzd21514zd2_1405))
																									{	/* Module/foreign.scm 168 */
																										if (NULLP(CDR(
																													((obj_t)
																														BgL_cdrzd21301zd2_1362))))
																											{	/* Module/foreign.scm 168 */
																												BgL_idz00_1318 =
																													BgL_carzd21508zd2_1402;
																												BgL_czd2namezd2_1319 =
																													BgL_carzd21514zd2_1405;
																											BgL_tagzd21107zd2_1320:
																												{	/* Module/foreign.scm 208 */
																													obj_t BgL_pidz00_1505;

																													BgL_pidz00_1505 =
																														BGl_parsezd2idzd2zzast_identz00
																														(BgL_idz00_1318,
																														BGl_findzd2locationzd2zztools_locationz00
																														(BgL_externz00_31));
																													{	/* Module/foreign.scm 208 */
																														obj_t
																															BgL_lzd2namezd2_1506;
																														BgL_lzd2namezd2_1506
																															=
																															CAR
																															(BgL_pidz00_1505);
																														{	/* Module/foreign.scm 209 */
																															obj_t
																																BgL_typez00_1507;
																															{	/* Module/foreign.scm 210 */
																																obj_t
																																	BgL_arg1850z00_1510;
																																BgL_arg1850z00_1510
																																	=
																																	BGl_defaultzd2czd2typez00zzmodule_foreignz00
																																	(CDR
																																	(BgL_pidz00_1505),
																																	BgL_externz00_31);
																																BgL_typez00_1507
																																	=
																																	(((BgL_typez00_bglt) COBJECT(((BgL_typez00_bglt) BgL_arg1850z00_1510)))->BgL_idz00);
																															}
																															{	/* Module/foreign.scm 210 */

																																{	/* Module/foreign.scm 211 */
																																	obj_t
																																		BgL_xz00_2940;
																																	BgL_xz00_2940
																																		=
																																		BGl_checkzd2idzd2zzast_identz00
																																		(BgL_pidz00_1505,
																																		BgL_externz00_31);
																																	((bool_t) 1);
																																}
																																return
																																	((obj_t)
																																	BGl_declarezd2globalzd2cvarz12z12zzast_glozd2declzd2
																																	(BgL_lzd2namezd2_1506,
																																		BFALSE,
																																		BgL_czd2namezd2_1319,
																																		BgL_typez00_1507,
																																		((bool_t)
																																			0),
																																		BgL_externz00_31,
																																		BFALSE));
																															}
																														}
																													}
																												}
																											}
																										else
																											{	/* Module/foreign.scm 168 */
																												goto
																													BgL_tagzd21108zd2_1321;
																											}
																									}
																								else
																									{	/* Module/foreign.scm 168 */
																										goto BgL_tagzd21108zd2_1321;
																									}
																							}
																						else
																							{	/* Module/foreign.scm 168 */
																								goto BgL_tagzd21108zd2_1321;
																							}
																					}
																			}
																		else
																			{	/* Module/foreign.scm 168 */
																				obj_t BgL_carzd21536zd2_1410;

																				BgL_carzd21536zd2_1410 =
																					CAR(((obj_t) BgL_externz00_31));
																				if (SYMBOLP(BgL_carzd21536zd2_1410))
																					{	/* Module/foreign.scm 168 */
																						obj_t BgL_cdrzd21544zd2_1413;

																						BgL_cdrzd21544zd2_1413 =
																							CDR(
																							((obj_t) BgL_cdrzd21301zd2_1362));
																						if (PAIRP(BgL_cdrzd21544zd2_1413))
																							{	/* Module/foreign.scm 168 */
																								obj_t BgL_carzd21547zd2_1415;

																								BgL_carzd21547zd2_1415 =
																									CAR(BgL_cdrzd21544zd2_1413);
																								if (STRINGP
																									(BgL_carzd21547zd2_1415))
																									{	/* Module/foreign.scm 168 */
																										if (NULLP(CDR
																												(BgL_cdrzd21544zd2_1413)))
																											{	/* Module/foreign.scm 168 */
																												obj_t
																													BgL_arg1747z00_1419;
																												BgL_arg1747z00_1419 =
																													CAR(((obj_t)
																														BgL_cdrzd21301zd2_1362));
																												{
																													obj_t BgL_cnz00_3631;
																													obj_t
																														BgL_protoz00_3630;
																													obj_t BgL_idz00_3629;

																													BgL_idz00_3629 =
																														BgL_carzd21536zd2_1410;
																													BgL_protoz00_3630 =
																														BgL_arg1747z00_1419;
																													BgL_cnz00_3631 =
																														BgL_carzd21547zd2_1415;
																													BgL_cnz00_1316 =
																														BgL_cnz00_3631;
																													BgL_protoz00_1315 =
																														BgL_protoz00_3630;
																													BgL_idz00_1314 =
																														BgL_idz00_3629;
																													goto
																														BgL_tagzd21106zd2_1317;
																												}
																											}
																										else
																											{	/* Module/foreign.scm 168 */
																												goto
																													BgL_tagzd21108zd2_1321;
																											}
																									}
																								else
																									{	/* Module/foreign.scm 168 */
																										goto BgL_tagzd21108zd2_1321;
																									}
																							}
																						else
																							{	/* Module/foreign.scm 168 */
																								obj_t BgL_cdrzd21568zd2_1422;

																								BgL_cdrzd21568zd2_1422 =
																									CDR(
																									((obj_t) BgL_externz00_31));
																								{	/* Module/foreign.scm 168 */
																									obj_t BgL_carzd21574zd2_1424;

																									BgL_carzd21574zd2_1424 =
																										CAR(
																										((obj_t)
																											BgL_cdrzd21568zd2_1422));
																									if (STRINGP
																										(BgL_carzd21574zd2_1424))
																										{	/* Module/foreign.scm 168 */
																											if (NULLP(CDR(
																														((obj_t)
																															BgL_cdrzd21568zd2_1422))))
																												{
																													obj_t
																														BgL_czd2namezd2_3643;
																													obj_t BgL_idz00_3642;

																													BgL_idz00_3642 =
																														BgL_carzd21536zd2_1410;
																													BgL_czd2namezd2_3643 =
																														BgL_carzd21574zd2_1424;
																													BgL_czd2namezd2_1319 =
																														BgL_czd2namezd2_3643;
																													BgL_idz00_1318 =
																														BgL_idz00_3642;
																													goto
																														BgL_tagzd21107zd2_1320;
																												}
																											else
																												{	/* Module/foreign.scm 168 */
																													goto
																														BgL_tagzd21108zd2_1321;
																												}
																										}
																									else
																										{	/* Module/foreign.scm 168 */
																											goto
																												BgL_tagzd21108zd2_1321;
																										}
																								}
																							}
																					}
																				else
																					{	/* Module/foreign.scm 168 */
																						goto BgL_tagzd21108zd2_1321;
																					}
																			}
																	}
																else
																	{	/* Module/foreign.scm 168 */
																		goto BgL_tagzd21108zd2_1321;
																	}
															}
														else
															{	/* Module/foreign.scm 168 */
																obj_t BgL_carzd21634zd2_1438;

																BgL_carzd21634zd2_1438 =
																	CAR(((obj_t) BgL_externz00_31));
																if (SYMBOLP(BgL_carzd21634zd2_1438))
																	{	/* Module/foreign.scm 168 */
																		if (PAIRP(BgL_cdrzd21301zd2_1362))
																			{	/* Module/foreign.scm 168 */
																				obj_t BgL_cdrzd21642zd2_1442;

																				BgL_cdrzd21642zd2_1442 =
																					CDR(BgL_cdrzd21301zd2_1362);
																				if (PAIRP(BgL_cdrzd21642zd2_1442))
																					{	/* Module/foreign.scm 168 */
																						obj_t BgL_carzd21645zd2_1444;

																						BgL_carzd21645zd2_1444 =
																							CAR(BgL_cdrzd21642zd2_1442);
																						if (STRINGP(BgL_carzd21645zd2_1444))
																							{	/* Module/foreign.scm 168 */
																								if (NULLP(CDR
																										(BgL_cdrzd21642zd2_1442)))
																									{
																										obj_t BgL_cnz00_3662;
																										obj_t BgL_protoz00_3660;
																										obj_t BgL_idz00_3659;

																										BgL_idz00_3659 =
																											BgL_carzd21634zd2_1438;
																										BgL_protoz00_3660 =
																											CAR
																											(BgL_cdrzd21301zd2_1362);
																										BgL_cnz00_3662 =
																											BgL_carzd21645zd2_1444;
																										BgL_cnz00_1316 =
																											BgL_cnz00_3662;
																										BgL_protoz00_1315 =
																											BgL_protoz00_3660;
																										BgL_idz00_1314 =
																											BgL_idz00_3659;
																										goto BgL_tagzd21106zd2_1317;
																									}
																								else
																									{	/* Module/foreign.scm 168 */
																										goto BgL_tagzd21108zd2_1321;
																									}
																							}
																						else
																							{	/* Module/foreign.scm 168 */
																								goto BgL_tagzd21108zd2_1321;
																							}
																					}
																				else
																					{	/* Module/foreign.scm 168 */
																						obj_t BgL_cdrzd21669zd2_1451;

																						BgL_cdrzd21669zd2_1451 =
																							CDR(((obj_t) BgL_externz00_31));
																						{	/* Module/foreign.scm 168 */
																							obj_t BgL_carzd21677zd2_1453;

																							BgL_carzd21677zd2_1453 =
																								CAR(
																								((obj_t)
																									BgL_cdrzd21669zd2_1451));
																							if (STRINGP
																								(BgL_carzd21677zd2_1453))
																								{	/* Module/foreign.scm 168 */
																									if (NULLP(CDR(
																												((obj_t)
																													BgL_cdrzd21669zd2_1451))))
																										{
																											obj_t
																												BgL_czd2namezd2_3674;
																											obj_t BgL_idz00_3673;

																											BgL_idz00_3673 =
																												BgL_carzd21634zd2_1438;
																											BgL_czd2namezd2_3674 =
																												BgL_carzd21677zd2_1453;
																											BgL_czd2namezd2_1319 =
																												BgL_czd2namezd2_3674;
																											BgL_idz00_1318 =
																												BgL_idz00_3673;
																											goto
																												BgL_tagzd21107zd2_1320;
																										}
																									else
																										{	/* Module/foreign.scm 168 */
																											goto
																												BgL_tagzd21108zd2_1321;
																										}
																								}
																							else
																								{	/* Module/foreign.scm 168 */
																									goto BgL_tagzd21108zd2_1321;
																								}
																						}
																					}
																			}
																		else
																			{	/* Module/foreign.scm 168 */
																				goto BgL_tagzd21108zd2_1321;
																			}
																	}
																else
																	{	/* Module/foreign.scm 168 */
																		goto BgL_tagzd21108zd2_1321;
																	}
															}
													}
											}
									}
							}
					}
				else
					{	/* Module/foreign.scm 168 */
						goto BgL_tagzd21108zd2_1321;
					}
			}
		}

	}



/* parse-c-foreign-type */
	obj_t BGl_parsezd2czd2foreignzd2typezd2zzmodule_foreignz00(obj_t
		BgL_typez00_33)
	{
		{	/* Module/foreign.scm 220 */
			{
				obj_t BgL_idz00_1517;
				obj_t BgL_tzd2expzd2_1518;
				obj_t BgL_namez00_1519;

				{	/* Module/foreign.scm 221 */
					obj_t BgL_cdrzd21753zd2_1524;

					BgL_cdrzd21753zd2_1524 = CDR(BgL_typez00_33);
					if ((CAR(BgL_typez00_33) == CNST_TABLE_REF(5L)))
						{	/* Module/foreign.scm 221 */
							if (PAIRP(BgL_cdrzd21753zd2_1524))
								{	/* Module/foreign.scm 221 */
									obj_t BgL_carzd21756zd2_1528;
									obj_t BgL_cdrzd21757zd2_1529;

									BgL_carzd21756zd2_1528 = CAR(BgL_cdrzd21753zd2_1524);
									BgL_cdrzd21757zd2_1529 = CDR(BgL_cdrzd21753zd2_1524);
									if (SYMBOLP(BgL_carzd21756zd2_1528))
										{	/* Module/foreign.scm 221 */
											if (PAIRP(BgL_cdrzd21757zd2_1529))
												{	/* Module/foreign.scm 221 */
													obj_t BgL_carzd21762zd2_1532;

													BgL_carzd21762zd2_1532 = CAR(BgL_cdrzd21757zd2_1529);
													if (STRINGP(BgL_carzd21762zd2_1532))
														{	/* Module/foreign.scm 221 */
															if (NULLP(CDR(BgL_cdrzd21757zd2_1529)))
																{	/* Module/foreign.scm 221 */
																	return
																		((obj_t)
																		BGl_declarezd2typez12zc0zztype_envz00
																		(BgL_carzd21756zd2_1528,
																			BgL_carzd21762zd2_1532,
																			CNST_TABLE_REF(9L)));
																}
															else
																{	/* Module/foreign.scm 221 */
																	obj_t BgL_carzd21782zd2_1537;
																	obj_t BgL_cdrzd21783zd2_1538;

																	BgL_carzd21782zd2_1537 =
																		CAR(((obj_t) BgL_cdrzd21753zd2_1524));
																	BgL_cdrzd21783zd2_1538 =
																		CDR(((obj_t) BgL_cdrzd21753zd2_1524));
																	if (SYMBOLP(BgL_carzd21782zd2_1537))
																		{	/* Module/foreign.scm 221 */
																			obj_t BgL_cdrzd21793zd2_1540;

																			BgL_cdrzd21793zd2_1540 =
																				CDR(((obj_t) BgL_cdrzd21783zd2_1538));
																			if (PAIRP(BgL_cdrzd21793zd2_1540))
																				{	/* Module/foreign.scm 221 */
																					obj_t BgL_carzd21797zd2_1542;

																					BgL_carzd21797zd2_1542 =
																						CAR(BgL_cdrzd21793zd2_1540);
																					if (STRINGP(BgL_carzd21797zd2_1542))
																						{	/* Module/foreign.scm 221 */
																							if (NULLP(CDR
																									(BgL_cdrzd21793zd2_1540)))
																								{	/* Module/foreign.scm 221 */
																									obj_t BgL_arg1868z00_1546;

																									BgL_arg1868z00_1546 =
																										CAR(
																										((obj_t)
																											BgL_cdrzd21783zd2_1538));
																									BgL_idz00_1517 =
																										BgL_carzd21782zd2_1537;
																									BgL_tzd2expzd2_1518 =
																										BgL_arg1868z00_1546;
																									BgL_namez00_1519 =
																										BgL_carzd21797zd2_1542;
																								BgL_tagzd21744zd2_1520:
																									if (BGl_checkzd2czd2foreignzd2typezd2expzf3zf3zzmodule_foreignz00(BgL_tzd2expzd2_1518))
																										{	/* Module/foreign.scm 226 */
																											obj_t BgL_ctypez00_1576;
																											obj_t BgL_locz00_1577;

																											BgL_ctypez00_1576 =
																												BGl_declarezd2czd2typez12z12zzforeign_ctypez00
																												(BgL_typez00_33,
																												BgL_idz00_1517,
																												BgL_tzd2expzd2_1518,
																												BgL_namez00_1519);
																											BgL_locz00_1577 =
																												BGl_findzd2locationzd2zztools_locationz00
																												(BgL_typez00_33);
																											{	/* Module/foreign.scm 230 */
																												bool_t
																													BgL_test2499z00_3719;
																												{	/* Module/foreign.scm 230 */
																													obj_t
																														BgL_classz00_2437;
																													BgL_classz00_2437 =
																														BGl_typez00zztype_typez00;
																													if (BGL_OBJECTP
																														(BgL_ctypez00_1576))
																														{	/* Module/foreign.scm 230 */
																															BgL_objectz00_bglt
																																BgL_arg1801z00_2439;
																															BgL_arg1801z00_2439
																																=
																																(BgL_objectz00_bglt)
																																(BgL_ctypez00_1576);
																															if (BGL_CONDEXPAND_ISA_ARCH64())
																																{	/* Module/foreign.scm 230 */
																																	long
																																		BgL_idxz00_2445;
																																	BgL_idxz00_2445
																																		=
																																		BGL_OBJECT_INHERITANCE_NUM
																																		(BgL_arg1801z00_2439);
																																	BgL_test2499z00_3719
																																		=
																																		(VECTOR_REF
																																		(BGl_za2inheritancesza2z00zz__objectz00,
																																			(BgL_idxz00_2445
																																				+
																																				1L)) ==
																																		BgL_classz00_2437);
																																}
																															else
																																{	/* Module/foreign.scm 230 */
																																	bool_t
																																		BgL_res2312z00_2467;
																																	{	/* Module/foreign.scm 230 */
																																		obj_t
																																			BgL_oclassz00_2453;
																																		{	/* Module/foreign.scm 230 */
																																			long
																																				BgL_arg1808z00_2459;
																																			{	/* Module/foreign.scm 230 */
																																				long
																																					BgL_arg1809z00_2460;
																																				BgL_arg1809z00_2460
																																					=
																																					BGL_OBJECT_CLASS_NUM
																																					(BgL_arg1801z00_2439);
																																				BgL_arg1808z00_2459
																																					=
																																					(BgL_arg1809z00_2460
																																					-
																																					OBJECT_TYPE);
																																			}
																																			BgL_oclassz00_2453
																																				=
																																				VECTOR_REF
																																				(BGl_za2classesza2z00zz__objectz00,
																																				BgL_arg1808z00_2459);
																																		}
																																		{	/* Module/foreign.scm 230 */
																																			bool_t
																																				BgL__ortest_1115z00_2454;
																																			BgL__ortest_1115z00_2454
																																				=
																																				(BgL_classz00_2437
																																				==
																																				BgL_oclassz00_2453);
																																			if (BgL__ortest_1115z00_2454)
																																				{	/* Module/foreign.scm 230 */
																																					BgL_res2312z00_2467
																																						=
																																						BgL__ortest_1115z00_2454;
																																				}
																																			else
																																				{	/* Module/foreign.scm 230 */
																																					long
																																						BgL_odepthz00_2455;
																																					BgL_odepthz00_2455
																																						=
																																						BGL_CLASS_DEPTH
																																						(BgL_oclassz00_2453);
																																					if (
																																						(1L
																																							<
																																							BgL_odepthz00_2455))
																																						{	/* Module/foreign.scm 230 */
																																							obj_t
																																								BgL_arg1797z00_2457;
																																							BgL_arg1797z00_2457
																																								=
																																								BGL_CLASS_ANCESTORS_REF
																																								(BgL_oclassz00_2453,
																																								1L);
																																							BgL_res2312z00_2467
																																								=
																																								(BgL_arg1797z00_2457
																																								==
																																								BgL_classz00_2437);
																																						}
																																					else
																																						{	/* Module/foreign.scm 230 */
																																							BgL_res2312z00_2467
																																								=
																																								(
																																								(bool_t)
																																								0);
																																						}
																																				}
																																		}
																																	}
																																	BgL_test2499z00_3719
																																		=
																																		BgL_res2312z00_2467;
																																}
																														}
																													else
																														{	/* Module/foreign.scm 230 */
																															BgL_test2499z00_3719
																																= ((bool_t) 0);
																														}
																												}
																												if (BgL_test2499z00_3719)
																													{	/* Module/foreign.scm 231 */
																														obj_t
																															BgL_accessesz00_1579;
																														BgL_accessesz00_1579
																															=
																															BGl_makezd2ctypezd2accessesz12z12zzforeign_accessz00
																															(((BgL_typez00_bglt) BgL_ctypez00_1576), ((BgL_typez00_bglt) BgL_ctypez00_1576), BgL_locz00_1577);
																														BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00
																															=
																															BGl_appendzd221011zd2zzmodule_foreignz00
																															(((obj_t)
																																BgL_accessesz00_1579),
																															BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00);
																														{	/* Module/foreign.scm 236 */
																															bool_t
																																BgL_test2504z00_3744;
																															{	/* Module/foreign.scm 236 */
																																bool_t
																																	BgL_test2505z00_3745;
																																{	/* Module/foreign.scm 236 */
																																	obj_t
																																		BgL_classz00_2469;
																																	BgL_classz00_2469
																																		=
																																		BGl_caliasz00zzforeign_ctypez00;
																																	if (BGL_OBJECTP(BgL_ctypez00_1576))
																																		{	/* Module/foreign.scm 236 */
																																			BgL_objectz00_bglt
																																				BgL_arg1801z00_2471;
																																			BgL_arg1801z00_2471
																																				=
																																				(BgL_objectz00_bglt)
																																				(BgL_ctypez00_1576);
																																			if (BGL_CONDEXPAND_ISA_ARCH64())
																																				{	/* Module/foreign.scm 236 */
																																					long
																																						BgL_idxz00_2477;
																																					BgL_idxz00_2477
																																						=
																																						BGL_OBJECT_INHERITANCE_NUM
																																						(BgL_arg1801z00_2471);
																																					BgL_test2505z00_3745
																																						=
																																						(VECTOR_REF
																																						(BGl_za2inheritancesza2z00zz__objectz00,
																																							(BgL_idxz00_2477
																																								+
																																								2L))
																																						==
																																						BgL_classz00_2469);
																																				}
																																			else
																																				{	/* Module/foreign.scm 236 */
																																					bool_t
																																						BgL_res2313z00_2499;
																																					{	/* Module/foreign.scm 236 */
																																						obj_t
																																							BgL_oclassz00_2485;
																																						{	/* Module/foreign.scm 236 */
																																							long
																																								BgL_arg1808z00_2491;
																																							{	/* Module/foreign.scm 236 */
																																								long
																																									BgL_arg1809z00_2492;
																																								BgL_arg1809z00_2492
																																									=
																																									BGL_OBJECT_CLASS_NUM
																																									(BgL_arg1801z00_2471);
																																								BgL_arg1808z00_2491
																																									=
																																									(BgL_arg1809z00_2492
																																									-
																																									OBJECT_TYPE);
																																							}
																																							BgL_oclassz00_2485
																																								=
																																								VECTOR_REF
																																								(BGl_za2classesza2z00zz__objectz00,
																																								BgL_arg1808z00_2491);
																																						}
																																						{	/* Module/foreign.scm 236 */
																																							bool_t
																																								BgL__ortest_1115z00_2486;
																																							BgL__ortest_1115z00_2486
																																								=
																																								(BgL_classz00_2469
																																								==
																																								BgL_oclassz00_2485);
																																							if (BgL__ortest_1115z00_2486)
																																								{	/* Module/foreign.scm 236 */
																																									BgL_res2313z00_2499
																																										=
																																										BgL__ortest_1115z00_2486;
																																								}
																																							else
																																								{	/* Module/foreign.scm 236 */
																																									long
																																										BgL_odepthz00_2487;
																																									BgL_odepthz00_2487
																																										=
																																										BGL_CLASS_DEPTH
																																										(BgL_oclassz00_2485);
																																									if ((2L < BgL_odepthz00_2487))
																																										{	/* Module/foreign.scm 236 */
																																											obj_t
																																												BgL_arg1797z00_2489;
																																											BgL_arg1797z00_2489
																																												=
																																												BGL_CLASS_ANCESTORS_REF
																																												(BgL_oclassz00_2485,
																																												2L);
																																											BgL_res2313z00_2499
																																												=
																																												(BgL_arg1797z00_2489
																																												==
																																												BgL_classz00_2469);
																																										}
																																									else
																																										{	/* Module/foreign.scm 236 */
																																											BgL_res2313z00_2499
																																												=
																																												(
																																												(bool_t)
																																												0);
																																										}
																																								}
																																						}
																																					}
																																					BgL_test2505z00_3745
																																						=
																																						BgL_res2313z00_2499;
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 236 */
																																			BgL_test2505z00_3745
																																				=
																																				(
																																				(bool_t)
																																				0);
																																		}
																																}
																																if (BgL_test2505z00_3745)
																																	{	/* Module/foreign.scm 236 */
																																		obj_t
																																			BgL_arg1917z00_1597;
																																		BgL_arg1917z00_1597
																																			=
																																			(((BgL_typez00_bglt) COBJECT(((BgL_typez00_bglt) BgL_ctypez00_1576)))->BgL_aliasz00);
																																		{	/* Module/foreign.scm 236 */
																																			obj_t
																																				BgL_classz00_2501;
																																			BgL_classz00_2501
																																				=
																																				BGl_cstructz00zzforeign_ctypez00;
																																			if (BGL_OBJECTP(BgL_arg1917z00_1597))
																																				{	/* Module/foreign.scm 236 */
																																					BgL_objectz00_bglt
																																						BgL_arg1801z00_2503;
																																					BgL_arg1801z00_2503
																																						=
																																						(BgL_objectz00_bglt)
																																						(BgL_arg1917z00_1597);
																																					if (BGL_CONDEXPAND_ISA_ARCH64())
																																						{	/* Module/foreign.scm 236 */
																																							long
																																								BgL_idxz00_2509;
																																							BgL_idxz00_2509
																																								=
																																								BGL_OBJECT_INHERITANCE_NUM
																																								(BgL_arg1801z00_2503);
																																							BgL_test2504z00_3744
																																								=
																																								(VECTOR_REF
																																								(BGl_za2inheritancesza2z00zz__objectz00,
																																									(BgL_idxz00_2509
																																										+
																																										2L))
																																								==
																																								BgL_classz00_2501);
																																						}
																																					else
																																						{	/* Module/foreign.scm 236 */
																																							bool_t
																																								BgL_res2314z00_2531;
																																							{	/* Module/foreign.scm 236 */
																																								obj_t
																																									BgL_oclassz00_2517;
																																								{	/* Module/foreign.scm 236 */
																																									long
																																										BgL_arg1808z00_2523;
																																									{	/* Module/foreign.scm 236 */
																																										long
																																											BgL_arg1809z00_2524;
																																										BgL_arg1809z00_2524
																																											=
																																											BGL_OBJECT_CLASS_NUM
																																											(BgL_arg1801z00_2503);
																																										BgL_arg1808z00_2523
																																											=
																																											(BgL_arg1809z00_2524
																																											-
																																											OBJECT_TYPE);
																																									}
																																									BgL_oclassz00_2517
																																										=
																																										VECTOR_REF
																																										(BGl_za2classesza2z00zz__objectz00,
																																										BgL_arg1808z00_2523);
																																								}
																																								{	/* Module/foreign.scm 236 */
																																									bool_t
																																										BgL__ortest_1115z00_2518;
																																									BgL__ortest_1115z00_2518
																																										=
																																										(BgL_classz00_2501
																																										==
																																										BgL_oclassz00_2517);
																																									if (BgL__ortest_1115z00_2518)
																																										{	/* Module/foreign.scm 236 */
																																											BgL_res2314z00_2531
																																												=
																																												BgL__ortest_1115z00_2518;
																																										}
																																									else
																																										{	/* Module/foreign.scm 236 */
																																											long
																																												BgL_odepthz00_2519;
																																											BgL_odepthz00_2519
																																												=
																																												BGL_CLASS_DEPTH
																																												(BgL_oclassz00_2517);
																																											if ((2L < BgL_odepthz00_2519))
																																												{	/* Module/foreign.scm 236 */
																																													obj_t
																																														BgL_arg1797z00_2521;
																																													BgL_arg1797z00_2521
																																														=
																																														BGL_CLASS_ANCESTORS_REF
																																														(BgL_oclassz00_2517,
																																														2L);
																																													BgL_res2314z00_2531
																																														=
																																														(BgL_arg1797z00_2521
																																														==
																																														BgL_classz00_2501);
																																												}
																																											else
																																												{	/* Module/foreign.scm 236 */
																																													BgL_res2314z00_2531
																																														=
																																														(
																																														(bool_t)
																																														0);
																																												}
																																										}
																																								}
																																							}
																																							BgL_test2504z00_3744
																																								=
																																								BgL_res2314z00_2531;
																																						}
																																				}
																																			else
																																				{	/* Module/foreign.scm 236 */
																																					BgL_test2504z00_3744
																																						=
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																	}
																																else
																																	{	/* Module/foreign.scm 236 */
																																		BgL_test2504z00_3744
																																			=
																																			((bool_t)
																																			0);
																																	}
																															}
																															if (BgL_test2504z00_3744)
																																{	/* Module/foreign.scm 238 */
																																	obj_t
																																		BgL_arg1896z00_1583;
																																	{	/* Module/foreign.scm 238 */
																																		obj_t
																																			BgL_arg1897z00_1584;
																																		{	/* Module/foreign.scm 238 */
																																			obj_t
																																				BgL_arg1898z00_1585;
																																			obj_t
																																				BgL_arg1899z00_1586;
																																			{	/* Module/foreign.scm 238 */
																																				obj_t
																																					BgL_arg1900z00_1587;
																																				{	/* Module/foreign.scm 238 */
																																					obj_t
																																						BgL_arg1901z00_1588;
																																					obj_t
																																						BgL_arg1905z00_1589;
																																					{	/* Module/foreign.scm 238 */
																																						obj_t
																																							BgL_arg1454z00_2533;
																																						BgL_arg1454z00_2533
																																							=
																																							SYMBOL_TO_STRING
																																							(BgL_idz00_1517);
																																						BgL_arg1901z00_1588
																																							=
																																							BGl_stringzd2copyzd2zz__r4_strings_6_7z00
																																							(BgL_arg1454z00_2533);
																																					}
																																					{	/* Module/foreign.scm 238 */
																																						obj_t
																																							BgL_symbolz00_2534;
																																						BgL_symbolz00_2534
																																							=
																																							CNST_TABLE_REF
																																							(8L);
																																						{	/* Module/foreign.scm 238 */
																																							obj_t
																																								BgL_arg1454z00_2535;
																																							BgL_arg1454z00_2535
																																								=
																																								SYMBOL_TO_STRING
																																								(BgL_symbolz00_2534);
																																							BgL_arg1905z00_1589
																																								=
																																								BGl_stringzd2copyzd2zz__r4_strings_6_7z00
																																								(BgL_arg1454z00_2535);
																																						}
																																					}
																																					BgL_arg1900z00_1587
																																						=
																																						string_append
																																						(BgL_arg1901z00_1588,
																																						BgL_arg1905z00_1589);
																																				}
																																				BgL_arg1898z00_1585
																																					=
																																					bstring_to_symbol
																																					(BgL_arg1900z00_1587);
																																			}
																																			{	/* Module/foreign.scm 239 */
																																				obj_t
																																					BgL_arg1908z00_1590;
																																				obj_t
																																					BgL_arg1909z00_1591;
																																				{	/* Module/foreign.scm 239 */
																																					obj_t
																																						BgL_arg1911z00_1592;
																																					{	/* Module/foreign.scm 239 */
																																						obj_t
																																							BgL_arg1914z00_1593;
																																						obj_t
																																							BgL_arg1915z00_1594;
																																						{	/* Module/foreign.scm 239 */
																																							obj_t
																																								BgL_arg1454z00_2538;
																																							BgL_arg1454z00_2538
																																								=
																																								SYMBOL_TO_STRING
																																								(
																																								((obj_t) BgL_tzd2expzd2_1518));
																																							BgL_arg1914z00_1593
																																								=
																																								BGl_stringzd2copyzd2zz__r4_strings_6_7z00
																																								(BgL_arg1454z00_2538);
																																						}
																																						{	/* Module/foreign.scm 239 */
																																							obj_t
																																								BgL_symbolz00_2539;
																																							BgL_symbolz00_2539
																																								=
																																								CNST_TABLE_REF
																																								(8L);
																																							{	/* Module/foreign.scm 239 */
																																								obj_t
																																									BgL_arg1454z00_2540;
																																								BgL_arg1454z00_2540
																																									=
																																									SYMBOL_TO_STRING
																																									(BgL_symbolz00_2539);
																																								BgL_arg1915z00_1594
																																									=
																																									BGl_stringzd2copyzd2zz__r4_strings_6_7z00
																																									(BgL_arg1454z00_2540);
																																							}
																																						}
																																						BgL_arg1911z00_1592
																																							=
																																							string_append
																																							(BgL_arg1914z00_1593,
																																							BgL_arg1915z00_1594);
																																					}
																																					BgL_arg1908z00_1590
																																						=
																																						bstring_to_symbol
																																						(BgL_arg1911z00_1592);
																																				}
																																				{	/* Module/foreign.scm 240 */
																																					obj_t
																																						BgL_arg1916z00_1595;
																																					BgL_arg1916z00_1595
																																						=
																																						BGl_makezd2pointerzd2tozd2namezd2zztype_toolsz00
																																						(((BgL_typez00_bglt) BgL_ctypez00_1576));
																																					BgL_arg1909z00_1591
																																						=
																																						MAKE_YOUNG_PAIR
																																						(BgL_arg1916z00_1595,
																																						BNIL);
																																				}
																																				BgL_arg1899z00_1586
																																					=
																																					MAKE_YOUNG_PAIR
																																					(BgL_arg1908z00_1590,
																																					BgL_arg1909z00_1591);
																																			}
																																			BgL_arg1897z00_1584
																																				=
																																				MAKE_YOUNG_PAIR
																																				(BgL_arg1898z00_1585,
																																				BgL_arg1899z00_1586);
																																		}
																																		BgL_arg1896z00_1583
																																			=
																																			MAKE_YOUNG_PAIR
																																			(CNST_TABLE_REF
																																			(5L),
																																			BgL_arg1897z00_1584);
																																	}
																																	BGl_parsezd2czd2foreignzd2typezd2zzmodule_foreignz00
																																		(BgL_arg1896z00_1583);
																																}
																															else
																																{	/* Module/foreign.scm 236 */
																																	BFALSE;
																																}
																														}
																													}
																												else
																													{	/* Module/foreign.scm 230 */
																														BFALSE;
																													}
																											}
																											return BUNSPEC;
																										}
																									else
																										{	/* Module/foreign.scm 242 */
																											obj_t
																												BgL_list1918z00_1598;
																											BgL_list1918z00_1598 =
																												MAKE_YOUNG_PAIR(BNIL,
																												BNIL);
																											return
																												BGl_userzd2errorzd2zztools_errorz00
																												(BGl_string2325z00zzmodule_foreignz00,
																												BGl_string2334z00zzmodule_foreignz00,
																												BgL_typez00_33,
																												BgL_list1918z00_1598);
																										}
																								}
																							else
																								{	/* Module/foreign.scm 221 */
																								BgL_tagzd21745zd2_1521:
																									{	/* Module/foreign.scm 244 */
																										obj_t BgL_list1919z00_1599;

																										BgL_list1919z00_1599 =
																											MAKE_YOUNG_PAIR(BNIL,
																											BNIL);
																										return
																											BGl_userzd2errorzd2zztools_errorz00
																											(BGl_string2325z00zzmodule_foreignz00,
																											BGl_string2334z00zzmodule_foreignz00,
																											BgL_typez00_33,
																											BgL_list1919z00_1599);
																									}
																								}
																						}
																					else
																						{	/* Module/foreign.scm 221 */
																							goto BgL_tagzd21745zd2_1521;
																						}
																				}
																			else
																				{	/* Module/foreign.scm 221 */
																					goto BgL_tagzd21745zd2_1521;
																				}
																		}
																	else
																		{	/* Module/foreign.scm 221 */
																			goto BgL_tagzd21745zd2_1521;
																		}
																}
														}
													else
														{	/* Module/foreign.scm 221 */
															obj_t BgL_carzd21815zd2_1550;
															obj_t BgL_cdrzd21816zd2_1551;

															BgL_carzd21815zd2_1550 =
																CAR(((obj_t) BgL_cdrzd21753zd2_1524));
															BgL_cdrzd21816zd2_1551 =
																CDR(((obj_t) BgL_cdrzd21753zd2_1524));
															if (SYMBOLP(BgL_carzd21815zd2_1550))
																{	/* Module/foreign.scm 221 */
																	obj_t BgL_cdrzd21825zd2_1553;

																	BgL_cdrzd21825zd2_1553 =
																		CDR(((obj_t) BgL_cdrzd21816zd2_1551));
																	if (PAIRP(BgL_cdrzd21825zd2_1553))
																		{	/* Module/foreign.scm 221 */
																			obj_t BgL_carzd21828zd2_1555;

																			BgL_carzd21828zd2_1555 =
																				CAR(BgL_cdrzd21825zd2_1553);
																			if (STRINGP(BgL_carzd21828zd2_1555))
																				{	/* Module/foreign.scm 221 */
																					if (NULLP(CDR
																							(BgL_cdrzd21825zd2_1553)))
																						{	/* Module/foreign.scm 221 */
																							obj_t BgL_arg1879z00_1559;

																							BgL_arg1879z00_1559 =
																								CAR(
																								((obj_t)
																									BgL_cdrzd21816zd2_1551));
																							{
																								obj_t BgL_namez00_3833;
																								obj_t BgL_tzd2expzd2_3832;
																								obj_t BgL_idz00_3831;

																								BgL_idz00_3831 =
																									BgL_carzd21815zd2_1550;
																								BgL_tzd2expzd2_3832 =
																									BgL_arg1879z00_1559;
																								BgL_namez00_3833 =
																									BgL_carzd21828zd2_1555;
																								BgL_namez00_1519 =
																									BgL_namez00_3833;
																								BgL_tzd2expzd2_1518 =
																									BgL_tzd2expzd2_3832;
																								BgL_idz00_1517 = BgL_idz00_3831;
																								goto BgL_tagzd21744zd2_1520;
																							}
																						}
																					else
																						{	/* Module/foreign.scm 221 */
																							goto BgL_tagzd21745zd2_1521;
																						}
																				}
																			else
																				{	/* Module/foreign.scm 221 */
																					goto BgL_tagzd21745zd2_1521;
																				}
																		}
																	else
																		{	/* Module/foreign.scm 221 */
																			goto BgL_tagzd21745zd2_1521;
																		}
																}
															else
																{	/* Module/foreign.scm 221 */
																	goto BgL_tagzd21745zd2_1521;
																}
														}
												}
											else
												{	/* Module/foreign.scm 221 */
													goto BgL_tagzd21745zd2_1521;
												}
										}
									else
										{	/* Module/foreign.scm 221 */
											obj_t BgL_carzd21851zd2_1562;
											obj_t BgL_cdrzd21852zd2_1563;

											BgL_carzd21851zd2_1562 =
												CAR(((obj_t) BgL_cdrzd21753zd2_1524));
											BgL_cdrzd21852zd2_1563 =
												CDR(((obj_t) BgL_cdrzd21753zd2_1524));
											if (SYMBOLP(BgL_carzd21851zd2_1562))
												{	/* Module/foreign.scm 221 */
													if (PAIRP(BgL_cdrzd21852zd2_1563))
														{	/* Module/foreign.scm 221 */
															obj_t BgL_cdrzd21859zd2_1566;

															BgL_cdrzd21859zd2_1566 =
																CDR(BgL_cdrzd21852zd2_1563);
															if (PAIRP(BgL_cdrzd21859zd2_1566))
																{	/* Module/foreign.scm 221 */
																	obj_t BgL_carzd21862zd2_1568;

																	BgL_carzd21862zd2_1568 =
																		CAR(BgL_cdrzd21859zd2_1566);
																	if (STRINGP(BgL_carzd21862zd2_1568))
																		{	/* Module/foreign.scm 221 */
																			if (NULLP(CDR(BgL_cdrzd21859zd2_1566)))
																				{
																					obj_t BgL_namez00_3854;
																					obj_t BgL_tzd2expzd2_3852;
																					obj_t BgL_idz00_3851;

																					BgL_idz00_3851 =
																						BgL_carzd21851zd2_1562;
																					BgL_tzd2expzd2_3852 =
																						CAR(BgL_cdrzd21852zd2_1563);
																					BgL_namez00_3854 =
																						BgL_carzd21862zd2_1568;
																					BgL_namez00_1519 = BgL_namez00_3854;
																					BgL_tzd2expzd2_1518 =
																						BgL_tzd2expzd2_3852;
																					BgL_idz00_1517 = BgL_idz00_3851;
																					goto BgL_tagzd21744zd2_1520;
																				}
																			else
																				{	/* Module/foreign.scm 221 */
																					goto BgL_tagzd21745zd2_1521;
																				}
																		}
																	else
																		{	/* Module/foreign.scm 221 */
																			goto BgL_tagzd21745zd2_1521;
																		}
																}
															else
																{	/* Module/foreign.scm 221 */
																	goto BgL_tagzd21745zd2_1521;
																}
														}
													else
														{	/* Module/foreign.scm 221 */
															goto BgL_tagzd21745zd2_1521;
														}
												}
											else
												{	/* Module/foreign.scm 221 */
													goto BgL_tagzd21745zd2_1521;
												}
										}
								}
							else
								{	/* Module/foreign.scm 221 */
									goto BgL_tagzd21745zd2_1521;
								}
						}
					else
						{	/* Module/foreign.scm 221 */
							goto BgL_tagzd21745zd2_1521;
						}
				}
			}
		}

	}



/* check-c-foreign-type-exp? */
	bool_t BGl_checkzd2czd2foreignzd2typezd2expzf3zf3zzmodule_foreignz00(obj_t
		BgL_tzd2expzd2_34)
	{
		{	/* Module/foreign.scm 249 */
			{
				obj_t BgL_slotsz00_1609;
				obj_t BgL_slotsz00_1601;

				if (SYMBOLP(BgL_tzd2expzd2_34))
					{	/* Module/foreign.scm 250 */
						return ((bool_t) 1);
					}
				else
					{	/* Module/foreign.scm 250 */
						if (PAIRP(BgL_tzd2expzd2_34))
							{	/* Module/foreign.scm 250 */
								obj_t BgL_carzd21900zd2_1615;
								obj_t BgL_cdrzd21901zd2_1616;

								BgL_carzd21900zd2_1615 = CAR(((obj_t) BgL_tzd2expzd2_34));
								BgL_cdrzd21901zd2_1616 = CDR(((obj_t) BgL_tzd2expzd2_34));
								if ((BgL_carzd21900zd2_1615 == CNST_TABLE_REF(10L)))
									{	/* Module/foreign.scm 250 */
										BgL_slotsz00_1601 = BgL_cdrzd21901zd2_1616;
									BgL_tagzd21886zd2_1602:
										{
											obj_t BgL_slotsz00_1748;

											BgL_slotsz00_1748 = BgL_slotsz00_1601;
										BgL_zc3z04anonymousza32038ze3z87_1749:
											if (NULLP(BgL_slotsz00_1748))
												{	/* Module/foreign.scm 255 */
													return ((bool_t) 1);
												}
											else
												{

													{	/* Module/foreign.scm 257 */
														obj_t BgL_ezd22154zd2_1753;

														BgL_ezd22154zd2_1753 =
															CAR(((obj_t) BgL_slotsz00_1748));
														if (PAIRP(BgL_ezd22154zd2_1753))
															{	/* Module/foreign.scm 257 */
																obj_t BgL_cdrzd22156zd2_1755;

																BgL_cdrzd22156zd2_1755 =
																	CDR(BgL_ezd22154zd2_1753);
																{	/* Module/foreign.scm 257 */
																	bool_t BgL_test2528z00_3873;

																	{	/* Module/foreign.scm 257 */
																		obj_t BgL_tmpz00_3874;

																		BgL_tmpz00_3874 = CAR(BgL_ezd22154zd2_1753);
																		BgL_test2528z00_3873 =
																			SYMBOLP(BgL_tmpz00_3874);
																	}
																	if (BgL_test2528z00_3873)
																		{	/* Module/foreign.scm 257 */
																			if (PAIRP(BgL_cdrzd22156zd2_1755))
																				{	/* Module/foreign.scm 257 */
																					obj_t BgL_cdrzd22158zd2_1759;

																					BgL_cdrzd22158zd2_1759 =
																						CDR(BgL_cdrzd22156zd2_1755);
																					{	/* Module/foreign.scm 257 */
																						bool_t BgL_test2530z00_3880;

																						{	/* Module/foreign.scm 257 */
																							obj_t BgL_tmpz00_3881;

																							BgL_tmpz00_3881 =
																								CAR(BgL_cdrzd22156zd2_1755);
																							BgL_test2530z00_3880 =
																								SYMBOLP(BgL_tmpz00_3881);
																						}
																						if (BgL_test2530z00_3880)
																							{	/* Module/foreign.scm 257 */
																								if (PAIRP
																									(BgL_cdrzd22158zd2_1759))
																									{	/* Module/foreign.scm 257 */
																										bool_t BgL_test2532z00_3886;

																										{	/* Module/foreign.scm 257 */
																											obj_t BgL_tmpz00_3887;

																											BgL_tmpz00_3887 =
																												CAR
																												(BgL_cdrzd22158zd2_1759);
																											BgL_test2532z00_3886 =
																												STRINGP
																												(BgL_tmpz00_3887);
																										}
																										if (BgL_test2532z00_3886)
																											{	/* Module/foreign.scm 257 */
																												if (NULLP(CDR
																														(BgL_cdrzd22158zd2_1759)))
																													{	/* Module/foreign.scm 257 */
																														{
																															obj_t
																																BgL_slotsz00_3893;
																															BgL_slotsz00_3893
																																=
																																CDR(((obj_t)
																																	BgL_slotsz00_1748));
																															BgL_slotsz00_1748
																																=
																																BgL_slotsz00_3893;
																															goto
																																BgL_zc3z04anonymousza32038ze3z87_1749;
																														}
																													}
																												else
																													{	/* Module/foreign.scm 257 */
																														return ((bool_t) 0);
																													}
																											}
																										else
																											{	/* Module/foreign.scm 257 */
																												return ((bool_t) 0);
																											}
																									}
																								else
																									{	/* Module/foreign.scm 257 */
																										return ((bool_t) 0);
																									}
																							}
																						else
																							{	/* Module/foreign.scm 257 */
																								return ((bool_t) 0);
																							}
																					}
																				}
																			else
																				{	/* Module/foreign.scm 257 */
																					return ((bool_t) 0);
																				}
																		}
																	else
																		{	/* Module/foreign.scm 257 */
																			return ((bool_t) 0);
																		}
																}
															}
														else
															{	/* Module/foreign.scm 257 */
																return ((bool_t) 0);
															}
													}
												}
										}
									}
								else
									{	/* Module/foreign.scm 250 */
										if ((BgL_carzd21900zd2_1615 == CNST_TABLE_REF(11L)))
											{
												obj_t BgL_slotsz00_3899;

												BgL_slotsz00_3899 = BgL_cdrzd21901zd2_1616;
												BgL_slotsz00_1601 = BgL_slotsz00_3899;
												goto BgL_tagzd21886zd2_1602;
											}
										else
											{	/* Module/foreign.scm 250 */
												if ((BgL_carzd21900zd2_1615 == CNST_TABLE_REF(12L)))
													{	/* Module/foreign.scm 250 */
														return NULLP(CDR(((obj_t) BgL_tzd2expzd2_34)));
													}
												else
													{	/* Module/foreign.scm 250 */
														obj_t BgL_cdrzd21948zd2_1631;

														BgL_cdrzd21948zd2_1631 =
															CDR(((obj_t) BgL_tzd2expzd2_34));
														if (
															(CAR(
																	((obj_t) BgL_tzd2expzd2_34)) ==
																CNST_TABLE_REF(13L)))
															{	/* Module/foreign.scm 250 */
																if (PAIRP(BgL_cdrzd21948zd2_1631))
																	{	/* Module/foreign.scm 250 */
																		bool_t BgL_test2538z00_3915;

																		{	/* Module/foreign.scm 250 */
																			obj_t BgL_tmpz00_3916;

																			BgL_tmpz00_3916 =
																				CAR(BgL_cdrzd21948zd2_1631);
																			BgL_test2538z00_3915 =
																				SYMBOLP(BgL_tmpz00_3916);
																		}
																		if (BgL_test2538z00_3915)
																			{	/* Module/foreign.scm 250 */
																				return
																					NULLP(CDR(BgL_cdrzd21948zd2_1631));
																			}
																		else
																			{	/* Module/foreign.scm 250 */
																				return ((bool_t) 0);
																			}
																	}
																else
																	{	/* Module/foreign.scm 250 */
																		return ((bool_t) 0);
																	}
															}
														else
															{	/* Module/foreign.scm 250 */
																obj_t BgL_carzd21999zd2_1649;

																BgL_carzd21999zd2_1649 =
																	CAR(((obj_t) BgL_tzd2expzd2_34));
																{

																	if (
																		(BgL_carzd21999zd2_1649 ==
																			CNST_TABLE_REF(17L)))
																		{	/* Module/foreign.scm 250 */
																		BgL_kapzd22001zd2_1651:
																			if (PAIRP(BgL_cdrzd21948zd2_1631))
																				{	/* Module/foreign.scm 250 */
																					bool_t BgL_test2541z00_3928;

																					{	/* Module/foreign.scm 250 */
																						obj_t BgL_tmpz00_3929;

																						BgL_tmpz00_3929 =
																							CAR(BgL_cdrzd21948zd2_1631);
																						BgL_test2541z00_3928 =
																							SYMBOLP(BgL_tmpz00_3929);
																					}
																					if (BgL_test2541z00_3928)
																						{	/* Module/foreign.scm 250 */
																							if (NULLP(CDR
																									(BgL_cdrzd21948zd2_1631)))
																								{	/* Module/foreign.scm 250 */
																									return ((bool_t) 1);
																								}
																							else
																								{	/* Module/foreign.scm 250 */
																									obj_t BgL_cdrzd22010zd2_1689;

																									BgL_cdrzd22010zd2_1689 =
																										CDR(
																										((obj_t)
																											BgL_tzd2expzd2_34));
																									if ((CAR(((obj_t)
																													BgL_tzd2expzd2_34)) ==
																											CNST_TABLE_REF(14L)))
																										{	/* Module/foreign.scm 250 */
																											obj_t
																												BgL_cdrzd22013zd2_1692;
																											BgL_cdrzd22013zd2_1692 =
																												CDR(((obj_t)
																													BgL_cdrzd22010zd2_1689));
																											{	/* Module/foreign.scm 250 */
																												bool_t
																													BgL_test2544z00_3944;
																												{	/* Module/foreign.scm 250 */
																													obj_t BgL_tmpz00_3945;

																													BgL_tmpz00_3945 =
																														CAR(
																														((obj_t)
																															BgL_cdrzd22010zd2_1689));
																													BgL_test2544z00_3944 =
																														SYMBOLP
																														(BgL_tmpz00_3945);
																												}
																												if (BgL_test2544z00_3944)
																													{	/* Module/foreign.scm 250 */
																														if (PAIRP
																															(BgL_cdrzd22013zd2_1692))
																															{	/* Module/foreign.scm 250 */
																																obj_t
																																	BgL_carzd22015zd2_1696;
																																BgL_carzd22015zd2_1696
																																	=
																																	CAR
																																	(BgL_cdrzd22013zd2_1692);
																																{

																																	if (NULLP
																																		(BgL_carzd22015zd2_1696))
																																		{	/* Module/foreign.scm 250 */
																																		BgL_kapzd22019zd2_1697:
																																			if (NULLP
																																				(CDR(((obj_t) BgL_cdrzd22013zd2_1692))))
																																				{	/* Module/foreign.scm 250 */
																																					BGL_TAIL
																																						return
																																						BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00
																																						(BgL_carzd22015zd2_1696);
																																				}
																																			else
																																				{	/* Module/foreign.scm 250 */
																																					return
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 250 */
																																			if (PAIRP
																																				(BgL_carzd22015zd2_1696))
																																				{	/* Module/foreign.scm 250 */
																																					goto
																																						BgL_kapzd22019zd2_1697;
																																				}
																																			else
																																				{	/* Module/foreign.scm 250 */
																																					return
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																}
																															}
																														else
																															{	/* Module/foreign.scm 250 */
																																return ((bool_t)
																																	0);
																															}
																													}
																												else
																													{	/* Module/foreign.scm 250 */
																														return ((bool_t) 0);
																													}
																											}
																										}
																									else
																										{	/* Module/foreign.scm 250 */
																											if (
																												(CAR(
																														((obj_t)
																															BgL_tzd2expzd2_34))
																													==
																													CNST_TABLE_REF(15L)))
																												{	/* Module/foreign.scm 250 */
																													BgL_slotsz00_1609 =
																														BgL_cdrzd22010zd2_1689;
																												BgL_tagzd21892zd2_1610:
																													{
																														obj_t
																															BgL_slotsz00_1774;
																														BgL_slotsz00_1774 =
																															BgL_slotsz00_1609;
																													BgL_zc3z04anonymousza32057ze3z87_1775:
																														if (NULLP
																															(BgL_slotsz00_1774))
																															{	/* Module/foreign.scm 274 */
																																return ((bool_t)
																																	1);
																															}
																														else
																															{

																																{	/* Module/foreign.scm 276 */
																																	obj_t
																																		BgL_ezd22163zd2_1779;
																																	BgL_ezd22163zd2_1779
																																		=
																																		CAR(((obj_t)
																																			BgL_slotsz00_1774));
																																	if (PAIRP
																																		(BgL_ezd22163zd2_1779))
																																		{	/* Module/foreign.scm 276 */
																																			obj_t
																																				BgL_cdrzd22165zd2_1781;
																																			BgL_cdrzd22165zd2_1781
																																				=
																																				CDR
																																				(BgL_ezd22163zd2_1779);
																																			{	/* Module/foreign.scm 276 */
																																				bool_t
																																					BgL_test2552z00_3973;
																																				{	/* Module/foreign.scm 276 */
																																					obj_t
																																						BgL_tmpz00_3974;
																																					BgL_tmpz00_3974
																																						=
																																						CAR
																																						(BgL_ezd22163zd2_1779);
																																					BgL_test2552z00_3973
																																						=
																																						SYMBOLP
																																						(BgL_tmpz00_3974);
																																				}
																																				if (BgL_test2552z00_3973)
																																					{	/* Module/foreign.scm 276 */
																																						if (PAIRP(BgL_cdrzd22165zd2_1781))
																																							{	/* Module/foreign.scm 276 */
																																								bool_t
																																									BgL_test2554z00_3979;
																																								{	/* Module/foreign.scm 276 */
																																									obj_t
																																										BgL_tmpz00_3980;
																																									BgL_tmpz00_3980
																																										=
																																										CAR
																																										(BgL_cdrzd22165zd2_1781);
																																									BgL_test2554z00_3979
																																										=
																																										STRINGP
																																										(BgL_tmpz00_3980);
																																								}
																																								if (BgL_test2554z00_3979)
																																									{	/* Module/foreign.scm 276 */
																																										if (NULLP(CDR(BgL_cdrzd22165zd2_1781)))
																																											{	/* Module/foreign.scm 276 */
																																												{
																																													obj_t
																																														BgL_slotsz00_3986;
																																													BgL_slotsz00_3986
																																														=
																																														CDR
																																														(
																																														((obj_t) BgL_slotsz00_1774));
																																													BgL_slotsz00_1774
																																														=
																																														BgL_slotsz00_3986;
																																													goto
																																														BgL_zc3z04anonymousza32057ze3z87_1775;
																																												}
																																											}
																																										else
																																											{	/* Module/foreign.scm 276 */
																																												return
																																													(
																																													(bool_t)
																																													0);
																																											}
																																									}
																																								else
																																									{	/* Module/foreign.scm 276 */
																																										return
																																											(
																																											(bool_t)
																																											0);
																																									}
																																							}
																																						else
																																							{	/* Module/foreign.scm 276 */
																																								return
																																									(
																																									(bool_t)
																																									0);
																																							}
																																					}
																																				else
																																					{	/* Module/foreign.scm 276 */
																																						return
																																							(
																																							(bool_t)
																																							0);
																																					}
																																			}
																																		}
																																	else
																																		{	/* Module/foreign.scm 276 */
																																			return (
																																				(bool_t)
																																				0);
																																		}
																																}
																															}
																													}
																												}
																											else
																												{	/* Module/foreign.scm 250 */
																													return ((bool_t) 0);
																												}
																										}
																								}
																						}
																					else
																						{	/* Module/foreign.scm 250 */
																							obj_t BgL_cdrzd22037zd2_1710;

																							BgL_cdrzd22037zd2_1710 =
																								CDR(
																								((obj_t) BgL_tzd2expzd2_34));
																							if (
																								(CAR(
																										((obj_t) BgL_tzd2expzd2_34))
																									== CNST_TABLE_REF(16L)))
																								{	/* Module/foreign.scm 250 */
																									bool_t BgL_test2557z00_3996;

																									{	/* Module/foreign.scm 250 */
																										obj_t BgL_tmpz00_3997;

																										BgL_tmpz00_3997 =
																											CAR(
																											((obj_t)
																												BgL_cdrzd22037zd2_1710));
																										BgL_test2557z00_3996 =
																											SYMBOLP(BgL_tmpz00_3997);
																									}
																									if (BgL_test2557z00_3996)
																										{	/* Module/foreign.scm 250 */
																											return
																												NULLP(CDR(
																													((obj_t)
																														BgL_cdrzd22037zd2_1710)));
																										}
																									else
																										{	/* Module/foreign.scm 250 */
																											return ((bool_t) 0);
																										}
																								}
																							else
																								{	/* Module/foreign.scm 250 */
																									if (
																										(CAR(
																												((obj_t)
																													BgL_tzd2expzd2_34)) ==
																											CNST_TABLE_REF(14L)))
																										{	/* Module/foreign.scm 250 */
																											obj_t
																												BgL_cdrzd22057zd2_1722;
																											BgL_cdrzd22057zd2_1722 =
																												CDR(((obj_t)
																													BgL_cdrzd22037zd2_1710));
																											{	/* Module/foreign.scm 250 */
																												bool_t
																													BgL_test2559z00_4011;
																												{	/* Module/foreign.scm 250 */
																													obj_t BgL_tmpz00_4012;

																													BgL_tmpz00_4012 =
																														CAR(
																														((obj_t)
																															BgL_cdrzd22037zd2_1710));
																													BgL_test2559z00_4011 =
																														SYMBOLP
																														(BgL_tmpz00_4012);
																												}
																												if (BgL_test2559z00_4011)
																													{	/* Module/foreign.scm 250 */
																														if (PAIRP
																															(BgL_cdrzd22057zd2_1722))
																															{	/* Module/foreign.scm 250 */
																																obj_t
																																	BgL_carzd22059zd2_1726;
																																BgL_carzd22059zd2_1726
																																	=
																																	CAR
																																	(BgL_cdrzd22057zd2_1722);
																																{

																																	if (NULLP
																																		(BgL_carzd22059zd2_1726))
																																		{	/* Module/foreign.scm 250 */
																																		BgL_kapzd22063zd2_1727:
																																			if (NULLP
																																				(CDR(((obj_t) BgL_cdrzd22057zd2_1722))))
																																				{	/* Module/foreign.scm 250 */
																																					BGL_TAIL
																																						return
																																						BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00
																																						(BgL_carzd22059zd2_1726);
																																				}
																																			else
																																				{	/* Module/foreign.scm 250 */
																																					return
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 250 */
																																			if (PAIRP
																																				(BgL_carzd22059zd2_1726))
																																				{	/* Module/foreign.scm 250 */
																																					goto
																																						BgL_kapzd22063zd2_1727;
																																				}
																																			else
																																				{	/* Module/foreign.scm 250 */
																																					return
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																}
																															}
																														else
																															{	/* Module/foreign.scm 250 */
																																return ((bool_t)
																																	0);
																															}
																													}
																												else
																													{	/* Module/foreign.scm 250 */
																														return ((bool_t) 0);
																													}
																											}
																										}
																									else
																										{	/* Module/foreign.scm 250 */
																											if (
																												(CAR(
																														((obj_t)
																															BgL_tzd2expzd2_34))
																													==
																													CNST_TABLE_REF(15L)))
																												{
																													obj_t
																														BgL_slotsz00_4033;
																													BgL_slotsz00_4033 =
																														CDR(((obj_t)
																															BgL_tzd2expzd2_34));
																													BgL_slotsz00_1609 =
																														BgL_slotsz00_4033;
																													goto
																														BgL_tagzd21892zd2_1610;
																												}
																											else
																												{	/* Module/foreign.scm 250 */
																													return ((bool_t) 0);
																												}
																										}
																								}
																						}
																				}
																			else
																				{	/* Module/foreign.scm 250 */
																					if (
																						(CAR(
																								((obj_t) BgL_tzd2expzd2_34)) ==
																							CNST_TABLE_REF(15L)))
																						{
																							obj_t BgL_slotsz00_4041;

																							BgL_slotsz00_4041 =
																								CDR(
																								((obj_t) BgL_tzd2expzd2_34));
																							BgL_slotsz00_1609 =
																								BgL_slotsz00_4041;
																							goto BgL_tagzd21892zd2_1610;
																						}
																					else
																						{	/* Module/foreign.scm 250 */
																							return ((bool_t) 0);
																						}
																				}
																		}
																	else
																		{	/* Module/foreign.scm 250 */
																			if (
																				(BgL_carzd21999zd2_1649 ==
																					CNST_TABLE_REF(18L)))
																				{	/* Module/foreign.scm 250 */
																					goto BgL_kapzd22001zd2_1651;
																				}
																			else
																				{	/* Module/foreign.scm 250 */
																					obj_t BgL_cdrzd22091zd2_1652;

																					BgL_cdrzd22091zd2_1652 =
																						CDR(((obj_t) BgL_tzd2expzd2_34));
																					if (
																						(CAR(
																								((obj_t) BgL_tzd2expzd2_34)) ==
																							CNST_TABLE_REF(16L)))
																						{	/* Module/foreign.scm 250 */
																							if (PAIRP(BgL_cdrzd22091zd2_1652))
																								{	/* Module/foreign.scm 250 */
																									bool_t BgL_test2569z00_4056;

																									{	/* Module/foreign.scm 250 */
																										obj_t BgL_tmpz00_4057;

																										BgL_tmpz00_4057 =
																											CAR
																											(BgL_cdrzd22091zd2_1652);
																										BgL_test2569z00_4056 =
																											SYMBOLP(BgL_tmpz00_4057);
																									}
																									if (BgL_test2569z00_4056)
																										{	/* Module/foreign.scm 250 */
																											return
																												NULLP(CDR
																												(BgL_cdrzd22091zd2_1652));
																										}
																									else
																										{	/* Module/foreign.scm 250 */
																											return ((bool_t) 0);
																										}
																								}
																							else
																								{	/* Module/foreign.scm 250 */
																									return ((bool_t) 0);
																								}
																						}
																					else
																						{	/* Module/foreign.scm 250 */
																							if (
																								(CAR(
																										((obj_t) BgL_tzd2expzd2_34))
																									== CNST_TABLE_REF(14L)))
																								{	/* Module/foreign.scm 250 */
																									if (PAIRP
																										(BgL_cdrzd22091zd2_1652))
																										{	/* Module/foreign.scm 250 */
																											obj_t
																												BgL_cdrzd22116zd2_1666;
																											BgL_cdrzd22116zd2_1666 =
																												CDR
																												(BgL_cdrzd22091zd2_1652);
																											{	/* Module/foreign.scm 250 */
																												bool_t
																													BgL_test2572z00_4070;
																												{	/* Module/foreign.scm 250 */
																													obj_t BgL_tmpz00_4071;

																													BgL_tmpz00_4071 =
																														CAR
																														(BgL_cdrzd22091zd2_1652);
																													BgL_test2572z00_4070 =
																														SYMBOLP
																														(BgL_tmpz00_4071);
																												}
																												if (BgL_test2572z00_4070)
																													{	/* Module/foreign.scm 250 */
																														if (PAIRP
																															(BgL_cdrzd22116zd2_1666))
																															{	/* Module/foreign.scm 250 */
																																obj_t
																																	BgL_carzd22118zd2_1670;
																																BgL_carzd22118zd2_1670
																																	=
																																	CAR
																																	(BgL_cdrzd22116zd2_1666);
																																{

																																	if (NULLP
																																		(BgL_carzd22118zd2_1670))
																																		{	/* Module/foreign.scm 250 */
																																		BgL_kapzd22122zd2_1671:
																																			if (NULLP
																																				(CDR(((obj_t) BgL_cdrzd22116zd2_1666))))
																																				{	/* Module/foreign.scm 250 */
																																					BGL_TAIL
																																						return
																																						BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00
																																						(BgL_carzd22118zd2_1670);
																																				}
																																			else
																																				{	/* Module/foreign.scm 250 */
																																					return
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 250 */
																																			if (PAIRP
																																				(BgL_carzd22118zd2_1670))
																																				{	/* Module/foreign.scm 250 */
																																					goto
																																						BgL_kapzd22122zd2_1671;
																																				}
																																			else
																																				{	/* Module/foreign.scm 250 */
																																					return
																																						(
																																						(bool_t)
																																						0);
																																				}
																																		}
																																}
																															}
																														else
																															{	/* Module/foreign.scm 250 */
																																return ((bool_t)
																																	0);
																															}
																													}
																												else
																													{	/* Module/foreign.scm 250 */
																														return ((bool_t) 0);
																													}
																											}
																										}
																									else
																										{	/* Module/foreign.scm 250 */
																											return ((bool_t) 0);
																										}
																								}
																							else
																								{	/* Module/foreign.scm 250 */
																									if (
																										(CAR(
																												((obj_t)
																													BgL_tzd2expzd2_34)) ==
																											CNST_TABLE_REF(15L)))
																										{
																											obj_t BgL_slotsz00_4091;

																											BgL_slotsz00_4091 =
																												CDR(
																												((obj_t)
																													BgL_tzd2expzd2_34));
																											BgL_slotsz00_1609 =
																												BgL_slotsz00_4091;
																											goto
																												BgL_tagzd21892zd2_1610;
																										}
																									else
																										{	/* Module/foreign.scm 250 */
																											return ((bool_t) 0);
																										}
																								}
																						}
																				}
																		}
																}
															}
													}
											}
									}
							}
						else
							{	/* Module/foreign.scm 250 */
								return ((bool_t) 0);
							}
					}
			}
		}

	}



/* parse-c-extern-type */
	obj_t BGl_parsezd2czd2externzd2typezd2zzmodule_foreignz00(obj_t
		BgL_typez00_35)
	{
		{	/* Module/foreign.scm 287 */
			{
				obj_t BgL_idz00_1797;
				obj_t BgL_tzd2expzd2_1798;

				{	/* Module/foreign.scm 288 */
					obj_t BgL_cdrzd22178zd2_1803;

					BgL_cdrzd22178zd2_1803 = CDR(BgL_typez00_35);
					if ((CAR(BgL_typez00_35) == CNST_TABLE_REF(5L)))
						{	/* Module/foreign.scm 288 */
							if (PAIRP(BgL_cdrzd22178zd2_1803))
								{	/* Module/foreign.scm 288 */
									obj_t BgL_carzd22181zd2_1807;
									obj_t BgL_cdrzd22182zd2_1808;

									BgL_carzd22181zd2_1807 = CAR(BgL_cdrzd22178zd2_1803);
									BgL_cdrzd22182zd2_1808 = CDR(BgL_cdrzd22178zd2_1803);
									if (SYMBOLP(BgL_carzd22181zd2_1807))
										{	/* Module/foreign.scm 288 */
											if (PAIRP(BgL_cdrzd22182zd2_1808))
												{	/* Module/foreign.scm 288 */
													obj_t BgL_carzd22187zd2_1811;

													BgL_carzd22187zd2_1811 = CAR(BgL_cdrzd22182zd2_1808);
													if (STRINGP(BgL_carzd22187zd2_1811))
														{	/* Module/foreign.scm 288 */
															if (NULLP(CDR(BgL_cdrzd22182zd2_1808)))
																{	/* Module/foreign.scm 288 */
																	BGL_TAIL return
																		BGl_parsezd2czd2foreignzd2typezd2zzmodule_foreignz00
																		(BgL_typez00_35);
																}
															else
																{	/* Module/foreign.scm 288 */
																	obj_t BgL_carzd22204zd2_1816;
																	obj_t BgL_cdrzd22205zd2_1817;

																	BgL_carzd22204zd2_1816 =
																		CAR(((obj_t) BgL_cdrzd22178zd2_1803));
																	BgL_cdrzd22205zd2_1817 =
																		CDR(((obj_t) BgL_cdrzd22178zd2_1803));
																	if (SYMBOLP(BgL_carzd22204zd2_1816))
																		{	/* Module/foreign.scm 288 */
																			obj_t BgL_cdrzd22214zd2_1819;

																			BgL_cdrzd22214zd2_1819 =
																				CDR(((obj_t) BgL_cdrzd22205zd2_1817));
																			if (PAIRP(BgL_cdrzd22214zd2_1819))
																				{	/* Module/foreign.scm 288 */
																					bool_t BgL_test2586z00_4124;

																					{	/* Module/foreign.scm 288 */
																						obj_t BgL_tmpz00_4125;

																						BgL_tmpz00_4125 =
																							CAR(BgL_cdrzd22214zd2_1819);
																						BgL_test2586z00_4124 =
																							STRINGP(BgL_tmpz00_4125);
																					}
																					if (BgL_test2586z00_4124)
																						{	/* Module/foreign.scm 288 */
																							if (NULLP(CDR
																									(BgL_cdrzd22214zd2_1819)))
																								{	/* Module/foreign.scm 288 */
																									obj_t BgL_arg2089z00_1825;

																									BgL_arg2089z00_1825 =
																										CAR(
																										((obj_t)
																											BgL_cdrzd22205zd2_1817));
																									BgL_idz00_1797 =
																										BgL_carzd22204zd2_1816;
																									BgL_tzd2expzd2_1798 =
																										BgL_arg2089z00_1825;
																								BgL_tagzd22169zd2_1799:
																									{	/* Module/foreign.scm 292 */
																										obj_t
																											BgL_foreignzd2typezd2_1857;
																										BgL_foreignzd2typezd2_1857 =
																											BGl_czd2externzd2typezd2ze3czd2foreignzd2typez31zzmodule_foreignz00
																											(BgL_tzd2expzd2_1798);
																										if (CBOOL
																											(BgL_foreignzd2typezd2_1857))
																											{	/* Module/foreign.scm 293 */
																												BGL_TAIL return
																													BGl_parsezd2czd2foreignzd2typezd2zzmodule_foreignz00
																													(BgL_typez00_35);
																											}
																										else
																											{	/* Module/foreign.scm 295 */
																												obj_t
																													BgL_list2114z00_1858;
																												BgL_list2114z00_1858 =
																													MAKE_YOUNG_PAIR(BNIL,
																													BNIL);
																												return
																													BGl_userzd2errorzd2zztools_errorz00
																													(BGl_string2325z00zzmodule_foreignz00,
																													BGl_string2335z00zzmodule_foreignz00,
																													BgL_typez00_35,
																													BgL_list2114z00_1858);
																											}
																									}
																								}
																							else
																								{	/* Module/foreign.scm 288 */
																								BgL_tagzd22170zd2_1800:
																									{	/* Module/foreign.scm 297 */
																										obj_t BgL_list2115z00_1859;

																										BgL_list2115z00_1859 =
																											MAKE_YOUNG_PAIR(BNIL,
																											BNIL);
																										return
																											BGl_userzd2errorzd2zztools_errorz00
																											(BGl_string2325z00zzmodule_foreignz00,
																											BGl_string2335z00zzmodule_foreignz00,
																											BgL_typez00_35,
																											BgL_list2115z00_1859);
																									}
																								}
																						}
																					else
																						{	/* Module/foreign.scm 288 */
																							goto BgL_tagzd22170zd2_1800;
																						}
																				}
																			else
																				{	/* Module/foreign.scm 288 */
																					goto BgL_tagzd22170zd2_1800;
																				}
																		}
																	else
																		{	/* Module/foreign.scm 288 */
																			goto BgL_tagzd22170zd2_1800;
																		}
																}
														}
													else
														{	/* Module/foreign.scm 288 */
															obj_t BgL_carzd22229zd2_1830;
															obj_t BgL_cdrzd22230zd2_1831;

															BgL_carzd22229zd2_1830 =
																CAR(((obj_t) BgL_cdrzd22178zd2_1803));
															BgL_cdrzd22230zd2_1831 =
																CDR(((obj_t) BgL_cdrzd22178zd2_1803));
															if (SYMBOLP(BgL_carzd22229zd2_1830))
																{	/* Module/foreign.scm 288 */
																	obj_t BgL_cdrzd22238zd2_1833;

																	BgL_cdrzd22238zd2_1833 =
																		CDR(((obj_t) BgL_cdrzd22230zd2_1831));
																	if (PAIRP(BgL_cdrzd22238zd2_1833))
																		{	/* Module/foreign.scm 288 */
																			bool_t BgL_test2591z00_4151;

																			{	/* Module/foreign.scm 288 */
																				obj_t BgL_tmpz00_4152;

																				BgL_tmpz00_4152 =
																					CAR(BgL_cdrzd22238zd2_1833);
																				BgL_test2591z00_4151 =
																					STRINGP(BgL_tmpz00_4152);
																			}
																			if (BgL_test2591z00_4151)
																				{	/* Module/foreign.scm 288 */
																					if (NULLP(CDR
																							(BgL_cdrzd22238zd2_1833)))
																						{	/* Module/foreign.scm 288 */
																							obj_t BgL_arg2100z00_1839;

																							BgL_arg2100z00_1839 =
																								CAR(
																								((obj_t)
																									BgL_cdrzd22230zd2_1831));
																							{
																								obj_t BgL_tzd2expzd2_4161;
																								obj_t BgL_idz00_4160;

																								BgL_idz00_4160 =
																									BgL_carzd22229zd2_1830;
																								BgL_tzd2expzd2_4161 =
																									BgL_arg2100z00_1839;
																								BgL_tzd2expzd2_1798 =
																									BgL_tzd2expzd2_4161;
																								BgL_idz00_1797 = BgL_idz00_4160;
																								goto BgL_tagzd22169zd2_1799;
																							}
																						}
																					else
																						{	/* Module/foreign.scm 288 */
																							goto BgL_tagzd22170zd2_1800;
																						}
																				}
																			else
																				{	/* Module/foreign.scm 288 */
																					goto BgL_tagzd22170zd2_1800;
																				}
																		}
																	else
																		{	/* Module/foreign.scm 288 */
																			goto BgL_tagzd22170zd2_1800;
																		}
																}
															else
																{	/* Module/foreign.scm 288 */
																	goto BgL_tagzd22170zd2_1800;
																}
														}
												}
											else
												{	/* Module/foreign.scm 288 */
													goto BgL_tagzd22170zd2_1800;
												}
										}
									else
										{	/* Module/foreign.scm 288 */
											obj_t BgL_carzd22255zd2_1843;
											obj_t BgL_cdrzd22256zd2_1844;

											BgL_carzd22255zd2_1843 =
												CAR(((obj_t) BgL_cdrzd22178zd2_1803));
											BgL_cdrzd22256zd2_1844 =
												CDR(((obj_t) BgL_cdrzd22178zd2_1803));
											if (SYMBOLP(BgL_carzd22255zd2_1843))
												{	/* Module/foreign.scm 288 */
													if (PAIRP(BgL_cdrzd22256zd2_1844))
														{	/* Module/foreign.scm 288 */
															obj_t BgL_cdrzd22262zd2_1847;

															BgL_cdrzd22262zd2_1847 =
																CDR(BgL_cdrzd22256zd2_1844);
															if (PAIRP(BgL_cdrzd22262zd2_1847))
																{	/* Module/foreign.scm 288 */
																	bool_t BgL_test2596z00_4173;

																	{	/* Module/foreign.scm 288 */
																		obj_t BgL_tmpz00_4174;

																		BgL_tmpz00_4174 =
																			CAR(BgL_cdrzd22262zd2_1847);
																		BgL_test2596z00_4173 =
																			STRINGP(BgL_tmpz00_4174);
																	}
																	if (BgL_test2596z00_4173)
																		{	/* Module/foreign.scm 288 */
																			if (NULLP(CDR(BgL_cdrzd22262zd2_1847)))
																				{
																					obj_t BgL_tzd2expzd2_4181;
																					obj_t BgL_idz00_4180;

																					BgL_idz00_4180 =
																						BgL_carzd22255zd2_1843;
																					BgL_tzd2expzd2_4181 =
																						CAR(BgL_cdrzd22256zd2_1844);
																					BgL_tzd2expzd2_1798 =
																						BgL_tzd2expzd2_4181;
																					BgL_idz00_1797 = BgL_idz00_4180;
																					goto BgL_tagzd22169zd2_1799;
																				}
																			else
																				{	/* Module/foreign.scm 288 */
																					goto BgL_tagzd22170zd2_1800;
																				}
																		}
																	else
																		{	/* Module/foreign.scm 288 */
																			goto BgL_tagzd22170zd2_1800;
																		}
																}
															else
																{	/* Module/foreign.scm 288 */
																	goto BgL_tagzd22170zd2_1800;
																}
														}
													else
														{	/* Module/foreign.scm 288 */
															goto BgL_tagzd22170zd2_1800;
														}
												}
											else
												{	/* Module/foreign.scm 288 */
													goto BgL_tagzd22170zd2_1800;
												}
										}
								}
							else
								{	/* Module/foreign.scm 288 */
									goto BgL_tagzd22170zd2_1800;
								}
						}
					else
						{	/* Module/foreign.scm 288 */
							goto BgL_tagzd22170zd2_1800;
						}
				}
			}
		}

	}



/* c-extern-type->c-foreign-type */
	obj_t
		BGl_czd2externzd2typezd2ze3czd2foreignzd2typez31zzmodule_foreignz00(obj_t
		BgL_tzd2expzd2_36)
	{
		{	/* Module/foreign.scm 302 */
			{
				obj_t BgL_slotsz00_1868;
				obj_t BgL_slotsz00_1861;

				if (SYMBOLP(BgL_tzd2expzd2_36))
					{	/* Module/foreign.scm 303 */
						return BgL_tzd2expzd2_36;
					}
				else
					{	/* Module/foreign.scm 303 */
						if (PAIRP(BgL_tzd2expzd2_36))
							{	/* Module/foreign.scm 303 */
								obj_t BgL_carzd22293zd2_1875;
								obj_t BgL_cdrzd22294zd2_1876;

								BgL_carzd22293zd2_1875 = CAR(((obj_t) BgL_tzd2expzd2_36));
								BgL_cdrzd22294zd2_1876 = CDR(((obj_t) BgL_tzd2expzd2_36));
								if ((BgL_carzd22293zd2_1875 == CNST_TABLE_REF(10L)))
									{	/* Module/foreign.scm 303 */
										BgL_slotsz00_1861 = BgL_cdrzd22294zd2_1876;
									BgL_tagzd22279zd2_1862:
										{
											obj_t BgL_slotsz00_2005;

											BgL_slotsz00_2005 = BgL_slotsz00_1861;
										BgL_zc3z04anonymousza32228ze3z87_2006:
											if (NULLP(BgL_slotsz00_2005))
												{	/* Module/foreign.scm 308 */
													return BgL_tzd2expzd2_36;
												}
											else
												{
													obj_t BgL_idz00_2008;
													obj_t BgL_namez00_2009;

													{	/* Module/foreign.scm 310 */
														obj_t BgL_ezd22508zd2_2012;

														BgL_ezd22508zd2_2012 =
															CAR(((obj_t) BgL_slotsz00_2005));
														if (PAIRP(BgL_ezd22508zd2_2012))
															{	/* Module/foreign.scm 310 */
																obj_t BgL_carzd22513zd2_2014;
																obj_t BgL_cdrzd22514zd2_2015;

																BgL_carzd22513zd2_2014 =
																	CAR(BgL_ezd22508zd2_2012);
																BgL_cdrzd22514zd2_2015 =
																	CDR(BgL_ezd22508zd2_2012);
																if (SYMBOLP(BgL_carzd22513zd2_2014))
																	{	/* Module/foreign.scm 310 */
																		if (PAIRP(BgL_cdrzd22514zd2_2015))
																			{	/* Module/foreign.scm 310 */
																				obj_t BgL_carzd22518zd2_2018;

																				BgL_carzd22518zd2_2018 =
																					CAR(BgL_cdrzd22514zd2_2015);
																				if (STRINGP(BgL_carzd22518zd2_2018))
																					{	/* Module/foreign.scm 310 */
																						if (NULLP(CDR
																								(BgL_cdrzd22514zd2_2015)))
																							{	/* Module/foreign.scm 310 */
																								BgL_idz00_2008 =
																									BgL_carzd22513zd2_2014;
																								BgL_namez00_2009 =
																									BgL_carzd22518zd2_2018;
																								{	/* Module/foreign.scm 312 */
																									obj_t BgL_pidz00_2023;

																									BgL_pidz00_2023 =
																										BGl_parsezd2idzd2zzast_identz00
																										(BgL_idz00_2008,
																										BGl_findzd2locationzd2zztools_locationz00
																										(BgL_tzd2expzd2_36));
																									{	/* Module/foreign.scm 312 */
																										obj_t BgL_sidz00_2024;

																										BgL_sidz00_2024 =
																											CAR(BgL_pidz00_2023);
																										{	/* Module/foreign.scm 313 */
																											obj_t BgL_typez00_2025;

																											BgL_typez00_2025 =
																												(((BgL_typez00_bglt)
																													COBJECT((
																															(BgL_typez00_bglt)
																															CDR
																															(BgL_pidz00_2023))))->
																												BgL_idz00);
																											{	/* Module/foreign.scm 314 */

																												{	/* Module/foreign.scm 315 */
																													obj_t BgL_xz00_2941;

																													BgL_xz00_2941 =
																														BGl_checkzd2idzd2zzast_identz00
																														(BgL_pidz00_2023,
																														BgL_tzd2expzd2_36);
																													((bool_t) 1);
																												}
																												{	/* Module/foreign.scm 318 */
																													obj_t
																														BgL_arg2238z00_2027;
																													obj_t
																														BgL_arg2239z00_2028;
																													BgL_arg2238z00_2027 =
																														CAR(((obj_t)
																															BgL_slotsz00_2005));
																													{	/* Module/foreign.scm 318 */
																														obj_t
																															BgL_arg2240z00_2029;
																														BgL_arg2240z00_2029
																															=
																															MAKE_YOUNG_PAIR
																															(BgL_namez00_2009,
																															BNIL);
																														BgL_arg2239z00_2028
																															=
																															MAKE_YOUNG_PAIR
																															(BgL_sidz00_2024,
																															BgL_arg2240z00_2029);
																													}
																													{	/* Module/foreign.scm 318 */
																														obj_t
																															BgL_tmpz00_4223;
																														BgL_tmpz00_4223 =
																															((obj_t)
																															BgL_arg2238z00_2027);
																														SET_CDR
																															(BgL_tmpz00_4223,
																															BgL_arg2239z00_2028);
																													}
																												}
																												{	/* Module/foreign.scm 319 */
																													obj_t
																														BgL_arg2241z00_2030;
																													BgL_arg2241z00_2030 =
																														CAR(((obj_t)
																															BgL_slotsz00_2005));
																													{	/* Module/foreign.scm 319 */
																														obj_t
																															BgL_tmpz00_4228;
																														BgL_tmpz00_4228 =
																															((obj_t)
																															BgL_arg2241z00_2030);
																														SET_CAR
																															(BgL_tmpz00_4228,
																															BgL_typez00_2025);
																													}
																												}
																												{	/* Module/foreign.scm 320 */
																													obj_t
																														BgL_arg2242z00_2031;
																													BgL_arg2242z00_2031 =
																														CDR(((obj_t)
																															BgL_slotsz00_2005));
																													{
																														obj_t
																															BgL_slotsz00_4233;
																														BgL_slotsz00_4233 =
																															BgL_arg2242z00_2031;
																														BgL_slotsz00_2005 =
																															BgL_slotsz00_4233;
																														goto
																															BgL_zc3z04anonymousza32228ze3z87_2006;
																													}
																												}
																											}
																										}
																									}
																								}
																							}
																						else
																							{	/* Module/foreign.scm 310 */
																								return BFALSE;
																							}
																					}
																				else
																					{	/* Module/foreign.scm 310 */
																						return BFALSE;
																					}
																			}
																		else
																			{	/* Module/foreign.scm 310 */
																				return BFALSE;
																			}
																	}
																else
																	{	/* Module/foreign.scm 310 */
																		return BFALSE;
																	}
															}
														else
															{	/* Module/foreign.scm 310 */
																return BFALSE;
															}
													}
												}
										}
									}
								else
									{	/* Module/foreign.scm 303 */
										if ((BgL_carzd22293zd2_1875 == CNST_TABLE_REF(11L)))
											{
												obj_t BgL_slotsz00_4237;

												BgL_slotsz00_4237 = BgL_cdrzd22294zd2_1876;
												BgL_slotsz00_1861 = BgL_slotsz00_4237;
												goto BgL_tagzd22279zd2_1862;
											}
										else
											{	/* Module/foreign.scm 303 */
												if (
													(CAR(
															((obj_t) BgL_tzd2expzd2_36)) ==
														CNST_TABLE_REF(13L)))
													{	/* Module/foreign.scm 303 */
														if (PAIRP(BgL_cdrzd22294zd2_1876))
															{	/* Module/foreign.scm 303 */
																bool_t BgL_test2610z00_4245;

																{	/* Module/foreign.scm 303 */
																	obj_t BgL_tmpz00_4246;

																	BgL_tmpz00_4246 = CAR(BgL_cdrzd22294zd2_1876);
																	BgL_test2610z00_4245 =
																		SYMBOLP(BgL_tmpz00_4246);
																}
																if (BgL_test2610z00_4245)
																	{	/* Module/foreign.scm 303 */
																		if (NULLP(CDR(BgL_cdrzd22294zd2_1876)))
																			{	/* Module/foreign.scm 303 */
																				return BgL_tzd2expzd2_36;
																			}
																		else
																			{	/* Module/foreign.scm 303 */
																				return BFALSE;
																			}
																	}
																else
																	{	/* Module/foreign.scm 303 */
																		return BFALSE;
																	}
															}
														else
															{	/* Module/foreign.scm 303 */
																return BFALSE;
															}
													}
												else
													{	/* Module/foreign.scm 303 */
														obj_t BgL_carzd22351zd2_1895;
														obj_t BgL_cdrzd22352zd2_1896;

														BgL_carzd22351zd2_1895 =
															CAR(((obj_t) BgL_tzd2expzd2_36));
														BgL_cdrzd22352zd2_1896 =
															CDR(((obj_t) BgL_tzd2expzd2_36));
														{

															if (
																(BgL_carzd22351zd2_1895 == CNST_TABLE_REF(17L)))
																{	/* Module/foreign.scm 303 */
																BgL_kapzd22353zd2_1897:
																	if (PAIRP(BgL_cdrzd22352zd2_1896))
																		{	/* Module/foreign.scm 303 */
																			bool_t BgL_test2614z00_4261;

																			{	/* Module/foreign.scm 303 */
																				obj_t BgL_tmpz00_4262;

																				BgL_tmpz00_4262 =
																					CAR(BgL_cdrzd22352zd2_1896);
																				BgL_test2614z00_4261 =
																					SYMBOLP(BgL_tmpz00_4262);
																			}
																			if (BgL_test2614z00_4261)
																				{	/* Module/foreign.scm 303 */
																					if (NULLP(CDR
																							(BgL_cdrzd22352zd2_1896)))
																						{	/* Module/foreign.scm 303 */
																							return BgL_tzd2expzd2_36;
																						}
																					else
																						{	/* Module/foreign.scm 303 */
																							obj_t BgL_cdrzd22362zd2_1941;

																							BgL_cdrzd22362zd2_1941 =
																								CDR(
																								((obj_t) BgL_tzd2expzd2_36));
																							if (
																								(CAR(
																										((obj_t) BgL_tzd2expzd2_36))
																									== CNST_TABLE_REF(14L)))
																								{	/* Module/foreign.scm 303 */
																									obj_t BgL_cdrzd22365zd2_1944;

																									BgL_cdrzd22365zd2_1944 =
																										CDR(
																										((obj_t)
																											BgL_cdrzd22362zd2_1941));
																									{	/* Module/foreign.scm 303 */
																										bool_t BgL_test2617z00_4277;

																										{	/* Module/foreign.scm 303 */
																											obj_t BgL_tmpz00_4278;

																											BgL_tmpz00_4278 =
																												CAR(
																												((obj_t)
																													BgL_cdrzd22362zd2_1941));
																											BgL_test2617z00_4277 =
																												SYMBOLP
																												(BgL_tmpz00_4278);
																										}
																										if (BgL_test2617z00_4277)
																											{	/* Module/foreign.scm 303 */
																												if (PAIRP
																													(BgL_cdrzd22365zd2_1944))
																													{	/* Module/foreign.scm 303 */
																														obj_t
																															BgL_carzd22367zd2_1948;
																														BgL_carzd22367zd2_1948
																															=
																															CAR
																															(BgL_cdrzd22365zd2_1944);
																														{

																															if (NULLP
																																(BgL_carzd22367zd2_1948))
																																{	/* Module/foreign.scm 303 */
																																BgL_kapzd22371zd2_1949:
																																	if (NULLP(CDR(
																																				((obj_t)
																																					BgL_cdrzd22365zd2_1944))))
																																		{	/* Module/foreign.scm 303 */
																																			if (BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00(BgL_carzd22367zd2_1948))
																																				{	/* Module/foreign.scm 330 */
																																					return
																																						BgL_tzd2expzd2_36;
																																				}
																																			else
																																				{	/* Module/foreign.scm 330 */
																																					return
																																						BFALSE;
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 303 */
																																			return
																																				BFALSE;
																																		}
																																}
																															else
																																{	/* Module/foreign.scm 303 */
																																	if (PAIRP
																																		(BgL_carzd22367zd2_1948))
																																		{	/* Module/foreign.scm 303 */
																																			goto
																																				BgL_kapzd22371zd2_1949;
																																		}
																																	else
																																		{	/* Module/foreign.scm 303 */
																																			return
																																				BFALSE;
																																		}
																																}
																														}
																													}
																												else
																													{	/* Module/foreign.scm 303 */
																														return BFALSE;
																													}
																											}
																										else
																											{	/* Module/foreign.scm 303 */
																												return BFALSE;
																											}
																									}
																								}
																							else
																								{	/* Module/foreign.scm 303 */
																									if (
																										(CAR(
																												((obj_t)
																													BgL_tzd2expzd2_36)) ==
																											CNST_TABLE_REF(15L)))
																										{	/* Module/foreign.scm 303 */
																											BgL_slotsz00_1868 =
																												BgL_cdrzd22362zd2_1941;
																										BgL_tagzd22284zd2_1869:
																											{
																												obj_t BgL_slotsz00_2037;

																												BgL_slotsz00_2037 =
																													BgL_slotsz00_1868;
																											BgL_zc3z04anonymousza32246ze3z87_2038:
																												if (NULLP
																													(BgL_slotsz00_2037))
																													{	/* Module/foreign.scm 335 */
																														return
																															BgL_tzd2expzd2_36;
																													}
																												else
																													{

																														{	/* Module/foreign.scm 337 */
																															obj_t
																																BgL_ezd22524zd2_2042;
																															BgL_ezd22524zd2_2042
																																=
																																CAR(((obj_t)
																																	BgL_slotsz00_2037));
																															if (PAIRP
																																(BgL_ezd22524zd2_2042))
																																{	/* Module/foreign.scm 337 */
																																	obj_t
																																		BgL_cdrzd22526zd2_2044;
																																	BgL_cdrzd22526zd2_2044
																																		=
																																		CDR
																																		(BgL_ezd22524zd2_2042);
																																	{	/* Module/foreign.scm 337 */
																																		bool_t
																																			BgL_test2626z00_4307;
																																		{	/* Module/foreign.scm 337 */
																																			obj_t
																																				BgL_tmpz00_4308;
																																			BgL_tmpz00_4308
																																				=
																																				CAR
																																				(BgL_ezd22524zd2_2042);
																																			BgL_test2626z00_4307
																																				=
																																				SYMBOLP
																																				(BgL_tmpz00_4308);
																																		}
																																		if (BgL_test2626z00_4307)
																																			{	/* Module/foreign.scm 337 */
																																				if (PAIRP(BgL_cdrzd22526zd2_2044))
																																					{	/* Module/foreign.scm 337 */
																																						bool_t
																																							BgL_test2628z00_4313;
																																						{	/* Module/foreign.scm 337 */
																																							obj_t
																																								BgL_tmpz00_4314;
																																							BgL_tmpz00_4314
																																								=
																																								CAR
																																								(BgL_cdrzd22526zd2_2044);
																																							BgL_test2628z00_4313
																																								=
																																								STRINGP
																																								(BgL_tmpz00_4314);
																																						}
																																						if (BgL_test2628z00_4313)
																																							{	/* Module/foreign.scm 337 */
																																								if (NULLP(CDR(BgL_cdrzd22526zd2_2044)))
																																									{	/* Module/foreign.scm 337 */
																																										{
																																											obj_t
																																												BgL_slotsz00_4320;
																																											BgL_slotsz00_4320
																																												=
																																												CDR
																																												(
																																												((obj_t) BgL_slotsz00_2037));
																																											BgL_slotsz00_2037
																																												=
																																												BgL_slotsz00_4320;
																																											goto
																																												BgL_zc3z04anonymousza32246ze3z87_2038;
																																										}
																																									}
																																								else
																																									{	/* Module/foreign.scm 337 */
																																										return
																																											BFALSE;
																																									}
																																							}
																																						else
																																							{	/* Module/foreign.scm 337 */
																																								return
																																									BFALSE;
																																							}
																																					}
																																				else
																																					{	/* Module/foreign.scm 337 */
																																						return
																																							BFALSE;
																																					}
																																			}
																																		else
																																			{	/* Module/foreign.scm 337 */
																																				return
																																					BFALSE;
																																			}
																																	}
																																}
																															else
																																{	/* Module/foreign.scm 337 */
																																	return BFALSE;
																																}
																														}
																													}
																											}
																										}
																									else
																										{	/* Module/foreign.scm 303 */
																											return BFALSE;
																										}
																								}
																						}
																				}
																			else
																				{	/* Module/foreign.scm 303 */
																					obj_t BgL_cdrzd22389zd2_1962;

																					BgL_cdrzd22389zd2_1962 =
																						CDR(((obj_t) BgL_tzd2expzd2_36));
																					if (
																						(CAR(
																								((obj_t) BgL_tzd2expzd2_36)) ==
																							CNST_TABLE_REF(16L)))
																						{	/* Module/foreign.scm 303 */
																							bool_t BgL_test2631z00_4330;

																							{	/* Module/foreign.scm 303 */
																								obj_t BgL_tmpz00_4331;

																								BgL_tmpz00_4331 =
																									CAR(
																									((obj_t)
																										BgL_cdrzd22389zd2_1962));
																								BgL_test2631z00_4330 =
																									SYMBOLP(BgL_tmpz00_4331);
																							}
																							if (BgL_test2631z00_4330)
																								{	/* Module/foreign.scm 303 */
																									if (NULLP(CDR(
																												((obj_t)
																													BgL_cdrzd22389zd2_1962))))
																										{	/* Module/foreign.scm 303 */
																											return BgL_tzd2expzd2_36;
																										}
																									else
																										{	/* Module/foreign.scm 303 */
																											return BFALSE;
																										}
																								}
																							else
																								{	/* Module/foreign.scm 303 */
																									return BFALSE;
																								}
																						}
																					else
																						{	/* Module/foreign.scm 303 */
																							if (
																								(CAR(
																										((obj_t) BgL_tzd2expzd2_36))
																									== CNST_TABLE_REF(14L)))
																								{	/* Module/foreign.scm 303 */
																									obj_t BgL_cdrzd22409zd2_1974;

																									BgL_cdrzd22409zd2_1974 =
																										CDR(
																										((obj_t)
																											BgL_cdrzd22389zd2_1962));
																									{	/* Module/foreign.scm 303 */
																										bool_t BgL_test2634z00_4346;

																										{	/* Module/foreign.scm 303 */
																											obj_t BgL_tmpz00_4347;

																											BgL_tmpz00_4347 =
																												CAR(
																												((obj_t)
																													BgL_cdrzd22389zd2_1962));
																											BgL_test2634z00_4346 =
																												SYMBOLP
																												(BgL_tmpz00_4347);
																										}
																										if (BgL_test2634z00_4346)
																											{	/* Module/foreign.scm 303 */
																												if (PAIRP
																													(BgL_cdrzd22409zd2_1974))
																													{	/* Module/foreign.scm 303 */
																														obj_t
																															BgL_carzd22411zd2_1978;
																														BgL_carzd22411zd2_1978
																															=
																															CAR
																															(BgL_cdrzd22409zd2_1974);
																														{

																															if (NULLP
																																(BgL_carzd22411zd2_1978))
																																{	/* Module/foreign.scm 303 */
																																BgL_kapzd22415zd2_1979:
																																	if (NULLP(CDR(
																																				((obj_t)
																																					BgL_cdrzd22409zd2_1974))))
																																		{	/* Module/foreign.scm 303 */
																																			if (BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00(BgL_carzd22411zd2_1978))
																																				{	/* Module/foreign.scm 330 */
																																					return
																																						BgL_tzd2expzd2_36;
																																				}
																																			else
																																				{	/* Module/foreign.scm 330 */
																																					return
																																						BFALSE;
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 303 */
																																			return
																																				BFALSE;
																																		}
																																}
																															else
																																{	/* Module/foreign.scm 303 */
																																	if (PAIRP
																																		(BgL_carzd22411zd2_1978))
																																		{	/* Module/foreign.scm 303 */
																																			goto
																																				BgL_kapzd22415zd2_1979;
																																		}
																																	else
																																		{	/* Module/foreign.scm 303 */
																																			return
																																				BFALSE;
																																		}
																																}
																														}
																													}
																												else
																													{	/* Module/foreign.scm 303 */
																														return BFALSE;
																													}
																											}
																										else
																											{	/* Module/foreign.scm 303 */
																												return BFALSE;
																											}
																									}
																								}
																							else
																								{	/* Module/foreign.scm 303 */
																									if (
																										(CAR(
																												((obj_t)
																													BgL_tzd2expzd2_36)) ==
																											CNST_TABLE_REF(15L)))
																										{
																											obj_t BgL_slotsz00_4369;

																											BgL_slotsz00_4369 =
																												CDR(
																												((obj_t)
																													BgL_tzd2expzd2_36));
																											BgL_slotsz00_1868 =
																												BgL_slotsz00_4369;
																											goto
																												BgL_tagzd22284zd2_1869;
																										}
																									else
																										{	/* Module/foreign.scm 303 */
																											return BFALSE;
																										}
																								}
																						}
																				}
																		}
																	else
																		{	/* Module/foreign.scm 303 */
																			if (
																				(CAR(
																						((obj_t) BgL_tzd2expzd2_36)) ==
																					CNST_TABLE_REF(15L)))
																				{
																					obj_t BgL_slotsz00_4377;

																					BgL_slotsz00_4377 =
																						CDR(((obj_t) BgL_tzd2expzd2_36));
																					BgL_slotsz00_1868 = BgL_slotsz00_4377;
																					goto BgL_tagzd22284zd2_1869;
																				}
																			else
																				{	/* Module/foreign.scm 303 */
																					if (
																						(CAR(
																								((obj_t) BgL_tzd2expzd2_36)) ==
																							CNST_TABLE_REF(12L)))
																						{	/* Module/foreign.scm 303 */
																							if (NULLP(CDR(
																										((obj_t)
																											BgL_tzd2expzd2_36))))
																								{	/* Module/foreign.scm 303 */
																									return BgL_tzd2expzd2_36;
																								}
																							else
																								{	/* Module/foreign.scm 303 */
																									return BFALSE;
																								}
																						}
																					else
																						{	/* Module/foreign.scm 303 */
																							return BFALSE;
																						}
																				}
																		}
																}
															else
																{	/* Module/foreign.scm 303 */
																	if (
																		(BgL_carzd22351zd2_1895 ==
																			CNST_TABLE_REF(18L)))
																		{	/* Module/foreign.scm 303 */
																			goto BgL_kapzd22353zd2_1897;
																		}
																	else
																		{	/* Module/foreign.scm 303 */
																			if (
																				(CAR(
																						((obj_t) BgL_tzd2expzd2_36)) ==
																					CNST_TABLE_REF(16L)))
																				{	/* Module/foreign.scm 303 */
																					if (PAIRP(BgL_cdrzd22352zd2_1896))
																						{	/* Module/foreign.scm 303 */
																							bool_t BgL_test2647z00_4399;

																							{	/* Module/foreign.scm 303 */
																								obj_t BgL_tmpz00_4400;

																								BgL_tmpz00_4400 =
																									CAR(BgL_cdrzd22352zd2_1896);
																								BgL_test2647z00_4399 =
																									SYMBOLP(BgL_tmpz00_4400);
																							}
																							if (BgL_test2647z00_4399)
																								{	/* Module/foreign.scm 303 */
																									if (NULLP(CDR
																											(BgL_cdrzd22352zd2_1896)))
																										{	/* Module/foreign.scm 303 */
																											return BgL_tzd2expzd2_36;
																										}
																									else
																										{	/* Module/foreign.scm 303 */
																											return BFALSE;
																										}
																								}
																							else
																								{	/* Module/foreign.scm 303 */
																									return BFALSE;
																								}
																						}
																					else
																						{	/* Module/foreign.scm 303 */
																							return BFALSE;
																						}
																				}
																			else
																				{	/* Module/foreign.scm 303 */
																					obj_t BgL_cdrzd22467zd2_1908;

																					BgL_cdrzd22467zd2_1908 =
																						CDR(((obj_t) BgL_tzd2expzd2_36));
																					if (
																						(CAR(
																								((obj_t) BgL_tzd2expzd2_36)) ==
																							CNST_TABLE_REF(14L)))
																						{	/* Module/foreign.scm 303 */
																							if (PAIRP(BgL_cdrzd22467zd2_1908))
																								{	/* Module/foreign.scm 303 */
																									obj_t BgL_cdrzd22470zd2_1912;

																									BgL_cdrzd22470zd2_1912 =
																										CDR(BgL_cdrzd22467zd2_1908);
																									{	/* Module/foreign.scm 303 */
																										bool_t BgL_test2651z00_4416;

																										{	/* Module/foreign.scm 303 */
																											obj_t BgL_tmpz00_4417;

																											BgL_tmpz00_4417 =
																												CAR
																												(BgL_cdrzd22467zd2_1908);
																											BgL_test2651z00_4416 =
																												SYMBOLP
																												(BgL_tmpz00_4417);
																										}
																										if (BgL_test2651z00_4416)
																											{	/* Module/foreign.scm 303 */
																												if (PAIRP
																													(BgL_cdrzd22470zd2_1912))
																													{	/* Module/foreign.scm 303 */
																														obj_t
																															BgL_carzd22472zd2_1916;
																														BgL_carzd22472zd2_1916
																															=
																															CAR
																															(BgL_cdrzd22470zd2_1912);
																														{

																															if (NULLP
																																(BgL_carzd22472zd2_1916))
																																{	/* Module/foreign.scm 303 */
																																BgL_kapzd22476zd2_1917:
																																	if (NULLP(CDR(
																																				((obj_t)
																																					BgL_cdrzd22470zd2_1912))))
																																		{	/* Module/foreign.scm 303 */
																																			if (BGl_checkzd2czd2argszf3zf3zzmodule_foreignz00(BgL_carzd22472zd2_1916))
																																				{	/* Module/foreign.scm 330 */
																																					return
																																						BgL_tzd2expzd2_36;
																																				}
																																			else
																																				{	/* Module/foreign.scm 330 */
																																					return
																																						BFALSE;
																																				}
																																		}
																																	else
																																		{	/* Module/foreign.scm 303 */
																																			return
																																				BFALSE;
																																		}
																																}
																															else
																																{	/* Module/foreign.scm 303 */
																																	if (PAIRP
																																		(BgL_carzd22472zd2_1916))
																																		{	/* Module/foreign.scm 303 */
																																			goto
																																				BgL_kapzd22476zd2_1917;
																																		}
																																	else
																																		{	/* Module/foreign.scm 303 */
																																			return
																																				BFALSE;
																																		}
																																}
																														}
																													}
																												else
																													{	/* Module/foreign.scm 303 */
																														return BFALSE;
																													}
																											}
																										else
																											{	/* Module/foreign.scm 303 */
																												return BFALSE;
																											}
																									}
																								}
																							else
																								{	/* Module/foreign.scm 303 */
																									return BFALSE;
																								}
																						}
																					else
																						{	/* Module/foreign.scm 303 */
																							if (
																								(CAR(
																										((obj_t) BgL_tzd2expzd2_36))
																									== CNST_TABLE_REF(15L)))
																								{
																									obj_t BgL_slotsz00_4438;

																									BgL_slotsz00_4438 =
																										BgL_cdrzd22467zd2_1908;
																									BgL_slotsz00_1868 =
																										BgL_slotsz00_4438;
																									goto BgL_tagzd22284zd2_1869;
																								}
																							else
																								{	/* Module/foreign.scm 303 */
																									if (
																										(CAR(
																												((obj_t)
																													BgL_tzd2expzd2_36)) ==
																											CNST_TABLE_REF(12L)))
																										{	/* Module/foreign.scm 303 */
																											if (NULLP
																												(BgL_cdrzd22467zd2_1908))
																												{	/* Module/foreign.scm 303 */
																													return
																														BgL_tzd2expzd2_36;
																												}
																											else
																												{	/* Module/foreign.scm 303 */
																													return BFALSE;
																												}
																										}
																									else
																										{	/* Module/foreign.scm 303 */
																											return BFALSE;
																										}
																								}
																						}
																				}
																		}
																}
														}
													}
											}
									}
							}
						else
							{	/* Module/foreign.scm 303 */
								return BFALSE;
							}
					}
			}
		}

	}



/* foreign-accesses-add! */
	BGL_EXPORTED_DEF obj_t
		BGl_foreignzd2accesseszd2addz12z12zzmodule_foreignz00(obj_t
		BgL_accessesz00_37)
	{
		{	/* Module/foreign.scm 360 */
			return (BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00 =
				BGl_appendzd221011zd2zzmodule_foreignz00(BgL_accessesz00_37,
					BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00), BUNSPEC);
		}

	}



/* &foreign-accesses-add! */
	obj_t BGl_z62foreignzd2accesseszd2addz12z70zzmodule_foreignz00(obj_t
		BgL_envz00_2934, obj_t BgL_accessesz00_2935)
	{
		{	/* Module/foreign.scm 360 */
			return
				BGl_foreignzd2accesseszd2addz12z12zzmodule_foreignz00
				(BgL_accessesz00_2935);
		}

	}



/* &foreign-finalizer */
	obj_t BGl_z62foreignzd2finaliza7erz17zzmodule_foreignz00(obj_t
		BgL_envz00_2923)
	{
		{	/* Module/foreign.scm 366 */
			{
				obj_t BgL_l1202z00_2954;

				BgL_l1202z00_2954 = BGl_za2foreignzd2exportedza2zd2zzmodule_foreignz00;
			BgL_zc3z04anonymousza32260ze3z87_2953:
				if (PAIRP(BgL_l1202z00_2954))
					{	/* Module/foreign.scm 368 */
						{	/* Module/foreign.scm 369 */
							obj_t BgL_foreignz00_2955;

							BgL_foreignz00_2955 = CAR(BgL_l1202z00_2954);
							{	/* Module/foreign.scm 369 */
								obj_t BgL_foz00_2956;

								BgL_foz00_2956 = CAR(((obj_t) BgL_foreignz00_2955));
								{	/* Module/foreign.scm 369 */
									obj_t BgL_exz00_2957;

									BgL_exz00_2957 = CDR(((obj_t) BgL_foreignz00_2955));
									{	/* Module/foreign.scm 370 */
										obj_t BgL_globalz00_2958;

										{	/* Module/foreign.scm 371 */
											obj_t BgL_arg2271z00_2959;

											{	/* Module/foreign.scm 371 */
												obj_t BgL_pairz00_2960;

												BgL_pairz00_2960 = CDR(((obj_t) BgL_foz00_2956));
												BgL_arg2271z00_2959 = CAR(BgL_pairz00_2960);
											}
											BgL_globalz00_2958 =
												BGl_findzd2globalzd2zzast_envz00(BgL_arg2271z00_2959,
												BNIL);
										}
										{	/* Module/foreign.scm 371 */
											obj_t BgL_namez00_2961;

											{	/* Module/foreign.scm 372 */
												obj_t BgL_pairz00_2962;

												{	/* Module/foreign.scm 372 */
													obj_t BgL_pairz00_2963;

													BgL_pairz00_2963 = CDR(((obj_t) BgL_foz00_2956));
													BgL_pairz00_2962 = CDR(BgL_pairz00_2963);
												}
												BgL_namez00_2961 = CAR(BgL_pairz00_2962);
											}
											{	/* Module/foreign.scm 372 */

												{	/* Module/foreign.scm 374 */
													bool_t BgL_test2661z00_4463;

													{	/* Module/foreign.scm 374 */
														obj_t BgL_classz00_2964;

														BgL_classz00_2964 = BGl_globalz00zzast_varz00;
														if (BGL_OBJECTP(BgL_globalz00_2958))
															{	/* Module/foreign.scm 374 */
																BgL_objectz00_bglt BgL_arg1801z00_2965;

																BgL_arg1801z00_2965 =
																	(BgL_objectz00_bglt) (BgL_globalz00_2958);
																if (BGL_CONDEXPAND_ISA_ARCH64())
																	{	/* Module/foreign.scm 374 */
																		long BgL_idxz00_2966;

																		BgL_idxz00_2966 =
																			BGL_OBJECT_INHERITANCE_NUM
																			(BgL_arg1801z00_2965);
																		BgL_test2661z00_4463 =
																			(VECTOR_REF
																			(BGl_za2inheritancesza2z00zz__objectz00,
																				(BgL_idxz00_2966 + 2L)) ==
																			BgL_classz00_2964);
																	}
																else
																	{	/* Module/foreign.scm 374 */
																		bool_t BgL_res2315z00_2969;

																		{	/* Module/foreign.scm 374 */
																			obj_t BgL_oclassz00_2970;

																			{	/* Module/foreign.scm 374 */
																				long BgL_arg1808z00_2971;

																				{	/* Module/foreign.scm 374 */
																					long BgL_arg1809z00_2972;

																					BgL_arg1809z00_2972 =
																						BGL_OBJECT_CLASS_NUM
																						(BgL_arg1801z00_2965);
																					BgL_arg1808z00_2971 =
																						(BgL_arg1809z00_2972 - OBJECT_TYPE);
																				}
																				BgL_oclassz00_2970 =
																					VECTOR_REF
																					(BGl_za2classesza2z00zz__objectz00,
																					BgL_arg1808z00_2971);
																			}
																			{	/* Module/foreign.scm 374 */
																				bool_t BgL__ortest_1115z00_2973;

																				BgL__ortest_1115z00_2973 =
																					(BgL_classz00_2964 ==
																					BgL_oclassz00_2970);
																				if (BgL__ortest_1115z00_2973)
																					{	/* Module/foreign.scm 374 */
																						BgL_res2315z00_2969 =
																							BgL__ortest_1115z00_2973;
																					}
																				else
																					{	/* Module/foreign.scm 374 */
																						long BgL_odepthz00_2974;

																						BgL_odepthz00_2974 =
																							BGL_CLASS_DEPTH
																							(BgL_oclassz00_2970);
																						if ((2L < BgL_odepthz00_2974))
																							{	/* Module/foreign.scm 374 */
																								obj_t BgL_arg1797z00_2975;

																								BgL_arg1797z00_2975 =
																									BGL_CLASS_ANCESTORS_REF
																									(BgL_oclassz00_2970, 2L);
																								BgL_res2315z00_2969 =
																									(BgL_arg1797z00_2975 ==
																									BgL_classz00_2964);
																							}
																						else
																							{	/* Module/foreign.scm 374 */
																								BgL_res2315z00_2969 =
																									((bool_t) 0);
																							}
																					}
																			}
																		}
																		BgL_test2661z00_4463 = BgL_res2315z00_2969;
																	}
															}
														else
															{	/* Module/foreign.scm 374 */
																BgL_test2661z00_4463 = ((bool_t) 0);
															}
													}
													if (BgL_test2661z00_4463)
														{	/* Module/foreign.scm 383 */
															bool_t BgL_test2666z00_4483;

															{	/* Module/foreign.scm 383 */
																obj_t BgL_tmpz00_4484;

																BgL_tmpz00_4484 =
																	(((BgL_variablez00_bglt) COBJECT(
																			((BgL_variablez00_bglt)
																				((BgL_globalz00_bglt)
																					BgL_globalz00_2958))))->BgL_namez00);
																BgL_test2666z00_4483 = STRINGP(BgL_tmpz00_4484);
															}
															if (BgL_test2666z00_4483)
																{	/* Module/foreign.scm 383 */
																	BGl_userzd2warningzd2zztools_errorz00
																		(BGl_string2336z00zzmodule_foreignz00,
																		BGl_string2337z00zzmodule_foreignz00,
																		BgL_foreignz00_2955);
																}
															else
																{	/* Module/foreign.scm 383 */
																	((((BgL_variablez00_bglt) COBJECT(
																					((BgL_variablez00_bglt)
																						((BgL_globalz00_bglt)
																							BgL_globalz00_2958))))->
																			BgL_namez00) =
																		((obj_t) BgL_namez00_2961), BUNSPEC);
																}
														}
													else
														{	/* Module/foreign.scm 374 */
															if (CBOOL(BgL_exz00_2957))
																{	/* Module/foreign.scm 376 */
																	bool_t BgL_test2668z00_4495;

																	if (
																		(BGl_za2passza2z00zzengine_paramz00 ==
																			CNST_TABLE_REF(19L)))
																		{	/* Module/foreign.scm 376 */
																			BgL_test2668z00_4495 = ((bool_t) 1);
																		}
																	else
																		{	/* Module/foreign.scm 376 */
																			BgL_test2668z00_4495 =
																				(BGl_za2passza2z00zzengine_paramz00 ==
																				CNST_TABLE_REF(20L));
																		}
																	if (BgL_test2668z00_4495)
																		{	/* Module/foreign.scm 376 */
																			BFALSE;
																		}
																	else
																		{	/* Module/foreign.scm 380 */
																			obj_t BgL_arg2267z00_2976;

																			{	/* Module/foreign.scm 380 */
																				obj_t BgL_arg2269z00_2977;

																				{	/* Module/foreign.scm 380 */
																					obj_t BgL_pairz00_2978;

																					BgL_pairz00_2978 =
																						CDR(((obj_t) BgL_foz00_2956));
																					BgL_arg2269z00_2977 =
																						CAR(BgL_pairz00_2978);
																				}
																				{	/* Module/foreign.scm 379 */
																					obj_t BgL_list2270z00_2979;

																					BgL_list2270z00_2979 =
																						MAKE_YOUNG_PAIR(BgL_arg2269z00_2977,
																						BNIL);
																					BgL_arg2267z00_2976 =
																						BGl_formatz00zz__r4_output_6_10_3z00
																						(BGl_string2338z00zzmodule_foreignz00,
																						BgL_list2270z00_2979);
																				}
																			}
																			{	/* Module/foreign.scm 378 */
																				obj_t BgL_list2268z00_2980;

																				BgL_list2268z00_2980 =
																					MAKE_YOUNG_PAIR(BNIL, BNIL);
																				BGl_userzd2errorzd2zztools_errorz00
																					(BGl_string2336z00zzmodule_foreignz00,
																					BgL_arg2267z00_2976,
																					BgL_foreignz00_2955,
																					BgL_list2268z00_2980);
																			}
																		}
																}
															else
																{	/* Module/foreign.scm 375 */
																	BFALSE;
																}
														}
												}
											}
										}
									}
								}
							}
						}
						{
							obj_t BgL_l1202z00_4508;

							BgL_l1202z00_4508 = CDR(BgL_l1202z00_2954);
							BgL_l1202z00_2954 = BgL_l1202z00_4508;
							goto BgL_zc3z04anonymousza32260ze3z87_2953;
						}
					}
				else
					{	/* Module/foreign.scm 368 */
						((bool_t) 1);
					}
			}
			BGl_za2foreignzd2exportedza2zd2zzmodule_foreignz00 = BNIL;
			if (NULLP(BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00))
				{	/* Module/foreign.scm 393 */
					return CNST_TABLE_REF(2L);
				}
			else
				{	/* Module/foreign.scm 395 */
					obj_t BgL_accessesz00_2981;

					BgL_accessesz00_2981 =
						bgl_reverse_bang
						(BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00);
					BGl_za2foreignzd2accessesza2zd2zzmodule_foreignz00 = BNIL;
					{	/* Module/foreign.scm 397 */
						obj_t BgL_arg2275z00_2982;

						{	/* Module/foreign.scm 397 */
							obj_t BgL_idz00_2983;

							BgL_idz00_2983 = CNST_TABLE_REF(0L);
							{	/* Module/foreign.scm 397 */
								obj_t BgL_newz00_2984;

								BgL_newz00_2984 =
									create_struct(CNST_TABLE_REF(21L), (int) (5L));
								{	/* Module/foreign.scm 397 */
									int BgL_tmpz00_4518;

									BgL_tmpz00_4518 = (int) (4L);
									STRUCT_SET(BgL_newz00_2984, BgL_tmpz00_4518, BFALSE);
								}
								{	/* Module/foreign.scm 397 */
									int BgL_tmpz00_4521;

									BgL_tmpz00_4521 = (int) (3L);
									STRUCT_SET(BgL_newz00_2984, BgL_tmpz00_4521, BTRUE);
								}
								{	/* Module/foreign.scm 397 */
									int BgL_tmpz00_4524;

									BgL_tmpz00_4524 = (int) (2L);
									STRUCT_SET(BgL_newz00_2984, BgL_tmpz00_4524,
										BgL_accessesz00_2981);
								}
								{	/* Module/foreign.scm 397 */
									obj_t BgL_auxz00_4529;
									int BgL_tmpz00_4527;

									BgL_auxz00_4529 = BINT(48L);
									BgL_tmpz00_4527 = (int) (1L);
									STRUCT_SET(BgL_newz00_2984, BgL_tmpz00_4527, BgL_auxz00_4529);
								}
								{	/* Module/foreign.scm 397 */
									int BgL_tmpz00_4532;

									BgL_tmpz00_4532 = (int) (0L);
									STRUCT_SET(BgL_newz00_2984, BgL_tmpz00_4532, BgL_idz00_2983);
								}
								BgL_arg2275z00_2982 = BgL_newz00_2984;
						}}
						{	/* Module/foreign.scm 397 */
							obj_t BgL_list2276z00_2985;

							BgL_list2276z00_2985 = MAKE_YOUNG_PAIR(BgL_arg2275z00_2982, BNIL);
							return BgL_list2276z00_2985;
						}
					}
				}
		}

	}



/* default-c-type */
	obj_t BGl_defaultzd2czd2typez00zzmodule_foreignz00(obj_t BgL_typez00_38,
		obj_t BgL_srcz00_39)
	{
		{	/* Module/foreign.scm 402 */
			{	/* Module/foreign.scm 403 */
				bool_t BgL_test2671z00_4536;

				{	/* Module/foreign.scm 403 */
					BgL_typez00_bglt BgL_arg2281z00_2088;

					BgL_arg2281z00_2088 = BGl_getzd2defaultzd2typez00zztype_cachez00();
					BgL_test2671z00_4536 =
						(BgL_typez00_38 == ((obj_t) BgL_arg2281z00_2088));
				}
				if (BgL_test2671z00_4536)
					{	/* Module/foreign.scm 404 */
						BgL_typez00_bglt BgL_defaultz00_2085;

						BgL_defaultz00_2085 =
							BGl_getzd2defaultzd2czd2typezd2zztype_cachez00();
						BGl_userzd2warningzf2locationz20zztools_errorz00
							(BGl_findzd2locationzd2zztools_locationz00(BgL_srcz00_39),
							BGl_string2336z00zzmodule_foreignz00,
							BGl_string2339z00zzmodule_foreignz00,
							(((BgL_typez00_bglt) COBJECT(BgL_defaultz00_2085))->BgL_idz00));
						return ((obj_t) BgL_defaultz00_2085);
					}
				else
					{	/* Module/foreign.scm 403 */
						return BgL_typez00_38;
					}
			}
		}

	}



/* object-init */
	obj_t BGl_objectzd2initzd2zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			return BUNSPEC;
		}

	}



/* generic-init */
	obj_t BGl_genericzd2initzd2zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			return BUNSPEC;
		}

	}



/* method-init */
	obj_t BGl_methodzd2initzd2zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			return BUNSPEC;
		}

	}



/* imported-modules-init */
	obj_t BGl_importedzd2moduleszd2initz00zzmodule_foreignz00(void)
	{
		{	/* Module/foreign.scm 18 */
			BGl_modulezd2initializa7ationz75zztools_tracez00(54713316L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzmodule_modulez00(158397907L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzmodule_checksumz00(457474182L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzengine_paramz00(517137079L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzbackend_backendz00(216206620L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzast_glozd2declzd2(374700232L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zztools_errorz00(300504031L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zztools_shapez00(365925558L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zztype_typez00(515343395L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zztype_envz00(296457443L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zztype_toolsz00(453414928L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zztype_cachez00(346491734L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzast_varz00(90839984L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzast_envz00(146730773L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzast_identz00(174885617L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzforeign_ctypez00(396356879L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			BGl_modulezd2initializa7ationz75zzforeign_accessz00(471073666L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
			return
				BGl_modulezd2initializa7ationz75zztools_locationz00(462333240L,
				BSTRING_TO_STRING(BGl_string2340z00zzmodule_foreignz00));
		}

	}

#ifdef __cplusplus
}
#endif
