/*===========================================================================*/
/*   (Foreign/cfun.scm)                                                      */
/*   Bigloo (2.6b)                                                           */
/*   Inria -- Sophia Antipolis (c)       Mon Dec 15 12:14:36 CET 2003        */
/*===========================================================================*/
/* COMPILATION: (/users/serrano/prgm/project/bigloo/bin/bigloo -q -afile .afile -fsharing -fno-reflection -cc gcc-2.95 -lib-dir /users/serrano/prgm/project/bigloo/lib/2.6b -unsafev -no-hello -O2 -rm -unsafe -s -indent Foreign/cfun.scm)*/
/* GC selection */
#define THE_GC BOEHM_GC

#include <bigloo.h>


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

typedef struct BgL_caliasz00_bgl {
   bool_t BgL_arrayzf3zf3;
} *BgL_caliasz00_bglt;

typedef struct BgL_cenumz00_bgl {
   struct BgL_typez00_bgl * BgL_btypez00;
   obj_t BgL_literalsz00;
} *BgL_cenumz00_bglt;

typedef struct BgL_copaquez00_bgl {
   struct BgL_typez00_bgl * BgL_btypez00;
} *BgL_copaquez00_bglt;

typedef struct BgL_cfunctionz00_bgl {
   struct BgL_typez00_bgl * BgL_btypez00;
   long BgL_arityz00;
   struct BgL_typez00_bgl * BgL_typezd2reszd2;
   obj_t BgL_typezd2argszd2;
} *BgL_cfunctionz00_bglt;

typedef struct BgL_cptrz00_bgl {
   struct BgL_typez00_bgl * BgL_btypez00;
   struct BgL_typez00_bgl * BgL_pointzd2tozd2;
   bool_t BgL_arrayzf3zf3;
} *BgL_cptrz00_bglt;

typedef struct BgL_cstructz00_bgl {
   bool_t BgL_structzf3zf3;
   obj_t BgL_fieldsz00;
   obj_t BgL_cstructza2za2;
} *BgL_cstructz00_bglt;

typedef struct BgL_cstructza2za2_bgl {
   struct BgL_typez00_bgl * BgL_btypez00;
   struct BgL_cstructz00_bgl * BgL_cstructz00;
} *BgL_cstructza2za2_bglt;

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;


BGL_EXPORTED_DECL obj_t BGl_modulezd2initializa7ationz75zzforeign_cfunctionz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zztools_errorz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zztools_miscz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zztype_toolsz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zztype_typez00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zzforeign_ctypez00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zzforeign_accessz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zzforeign_libraryz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zzmodule_modulez00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zzengine_paramz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zzast_identz00(long, char *);
BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__objectz00(long, char *);
BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__readerz00(long, char *);
BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(long, char *);
BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(long, char *);
BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(long, char *);
BGL_IMPORT obj_t BGl_eappendzd22zd2zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
static obj_t BGl_methodzd2initzd2zzforeign_cfunctionz00();
extern obj_t BGl_userzd2errorzd2zztools_errorz00(obj_t, obj_t, obj_t, obj_t);
BGL_IMPORT obj_t open_input_string(obj_t);
extern obj_t BGl_producezd2modulezd2clausez12z12zzmodule_modulez00(obj_t);
BGL_IMPORT obj_t BGl_readz00zz__readerz00(obj_t);
BGL_IMPORT obj_t string_append(obj_t, obj_t);
extern obj_t BGl_za2maxzd2czd2foreignzd2arityza2zd2zzengine_paramz00;
static obj_t BGl_makezd2ctypezd2accessesz12zd2cfunction1609zc0zzforeign_cfunctionz00(obj_t, obj_t, obj_t, obj_t);
BGL_IMPORT obj_t BGl_integerzd2ze3stringz31zz__r4_numbers_6_5_fixnumz00(long, obj_t);
BGL_IMPORT obj_t BGl_gensymz00zz__r4_symbols_6_4z00;
extern obj_t BGl_makezd2protozd2inlinez00zzforeign_libraryz00(obj_t);
extern obj_t BGl_makezd2definezd2inlinez00zzforeign_libraryz00(obj_t, obj_t);
BGL_IMPORT obj_t BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(obj_t);
static obj_t BGl_cnstzd2initzd2zzforeign_cfunctionz00();
extern obj_t BGl_cfunctionz00zzforeign_ctypez00;
static obj_t BGl_importedzd2moduleszd2initz00zzforeign_cfunctionz00();
extern obj_t BGl_registerzd2foreignzd2accesszd2identsz12zc0zzforeign_libraryz00(obj_t);
static obj_t BGl_requirezd2initializa7ationz75zzforeign_cfunctionz00 = BUNSPEC;
BGL_IMPORT obj_t BGl_addzd2methodz12zc0zz__objectz00(obj_t, obj_t, obj_t);
static obj_t BGl_libraryzd2moduleszd2initz00zzforeign_cfunctionz00();
extern obj_t BGl_makezd2typedzd2identz00zzast_identz00(obj_t, obj_t);
extern obj_t BGl_stringzd2sanszd2z42z42zztype_toolsz00(obj_t);
static obj_t BGl_toplevelzd2initzd2zzforeign_cfunctionz00();
BGL_IMPORT obj_t string_append_3(obj_t, obj_t, obj_t);
static obj_t __cnst[ 25 ] ;


extern obj_t BGl_makezd2ctypezd2accessesz12zd2envzc0zzforeign_accessz00;
DEFINE_STRING( BGl_string2249z00zzforeign_cfunctionz00, BgL_bgl_string2249za700za7za7foreign_cfunctionza7002278z00, "predicate-of pragma ::obj static foreign f c- (pragma::bool \"($1 == $2)\" o1 o2) o2 o1 ?::bool = quote foreign-id eq? o foreign? if o::obj symbol macro ::bool ? -> -call ", 169 );
DEFINE_STRING( BGl_string2248z00zzforeign_cfunctionz00, BgL_bgl_string2248za700za7za7foreign_cfunctionza7002279z00, "Can't manage pointers on C multiple arity function", 50 );
DEFINE_STRING( BGl_string2247z00zzforeign_cfunctionz00, BgL_bgl_string2247za700za7za7foreign_cfunctionza7002280z00, "bigloo", 6 );
DEFINE_STRING( BGl_string2246z00zzforeign_cfunctionz00, BgL_bgl_string2246za700za7za7foreign_cfunctionza7002281z00, " args provided", 14 );
DEFINE_STRING( BGl_string2245z00zzforeign_cfunctionz00, BgL_bgl_string2245za700za7za7foreign_cfunctionza7002282z00, ")", 1 );
DEFINE_STRING( BGl_string2244z00zzforeign_cfunctionz00, BgL_bgl_string2244za700za7za7foreign_cfunctionza7002283z00, "Too large arity for a foreign function (max", 43 );
DEFINE_STRING( BGl_string2243z00zzforeign_cfunctionz00, BgL_bgl_string2243za700za7za7foreign_cfunctionza7002284z00, "C_FUNCTION_CALL_", 16 );
DEFINE_STRING( BGl_string2242z00zzforeign_cfunctionz00, BgL_bgl_string2242za700za7za7foreign_cfunctionza7002285z00, ")FOREIGN_TO_COBJ", 16 );
DEFINE_STRING( BGl_string2241z00zzforeign_cfunctionz00, BgL_bgl_string2241za700za7za7foreign_cfunctionza7002286z00, "(", 1 );
DEFINE_STRING( BGl_string2240z00zzforeign_cfunctionz00, BgL_bgl_string2240za700za7za7foreign_cfunctionza7002287z00, "cobj_to_foreign", 15 );
DEFINE_STATIC_PROCEDURE( BGl_proc2239z00zzforeign_cfunctionz00, BgL_bgl_makeza7d2ctypeza7d2accessesza712za7d2cfunction1609za7c0za7za7foreign_cfunctionza7002288z00, BGl_makezd2ctypezd2accessesz12zd2cfunction1609zc0zzforeign_cfunctionz00, 0L, 3 );



/* module-initialization */
BGL_EXPORTED_DEF obj_t BGl_modulezd2initializa7ationz75zzforeign_cfunctionz00(long BgL_checksumz00_508, char * BgL_fromz00_509)
{ AN_OBJECT;
{ 
if(
CBOOL(BGl_requirezd2initializa7ationz75zzforeign_cfunctionz00))
{ 
BGl_requirezd2initializa7ationz75zzforeign_cfunctionz00 = 
BBOOL(((bool_t)0)); 
BGl_libraryzd2moduleszd2initz00zzforeign_cfunctionz00(); 
BGl_cnstzd2initzd2zzforeign_cfunctionz00(); 
BGl_importedzd2moduleszd2initz00zzforeign_cfunctionz00(); 
BGl_methodzd2initzd2zzforeign_cfunctionz00(); 
return BUNSPEC;}  else 
{ 
return BUNSPEC;} } 
}



/* library-modules-init */
obj_t BGl_libraryzd2moduleszd2initz00zzforeign_cfunctionz00()
{ AN_OBJECT;
{ /* ./Foreign/cfun.scm 15 */
BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(((long)0), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zz__readerz00(((long)0), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(((long)0), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(((long)0), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zz__objectz00(((long)0), "foreign_cfunction"); 
return BUNSPEC;} 
}



/* cnst-init */
obj_t BGl_cnstzd2initzd2zzforeign_cfunctionz00()
{ AN_OBJECT;
{ /* ./Foreign/cfun.scm 15 */
{ /* ./Foreign/cfun.scm 15 */
obj_t BgL_cportz00_501;
BgL_cportz00_501 = 
open_input_string(BGl_string2249z00zzforeign_cfunctionz00); 
{ 
long BgL_iz00_502;
BgL_iz00_502 = ((long)24); 
BgL_loopz00_503:
{ /* ./Foreign/cfun.scm 15 */
bool_t BgL_test2251z00_504;
BgL_test2251z00_504 = 
(BgL_iz00_502==((long)-1)); 
if(BgL_test2251z00_504)
{ /* ./Foreign/cfun.scm 15 */
return BUNSPEC;}  else 
{ /* ./Foreign/cfun.scm 15 */
{ /* ./Foreign/cfun.scm 15 */
obj_t BgL_arg2253z00_505;
{ /* ./Foreign/cfun.scm 15 */
obj_t BgL_list2256z00_506;
BgL_list2256z00_506 = 
MAKE_PAIR(BgL_cportz00_501, BNIL); 
BgL_arg2253z00_505 = 
BGl_readz00zz__readerz00(BgL_list2256z00_506); } 
{ /* ./Foreign/cfun.scm 15 */
int BgL_auxz00_527;
BgL_auxz00_527 = 
(int)(BgL_iz00_502); 
CNST_TABLE_SET(BgL_auxz00_527, BgL_arg2253z00_505); } } 
{ /* ./Foreign/cfun.scm 15 */
int BgL_auxz00_507;
{ /* ./Foreign/cfun.scm 15 */
long BgL_auxz00_530;
BgL_auxz00_530 = 
(BgL_iz00_502-((long)1)); 
BgL_auxz00_507 = 
(int)(BgL_auxz00_530); } 
{ 
long BgL_iz00_533;
BgL_iz00_533 = 
(long)(BgL_auxz00_507); 
BgL_iz00_502 = BgL_iz00_533; 
goto BgL_loopz00_503;} } } } } } } 
}



/* toplevel-init */
obj_t BGl_toplevelzd2initzd2zzforeign_cfunctionz00()
{ AN_OBJECT;
{ /* ./Foreign/cfun.scm 15 */
return BUNSPEC;} 
}



/* method-init */
obj_t BGl_methodzd2initzd2zzforeign_cfunctionz00()
{ AN_OBJECT;
{ /* ./Foreign/cfun.scm 15 */
return 
BGl_addzd2methodz12zc0zz__objectz00(BGl_makezd2ctypezd2accessesz12zd2envzc0zzforeign_accessz00, BGl_cfunctionz00zzforeign_ctypez00, BGl_proc2239z00zzforeign_cfunctionz00);} 
}



/* make-ctype-accesses!-cfunction1609 */
obj_t BGl_makezd2ctypezd2accessesz12zd2cfunction1609zc0zzforeign_cfunctionz00(obj_t BgL_envz00_493, obj_t BgL_whatz00_494, obj_t BgL_whoz00_495, obj_t BgL_locz00_496)
{ AN_OBJECT;
{ /* ./Foreign/cfun.scm 30 */
{ 
BgL_cfunctionz00_bglt BgL_whatz00_172;BgL_typez00_bglt BgL_whoz00_173;obj_t BgL_locz00_174;
BgL_whatz00_172 = 
(BgL_cfunctionz00_bglt)(BgL_whatz00_494); 
BgL_whoz00_173 = 
(BgL_typez00_bglt)(BgL_whoz00_495); 
BgL_locz00_174 = BgL_locz00_496; 
{ /* ./Foreign/cfun.scm 31 */
BgL_typez00_bglt BgL_btypez00_177;
{ 
obj_t BgL_auxz00_536;
{ /* ./Foreign/cfun.scm 31 */
BgL_objectz00_bglt BgL_auxz00_537;
BgL_auxz00_537 = 
(BgL_objectz00_bglt)(BgL_whatz00_172); 
BgL_auxz00_536 = 
BGL_OBJECT_WIDENING(BgL_auxz00_537); } 
BgL_btypez00_177 = 
(((BgL_cfunctionz00_bglt)CREF(BgL_auxz00_536))->BgL_btypez00); } 
{ /* ./Foreign/cfun.scm 31 */
obj_t BgL_idz00_178;
BgL_idz00_178 = 
(((BgL_typez00_bglt)CREF(BgL_whoz00_173))->BgL_idz00); 
{ /* ./Foreign/cfun.scm 32 */
obj_t BgL_widz00_179;
{ /* ./Foreign/cfun.scm 33 */
BgL_typez00_bglt BgL_obj1003z00_425;
BgL_obj1003z00_425 = 
(BgL_typez00_bglt)(BgL_whatz00_172); 
BgL_widz00_179 = 
(((BgL_typez00_bglt)CREF(BgL_obj1003z00_425))->BgL_idz00); } 
{ /* ./Foreign/cfun.scm 33 */
obj_t BgL_bidz00_180;
BgL_bidz00_180 = 
(((BgL_typez00_bglt)CREF(BgL_btypez00_177))->BgL_idz00); 
{ /* ./Foreign/cfun.scm 34 */
obj_t BgL_callzd2idzd2_181;
{ /* ./Foreign/cfun.scm 35 */
obj_t BgL_list2185z00_419;
{ /* ./Foreign/cfun.scm 35 */
obj_t BgL_arg2187z00_420;
{ /* ./Foreign/cfun.scm 35 */
obj_t BgL_auxz00_545;
BgL_auxz00_545 = 
CNST_TABLE_REF(((long)0)); 
BgL_arg2187z00_420 = 
MAKE_PAIR(BgL_auxz00_545, BNIL); } 
BgL_list2185z00_419 = 
MAKE_PAIR(BgL_idz00_178, BgL_arg2187z00_420); } 
BgL_callzd2idzd2_181 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list2185z00_419); } 
{ /* ./Foreign/cfun.scm 35 */
obj_t BgL_idzd2ze3bidz31_182;
{ /* ./Foreign/cfun.scm 36 */
obj_t BgL_list2175z00_415;
{ /* ./Foreign/cfun.scm 36 */
obj_t BgL_arg2177z00_416;
{ /* ./Foreign/cfun.scm 36 */
obj_t BgL_arg2180z00_417;obj_t BgL_arg2181z00_418;
BgL_arg2180z00_417 = 
CNST_TABLE_REF(((long)1)); 
BgL_arg2181z00_418 = 
MAKE_PAIR(BgL_bidz00_180, BNIL); 
BgL_arg2177z00_416 = 
MAKE_PAIR(BgL_arg2180z00_417, BgL_arg2181z00_418); } 
BgL_list2175z00_415 = 
MAKE_PAIR(BgL_idz00_178, BgL_arg2177z00_416); } 
BgL_idzd2ze3bidz31_182 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list2175z00_415); } 
{ /* ./Foreign/cfun.scm 36 */
obj_t BgL_bidzd2ze3idz31_183;
{ /* ./Foreign/cfun.scm 37 */
obj_t BgL_list2165z00_411;
{ /* ./Foreign/cfun.scm 37 */
obj_t BgL_arg2167z00_412;
{ /* ./Foreign/cfun.scm 37 */
obj_t BgL_arg2170z00_413;obj_t BgL_arg2171z00_414;
BgL_arg2170z00_413 = 
CNST_TABLE_REF(((long)1)); 
BgL_arg2171z00_414 = 
MAKE_PAIR(BgL_idz00_178, BNIL); 
BgL_arg2167z00_412 = 
MAKE_PAIR(BgL_arg2170z00_413, BgL_arg2171z00_414); } 
BgL_list2165z00_411 = 
MAKE_PAIR(BgL_bidz00_180, BgL_arg2167z00_412); } 
BgL_bidzd2ze3idz31_183 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list2165z00_411); } 
{ /* ./Foreign/cfun.scm 37 */
obj_t BgL_bidzf3zf3_184;
{ /* ./Foreign/cfun.scm 38 */
obj_t BgL_list2159z00_409;
{ /* ./Foreign/cfun.scm 38 */
obj_t BgL_arg2161z00_410;
{ /* ./Foreign/cfun.scm 38 */
obj_t BgL_auxz00_560;
BgL_auxz00_560 = 
CNST_TABLE_REF(((long)2)); 
BgL_arg2161z00_410 = 
MAKE_PAIR(BgL_auxz00_560, BNIL); } 
BgL_list2159z00_409 = 
MAKE_PAIR(BgL_idz00_178, BgL_arg2161z00_410); } 
BgL_bidzf3zf3_184 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list2159z00_409); } 
{ /* ./Foreign/cfun.scm 38 */
obj_t BgL_bidzf3zd2boolz21_185;
{ /* ./Foreign/cfun.scm 39 */
obj_t BgL_list2153z00_407;
{ /* ./Foreign/cfun.scm 39 */
obj_t BgL_arg2155z00_408;
{ /* ./Foreign/cfun.scm 39 */
obj_t BgL_auxz00_565;
BgL_auxz00_565 = 
CNST_TABLE_REF(((long)3)); 
BgL_arg2155z00_408 = 
MAKE_PAIR(BgL_auxz00_565, BNIL); } 
BgL_list2153z00_407 = 
MAKE_PAIR(BgL_bidzf3zf3_184, BgL_arg2155z00_408); } 
BgL_bidzf3zd2boolz21_185 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list2153z00_407); } 
{ /* ./Foreign/cfun.scm 39 */
obj_t BgL_namez00_186;
BgL_namez00_186 = 
(((BgL_typez00_bglt)CREF(BgL_whoz00_173))->BgL_namez00); 
{ /* ./Foreign/cfun.scm 40 */
obj_t BgL_namezd2sanszd2z42z42_187;
BgL_namezd2sanszd2z42z42_187 = 
BGl_stringzd2sanszd2z42z42zztype_toolsz00(BgL_namez00_186); 
{ /* ./Foreign/cfun.scm 41 */
BgL_typez00_bglt BgL_typezd2reszd2_188;
{ 
obj_t BgL_auxz00_572;
{ /* ./Foreign/cfun.scm 42 */
BgL_objectz00_bglt BgL_auxz00_573;
BgL_auxz00_573 = 
(BgL_objectz00_bglt)(BgL_whatz00_172); 
BgL_auxz00_572 = 
BGL_OBJECT_WIDENING(BgL_auxz00_573); } 
BgL_typezd2reszd2_188 = 
(((BgL_cfunctionz00_bglt)CREF(BgL_auxz00_572))->BgL_typezd2reszd2); } 
{ /* ./Foreign/cfun.scm 42 */
obj_t BgL_typezd2argszd2_189;
{ 
obj_t BgL_auxz00_577;
{ /* ./Foreign/cfun.scm 43 */
BgL_objectz00_bglt BgL_auxz00_578;
BgL_auxz00_578 = 
(BgL_objectz00_bglt)(BgL_whatz00_172); 
BgL_auxz00_577 = 
BGL_OBJECT_WIDENING(BgL_auxz00_578); } 
BgL_typezd2argszd2_189 = 
(((BgL_cfunctionz00_bglt)CREF(BgL_auxz00_577))->BgL_typezd2argszd2); } 
{ /* ./Foreign/cfun.scm 43 */
long BgL_arityz00_190;
{ 
obj_t BgL_auxz00_582;
{ /* ./Foreign/cfun.scm 44 */
BgL_objectz00_bglt BgL_auxz00_583;
BgL_auxz00_583 = 
(BgL_objectz00_bglt)(BgL_whatz00_172); 
BgL_auxz00_582 = 
BGL_OBJECT_WIDENING(BgL_auxz00_583); } 
BgL_arityz00_190 = 
(((BgL_cfunctionz00_bglt)CREF(BgL_auxz00_582))->BgL_arityz00); } 
{ /* ./Foreign/cfun.scm 44 */
obj_t BgL_nbzd2argszd2_191;
BgL_nbzd2argszd2_191 = 
BGl_integerzd2ze3stringz31zz__r4_numbers_6_5_fixnumz00(BgL_arityz00_190, BNIL); 
{ /* ./Foreign/cfun.scm 45 */

{ 

{ /* ./Foreign/cfun.scm 113 */
obj_t BgL_arg1695z00_199;
{ /* ./Foreign/cfun.scm 113 */
obj_t BgL_list1706z00_203;
{ /* ./Foreign/cfun.scm 113 */
obj_t BgL_arg1709z00_204;obj_t BgL_arg1710z00_205;
BgL_arg1709z00_204 = 
CNST_TABLE_REF(((long)13)); 
{ /* ./Foreign/cfun.scm 113 */
obj_t BgL_arg1713z00_206;
{ /* ./Foreign/cfun.scm 113 */
obj_t BgL_auxz00_589;
BgL_auxz00_589 = 
CNST_TABLE_REF(((long)2)); 
BgL_arg1713z00_206 = 
MAKE_PAIR(BgL_auxz00_589, BNIL); } 
BgL_arg1710z00_205 = 
MAKE_PAIR(BgL_idz00_178, BgL_arg1713z00_206); } 
BgL_list1706z00_203 = 
MAKE_PAIR(BgL_arg1709z00_204, BgL_arg1710z00_205); } 
BgL_arg1695z00_199 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list1706z00_203); } 
{ /* ./Foreign/cfun.scm 111 */
obj_t BgL_list1697z00_200;
{ /* ./Foreign/cfun.scm 111 */
obj_t BgL_arg1699z00_201;
{ /* ./Foreign/cfun.scm 111 */
obj_t BgL_arg1702z00_202;
BgL_arg1702z00_202 = 
MAKE_PAIR(BgL_callzd2idzd2_181, BNIL); 
BgL_arg1699z00_201 = 
MAKE_PAIR(BgL_arg1695z00_199, BgL_arg1702z00_202); } 
BgL_list1697z00_200 = 
MAKE_PAIR(BgL_bidzf3zf3_184, BgL_arg1699z00_201); } 
BGl_registerzd2foreignzd2accesszd2identsz12zc0zzforeign_libraryz00(BgL_list1697z00_200); } } 
{ /* ./Foreign/cfun.scm 117 */
obj_t BgL_arg1717z00_207;
{ /* ./Foreign/cfun.scm 117 */
obj_t BgL_arg1720z00_208;obj_t BgL_arg1721z00_209;
BgL_arg1720z00_208 = 
CNST_TABLE_REF(((long)20)); 
{ /* ./Foreign/cfun.scm 117 */
obj_t BgL_arg1724z00_210;obj_t BgL_arg1725z00_211;
{ /* ./Foreign/cfun.scm 51 */
obj_t BgL_arg2123z00_391;obj_t BgL_arg2124z00_392;
BgL_arg2123z00_391 = 
CNST_TABLE_REF(((long)4)); 
{ /* ./Foreign/cfun.scm 51 */
obj_t BgL_arg2127z00_393;
{ /* ./Foreign/cfun.scm 51 */
obj_t BgL_arg2132z00_394;
{ /* ./Foreign/cfun.scm 51 */
obj_t BgL_arg2135z00_395;obj_t BgL_arg2136z00_396;
{ /* ./Foreign/cfun.scm 51 */
obj_t BgL_arg2139z00_397;obj_t BgL_arg2141z00_398;
BgL_arg2139z00_397 = 
CNST_TABLE_REF(((long)5)); 
BgL_arg2141z00_398 = 
MAKE_PAIR(BgL_idz00_178, BNIL); 
BgL_arg2135z00_395 = 
MAKE_PAIR(BgL_arg2139z00_397, BgL_arg2141z00_398); } 
BgL_arg2136z00_396 = 
MAKE_PAIR(BGl_string2240z00zzforeign_cfunctionz00, BNIL); 
BgL_arg2132z00_394 = 
MAKE_PAIR(BgL_arg2135z00_395, BgL_arg2136z00_396); } 
BgL_arg2127z00_393 = 
MAKE_PAIR(BgL_idzd2ze3bidz31_182, BgL_arg2132z00_394); } 
BgL_arg2124z00_392 = 
MAKE_PAIR(BgL_bidz00_180, BgL_arg2127z00_393); } 
BgL_arg1724z00_210 = 
MAKE_PAIR(BgL_arg2123z00_391, BgL_arg2124z00_392); } 
{ /* ./Foreign/cfun.scm 118 */
obj_t BgL_arg1729z00_212;obj_t BgL_arg1731z00_213;
{ /* ./Foreign/cfun.scm 54 */
obj_t BgL_mnamez00_383;
BgL_mnamez00_383 = 
string_append_3(BGl_string2241z00zzforeign_cfunctionz00, BgL_namezd2sanszd2z42z42_187, BGl_string2242z00zzforeign_cfunctionz00); 
{ /* ./Foreign/cfun.scm 55 */
obj_t BgL_arg2103z00_384;obj_t BgL_arg2105z00_385;
BgL_arg2103z00_384 = 
CNST_TABLE_REF(((long)4)); 
{ /* ./Foreign/cfun.scm 55 */
obj_t BgL_arg2108z00_386;
{ /* ./Foreign/cfun.scm 55 */
obj_t BgL_arg2111z00_387;
{ /* ./Foreign/cfun.scm 55 */
obj_t BgL_arg2115z00_388;obj_t BgL_arg2116z00_389;
BgL_arg2115z00_388 = 
MAKE_PAIR(BgL_bidz00_180, BNIL); 
BgL_arg2116z00_389 = 
MAKE_PAIR(BgL_mnamez00_383, BNIL); 
BgL_arg2111z00_387 = 
MAKE_PAIR(BgL_arg2115z00_388, BgL_arg2116z00_389); } 
BgL_arg2108z00_386 = 
MAKE_PAIR(BgL_bidzd2ze3idz31_183, BgL_arg2111z00_387); } 
BgL_arg2105z00_385 = 
MAKE_PAIR(BgL_idz00_178, BgL_arg2108z00_386); } 
BgL_arg1729z00_212 = 
MAKE_PAIR(BgL_arg2103z00_384, BgL_arg2105z00_385); } } 
{ /* ./Foreign/cfun.scm 119 */
obj_t BgL_arg1735z00_214;
{ /* ./Foreign/cfun.scm 74 */
obj_t BgL_treszd2idzd2_318;
BgL_treszd2idzd2_318 = 
(((BgL_typez00_bglt)CREF(BgL_typezd2reszd2_188))->BgL_idz00); 
{ /* ./Foreign/cfun.scm 74 */
obj_t BgL_targszd2idzd2_319;
{ /* ./Foreign/cfun.scm 75 */
bool_t BgL_test1986z00_332;
BgL_test1986z00_332 = 
NULLP(BgL_typezd2argszd2_189); 
if(BgL_test1986z00_332)
{ /* ./Foreign/cfun.scm 75 */
BgL_targszd2idzd2_319 = BNIL; }  else 
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_head1589z00_333;
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_arg2010z00_344;
{ /* ./Foreign/cfun.scm 75 */
BgL_typez00_bglt BgL_obj1003z00_480;
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_auxz00_620;
BgL_auxz00_620 = 
CAR(BgL_typezd2argszd2_189); 
BgL_obj1003z00_480 = 
(BgL_typez00_bglt)(BgL_auxz00_620); } 
BgL_arg2010z00_344 = 
(((BgL_typez00_bglt)CREF(BgL_obj1003z00_480))->BgL_idz00); } 
BgL_head1589z00_333 = 
MAKE_PAIR(BgL_arg2010z00_344, BNIL); } 
{ 
obj_t BgL_l1587z00_334;obj_t BgL_tail1590z00_335;
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_arg1988z00_337;
BgL_arg1988z00_337 = 
CDR(BgL_typezd2argszd2_189); 
BgL_l1587z00_334 = BgL_arg1988z00_337; 
BgL_tail1590z00_335 = BgL_head1589z00_333; 
BgL_map1588z00_336:
{ /* ./Foreign/cfun.scm 75 */
bool_t BgL_test1991z00_338;
BgL_test1991z00_338 = 
NULLP(BgL_l1587z00_334); 
if(BgL_test1991z00_338)
{ /* ./Foreign/cfun.scm 75 */
BgL_targszd2idzd2_319 = BgL_head1589z00_333; }  else 
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_newtail1591z00_339;
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_arg2000z00_341;
{ /* ./Foreign/cfun.scm 75 */
BgL_typez00_bglt BgL_obj1003z00_486;
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_auxz00_628;
BgL_auxz00_628 = 
CAR(BgL_l1587z00_334); 
BgL_obj1003z00_486 = 
(BgL_typez00_bglt)(BgL_auxz00_628); } 
BgL_arg2000z00_341 = 
(((BgL_typez00_bglt)CREF(BgL_obj1003z00_486))->BgL_idz00); } 
BgL_newtail1591z00_339 = 
MAKE_PAIR(BgL_arg2000z00_341, BNIL); } 
SET_CDR(BgL_tail1590z00_335, BgL_newtail1591z00_339); 
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_arg1994z00_340;
BgL_arg1994z00_340 = 
CDR(BgL_l1587z00_334); 
{ 
obj_t BgL_tail1590z00_636;obj_t BgL_l1587z00_635;
BgL_l1587z00_635 = BgL_arg1994z00_340; 
BgL_tail1590z00_636 = BgL_newtail1591z00_339; 
BgL_tail1590z00_335 = BgL_tail1590z00_636; 
BgL_l1587z00_334 = BgL_l1587z00_635; 
goto BgL_map1588z00_336;} } } } } } } } 
{ /* ./Foreign/cfun.scm 75 */
obj_t BgL_callerzd2namezd2_320;
BgL_callerzd2namezd2_320 = 
string_append(BGl_string2243z00zzforeign_cfunctionz00, BgL_nbzd2argszd2_191); 
{ /* ./Foreign/cfun.scm 76 */
obj_t BgL_czd2callzd2idz00_321;
{ /* ./Foreign/cfun.scm 77 */
obj_t BgL_list1979z00_328;
{ /* ./Foreign/cfun.scm 77 */
obj_t BgL_arg1981z00_329;obj_t BgL_arg1982z00_330;
BgL_arg1981z00_329 = 
CNST_TABLE_REF(((long)18)); 
BgL_arg1982z00_330 = 
MAKE_PAIR(BgL_callzd2idzd2_181, BNIL); 
BgL_list1979z00_328 = 
MAKE_PAIR(BgL_arg1981z00_329, BgL_arg1982z00_330); } 
BgL_czd2callzd2idz00_321 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list1979z00_328); } 
{ /* ./Foreign/cfun.scm 77 */

{ /* ./Foreign/cfun.scm 78 */
obj_t BgL_arg1962z00_322;obj_t BgL_arg1963z00_323;
BgL_arg1962z00_322 = 
CNST_TABLE_REF(((long)4)); 
{ /* ./Foreign/cfun.scm 78 */
obj_t BgL_arg1966z00_324;
{ /* ./Foreign/cfun.scm 78 */
obj_t BgL_arg1969z00_325;
{ /* ./Foreign/cfun.scm 78 */
obj_t BgL_arg1973z00_326;obj_t BgL_arg1974z00_327;
BgL_arg1973z00_326 = 
MAKE_PAIR(BgL_idz00_178, BgL_targszd2idzd2_319); 
BgL_arg1974z00_327 = 
MAKE_PAIR(BgL_callerzd2namezd2_320, BNIL); 
BgL_arg1969z00_325 = 
MAKE_PAIR(BgL_arg1973z00_326, BgL_arg1974z00_327); } 
BgL_arg1966z00_324 = 
MAKE_PAIR(BgL_czd2callzd2idz00_321, BgL_arg1969z00_325); } 
BgL_arg1963z00_323 = 
MAKE_PAIR(BgL_treszd2idzd2_318, BgL_arg1966z00_324); } 
BgL_arg1735z00_214 = 
MAKE_PAIR(BgL_arg1962z00_322, BgL_arg1963z00_323); } } } } } } 
BgL_arg1731z00_213 = 
MAKE_PAIR(BgL_arg1735z00_214, BNIL); } 
BgL_arg1725z00_211 = 
MAKE_PAIR(BgL_arg1729z00_212, BgL_arg1731z00_213); } 
BgL_arg1721z00_209 = 
MAKE_PAIR(BgL_arg1724z00_210, BgL_arg1725z00_211); } 
BgL_arg1717z00_207 = 
MAKE_PAIR(BgL_arg1720z00_208, BgL_arg1721z00_209); } 
BGl_producezd2modulezd2clausez12z12zzmodule_modulez00(BgL_arg1717z00_207); } 
{ /* ./Foreign/cfun.scm 121 */
obj_t BgL_arg1741z00_216;
{ /* ./Foreign/cfun.scm 121 */
obj_t BgL_arg1744z00_217;obj_t BgL_arg1748z00_218;
BgL_arg1744z00_217 = 
CNST_TABLE_REF(((long)21)); 
{ /* ./Foreign/cfun.scm 122 */
obj_t BgL_arg1752z00_219;
{ /* ./Foreign/cfun.scm 122 */
obj_t BgL_arg1758z00_221;
{ /* ./Foreign/cfun.scm 122 */
obj_t BgL_arg1761z00_222;
{ /* ./Foreign/cfun.scm 122 */
obj_t BgL_auxz00_655;
BgL_auxz00_655 = 
CNST_TABLE_REF(((long)22)); 
BgL_arg1761z00_222 = 
MAKE_PAIR(BgL_auxz00_655, BNIL); } 
BgL_arg1758z00_221 = 
MAKE_PAIR(BgL_bidzf3zd2boolz21_185, BgL_arg1761z00_222); } 
BgL_arg1752z00_219 = 
BGl_makezd2protozd2inlinez00zzforeign_libraryz00(BgL_arg1758z00_221); } 
BgL_arg1748z00_218 = 
MAKE_PAIR(BgL_arg1752z00_219, BNIL); } 
BgL_arg1741z00_216 = 
MAKE_PAIR(BgL_arg1744z00_217, BgL_arg1748z00_218); } 
BGl_producezd2modulezd2clausez12z12zzmodule_modulez00(BgL_arg1741z00_216); } 
{ /* ./Foreign/cfun.scm 123 */
obj_t BgL_arg1766z00_223;
{ /* ./Foreign/cfun.scm 123 */
obj_t BgL_arg1771z00_224;obj_t BgL_arg1772z00_225;
BgL_arg1771z00_224 = 
CNST_TABLE_REF(((long)23)); 
{ /* ./Foreign/cfun.scm 123 */
obj_t BgL_arg1775z00_226;
{ /* ./Foreign/cfun.scm 123 */
obj_t BgL_arg1779z00_228;
{ /* ./Foreign/cfun.scm 123 */
obj_t BgL_arg1782z00_229;
{ /* ./Foreign/cfun.scm 123 */
obj_t BgL_arg1786z00_231;obj_t BgL_arg1787z00_232;
BgL_arg1786z00_231 = 
CNST_TABLE_REF(((long)24)); 
BgL_arg1787z00_232 = 
MAKE_PAIR(BgL_widz00_179, BNIL); 
BgL_arg1782z00_229 = 
MAKE_PAIR(BgL_arg1786z00_231, BgL_arg1787z00_232); } 
BgL_arg1779z00_228 = 
MAKE_PAIR(BgL_arg1782z00_229, BNIL); } 
BgL_arg1775z00_226 = 
MAKE_PAIR(BgL_bidzf3zf3_184, BgL_arg1779z00_228); } 
BgL_arg1772z00_225 = 
MAKE_PAIR(BgL_arg1775z00_226, BNIL); } 
BgL_arg1766z00_223 = 
MAKE_PAIR(BgL_arg1771z00_224, BgL_arg1772z00_225); } 
BGl_producezd2modulezd2clausez12z12zzmodule_modulez00(BgL_arg1766z00_223); } 
{ /* ./Foreign/cfun.scm 126 */
obj_t BgL_arg1791z00_233;obj_t BgL_arg1792z00_234;obj_t BgL_arg1793z00_235;
{ /* ./Foreign/cfun.scm 60 */
obj_t BgL_arg2052z00_361;obj_t BgL_arg2053z00_362;
{ /* ./Foreign/cfun.scm 60 */
obj_t BgL_arg2056z00_363;
{ /* ./Foreign/cfun.scm 60 */
obj_t BgL_auxz00_672;
BgL_auxz00_672 = 
CNST_TABLE_REF(((long)6)); 
BgL_arg2056z00_363 = 
MAKE_PAIR(BgL_auxz00_672, BNIL); } 
BgL_arg2052z00_361 = 
MAKE_PAIR(BgL_bidzf3zd2boolz21_185, BgL_arg2056z00_363); } 
{ /* ./Foreign/cfun.scm 61 */
obj_t BgL_arg2061z00_364;obj_t BgL_arg2062z00_365;
BgL_arg2061z00_364 = 
CNST_TABLE_REF(((long)7)); 
{ /* ./Foreign/cfun.scm 61 */
obj_t BgL_arg2065z00_366;obj_t BgL_arg2066z00_367;
{ /* ./Foreign/cfun.scm 61 */
obj_t BgL_arg2069z00_368;obj_t BgL_arg2070z00_369;
BgL_arg2069z00_368 = 
CNST_TABLE_REF(((long)8)); 
{ /* ./Foreign/cfun.scm 61 */
obj_t BgL_auxz00_678;
BgL_auxz00_678 = 
CNST_TABLE_REF(((long)9)); 
BgL_arg2070z00_369 = 
MAKE_PAIR(BgL_auxz00_678, BNIL); } 
BgL_arg2065z00_366 = 
MAKE_PAIR(BgL_arg2069z00_368, BgL_arg2070z00_369); } 
{ /* ./Foreign/cfun.scm 62 */
obj_t BgL_arg2074z00_370;obj_t BgL_arg2075z00_371;
{ /* ./Foreign/cfun.scm 62 */
obj_t BgL_arg2078z00_372;obj_t BgL_arg2080z00_373;
BgL_arg2078z00_372 = 
CNST_TABLE_REF(((long)10)); 
{ /* ./Foreign/cfun.scm 62 */
obj_t BgL_arg2083z00_374;obj_t BgL_arg2084z00_375;
{ /* ./Foreign/cfun.scm 62 */
obj_t BgL_arg2087z00_376;obj_t BgL_arg2088z00_377;
BgL_arg2087z00_376 = 
CNST_TABLE_REF(((long)11)); 
{ /* ./Foreign/cfun.scm 62 */
obj_t BgL_auxz00_684;
BgL_auxz00_684 = 
CNST_TABLE_REF(((long)9)); 
BgL_arg2088z00_377 = 
MAKE_PAIR(BgL_auxz00_684, BNIL); } 
BgL_arg2083z00_374 = 
MAKE_PAIR(BgL_arg2087z00_376, BgL_arg2088z00_377); } 
{ /* ./Foreign/cfun.scm 62 */
obj_t BgL_arg2092z00_378;
{ /* ./Foreign/cfun.scm 62 */
obj_t BgL_arg2096z00_380;obj_t BgL_arg2097z00_381;
BgL_arg2096z00_380 = 
CNST_TABLE_REF(((long)12)); 
BgL_arg2097z00_381 = 
MAKE_PAIR(BgL_bidz00_180, BNIL); 
BgL_arg2092z00_378 = 
MAKE_PAIR(BgL_arg2096z00_380, BgL_arg2097z00_381); } 
BgL_arg2084z00_375 = 
MAKE_PAIR(BgL_arg2092z00_378, BNIL); } 
BgL_arg2080z00_373 = 
MAKE_PAIR(BgL_arg2083z00_374, BgL_arg2084z00_375); } 
BgL_arg2074z00_370 = 
MAKE_PAIR(BgL_arg2078z00_372, BgL_arg2080z00_373); } 
BgL_arg2075z00_371 = 
MAKE_PAIR(BFALSE, BNIL); 
BgL_arg2066z00_367 = 
MAKE_PAIR(BgL_arg2074z00_370, BgL_arg2075z00_371); } 
BgL_arg2062z00_365 = 
MAKE_PAIR(BgL_arg2065z00_366, BgL_arg2066z00_367); } 
BgL_arg2053z00_362 = 
MAKE_PAIR(BgL_arg2061z00_364, BgL_arg2062z00_365); } 
BgL_arg1791z00_233 = 
BGl_makezd2definezd2inlinez00zzforeign_libraryz00(BgL_arg2052z00_361, BgL_arg2053z00_362); } 
{ /* ./Foreign/cfun.scm 68 */
obj_t BgL_arg2021z00_348;obj_t BgL_arg2022z00_349;
{ /* ./Foreign/cfun.scm 68 */
obj_t BgL_arg2025z00_350;obj_t BgL_arg2026z00_351;
{ /* ./Foreign/cfun.scm 68 */
obj_t BgL_list2029z00_352;
{ /* ./Foreign/cfun.scm 68 */
obj_t BgL_arg2032z00_353;obj_t BgL_arg2033z00_354;
BgL_arg2032z00_353 = 
CNST_TABLE_REF(((long)13)); 
{ /* ./Foreign/cfun.scm 68 */
obj_t BgL_arg2037z00_355;
{ /* ./Foreign/cfun.scm 68 */
obj_t BgL_auxz00_700;
BgL_auxz00_700 = 
CNST_TABLE_REF(((long)14)); 
BgL_arg2037z00_355 = 
MAKE_PAIR(BgL_auxz00_700, BNIL); } 
BgL_arg2033z00_354 = 
MAKE_PAIR(BgL_idz00_178, BgL_arg2037z00_355); } 
BgL_list2029z00_352 = 
MAKE_PAIR(BgL_arg2032z00_353, BgL_arg2033z00_354); } 
BgL_arg2025z00_350 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list2029z00_352); } 
{ /* ./Foreign/cfun.scm 69 */
obj_t BgL_arg2041z00_356;obj_t BgL_arg2042z00_357;
BgL_arg2041z00_356 = 
BGl_makezd2typedzd2identz00zzast_identz00(
CNST_TABLE_REF(((long)15)), BgL_idz00_178); 
{ /* ./Foreign/cfun.scm 70 */
obj_t BgL_arg2046z00_358;
BgL_arg2046z00_358 = 
BGl_makezd2typedzd2identz00zzast_identz00(
CNST_TABLE_REF(((long)16)), BgL_idz00_178); 
BgL_arg2042z00_357 = 
MAKE_PAIR(BgL_arg2046z00_358, BNIL); } 
BgL_arg2026z00_351 = 
MAKE_PAIR(BgL_arg2041z00_356, BgL_arg2042z00_357); } 
BgL_arg2021z00_348 = 
MAKE_PAIR(BgL_arg2025z00_350, BgL_arg2026z00_351); } 
BgL_arg2022z00_349 = 
CNST_TABLE_REF(((long)17)); 
BgL_arg1792z00_234 = 
BGl_makezd2definezd2inlinez00zzforeign_libraryz00(BgL_arg2021z00_348, BgL_arg2022z00_349); } 
{ /* ./Foreign/cfun.scm 83 */
bool_t BgL_test1934z00_307;
{ /* ./Foreign/cfun.scm 83 */
long BgL_n2z00_474;
BgL_n2z00_474 = 
(long)CINT(BGl_za2maxzd2czd2foreignzd2arityza2zd2zzengine_paramz00); 
BgL_test1934z00_307 = 
(BgL_arityz00_190>=BgL_n2z00_474); } 
if(BgL_test1934z00_307)
{ /* ./Foreign/cfun.scm 83 */
{ /* ./Foreign/cfun.scm 85 */
obj_t BgL_arg1936z00_308;obj_t BgL_arg1938z00_309;
{ /* ./Foreign/cfun.scm 85 */
obj_t BgL_arg1946z00_312;
BgL_arg1946z00_312 = 
BGl_integerzd2ze3stringz31zz__r4_numbers_6_5_fixnumz00(
(long)CINT(BGl_za2maxzd2czd2foreignzd2arityza2zd2zzengine_paramz00), BNIL); 
BgL_arg1936z00_308 = 
string_append_3(BGl_string2244z00zzforeign_cfunctionz00, BgL_arg1946z00_312, BGl_string2245z00zzforeign_cfunctionz00); } 
BgL_arg1938z00_309 = 
string_append(BgL_nbzd2argszd2_191, BGl_string2246z00zzforeign_cfunctionz00); 
BgL_arg1793z00_235 = 
BGl_userzd2errorzd2zztools_errorz00(BgL_idz00_178, BgL_arg1936z00_308, BgL_arg1938z00_309, BNIL); } }  else 
{ /* ./Foreign/cfun.scm 90 */
bool_t BgL_test1953z00_315;
BgL_test1953z00_315 = 
(BgL_arityz00_190>=((long)0)); 
if(BgL_test1953z00_315)
{ /* ./Foreign/cfun.scm 90 */
{ /* ./Foreign/cfun.scm 98 */
obj_t BgL_treszd2idzd2_240;
BgL_treszd2idzd2_240 = 
(((BgL_typez00_bglt)CREF(BgL_typezd2reszd2_188))->BgL_idz00); 
{ /* ./Foreign/cfun.scm 98 */
obj_t BgL_targszd2idzd2_241;
{ /* ./Foreign/cfun.scm 99 */
bool_t BgL_test1900z00_291;
BgL_test1900z00_291 = 
NULLP(BgL_typezd2argszd2_189); 
if(BgL_test1900z00_291)
{ /* ./Foreign/cfun.scm 99 */
BgL_targszd2idzd2_241 = BNIL; }  else 
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_head1594z00_292;
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_arg1924z00_303;
{ /* ./Foreign/cfun.scm 99 */
BgL_typez00_bglt BgL_obj1003z00_436;
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_auxz00_728;
BgL_auxz00_728 = 
CAR(BgL_typezd2argszd2_189); 
BgL_obj1003z00_436 = 
(BgL_typez00_bglt)(BgL_auxz00_728); } 
BgL_arg1924z00_303 = 
(((BgL_typez00_bglt)CREF(BgL_obj1003z00_436))->BgL_idz00); } 
BgL_head1594z00_292 = 
MAKE_PAIR(BgL_arg1924z00_303, BNIL); } 
{ 
obj_t BgL_l1592z00_293;obj_t BgL_tail1595z00_294;
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_arg1902z00_296;
BgL_arg1902z00_296 = 
CDR(BgL_typezd2argszd2_189); 
BgL_l1592z00_293 = BgL_arg1902z00_296; 
BgL_tail1595z00_294 = BgL_head1594z00_292; 
BgL_map1593z00_295:
{ /* ./Foreign/cfun.scm 99 */
bool_t BgL_test1907z00_297;
BgL_test1907z00_297 = 
NULLP(BgL_l1592z00_293); 
if(BgL_test1907z00_297)
{ /* ./Foreign/cfun.scm 99 */
BgL_targszd2idzd2_241 = BgL_head1594z00_292; }  else 
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_newtail1596z00_298;
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_arg1915z00_300;
{ /* ./Foreign/cfun.scm 99 */
BgL_typez00_bglt BgL_obj1003z00_442;
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_auxz00_736;
BgL_auxz00_736 = 
CAR(BgL_l1592z00_293); 
BgL_obj1003z00_442 = 
(BgL_typez00_bglt)(BgL_auxz00_736); } 
BgL_arg1915z00_300 = 
(((BgL_typez00_bglt)CREF(BgL_obj1003z00_442))->BgL_idz00); } 
BgL_newtail1596z00_298 = 
MAKE_PAIR(BgL_arg1915z00_300, BNIL); } 
SET_CDR(BgL_tail1595z00_294, BgL_newtail1596z00_298); 
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_arg1911z00_299;
BgL_arg1911z00_299 = 
CDR(BgL_l1592z00_293); 
{ 
obj_t BgL_tail1595z00_744;obj_t BgL_l1592z00_743;
BgL_l1592z00_743 = BgL_arg1911z00_299; 
BgL_tail1595z00_744 = BgL_newtail1596z00_298; 
BgL_tail1595z00_294 = BgL_tail1595z00_744; 
BgL_l1592z00_293 = BgL_l1592z00_743; 
goto BgL_map1593z00_295;} } } } } } } } 
{ /* ./Foreign/cfun.scm 99 */
obj_t BgL_argsz00_242;
{ /* ./Foreign/cfun.scm 100 */
bool_t BgL_test1869z00_275;
BgL_test1869z00_275 = 
NULLP(BgL_targszd2idzd2_241); 
if(BgL_test1869z00_275)
{ /* ./Foreign/cfun.scm 100 */
BgL_argsz00_242 = BNIL; }  else 
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_head1599z00_276;
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_arg1892z00_287;
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_arg1896z00_289;
BgL_arg1896z00_289 = 
CAR(BgL_targszd2idzd2_241); 
BgL_arg1892z00_287 = 
PROCEDURE_ENTRY(BGl_gensymz00zz__r4_symbols_6_4z00)(BGl_gensymz00zz__r4_symbols_6_4z00, BgL_arg1896z00_289, BEOA); } 
BgL_head1599z00_276 = 
MAKE_PAIR(BgL_arg1892z00_287, BNIL); } 
{ 
obj_t BgL_l1597z00_277;obj_t BgL_tail1600z00_278;
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_arg1872z00_280;
BgL_arg1872z00_280 = 
CDR(BgL_targszd2idzd2_241); 
BgL_l1597z00_277 = BgL_arg1872z00_280; 
BgL_tail1600z00_278 = BgL_head1599z00_276; 
BgL_map1598z00_279:
{ /* ./Foreign/cfun.scm 100 */
bool_t BgL_test1875z00_281;
BgL_test1875z00_281 = 
NULLP(BgL_l1597z00_277); 
if(BgL_test1875z00_281)
{ /* ./Foreign/cfun.scm 100 */
BgL_argsz00_242 = BgL_head1599z00_276; }  else 
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_newtail1601z00_282;
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_arg1882z00_284;
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_arg1887z00_286;
BgL_arg1887z00_286 = 
CAR(BgL_l1597z00_277); 
BgL_arg1882z00_284 = 
PROCEDURE_ENTRY(BGl_gensymz00zz__r4_symbols_6_4z00)(BGl_gensymz00zz__r4_symbols_6_4z00, BgL_arg1887z00_286, BEOA); } 
BgL_newtail1601z00_282 = 
MAKE_PAIR(BgL_arg1882z00_284, BNIL); } 
SET_CDR(BgL_tail1600z00_278, BgL_newtail1601z00_282); 
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_arg1878z00_283;
BgL_arg1878z00_283 = 
CDR(BgL_l1597z00_277); 
{ 
obj_t BgL_tail1600z00_761;obj_t BgL_l1597z00_760;
BgL_l1597z00_760 = BgL_arg1878z00_283; 
BgL_tail1600z00_761 = BgL_newtail1601z00_282; 
BgL_tail1600z00_278 = BgL_tail1600z00_761; 
BgL_l1597z00_277 = BgL_l1597z00_760; 
goto BgL_map1598z00_279;} } } } } } } } 
{ /* ./Foreign/cfun.scm 100 */
obj_t BgL_czd2callzd2idz00_243;
{ /* ./Foreign/cfun.scm 101 */
obj_t BgL_list1863z00_271;
{ /* ./Foreign/cfun.scm 101 */
obj_t BgL_arg1865z00_272;obj_t BgL_arg1866z00_273;
BgL_arg1865z00_272 = 
CNST_TABLE_REF(((long)18)); 
BgL_arg1866z00_273 = 
MAKE_PAIR(BgL_callzd2idzd2_181, BNIL); 
BgL_list1863z00_271 = 
MAKE_PAIR(BgL_arg1865z00_272, BgL_arg1866z00_273); } 
BgL_czd2callzd2idz00_243 = 
BGl_symbolzd2appendzd2zz__r4_symbols_6_4z00(BgL_list1863z00_271); } 
{ /* ./Foreign/cfun.scm 101 */

{ /* ./Foreign/cfun.scm 103 */
obj_t BgL_arg1809z00_244;obj_t BgL_arg1810z00_245;
{ /* ./Foreign/cfun.scm 103 */
obj_t BgL_arg1813z00_246;obj_t BgL_arg1815z00_247;
BgL_arg1813z00_246 = 
BGl_makezd2typedzd2identz00zzast_identz00(BgL_callzd2idzd2_181, BgL_treszd2idzd2_240); 
{ /* ./Foreign/cfun.scm 104 */
obj_t BgL_arg1821z00_248;obj_t BgL_arg1822z00_249;
BgL_arg1821z00_248 = 
BGl_makezd2typedzd2identz00zzast_identz00(
CNST_TABLE_REF(((long)19)), BgL_idz00_178); 
{ /* ./Foreign/cfun.scm 105 */
obj_t BgL_arg1826z00_250;
{ /* ./Foreign/cfun.scm 105 */
bool_t BgL_test1831z00_254;
BgL_test1831z00_254 = 
NULLP(BgL_argsz00_242); 
if(BgL_test1831z00_254)
{ /* ./Foreign/cfun.scm 105 */
BgL_arg1826z00_250 = BNIL; }  else 
{ /* ./Foreign/cfun.scm 105 */
obj_t BgL_head1604z00_255;
BgL_head1604z00_255 = 
MAKE_PAIR(BNIL, BNIL); 
{ 
obj_t BgL_ll1602z00_256;obj_t BgL_ll1603z00_257;obj_t BgL_tail1605z00_258;
BgL_ll1602z00_256 = BgL_argsz00_242; 
BgL_ll1603z00_257 = BgL_targszd2idzd2_241; 
BgL_tail1605z00_258 = BgL_head1604z00_255; 
BgL_map1607z00_259:
{ /* ./Foreign/cfun.scm 105 */
bool_t BgL_test1833z00_260;
BgL_test1833z00_260 = 
NULLP(BgL_ll1602z00_256); 
if(BgL_test1833z00_260)
{ /* ./Foreign/cfun.scm 105 */
BgL_arg1826z00_250 = 
CDR(BgL_head1604z00_255); }  else 
{ /* ./Foreign/cfun.scm 106 */
obj_t BgL_newtail1606z00_261;
{ /* ./Foreign/cfun.scm 106 */
obj_t BgL_arg1843z00_264;
{ /* ./Foreign/cfun.scm 106 */
obj_t BgL_argz00_266;obj_t BgL_typez00_267;
BgL_argz00_266 = 
CAR(BgL_ll1602z00_256); 
BgL_typez00_267 = 
CAR(BgL_ll1603z00_257); 
BgL_arg1843z00_264 = 
BGl_makezd2typedzd2identz00zzast_identz00(BgL_argz00_266, BgL_typez00_267); } 
BgL_newtail1606z00_261 = 
MAKE_PAIR(BgL_arg1843z00_264, BNIL); } 
SET_CDR(BgL_tail1605z00_258, BgL_newtail1606z00_261); 
{ /* ./Foreign/cfun.scm 105 */
obj_t BgL_arg1837z00_262;obj_t BgL_arg1838z00_263;
BgL_arg1837z00_262 = 
CDR(BgL_ll1602z00_256); 
BgL_arg1838z00_263 = 
CDR(BgL_ll1603z00_257); 
{ 
obj_t BgL_tail1605z00_784;obj_t BgL_ll1603z00_783;obj_t BgL_ll1602z00_782;
BgL_ll1602z00_782 = BgL_arg1837z00_262; 
BgL_ll1603z00_783 = BgL_arg1838z00_263; 
BgL_tail1605z00_784 = BgL_newtail1606z00_261; 
BgL_tail1605z00_258 = BgL_tail1605z00_784; 
BgL_ll1603z00_257 = BgL_ll1603z00_783; 
BgL_ll1602z00_256 = BgL_ll1602z00_782; 
goto BgL_map1607z00_259;} } } } } } } 
BgL_arg1822z00_249 = 
BGl_eappendzd22zd2zz__r4_pairs_and_lists_6_3z00(BgL_arg1826z00_250, BNIL); } 
BgL_arg1815z00_247 = 
MAKE_PAIR(BgL_arg1821z00_248, BgL_arg1822z00_249); } 
BgL_arg1809z00_244 = 
MAKE_PAIR(BgL_arg1813z00_246, BgL_arg1815z00_247); } 
{ /* ./Foreign/cfun.scm 108 */
obj_t BgL_arg1854z00_268;
{ /* ./Foreign/cfun.scm 108 */
obj_t BgL_arg1857z00_269;obj_t BgL_arg1859z00_270;
BgL_arg1857z00_269 = 
CNST_TABLE_REF(((long)19)); 
BgL_arg1859z00_270 = 
BGl_eappendzd22zd2zz__r4_pairs_and_lists_6_3z00(BgL_argsz00_242, BNIL); 
BgL_arg1854z00_268 = 
MAKE_PAIR(BgL_arg1857z00_269, BgL_arg1859z00_270); } 
BgL_arg1810z00_245 = 
MAKE_PAIR(BgL_czd2callzd2idz00_243, BgL_arg1854z00_268); } 
BgL_arg1793z00_235 = 
BGl_makezd2definezd2inlinez00zzforeign_libraryz00(BgL_arg1809z00_244, BgL_arg1810z00_245); } } } } } } }  else 
{ /* ./Foreign/cfun.scm 90 */
BgL_arg1793z00_235 = 
BGl_userzd2errorzd2zztools_errorz00(BGl_string2247z00zzforeign_cfunctionz00, BGl_string2248z00zzforeign_cfunctionz00, BgL_idz00_178, BNIL); } } } 
{ /* ./Foreign/cfun.scm 126 */
obj_t BgL_list1795z00_236;
{ /* ./Foreign/cfun.scm 126 */
obj_t BgL_arg1798z00_237;
{ /* ./Foreign/cfun.scm 126 */
obj_t BgL_arg1801z00_238;
BgL_arg1801z00_238 = 
MAKE_PAIR(BgL_arg1793z00_235, BNIL); 
BgL_arg1798z00_237 = 
MAKE_PAIR(BgL_arg1792z00_234, BgL_arg1801z00_238); } 
BgL_list1795z00_236 = 
MAKE_PAIR(BgL_arg1791z00_233, BgL_arg1798z00_237); } 
return BgL_list1795z00_236;} } } } } } } } } } } } } } } } } } } } } 
}



/* imported-modules-init */
obj_t BGl_importedzd2moduleszd2initz00zzforeign_cfunctionz00()
{ AN_OBJECT;
{ /* ./Foreign/cfun.scm 15 */
BGl_modulezd2initializa7ationz75zztools_errorz00(((long)25566), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zztools_miscz00(((long)64117), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zztype_toolsz00(((long)15091), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zztype_typez00(((long)19090), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zzforeign_ctypez00(((long)51394), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zzforeign_accessz00(((long)13730), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zzforeign_libraryz00(((long)43975), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zzmodule_modulez00(((long)8699), "foreign_cfunction"); 
BGl_modulezd2initializa7ationz75zzengine_paramz00(((long)14260), "foreign_cfunction"); 
return 
BGl_modulezd2initializa7ationz75zzast_identz00(((long)51504), "foreign_cfunction");} 
}

