/*===========================================================================*/
/*   (Match/mexpand.scm)                                                     */
/*   Bigloo (4.7a)                                                           */
/*   Inria -- Sophia Antipolis (c)       Thu Feb 19 09:11:58 AM CET 2026     */
/*===========================================================================*/
/* COMPILATION: (/home/serrano/prgm/project/bigloo/4.7a/bin/bigloo -srfi bigloo-unsafe -O3 -fcfa-arithmetic -q -lib-dir /home/serrano/prgm/project/bigloo/4.7a/lib/bigloo/4.7a +rm -mklib -cc gcc -fsharing -q -no-hello -unsafe -safee -O4 -stdc -c Match/mexpand.scm -indent -o objs/obj_u/Match/mexpand.c) */
/* 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___MATCH_EXPAND_TYPE_DEFINITIONS
#define BGL___MATCH_EXPAND_TYPE_DEFINITIONS
#endif													// BGL___MATCH_EXPAND_TYPE_DEFINITIONS
#endif													// BGL_MODULE_TYPE_DEFINITIONS

	BGL_EXPORTED_DECL obj_t
		BGl_expandzd2matchzd2lambdaz00zz__match_expandz00(obj_t);
	static obj_t BGl_list1728z00zz__match_expandz00 = BUNSPEC;
	BGL_EXPORTED_DECL obj_t
		BGl_expandzd2matchzd2casez00zz__match_expandz00(obj_t);
	static obj_t BGl_list1731z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_requirezd2initializa7ationz75zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_list1744z00zz__match_expandz00 = BUNSPEC;
	BGL_EXPORTED_DECL obj_t
		BGl_modulezd2initializa7ationz75zz__match_expandz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__threadz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__objectz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__bexitz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__paramz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__match_s2cfunz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__match_normaliza7eza7(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__match_descriptionsz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__match_compilerz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zz__errorz00(long, char *);
	static obj_t BGl_toplevelzd2initzd2zz__match_expandz00(void);
	extern obj_t BGl_jimzd2gensymzd2zz__match_s2cfunz00;
	static obj_t BGl_z62zc3z04anonymousza31196ze3ze5zz__match_expandz00(obj_t,
		obj_t, obj_t);
	extern obj_t BGl_assqz00zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
	static obj_t BGl_cnstzd2initzd2zz__match_expandz00(void);
	static obj_t BGl_genericzd2initzd2zz__match_expandz00(void);
	static obj_t BGl_za2thezd2emptyzd2envza2z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_importedzd2moduleszd2initz00zz__match_expandz00(void);
	static obj_t BGl_gczd2rootszd2initz00zz__match_expandz00(void);
	static obj_t BGl_objectzd2initzd2zz__match_expandz00(void);
	extern obj_t BGl_memqz00zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
	static obj_t BGl_z62zc3z04anonymousza31240ze3ze5zz__match_expandz00(obj_t,
		obj_t, obj_t);
	static obj_t BGl_z62expandzd2matchzd2lambdaz62zz__match_expandz00(obj_t,
		obj_t);
	extern obj_t BGl_patternzd2variableszd2zz__match_descriptionsz00(obj_t);
	extern obj_t BGl_pcompilez00zz__match_compilerz00(obj_t);
	extern obj_t bstring_to_symbol(obj_t);
	static obj_t BGl_fetchzd2prototypeszd2zz__match_expandz00(obj_t);
	static obj_t BGl_methodzd2initzd2zz__match_expandz00(void);
	static obj_t BGl_symbol1729z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_z62expandzd2matchzd2casez62zz__match_expandz00(obj_t, obj_t);
	static obj_t BGl_symbol1732z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_symbol1735z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_symbol1737z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_symbol1739z00zz__match_expandz00 = BUNSPEC;
	extern obj_t BGl_normaliza7ezd2patternz75zz__match_normaliza7eza7(obj_t);
	static obj_t BGl_symbol1742z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_symbol1745z00zz__match_expandz00 = BUNSPEC;
	static obj_t BGl_symbol1747z00zz__match_expandz00 = BUNSPEC;
	extern obj_t BGl_errorz00zz__errorz00(obj_t, obj_t, obj_t);
	static obj_t *__cnst;


	   
		 
		BGL_DEFINE_STRING(BGl_string1730z00zz__match_expandz00,
		BgL_bgl_string1730za700za7za7_1750za7, "not", 3);
	      BGL_DEFINE_STRING(BGl_string1733z00zz__match_expandz00,
		BgL_bgl_string1733za700za7za7_1751za7, "any", 3);
	      BGL_DEFINE_STRING(BGl_string1734z00zz__match_expandz00,
		BgL_bgl_string1734za700za7za7_1752za7, "TAG-", 4);
	      BGL_DEFINE_STRING(BGl_string1736z00zz__match_expandz00,
		BgL_bgl_string1736za700za7za7_1753za7, "else", 4);
	      BGL_DEFINE_STRING(BGl_string1738z00zz__match_expandz00,
		BgL_bgl_string1738za700za7za7_1754za7, "tagged-or", 9);
	      BGL_DEFINE_STRING(BGl_string1740z00zz__match_expandz00,
		BgL_bgl_string1740za700za7za7_1755za7, "match-case", 10);
	      BGL_DEFINE_STRING(BGl_string1741z00zz__match_expandz00,
		BgL_bgl_string1741za700za7za7_1756za7, "Illegal expression", 18);
	      BGL_DEFINE_STRING(BGl_string1743z00zz__match_expandz00,
		BgL_bgl_string1743za700za7za7_1757za7, "labels", 6);
	      BGL_DEFINE_STRING(BGl_string1746z00zz__match_expandz00,
		BgL_bgl_string1746za700za7za7_1758za7, "t-or", 4);
	      BGL_DEFINE_STRING(BGl_string1748z00zz__match_expandz00,
		BgL_bgl_string1748za700za7za7_1759za7, "match-lambda", 12);
	      BGL_DEFINE_STRING(BGl_string1749z00zz__match_expandz00,
		BgL_bgl_string1749za700za7za7_1760za7, "__match_expand", 14);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_expandzd2matchzd2casezd2envzd2zz__match_expandz00,
		BgL_bgl_za762expandza7d2matc1761z00,
		BGl_z62expandzd2matchzd2casez62zz__match_expandz00, 0L, BUNSPEC, 1);
	     
		DEFINE_EXPORT_BGL_PROCEDURE
		(BGl_expandzd2matchzd2lambdazd2envzd2zz__match_expandz00,
		BgL_bgl_za762expandza7d2matc1762z00,
		BGl_z62expandzd2matchzd2lambdaz62zz__match_expandz00, 0L, BUNSPEC, 1);

/* contant bindings */
	static void bgl_constant_bindings()
	{
		BGL_BIND_PROCEDURE(BGl_expandzd2matchzd2lambdazd2envzd2zz__match_expandz00,
			BgL_bgl_za762expandza7d2matc1762z00);
		BGL_BIND_PROCEDURE(BGl_expandzd2matchzd2casezd2envzd2zz__match_expandz00,
			BgL_bgl_za762expandza7d2matc1761z00);
		BGL_BIND_STRING(BGl_string1749z00zz__match_expandz00,
			BgL_bgl_string1749za700za7za7_1760za7);
		BGL_BIND_STRING(BGl_string1748z00zz__match_expandz00,
			BgL_bgl_string1748za700za7za7_1759za7);
		BGL_BIND_STRING(BGl_string1746z00zz__match_expandz00,
			BgL_bgl_string1746za700za7za7_1758za7);
		BGL_BIND_STRING(BGl_string1743z00zz__match_expandz00,
			BgL_bgl_string1743za700za7za7_1757za7);
		BGL_BIND_STRING(BGl_string1741z00zz__match_expandz00,
			BgL_bgl_string1741za700za7za7_1756za7);
		BGL_BIND_STRING(BGl_string1740z00zz__match_expandz00,
			BgL_bgl_string1740za700za7za7_1755za7);
		BGL_BIND_STRING(BGl_string1738z00zz__match_expandz00,
			BgL_bgl_string1738za700za7za7_1754za7);
		BGL_BIND_STRING(BGl_string1736z00zz__match_expandz00,
			BgL_bgl_string1736za700za7za7_1753za7);
		BGL_BIND_STRING(BGl_string1734z00zz__match_expandz00,
			BgL_bgl_string1734za700za7za7_1752za7);
		BGL_BIND_STRING(BGl_string1733z00zz__match_expandz00,
			BgL_bgl_string1733za700za7za7_1751za7);
		BGL_BIND_STRING(BGl_string1730z00zz__match_expandz00,
			BgL_bgl_string1730za700za7za7_1750za7);
	}

/* 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_list1728z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_list1731z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_requirezd2initializa7ationz75zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_list1744z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_za2thezd2emptyzd2envza2z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1729z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1732z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1735z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1737z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1739z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1742z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1745z00zz__match_expandz00));
		ADD_ROOT((void *) (&BGl_symbol1747z00zz__match_expandz00));
#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_modulezd2initializa7ationz75zz__match_expandz00(long
		BgL_checksumz00_2136, char *BgL_fromz00_2137)
	{
		{
			if (CBOOL(BGl_requirezd2initializa7ationz75zz__match_expandz00))
				{
					BGl_requirezd2initializa7ationz75zz__match_expandz00 =
						BBOOL(((bool_t) 0));
					bgl_constant_bindings();
					BGl_gczd2rootszd2initz00zz__match_expandz00();
					BGl_cnstzd2initzd2zz__match_expandz00();
					BGl_importedzd2moduleszd2initz00zz__match_expandz00();
					return BGl_toplevelzd2initzd2zz__match_expandz00();
				}
			else
				{
					return BUNSPEC;
				}
		}

	}



/* cnst-init */
	obj_t BGl_cnstzd2initzd2zz__match_expandz00(void)
	{
		{	/* Match/mexpand.scm 26 */
			BGl_symbol1729z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1730z00zz__match_expandz00);
			BGl_symbol1732z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1733z00zz__match_expandz00);
			BGl_list1731z00zz__match_expandz00 =
				MAKE_YOUNG_PAIR(BGl_symbol1732z00zz__match_expandz00, BNIL);
			BGl_list1728z00zz__match_expandz00 =
				MAKE_YOUNG_PAIR(BGl_symbol1729z00zz__match_expandz00,
				MAKE_YOUNG_PAIR(BGl_list1731z00zz__match_expandz00, BNIL));
			BGl_symbol1735z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1736z00zz__match_expandz00);
			BGl_symbol1737z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1738z00zz__match_expandz00);
			BGl_symbol1739z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1740z00zz__match_expandz00);
			BGl_symbol1742z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1743z00zz__match_expandz00);
			BGl_symbol1745z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1746z00zz__match_expandz00);
			BGl_list1744z00zz__match_expandz00 =
				MAKE_YOUNG_PAIR(BGl_symbol1745z00zz__match_expandz00,
				MAKE_YOUNG_PAIR(BGl_symbol1737z00zz__match_expandz00, BNIL));
			return (BGl_symbol1747z00zz__match_expandz00 =
				bstring_to_symbol(BGl_string1748z00zz__match_expandz00), BUNSPEC);
		}

	}



/* gc-roots-init */
	obj_t BGl_gczd2rootszd2initz00zz__match_expandz00(void)
	{
		{	/* Match/mexpand.scm 26 */
			return bgl_gc_roots_register();
		}

	}



/* toplevel-init */
	obj_t BGl_toplevelzd2initzd2zz__match_expandz00(void)
	{
		{	/* Match/mexpand.scm 26 */
			return (BGl_za2thezd2emptyzd2envza2z00zz__match_expandz00 =
				BNIL, BUNSPEC);
		}

	}



/* expand-match-lambda */
	BGL_EXPORTED_DEF obj_t BGl_expandzd2matchzd2lambdaz00zz__match_expandz00(obj_t
		BgL_expz00_3)
	{
		{	/* Match/mexpand.scm 74 */
			{
				obj_t BgL_clausesz00_1221;
				obj_t BgL_kz00_1222;

				{	/* Match/mexpand.scm 98 */
					obj_t BgL_arg1194z00_1224;

					BgL_arg1194z00_1224 = CDR(((obj_t) BgL_expz00_3));
					{	/* Match/mexpand.scm 100 */
						obj_t BgL_zc3z04anonymousza31196ze3z87_2081;

						{
							int BgL_tmpz00_2162;

							BgL_tmpz00_2162 = (int) (1L);
							BgL_zc3z04anonymousza31196ze3z87_2081 =
								MAKE_L_PROCEDURE
								(BGl_z62zc3z04anonymousza31196ze3ze5zz__match_expandz00,
								BgL_tmpz00_2162);
						}
						PROCEDURE_L_SET(BgL_zc3z04anonymousza31196ze3z87_2081,
							(int) (0L), BgL_expz00_3);
						BgL_clausesz00_1221 = BgL_arg1194z00_1224;
						BgL_kz00_1222 = BgL_zc3z04anonymousza31196ze3z87_2081;
					BgL_clauseszd2ze3patternz31_1223:
						if (NULLP(BgL_clausesz00_1221))
							{	/* Match/mexpand.scm 78 */
								return
									((obj_t(*)(obj_t, obj_t,
											obj_t)) PROCEDURE_L_ENTRY(BgL_kz00_1222)) (BgL_kz00_1222,
									BGl_list1728z00zz__match_expandz00, BNIL);
							}
						else
							{	/* Match/mexpand.scm 80 */
								bool_t BgL_test1765z00_2174;

								{	/* Match/mexpand.scm 80 */
									obj_t BgL_tmpz00_2175;

									BgL_tmpz00_2175 = CAR(((obj_t) BgL_clausesz00_1221));
									BgL_test1765z00_2174 = PAIRP(BgL_tmpz00_2175);
								}
								if (BgL_test1765z00_2174)
									{	/* Match/mexpand.scm 83 */
										obj_t BgL_patternz00_1258;
										obj_t BgL_actionsz00_1259;
										obj_t BgL_restz00_1260;

										{	/* Match/mexpand.scm 83 */
											obj_t BgL_pairz00_1772;

											BgL_pairz00_1772 = CAR(((obj_t) BgL_clausesz00_1221));
											BgL_patternz00_1258 = CAR(BgL_pairz00_1772);
										}
										{	/* Match/mexpand.scm 84 */
											obj_t BgL_pairz00_1776;

											BgL_pairz00_1776 = CAR(((obj_t) BgL_clausesz00_1221));
											BgL_actionsz00_1259 = CDR(BgL_pairz00_1776);
										}
										BgL_restz00_1260 = CDR(((obj_t) BgL_clausesz00_1221));
										{	/* Match/mexpand.scm 86 */
											obj_t BgL_tagz00_1261;

											BgL_tagz00_1261 =
												BGL_PROCEDURE_CALL1
												(BGl_jimzd2gensymzd2zz__match_s2cfunz00,
												BGl_string1734z00zz__match_expandz00);
											if ((BgL_patternz00_1258 ==
													BGl_symbol1735z00zz__match_expandz00))
												{	/* Match/mexpand.scm 88 */
													obj_t BgL_arg1224z00_1262;
													obj_t BgL_arg1225z00_1263;

													{	/* Match/mexpand.scm 88 */
														obj_t BgL_arg1226z00_1264;

														{	/* Match/mexpand.scm 88 */
															obj_t BgL_arg1230z00_1265;
															obj_t BgL_arg1231z00_1266;

															BgL_arg1230z00_1265 =
																MAKE_YOUNG_PAIR
																(BGl_symbol1732z00zz__match_expandz00, BNIL);
															{	/* Match/mexpand.scm 88 */
																obj_t BgL_arg1232z00_1267;

																{	/* Match/mexpand.scm 88 */
																	obj_t BgL_arg1234z00_1268;

																	{	/* Match/mexpand.scm 88 */
																		obj_t BgL_arg1235z00_1269;

																		{	/* Match/mexpand.scm 88 */
																			obj_t BgL_arg1236z00_1270;

																			BgL_arg1236z00_1270 =
																				MAKE_YOUNG_PAIR
																				(BGl_symbol1732z00zz__match_expandz00,
																				BNIL);
																			BgL_arg1235z00_1269 =
																				MAKE_YOUNG_PAIR(BgL_arg1236z00_1270,
																				BNIL);
																		}
																		BgL_arg1234z00_1268 =
																			MAKE_YOUNG_PAIR
																			(BGl_symbol1729z00zz__match_expandz00,
																			BgL_arg1235z00_1269);
																	}
																	BgL_arg1232z00_1267 =
																		MAKE_YOUNG_PAIR(BgL_arg1234z00_1268, BNIL);
																}
																BgL_arg1231z00_1266 =
																	MAKE_YOUNG_PAIR(BgL_tagz00_1261,
																	BgL_arg1232z00_1267);
															}
															BgL_arg1226z00_1264 =
																MAKE_YOUNG_PAIR(BgL_arg1230z00_1265,
																BgL_arg1231z00_1266);
														}
														BgL_arg1224z00_1262 =
															MAKE_YOUNG_PAIR
															(BGl_symbol1737z00zz__match_expandz00,
															BgL_arg1226z00_1264);
													}
													{	/* Match/mexpand.scm 131 */
														obj_t BgL_arg1291z00_1778;

														BgL_arg1291z00_1778 =
															MAKE_YOUNG_PAIR(BgL_tagz00_1261,
															BgL_actionsz00_1259);
														BgL_arg1225z00_1263 =
															MAKE_YOUNG_PAIR(BgL_arg1291z00_1778, BNIL);
													}
													return
														((obj_t(*)(obj_t, obj_t,
																obj_t))
														PROCEDURE_L_ENTRY(BgL_kz00_1222)) (BgL_kz00_1222,
														BgL_arg1224z00_1262, BgL_arg1225z00_1263);
												}
											else
												{	/* Match/mexpand.scm 93 */
													obj_t BgL_zc3z04anonymousza31240ze3z87_2082;

													{
														int BgL_tmpz00_2208;

														BgL_tmpz00_2208 = (int) (4L);
														BgL_zc3z04anonymousza31240ze3z87_2082 =
															MAKE_L_PROCEDURE
															(BGl_z62zc3z04anonymousza31240ze3ze5zz__match_expandz00,
															BgL_tmpz00_2208);
													}
													PROCEDURE_L_SET(BgL_zc3z04anonymousza31240ze3z87_2082,
														(int) (0L), BgL_patternz00_1258);
													PROCEDURE_L_SET(BgL_zc3z04anonymousza31240ze3z87_2082,
														(int) (1L), BgL_tagz00_1261);
													PROCEDURE_L_SET(BgL_zc3z04anonymousza31240ze3z87_2082,
														(int) (2L), BgL_actionsz00_1259);
													PROCEDURE_L_SET(BgL_zc3z04anonymousza31240ze3z87_2082,
														(int) (3L), BgL_kz00_1222);
													{
														obj_t BgL_kz00_2220;
														obj_t BgL_clausesz00_2219;

														BgL_clausesz00_2219 = BgL_restz00_1260;
														BgL_kz00_2220 =
															BgL_zc3z04anonymousza31240ze3z87_2082;
														BgL_kz00_1222 = BgL_kz00_2220;
														BgL_clausesz00_1221 = BgL_clausesz00_2219;
														goto BgL_clauseszd2ze3patternz31_1223;
													}
												}
										}
									}
								else
									{	/* Match/mexpand.scm 80 */
										return
											BGl_errorz00zz__errorz00
											(BGl_symbol1739z00zz__match_expandz00,
											BGl_string1741z00zz__match_expandz00, BgL_expz00_3);
									}
							}
					}
				}
			}
		}

	}



/* &expand-match-lambda */
	obj_t BGl_z62expandzd2matchzd2lambdaz62zz__match_expandz00(obj_t
		BgL_envz00_2083, obj_t BgL_expz00_2084)
	{
		{	/* Match/mexpand.scm 74 */
			return BGl_expandzd2matchzd2lambdaz00zz__match_expandz00(BgL_expz00_2084);
		}

	}



/* &<@anonymous:1196> */
	obj_t BGl_z62zc3z04anonymousza31196ze3ze5zz__match_expandz00(obj_t
		BgL_envz00_2085, obj_t BgL_patz00_2087, obj_t BgL_envz00_2088)
	{
		{	/* Match/mexpand.scm 99 */
			{	/* Match/mexpand.scm 100 */
				obj_t BgL_expz00_2086;

				BgL_expz00_2086 = PROCEDURE_L_REF(BgL_envz00_2085, (int) (0L));
				{	/* Match/mexpand.scm 100 */
					obj_t BgL_compiledzd2patzd2_2108;
					obj_t BgL_prototypesz00_2109;

					BgL_compiledzd2patzd2_2108 =
						BGl_pcompilez00zz__match_compilerz00(BgL_patz00_2087);
					BgL_prototypesz00_2109 =
						BGl_fetchzd2prototypeszd2zz__match_expandz00(BgL_patz00_2087);
					{	/* Match/mexpand.scm 105 */
						obj_t BgL_arg1197z00_2110;

						{	/* Match/mexpand.scm 105 */
							obj_t BgL_arg1201z00_2111;
							obj_t BgL_arg1202z00_2112;

							if (NULLP(BgL_prototypesz00_2109))
								{	/* Match/mexpand.scm 105 */
									BgL_arg1201z00_2111 = BNIL;
								}
							else
								{	/* Match/mexpand.scm 105 */
									obj_t BgL_head1088z00_2113;

									BgL_head1088z00_2113 = MAKE_YOUNG_PAIR(BNIL, BNIL);
									{
										obj_t BgL_l1086z00_2115;
										obj_t BgL_tail1089z00_2116;

										BgL_l1086z00_2115 = BgL_prototypesz00_2109;
										BgL_tail1089z00_2116 = BgL_head1088z00_2113;
									BgL_zc3z04anonymousza31204ze3z87_2114:
										if (NULLP(BgL_l1086z00_2115))
											{	/* Match/mexpand.scm 105 */
												BgL_arg1201z00_2111 = CDR(BgL_head1088z00_2113);
											}
										else
											{	/* Match/mexpand.scm 105 */
												obj_t BgL_newtail1090z00_2117;

												{	/* Match/mexpand.scm 105 */
													obj_t BgL_arg1207z00_2118;

													{	/* Match/mexpand.scm 105 */
														obj_t BgL_prototypez00_2119;

														BgL_prototypez00_2119 =
															CAR(((obj_t) BgL_l1086z00_2115));
														{	/* Match/mexpand.scm 107 */
															obj_t BgL_bodyz00_2120;

															{	/* Match/mexpand.scm 107 */
																obj_t BgL_pairz00_2121;

																BgL_pairz00_2121 =
																	BGl_assqz00zz__r4_pairs_and_lists_6_3z00(CAR(
																		((obj_t) BgL_prototypez00_2119)),
																	BgL_envz00_2088);
																BgL_bodyz00_2120 = CDR(BgL_pairz00_2121);
															}
															if (NULLP(BgL_bodyz00_2120))
																{	/* Match/mexpand.scm 108 */
																	BgL_arg1207z00_2118 =
																		BGl_errorz00zz__errorz00
																		(BGl_symbol1739z00zz__match_expandz00,
																		BGl_string1741z00zz__match_expandz00,
																		BgL_expz00_2086);
																}
															else
																{	/* Match/mexpand.scm 110 */
																	obj_t BgL_arg1211z00_2122;
																	obj_t BgL_arg1213z00_2123;

																	BgL_arg1211z00_2122 =
																		CAR(((obj_t) BgL_prototypez00_2119));
																	{	/* Match/mexpand.scm 111 */
																		obj_t BgL_arg1215z00_2124;

																		{	/* Match/mexpand.scm 111 */
																			obj_t BgL_pairz00_2125;

																			BgL_pairz00_2125 =
																				CDR(((obj_t) BgL_prototypez00_2119));
																			BgL_arg1215z00_2124 =
																				CAR(BgL_pairz00_2125);
																		}
																		BgL_arg1213z00_2123 =
																			MAKE_YOUNG_PAIR(BgL_arg1215z00_2124,
																			BgL_bodyz00_2120);
																	}
																	BgL_arg1207z00_2118 =
																		MAKE_YOUNG_PAIR(BgL_arg1211z00_2122,
																		BgL_arg1213z00_2123);
																}
														}
													}
													BgL_newtail1090z00_2117 =
														MAKE_YOUNG_PAIR(BgL_arg1207z00_2118, BNIL);
												}
												SET_CDR(BgL_tail1089z00_2116, BgL_newtail1090z00_2117);
												{	/* Match/mexpand.scm 105 */
													obj_t BgL_arg1206z00_2126;

													BgL_arg1206z00_2126 =
														CDR(((obj_t) BgL_l1086z00_2115));
													{
														obj_t BgL_tail1089z00_2254;
														obj_t BgL_l1086z00_2253;

														BgL_l1086z00_2253 = BgL_arg1206z00_2126;
														BgL_tail1089z00_2254 = BgL_newtail1090z00_2117;
														BgL_tail1089z00_2116 = BgL_tail1089z00_2254;
														BgL_l1086z00_2115 = BgL_l1086z00_2253;
														goto BgL_zc3z04anonymousza31204ze3z87_2114;
													}
												}
											}
									}
								}
							BgL_arg1202z00_2112 =
								MAKE_YOUNG_PAIR(BgL_compiledzd2patzd2_2108, BNIL);
							BgL_arg1197z00_2110 =
								MAKE_YOUNG_PAIR(BgL_arg1201z00_2111, BgL_arg1202z00_2112);
						}
						return
							MAKE_YOUNG_PAIR(BGl_symbol1742z00zz__match_expandz00,
							BgL_arg1197z00_2110);
					}
				}
			}
		}

	}



/* &<@anonymous:1240> */
	obj_t BGl_z62zc3z04anonymousza31240ze3ze5zz__match_expandz00(obj_t
		BgL_envz00_2089, obj_t BgL_patz00_2094, obj_t BgL_envz00_2095)
	{
		{	/* Match/mexpand.scm 92 */
			{	/* Match/mexpand.scm 93 */
				obj_t BgL_patternz00_2090;
				obj_t BgL_tagz00_2091;
				obj_t BgL_actionsz00_2092;
				obj_t BgL_kz00_2093;

				BgL_patternz00_2090 = PROCEDURE_L_REF(BgL_envz00_2089, (int) (0L));
				BgL_tagz00_2091 = PROCEDURE_L_REF(BgL_envz00_2089, (int) (1L));
				BgL_actionsz00_2092 = PROCEDURE_L_REF(BgL_envz00_2089, (int) (2L));
				BgL_kz00_2093 = ((obj_t) PROCEDURE_L_REF(BgL_envz00_2089, (int) (3L)));
				{	/* Match/mexpand.scm 93 */
					obj_t BgL_arg1241z00_2129;
					obj_t BgL_arg1242z00_2130;

					{	/* Match/mexpand.scm 93 */
						obj_t BgL_arg1248z00_2131;

						{	/* Match/mexpand.scm 93 */
							obj_t BgL_arg1249z00_2132;
							obj_t BgL_arg1252z00_2133;

							BgL_arg1249z00_2132 =
								BGl_normaliza7ezd2patternz75zz__match_normaliza7eza7
								(BgL_patternz00_2090);
							{	/* Match/mexpand.scm 93 */
								obj_t BgL_arg1253z00_2134;

								BgL_arg1253z00_2134 = MAKE_YOUNG_PAIR(BgL_patz00_2094, BNIL);
								BgL_arg1252z00_2133 =
									MAKE_YOUNG_PAIR(BgL_tagz00_2091, BgL_arg1253z00_2134);
							}
							BgL_arg1248z00_2131 =
								MAKE_YOUNG_PAIR(BgL_arg1249z00_2132, BgL_arg1252z00_2133);
						}
						BgL_arg1241z00_2129 =
							MAKE_YOUNG_PAIR(BGl_symbol1737z00zz__match_expandz00,
							BgL_arg1248z00_2131);
					}
					{	/* Match/mexpand.scm 131 */
						obj_t BgL_arg1291z00_2135;

						BgL_arg1291z00_2135 =
							MAKE_YOUNG_PAIR(BgL_tagz00_2091, BgL_actionsz00_2092);
						BgL_arg1242z00_2130 =
							MAKE_YOUNG_PAIR(BgL_arg1291z00_2135, BgL_envz00_2095);
					}
					return
						((obj_t(*)(obj_t, obj_t,
								obj_t)) PROCEDURE_L_ENTRY(BgL_kz00_2093)) (BgL_kz00_2093,
						BgL_arg1241z00_2129, BgL_arg1242z00_2130);
				}
			}
		}

	}



/* fetch-prototypes */
	obj_t BGl_fetchzd2prototypeszd2zz__match_expandz00(obj_t BgL_patz00_4)
	{
		{	/* Match/mexpand.scm 115 */
			if (CBOOL(BGl_memqz00zz__r4_pairs_and_lists_6_3z00(CAR(
							((obj_t) BgL_patz00_4)), BGl_list1744z00zz__match_expandz00)))
				{	/* Match/mexpand.scm 117 */
					obj_t BgL_arg1261z00_1285;
					obj_t BgL_arg1262z00_1286;

					{	/* Match/mexpand.scm 117 */
						obj_t BgL_arg1263z00_1287;
						obj_t BgL_arg1265z00_1288;

						{	/* Match/mexpand.scm 117 */
							obj_t BgL_pairz00_1804;

							{	/* Match/mexpand.scm 117 */
								obj_t BgL_pairz00_1803;

								BgL_pairz00_1803 = CDR(((obj_t) BgL_patz00_4));
								BgL_pairz00_1804 = CDR(BgL_pairz00_1803);
							}
							BgL_arg1263z00_1287 = CAR(BgL_pairz00_1804);
						}
						{	/* Match/mexpand.scm 117 */
							obj_t BgL_arg1266z00_1289;

							{	/* Match/mexpand.scm 117 */
								obj_t BgL_arg1267z00_1290;

								{	/* Match/mexpand.scm 117 */
									obj_t BgL_pairz00_1808;

									BgL_pairz00_1808 = CDR(((obj_t) BgL_patz00_4));
									BgL_arg1267z00_1290 = CAR(BgL_pairz00_1808);
								}
								BgL_arg1266z00_1289 =
									BGl_patternzd2variableszd2zz__match_descriptionsz00
									(BgL_arg1267z00_1290);
							}
							BgL_arg1265z00_1288 = MAKE_YOUNG_PAIR(BgL_arg1266z00_1289, BNIL);
						}
						BgL_arg1261z00_1285 =
							MAKE_YOUNG_PAIR(BgL_arg1263z00_1287, BgL_arg1265z00_1288);
					}
					{	/* Match/mexpand.scm 118 */
						obj_t BgL_arg1269z00_1291;

						{	/* Match/mexpand.scm 118 */
							obj_t BgL_pairz00_1816;

							{	/* Match/mexpand.scm 118 */
								obj_t BgL_pairz00_1815;

								{	/* Match/mexpand.scm 118 */
									obj_t BgL_pairz00_1814;

									BgL_pairz00_1814 = CDR(((obj_t) BgL_patz00_4));
									BgL_pairz00_1815 = CDR(BgL_pairz00_1814);
								}
								BgL_pairz00_1816 = CDR(BgL_pairz00_1815);
							}
							BgL_arg1269z00_1291 = CAR(BgL_pairz00_1816);
						}
						BgL_arg1262z00_1286 =
							BGl_fetchzd2prototypeszd2zz__match_expandz00(BgL_arg1269z00_1291);
					}
					return MAKE_YOUNG_PAIR(BgL_arg1261z00_1285, BgL_arg1262z00_1286);
				}
			else
				{	/* Match/mexpand.scm 116 */
					return BNIL;
				}
		}

	}



/* expand-match-case */
	BGL_EXPORTED_DEF obj_t BGl_expandzd2matchzd2casez00zz__match_expandz00(obj_t
		BgL_expz00_7)
	{
		{	/* Match/mexpand.scm 126 */
			{	/* Match/mexpand.scm 127 */
				obj_t BgL_arg1279z00_1297;
				obj_t BgL_arg1280z00_1298;

				{	/* Match/mexpand.scm 127 */
					obj_t BgL_arg1283z00_1301;

					{	/* Match/mexpand.scm 127 */
						obj_t BgL_arg1285z00_1302;

						{	/* Match/mexpand.scm 127 */
							obj_t BgL_arg1287z00_1303;

							{	/* Match/mexpand.scm 127 */
								obj_t BgL_pairz00_1828;

								BgL_pairz00_1828 = CDR(((obj_t) BgL_expz00_7));
								BgL_arg1287z00_1303 = CDR(BgL_pairz00_1828);
							}
							BgL_arg1285z00_1302 =
								MAKE_YOUNG_PAIR(BGl_symbol1747z00zz__match_expandz00,
								BgL_arg1287z00_1303);
						}
						if (EPAIRP(BgL_expz00_7))
							{	/* Match/mexpand.scm 123 */
								obj_t BgL_arg1274z00_1830;
								obj_t BgL_arg1276z00_1831;
								obj_t BgL_arg1278z00_1832;

								BgL_arg1274z00_1830 = CAR(BgL_arg1285z00_1302);
								BgL_arg1276z00_1831 = CDR(BgL_arg1285z00_1302);
								BgL_arg1278z00_1832 = CER(((obj_t) BgL_expz00_7));
								{	/* Match/mexpand.scm 123 */
									obj_t BgL_res1726z00_1836;

									BgL_res1726z00_1836 =
										MAKE_YOUNG_EPAIR(BgL_arg1274z00_1830, BgL_arg1276z00_1831,
										BgL_arg1278z00_1832);
									BgL_arg1283z00_1301 = BgL_res1726z00_1836;
								}
							}
						else
							{	/* Match/mexpand.scm 122 */
								BgL_arg1283z00_1301 = BgL_arg1285z00_1302;
							}
					}
					BgL_arg1279z00_1297 =
						BGl_expandzd2matchzd2lambdaz00zz__match_expandz00
						(BgL_arg1283z00_1301);
				}
				{	/* Match/mexpand.scm 128 */
					obj_t BgL_pairz00_1840;

					BgL_pairz00_1840 = CDR(((obj_t) BgL_expz00_7));
					BgL_arg1280z00_1298 = CAR(BgL_pairz00_1840);
				}
				{	/* Match/mexpand.scm 127 */
					obj_t BgL_list1281z00_1299;

					{	/* Match/mexpand.scm 127 */
						obj_t BgL_arg1282z00_1300;

						BgL_arg1282z00_1300 = MAKE_YOUNG_PAIR(BgL_arg1280z00_1298, BNIL);
						BgL_list1281z00_1299 =
							MAKE_YOUNG_PAIR(BgL_arg1279z00_1297, BgL_arg1282z00_1300);
					}
					return BgL_list1281z00_1299;
				}
			}
		}

	}



/* &expand-match-case */
	obj_t BGl_z62expandzd2matchzd2casez62zz__match_expandz00(obj_t
		BgL_envz00_2096, obj_t BgL_expz00_2097)
	{
		{	/* Match/mexpand.scm 126 */
			return BGl_expandzd2matchzd2casez00zz__match_expandz00(BgL_expz00_2097);
		}

	}



/* object-init */
	obj_t BGl_objectzd2initzd2zz__match_expandz00(void)
	{
		{	/* Match/mexpand.scm 26 */
			return BUNSPEC;
		}

	}



/* generic-init */
	obj_t BGl_genericzd2initzd2zz__match_expandz00(void)
	{
		{	/* Match/mexpand.scm 26 */
			return BUNSPEC;
		}

	}



/* method-init */
	obj_t BGl_methodzd2initzd2zz__match_expandz00(void)
	{
		{	/* Match/mexpand.scm 26 */
			return BUNSPEC;
		}

	}



/* imported-modules-init */
	obj_t BGl_importedzd2moduleszd2initz00zz__match_expandz00(void)
	{
		{	/* Match/mexpand.scm 26 */
			BGl_modulezd2initializa7ationz75zz__errorz00(88804785L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			BGl_modulezd2initializa7ationz75zz__match_compilerz00(108809663L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			BGl_modulezd2initializa7ationz75zz__match_descriptionsz00(232414635L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			BGl_modulezd2initializa7ationz75zz__match_normaliza7eza7(515155867L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			BGl_modulezd2initializa7ationz75zz__match_s2cfunz00(509060701L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			BGl_modulezd2initializa7ationz75zz__paramz00(453939141L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			BGl_modulezd2initializa7ationz75zz__bexitz00(443005284L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			BGl_modulezd2initializa7ationz75zz__objectz00(475449627L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
			return
				BGl_modulezd2initializa7ationz75zz__threadz00(149516032L,
				BSTRING_TO_STRING(BGl_string1749z00zz__match_expandz00));
		}

	}

#ifdef __cplusplus
}
#endif
